diff options
author | 2025-03-14 11:44:16 -0400 | |
---|---|---|
committer | 2025-03-14 11:44:16 -0400 | |
commit | b0e1d2a3c4784e8d9874fcb97d46b96f7a5d0e7d (patch) | |
tree | db95a5e7790d81d4e96f3a0c6cce49a4d7ec59bf | |
parent | b8503dbcc90835e1ba44b3d705ca427b338ffe06 (diff) |
aconfig: enforce all file versions are tested
run the serialization tests (which enforces the round trip of into_bytes
and from_bytes) for versions 1-MAX. ideally we won't have to support all
versions forever, but until then we should make sure new versions are
tested automatically
Test: atest aconfig_storage_file.test
Bug: 387282428
Change-Id: If0da10a64918148bc24257977f3fd337f4023f6c
4 files changed, 72 insertions, 152 deletions
diff --git a/tools/aconfig/aconfig_storage_file/src/flag_info.rs b/tools/aconfig/aconfig_storage_file/src/flag_info.rs index cf16834be2..a39b7edf90 100644 --- a/tools/aconfig/aconfig_storage_file/src/flag_info.rs +++ b/tools/aconfig/aconfig_storage_file/src/flag_info.rs @@ -199,49 +199,28 @@ mod tests { }; // this test point locks down the value list serialization - // TODO: b/376108268 - Use parameterized tests. #[test] - fn test_serialization_default() { - let flag_info_list = create_test_flag_info_list(DEFAULT_FILE_VERSION); - - let header: &FlagInfoHeader = &flag_info_list.header; - let reinterpreted_header = FlagInfoHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let nodes: &Vec<FlagInfoNode> = &flag_info_list.nodes; - for node in nodes.iter() { - let reinterpreted_node = FlagInfoNode::from_bytes(&node.into_bytes()).unwrap(); - assert_eq!(node, &reinterpreted_node); + fn test_serialization() { + for file_version in 1..=MAX_SUPPORTED_FILE_VERSION { + let flag_info_list = create_test_flag_info_list(file_version); + + let header: &FlagInfoHeader = &flag_info_list.header; + let reinterpreted_header = FlagInfoHeader::from_bytes(&header.into_bytes()); + assert!(reinterpreted_header.is_ok()); + assert_eq!(header, &reinterpreted_header.unwrap()); + + let nodes: &Vec<FlagInfoNode> = &flag_info_list.nodes; + for node in nodes.iter() { + let reinterpreted_node = FlagInfoNode::from_bytes(&node.into_bytes()).unwrap(); + assert_eq!(node, &reinterpreted_node); + } + + let flag_info_bytes = flag_info_list.into_bytes(); + let reinterpreted_info_list = FlagInfoList::from_bytes(&flag_info_bytes); + assert!(reinterpreted_info_list.is_ok()); + assert_eq!(&flag_info_list, &reinterpreted_info_list.unwrap()); + assert_eq!(flag_info_bytes.len() as u32, header.file_size); } - - let flag_info_bytes = flag_info_list.into_bytes(); - let reinterpreted_info_list = FlagInfoList::from_bytes(&flag_info_bytes); - assert!(reinterpreted_info_list.is_ok()); - assert_eq!(&flag_info_list, &reinterpreted_info_list.unwrap()); - assert_eq!(flag_info_bytes.len() as u32, header.file_size); - } - - #[test] - fn test_serialization_max() { - let flag_info_list = create_test_flag_info_list(MAX_SUPPORTED_FILE_VERSION); - - let header: &FlagInfoHeader = &flag_info_list.header; - let reinterpreted_header = FlagInfoHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let nodes: &Vec<FlagInfoNode> = &flag_info_list.nodes; - for node in nodes.iter() { - let reinterpreted_node = FlagInfoNode::from_bytes(&node.into_bytes()).unwrap(); - assert_eq!(node, &reinterpreted_node); - } - - let flag_info_bytes = flag_info_list.into_bytes(); - let reinterpreted_info_list = FlagInfoList::from_bytes(&flag_info_bytes); - assert!(reinterpreted_info_list.is_ok()); - assert_eq!(&flag_info_list, &reinterpreted_info_list.unwrap()); - assert_eq!(flag_info_bytes.len() as u32, header.file_size); } // this test point locks down that version number should be at the top of serialized diff --git a/tools/aconfig/aconfig_storage_file/src/flag_table.rs b/tools/aconfig/aconfig_storage_file/src/flag_table.rs index 6fbee023ce..1b70c494a6 100644 --- a/tools/aconfig/aconfig_storage_file/src/flag_table.rs +++ b/tools/aconfig/aconfig_storage_file/src/flag_table.rs @@ -225,49 +225,28 @@ mod tests { }; // this test point locks down the table serialization - // TODO: b/376108268 - Use parameterized tests. #[test] - fn test_serialization_default() { - let flag_table = create_test_flag_table(DEFAULT_FILE_VERSION); - - let header: &FlagTableHeader = &flag_table.header; - let reinterpreted_header = FlagTableHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let nodes: &Vec<FlagTableNode> = &flag_table.nodes; - for node in nodes.iter() { - let reinterpreted_node = FlagTableNode::from_bytes(&node.into_bytes()).unwrap(); - assert_eq!(node, &reinterpreted_node); - } + fn test_serialization() { + for file_version in 1..=MAX_SUPPORTED_FILE_VERSION { + let flag_table = create_test_flag_table(file_version); - let flag_table_bytes = flag_table.into_bytes(); - let reinterpreted_table = FlagTable::from_bytes(&flag_table_bytes); - assert!(reinterpreted_table.is_ok()); - assert_eq!(&flag_table, &reinterpreted_table.unwrap()); - assert_eq!(flag_table_bytes.len() as u32, header.file_size); - } - - #[test] - fn test_serialization_max() { - let flag_table = create_test_flag_table(MAX_SUPPORTED_FILE_VERSION); + let header: &FlagTableHeader = &flag_table.header; + let reinterpreted_header = FlagTableHeader::from_bytes(&header.into_bytes()); + assert!(reinterpreted_header.is_ok()); + assert_eq!(header, &reinterpreted_header.unwrap()); - let header: &FlagTableHeader = &flag_table.header; - let reinterpreted_header = FlagTableHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); + let nodes: &Vec<FlagTableNode> = &flag_table.nodes; + for node in nodes.iter() { + let reinterpreted_node = FlagTableNode::from_bytes(&node.into_bytes()).unwrap(); + assert_eq!(node, &reinterpreted_node); + } - let nodes: &Vec<FlagTableNode> = &flag_table.nodes; - for node in nodes.iter() { - let reinterpreted_node = FlagTableNode::from_bytes(&node.into_bytes()).unwrap(); - assert_eq!(node, &reinterpreted_node); + let flag_table_bytes = flag_table.into_bytes(); + let reinterpreted_table = FlagTable::from_bytes(&flag_table_bytes); + assert!(reinterpreted_table.is_ok()); + assert_eq!(&flag_table, &reinterpreted_table.unwrap()); + assert_eq!(flag_table_bytes.len() as u32, header.file_size); } - - let flag_table_bytes = flag_table.into_bytes(); - let reinterpreted_table = FlagTable::from_bytes(&flag_table_bytes); - assert!(reinterpreted_table.is_ok()); - assert_eq!(&flag_table, &reinterpreted_table.unwrap()); - assert_eq!(flag_table_bytes.len() as u32, header.file_size); } // this test point locks down that version number should be at the top of serialized diff --git a/tools/aconfig/aconfig_storage_file/src/flag_value.rs b/tools/aconfig/aconfig_storage_file/src/flag_value.rs index 9a14bec7de..d73bcfb262 100644 --- a/tools/aconfig/aconfig_storage_file/src/flag_value.rs +++ b/tools/aconfig/aconfig_storage_file/src/flag_value.rs @@ -138,37 +138,21 @@ mod tests { #[test] // this test point locks down the value list serialization - // TODO: b/376108268 - Use parameterized tests. - fn test_serialization_default() { - let flag_value_list = create_test_flag_value_list(DEFAULT_FILE_VERSION); - - let header: &FlagValueHeader = &flag_value_list.header; - let reinterpreted_header = FlagValueHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let flag_value_bytes = flag_value_list.into_bytes(); - let reinterpreted_value_list = FlagValueList::from_bytes(&flag_value_bytes); - assert!(reinterpreted_value_list.is_ok()); - assert_eq!(&flag_value_list, &reinterpreted_value_list.unwrap()); - assert_eq!(flag_value_bytes.len() as u32, header.file_size); - } - - #[test] - // this test point locks down the value list serialization - fn test_serialization_max() { - let flag_value_list = create_test_flag_value_list(MAX_SUPPORTED_FILE_VERSION); - - let header: &FlagValueHeader = &flag_value_list.header; - let reinterpreted_header = FlagValueHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let flag_value_bytes = flag_value_list.into_bytes(); - let reinterpreted_value_list = FlagValueList::from_bytes(&flag_value_bytes); - assert!(reinterpreted_value_list.is_ok()); - assert_eq!(&flag_value_list, &reinterpreted_value_list.unwrap()); - assert_eq!(flag_value_bytes.len() as u32, header.file_size); + fn test_serialization() { + for file_version in 1..=MAX_SUPPORTED_FILE_VERSION { + let flag_value_list = create_test_flag_value_list(file_version); + + let header: &FlagValueHeader = &flag_value_list.header; + let reinterpreted_header = FlagValueHeader::from_bytes(&header.into_bytes()); + assert!(reinterpreted_header.is_ok()); + assert_eq!(header, &reinterpreted_header.unwrap()); + + let flag_value_bytes = flag_value_list.into_bytes(); + let reinterpreted_value_list = FlagValueList::from_bytes(&flag_value_bytes); + assert!(reinterpreted_value_list.is_ok()); + assert_eq!(&flag_value_list, &reinterpreted_value_list.unwrap()); + assert_eq!(flag_value_bytes.len() as u32, header.file_size); + } } #[test] diff --git a/tools/aconfig/aconfig_storage_file/src/package_table.rs b/tools/aconfig/aconfig_storage_file/src/package_table.rs index 21357c7e4a..4d6bd91675 100644 --- a/tools/aconfig/aconfig_storage_file/src/package_table.rs +++ b/tools/aconfig/aconfig_storage_file/src/package_table.rs @@ -287,50 +287,28 @@ mod tests { #[test] // this test point locks down the table serialization - // TODO: b/376108268 - Use parameterized tests. - fn test_serialization_default() { - let package_table = create_test_package_table(DEFAULT_FILE_VERSION); - let header: &PackageTableHeader = &package_table.header; - let reinterpreted_header = PackageTableHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let nodes: &Vec<PackageTableNode> = &package_table.nodes; - for node in nodes.iter() { - let reinterpreted_node = - PackageTableNode::from_bytes(&node.into_bytes(header.version), header.version) - .unwrap(); - assert_eq!(node, &reinterpreted_node); - } - - let package_table_bytes = package_table.into_bytes(); - let reinterpreted_table = PackageTable::from_bytes(&package_table_bytes); - assert!(reinterpreted_table.is_ok()); - assert_eq!(&package_table, &reinterpreted_table.unwrap()); - assert_eq!(package_table_bytes.len() as u32, header.file_size); - } + fn test_serialization() { + for file_version in 1..=MAX_SUPPORTED_FILE_VERSION { + let package_table = create_test_package_table(file_version); + let header: &PackageTableHeader = &package_table.header; + let reinterpreted_header = PackageTableHeader::from_bytes(&header.into_bytes()); + assert!(reinterpreted_header.is_ok()); + assert_eq!(header, &reinterpreted_header.unwrap()); + + let nodes: &Vec<PackageTableNode> = &package_table.nodes; + for node in nodes.iter() { + let reinterpreted_node = + PackageTableNode::from_bytes(&node.into_bytes(header.version), header.version) + .unwrap(); + assert_eq!(node, &reinterpreted_node); + } - #[test] - fn test_serialization_max() { - let package_table = create_test_package_table(MAX_SUPPORTED_FILE_VERSION); - let header: &PackageTableHeader = &package_table.header; - let reinterpreted_header = PackageTableHeader::from_bytes(&header.into_bytes()); - assert!(reinterpreted_header.is_ok()); - assert_eq!(header, &reinterpreted_header.unwrap()); - - let nodes: &Vec<PackageTableNode> = &package_table.nodes; - for node in nodes.iter() { - let reinterpreted_node = - PackageTableNode::from_bytes(&node.into_bytes(header.version), header.version) - .unwrap(); - assert_eq!(node, &reinterpreted_node); + let package_table_bytes = package_table.into_bytes(); + let reinterpreted_table = PackageTable::from_bytes(&package_table_bytes); + assert!(reinterpreted_table.is_ok()); + assert_eq!(&package_table, &reinterpreted_table.unwrap()); + assert_eq!(package_table_bytes.len() as u32, header.file_size); } - - let package_table_bytes = package_table.into_bytes(); - let reinterpreted_table = PackageTable::from_bytes(&package_table_bytes); - assert!(reinterpreted_table.is_ok()); - assert_eq!(&package_table, &reinterpreted_table.unwrap()); - assert_eq!(package_table_bytes.len() as u32, header.file_size); } #[test] |