Loading tools/aconfig/aconfig/src/commands.rs +6 −6 Original line number Diff line number Diff line Loading @@ -438,14 +438,14 @@ where // protect hardcoded offset reads. // Creates a fingerprint of the flag names (which requires sorting the vector). // Fingerprint is used by both codegen and storage files. pub fn compute_flags_fingerprint(flag_names: &mut Vec<String>) -> Result<u64> { pub fn compute_flags_fingerprint(flag_names: &mut Vec<String>) -> u64 { flag_names.sort(); let mut hasher = SipHasher13::new(); for flag in flag_names { hasher.write(flag.as_bytes()); } Ok(hasher.finish()) hasher.finish() } #[allow(dead_code)] // TODO: b/316357686 - Use fingerprint in codegen to Loading Loading @@ -477,7 +477,7 @@ mod tests { let mut extracted_flags = extract_flag_names(parsed_flags).unwrap(); let hash_result = compute_flags_fingerprint(&mut extracted_flags); assert_eq!(hash_result.unwrap(), expected_fingerprint); assert_eq!(hash_result, expected_fingerprint); } #[test] Loading @@ -498,7 +498,7 @@ mod tests { let result_from_names = compute_flags_fingerprint(&mut flag_names_vec); // Assert the same hash is generated for each case. assert_eq!(result_from_parsed_flags.unwrap(), result_from_names.unwrap()); assert_eq!(result_from_parsed_flags, result_from_names); } #[test] Loading @@ -508,9 +508,9 @@ mod tests { let second_parsed_flags = crate::test::parse_second_package_flags(); let mut extracted_flags = extract_flag_names(parsed_flags).unwrap(); let result_from_parsed_flags = compute_flags_fingerprint(&mut extracted_flags).unwrap(); let result_from_parsed_flags = compute_flags_fingerprint(&mut extracted_flags); let mut second_extracted_flags = extract_flag_names(second_parsed_flags).unwrap(); let second_result = compute_flags_fingerprint(&mut second_extracted_flags).unwrap(); let second_result = compute_flags_fingerprint(&mut second_extracted_flags); // Different flags should have a different fingerprint. assert_ne!(result_from_parsed_flags, second_result); Loading tools/aconfig/aconfig/src/storage/flag_info.rs +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ mod tests { pub fn create_test_flag_info_list_from_source() -> Result<FlagInfoList> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_info("mockup", &packages, DEFAULT_FILE_VERSION) } Loading tools/aconfig/aconfig/src/storage/flag_table.rs +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ mod tests { fn create_test_flag_table_from_source() -> Result<FlagTable> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_table("mockup", &packages, DEFAULT_FILE_VERSION) } Loading tools/aconfig/aconfig/src/storage/flag_value.rs +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ mod tests { pub fn create_test_flag_value_list_from_source() -> Result<FlagValueList> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_value("mockup", &packages, DEFAULT_FILE_VERSION) } Loading tools/aconfig/aconfig/src/storage/mod.rs +13 −5 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ pub mod package_table; use anyhow::Result; use std::collections::{HashMap, HashSet}; use crate::commands::compute_flags_fingerprint; use crate::storage::{ flag_info::create_flag_info, flag_table::create_flag_table, flag_value::create_flag_value, package_table::create_package_table, Loading Loading @@ -59,7 +60,7 @@ impl<'a> FlagPackage<'a> { } } pub fn group_flags_by_package<'a, I>(parsed_flags_vec_iter: I) -> Vec<FlagPackage<'a>> pub fn group_flags_by_package<'a, I>(parsed_flags_vec_iter: I, version: u32) -> Vec<FlagPackage<'a>> where I: Iterator<Item = &'a ProtoParsedFlags>, { Loading @@ -76,13 +77,18 @@ where } } // cacluate boolean flag start index for each package // Calculate boolean flag start index for each package let mut boolean_start_index = 0; for p in packages.iter_mut() { p.boolean_start_index = boolean_start_index; boolean_start_index += p.boolean_flags.len() as u32; // TODO: b/316357686 - Calculate fingerprint and add to package. if version > 2 { let mut flag_names_vec = p.flag_names.clone().into_iter().map(String::from).collect::<Vec<_>>(); let fingerprint = compute_flags_fingerprint(&mut flag_names_vec); p.fingerprint = fingerprint; } } packages Loading @@ -97,7 +103,7 @@ pub fn generate_storage_file<'a, I>( where I: Iterator<Item = &'a ProtoParsedFlags>, { let packages = group_flags_by_package(parsed_flags_vec_iter); let packages = group_flags_by_package(parsed_flags_vec_iter, version); match file { StorageFileType::PackageMap => { Loading @@ -121,6 +127,8 @@ where #[cfg(test)] mod tests { use aconfig_storage_file::DEFAULT_FILE_VERSION; use super::*; use crate::Input; Loading Loading @@ -174,7 +182,7 @@ mod tests { #[test] fn test_flag_package() { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); for pkg in packages.iter() { let pkg_name = pkg.package_name; Loading Loading
tools/aconfig/aconfig/src/commands.rs +6 −6 Original line number Diff line number Diff line Loading @@ -438,14 +438,14 @@ where // protect hardcoded offset reads. // Creates a fingerprint of the flag names (which requires sorting the vector). // Fingerprint is used by both codegen and storage files. pub fn compute_flags_fingerprint(flag_names: &mut Vec<String>) -> Result<u64> { pub fn compute_flags_fingerprint(flag_names: &mut Vec<String>) -> u64 { flag_names.sort(); let mut hasher = SipHasher13::new(); for flag in flag_names { hasher.write(flag.as_bytes()); } Ok(hasher.finish()) hasher.finish() } #[allow(dead_code)] // TODO: b/316357686 - Use fingerprint in codegen to Loading Loading @@ -477,7 +477,7 @@ mod tests { let mut extracted_flags = extract_flag_names(parsed_flags).unwrap(); let hash_result = compute_flags_fingerprint(&mut extracted_flags); assert_eq!(hash_result.unwrap(), expected_fingerprint); assert_eq!(hash_result, expected_fingerprint); } #[test] Loading @@ -498,7 +498,7 @@ mod tests { let result_from_names = compute_flags_fingerprint(&mut flag_names_vec); // Assert the same hash is generated for each case. assert_eq!(result_from_parsed_flags.unwrap(), result_from_names.unwrap()); assert_eq!(result_from_parsed_flags, result_from_names); } #[test] Loading @@ -508,9 +508,9 @@ mod tests { let second_parsed_flags = crate::test::parse_second_package_flags(); let mut extracted_flags = extract_flag_names(parsed_flags).unwrap(); let result_from_parsed_flags = compute_flags_fingerprint(&mut extracted_flags).unwrap(); let result_from_parsed_flags = compute_flags_fingerprint(&mut extracted_flags); let mut second_extracted_flags = extract_flag_names(second_parsed_flags).unwrap(); let second_result = compute_flags_fingerprint(&mut second_extracted_flags).unwrap(); let second_result = compute_flags_fingerprint(&mut second_extracted_flags); // Different flags should have a different fingerprint. assert_ne!(result_from_parsed_flags, second_result); Loading
tools/aconfig/aconfig/src/storage/flag_info.rs +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ mod tests { pub fn create_test_flag_info_list_from_source() -> Result<FlagInfoList> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_info("mockup", &packages, DEFAULT_FILE_VERSION) } Loading
tools/aconfig/aconfig/src/storage/flag_table.rs +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ mod tests { fn create_test_flag_table_from_source() -> Result<FlagTable> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_table("mockup", &packages, DEFAULT_FILE_VERSION) } Loading
tools/aconfig/aconfig/src/storage/flag_value.rs +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ mod tests { pub fn create_test_flag_value_list_from_source() -> Result<FlagValueList> { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); create_flag_value("mockup", &packages, DEFAULT_FILE_VERSION) } Loading
tools/aconfig/aconfig/src/storage/mod.rs +13 −5 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ pub mod package_table; use anyhow::Result; use std::collections::{HashMap, HashSet}; use crate::commands::compute_flags_fingerprint; use crate::storage::{ flag_info::create_flag_info, flag_table::create_flag_table, flag_value::create_flag_value, package_table::create_package_table, Loading Loading @@ -59,7 +60,7 @@ impl<'a> FlagPackage<'a> { } } pub fn group_flags_by_package<'a, I>(parsed_flags_vec_iter: I) -> Vec<FlagPackage<'a>> pub fn group_flags_by_package<'a, I>(parsed_flags_vec_iter: I, version: u32) -> Vec<FlagPackage<'a>> where I: Iterator<Item = &'a ProtoParsedFlags>, { Loading @@ -76,13 +77,18 @@ where } } // cacluate boolean flag start index for each package // Calculate boolean flag start index for each package let mut boolean_start_index = 0; for p in packages.iter_mut() { p.boolean_start_index = boolean_start_index; boolean_start_index += p.boolean_flags.len() as u32; // TODO: b/316357686 - Calculate fingerprint and add to package. if version > 2 { let mut flag_names_vec = p.flag_names.clone().into_iter().map(String::from).collect::<Vec<_>>(); let fingerprint = compute_flags_fingerprint(&mut flag_names_vec); p.fingerprint = fingerprint; } } packages Loading @@ -97,7 +103,7 @@ pub fn generate_storage_file<'a, I>( where I: Iterator<Item = &'a ProtoParsedFlags>, { let packages = group_flags_by_package(parsed_flags_vec_iter); let packages = group_flags_by_package(parsed_flags_vec_iter, version); match file { StorageFileType::PackageMap => { Loading @@ -121,6 +127,8 @@ where #[cfg(test)] mod tests { use aconfig_storage_file::DEFAULT_FILE_VERSION; use super::*; use crate::Input; Loading Loading @@ -174,7 +182,7 @@ mod tests { #[test] fn test_flag_package() { let caches = parse_all_test_flags(); let packages = group_flags_by_package(caches.iter()); let packages = group_flags_by_package(caches.iter(), DEFAULT_FILE_VERSION); for pkg in packages.iter() { let pkg_name = pkg.package_name; Loading