Merge "Return new storage value when flag enabled" into main

This commit is contained in:
Ted Bauer
2024-08-06 14:12:09 +00:00
committed by Android (Google) Code Review
3 changed files with 98 additions and 17 deletions

View File

@@ -287,6 +287,11 @@ lazy_static::lazy_static! {
"com.android.aconfig.test.disabled_rw",
"false") == "true";
let use_new_storage_value = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
if Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
// This will be called multiple times. Subsequent calls after the first are noops.
logger::init(
@@ -315,14 +320,23 @@ lazy_static::lazy_static! {
match aconfig_storage_result {
Ok(storage_result) if storage_result == result => {
log!(Level::Info, "AconfigTestMission1: success! flag 'disabled_rw' contained correct value. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Ok(storage_result) => {
log!(Level::Error, "AconfigTestMission1: error: mismatch for flag 'disabled_rw'. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Err(err) => {
log!(Level::Error, "AconfigTestMission1: error: {err}")
log!(Level::Error, "AconfigTestMission1: error: {err}");
panic!("failed to read flag value: {err}");
}
}
}
@@ -338,6 +352,11 @@ lazy_static::lazy_static! {
"com.android.aconfig.test.disabled_rw_exported",
"false") == "true";
let use_new_storage_value = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
if Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
// This will be called multiple times. Subsequent calls after the first are noops.
logger::init(
@@ -366,14 +385,23 @@ lazy_static::lazy_static! {
match aconfig_storage_result {
Ok(storage_result) if storage_result == result => {
log!(Level::Info, "AconfigTestMission1: success! flag 'disabled_rw_exported' contained correct value. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Ok(storage_result) => {
log!(Level::Error, "AconfigTestMission1: error: mismatch for flag 'disabled_rw_exported'. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Err(err) => {
log!(Level::Error, "AconfigTestMission1: error: {err}")
log!(Level::Error, "AconfigTestMission1: error: {err}");
panic!("failed to read flag value: {err}");
}
}
}
@@ -389,6 +417,11 @@ lazy_static::lazy_static! {
"com.android.aconfig.test.disabled_rw_in_other_namespace",
"false") == "true";
let use_new_storage_value = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
if Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
// This will be called multiple times. Subsequent calls after the first are noops.
logger::init(
@@ -417,14 +450,23 @@ lazy_static::lazy_static! {
match aconfig_storage_result {
Ok(storage_result) if storage_result == result => {
log!(Level::Info, "AconfigTestMission1: success! flag 'disabled_rw_in_other_namespace' contained correct value. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Ok(storage_result) => {
log!(Level::Error, "AconfigTestMission1: error: mismatch for flag 'disabled_rw_in_other_namespace'. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Err(err) => {
log!(Level::Error, "AconfigTestMission1: error: {err}")
log!(Level::Error, "AconfigTestMission1: error: {err}");
panic!("failed to read flag value: {err}");
}
}
}
@@ -440,6 +482,11 @@ lazy_static::lazy_static! {
"com.android.aconfig.test.enabled_rw",
"true") == "true";
let use_new_storage_value = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
if Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
// This will be called multiple times. Subsequent calls after the first are noops.
logger::init(
@@ -468,14 +515,23 @@ lazy_static::lazy_static! {
match aconfig_storage_result {
Ok(storage_result) if storage_result == result => {
log!(Level::Info, "AconfigTestMission1: success! flag 'enabled_rw' contained correct value. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Ok(storage_result) => {
log!(Level::Error, "AconfigTestMission1: error: mismatch for flag 'enabled_rw'. Legacy storage was {result}, new storage was {storage_result}");
return storage_result;
if use_new_storage_value {
return storage_result;
} else {
return result;
}
},
Err(err) => {
log!(Level::Error, "AconfigTestMission1: error: {err}")
log!(Level::Error, "AconfigTestMission1: error: {err}");
panic!("failed to read flag value: {err}");
}
}
}

View File

@@ -76,7 +76,8 @@ namespace {cpp_namespace} \{
: boolean_start_index_()
{{ -endif }}
, flag_value_file_(nullptr)
, read_from_new_storage_(false) \{
, read_from_new_storage_(false)
, use_new_storage_value(false) \{
struct stat buffer;
if (stat("/metadata/aconfig_test_missions/mission_1", &buffer) == 0) \{
@@ -117,6 +118,11 @@ namespace {cpp_namespace} \{
// cache flag value file
flag_value_file_ = std::unique_ptr<aconfig_storage::MappedStorageFile>(
*flag_value_file);
use_new_storage_value = server_configurable_flags::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
}
{{ -endif }}
{{ -endif }}
@@ -156,7 +162,11 @@ namespace {cpp_namespace} \{
ALOGI("success: {item.flag_name} value matches");
}
return *value;
if (use_new_storage_value) \{
return *value;
} else \{
return expected_value;
}
}
{{ -endif }}
@@ -181,6 +191,7 @@ namespace {cpp_namespace} \{
std::unique_ptr<aconfig_storage::MappedStorageFile> flag_value_file_;
bool read_from_new_storage_;
bool use_new_storage_value;
{{ -endif }}
{{ -endif }}

View File

@@ -35,6 +35,11 @@ lazy_static::lazy_static! \{
"{flag.device_config_flag}",
"{flag.default_value}") == "true";
let use_new_storage_value = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.core_experiments_team_internal",
"com.android.providers.settings.use_new_storage_value",
"false") == "true";
if Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() \{
// This will be called multiple times. Subsequent calls after the first are noops.
logger::init(
@@ -63,14 +68,23 @@ lazy_static::lazy_static! \{
match aconfig_storage_result \{
Ok(storage_result) if storage_result == result => \{
log!(Level::Info, "AconfigTestMission1: success! flag '{flag.name}' contained correct value. Legacy storage was \{result}, new storage was \{storage_result}");
return storage_result;
if use_new_storage_value \{
return storage_result;
} else \{
return result;
}
},
Ok(storage_result) => \{
log!(Level::Error, "AconfigTestMission1: error: mismatch for flag '{flag.name}'. Legacy storage was \{result}, new storage was \{storage_result}");
return storage_result;
if use_new_storage_value \{
return storage_result;
} else \{
return result;
}
},
Err(err) => \{
log!(Level::Error, "AconfigTestMission1: error: \{err}")
log!(Level::Error, "AconfigTestMission1: error: \{err}");
panic!("failed to read flag value: \{err}");
}
}
}