Aconfig: sort the parsed flag order in create-cache

This change will sorted the parsed flags from the declarations. Without
this change the code will expect the passed in declarations sorted.
After this change the code will still guarantee the parsed flags in the
cache is sorted, but it won't expect the passed in declarations are
sorted

Test: atest aconfig.test
Bug: 291926035
Change-Id: I5f0637fe770003224b128591890e04277bc09345
This commit is contained in:
Zhi Dou 2023-07-19 19:29:22 +00:00
parent 0ee11559f9
commit 92cf0ec232
3 changed files with 25 additions and 19 deletions

View file

@ -127,6 +127,8 @@ pub fn parse_flags(package: &str, declarations: Vec<Input>, values: Vec<Input>)
}
}
// Create a sorted parsed_flags
crate::protos::parsed_flags::sort_parsed_flags(&mut parsed_flags);
crate::protos::parsed_flags::verify_fields(&parsed_flags)?;
let mut output = Vec::new();
parsed_flags.write_to_vec(&mut output)?;

View file

@ -255,6 +255,10 @@ pub mod parsed_flags {
Ok(merged)
}
pub fn sort_parsed_flags(pf: &mut ProtoParsedFlags) {
pf.parsed_flag.sort_by_key(create_sorting_key);
}
fn create_sorting_key(pf: &ProtoParsedFlag) -> String {
format!("{}.{}", pf.package(), pf.name())
}

View file

@ -1,24 +1,5 @@
package: "com.android.aconfig.test"
# This flag's final value is calculated from:
# - test.aconfig: DISABLED + READ_WRITE (default)
# - first.values: DISABLED + READ_ONLY
flag {
name: "disabled_ro"
namespace: "aconfig_test"
description: "This flag is DISABLED + READ_ONLY"
bug: "123"
}
# This flag's final value is calculated from:
# - test.aconfig: DISABLED + READ_WRITE (default)
flag {
name: "disabled_rw"
namespace: "aconfig_test"
description: "This flag is DISABLED + READ_WRITE"
bug: "456"
}
# This flag's final value is calculated from:
# - test.aconfig: DISABLED + READ_WRITE (default)
# - first.values: DISABLED + READ_WRITE
@ -40,3 +21,22 @@ flag {
description: "This flag is ENABLED + READ_WRITE"
# no bug field: bug is not mandatory
}
# This flag's final value is calculated from:
# - test.aconfig: DISABLED + READ_WRITE (default)
# - first.values: DISABLED + READ_ONLY
flag {
name: "disabled_ro"
namespace: "aconfig_test"
description: "This flag is DISABLED + READ_ONLY"
bug: "123"
}
# This flag's final value is calculated from:
# - test.aconfig: DISABLED + READ_WRITE (default)
flag {
name: "disabled_rw"
namespace: "aconfig_test"
description: "This flag is DISABLED + READ_WRITE"
bug: "456"
}