Add setFlag and resetAll in FeatureFlags test mode
Add methods setFlag and resetAll in FeatureFlags in test mode. For the
injection usecase, user will use the interface FeatureFlags in the code
to control the flags.
Add tests for test mode.
Bug: 280833463
Test: Atest AconfigJavaHostTest --host
Change-Id: Ib59ba35a9011a6400af42fc9c283d37193577997
diff --git a/tools/aconfig/src/codegen_java.rs b/tools/aconfig/src/codegen_java.rs
index a117370..2c9dcf5 100644
--- a/tools/aconfig/src/codegen_java.rs
+++ b/tools/aconfig/src/codegen_java.rs
@@ -116,14 +116,14 @@
use super::*;
use std::collections::HashMap;
- const EXPECTED_FEATUREFLAGS_CONTENT: &str = r#"
+ const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#"
package com.android.aconfig.test;
public interface FeatureFlags {
boolean disabledRo();
boolean disabledRw();
boolean enabledRo();
boolean enabledRw();
- }"#;
+ "#;
const EXPECTED_FLAG_COMMON_CONTENT: &str = r#"
package com.android.aconfig.test;
@@ -179,6 +179,9 @@
CodegenMode::Production,
)
.unwrap();
+ let expect_featureflags_content = EXPECTED_FEATUREFLAGS_COMMON_CONTENT.to_string()
+ + r#"
+ }"#;
let expect_flags_content = EXPECTED_FLAG_COMMON_CONTENT.to_string()
+ r#"
private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
@@ -224,7 +227,7 @@
let mut file_set = HashMap::from([
("com/android/aconfig/test/Flags.java", expect_flags_content.as_str()),
("com/android/aconfig/test/FeatureFlagsImpl.java", expect_featureflagsimpl_content),
- ("com/android/aconfig/test/FeatureFlags.java", EXPECTED_FEATUREFLAGS_CONTENT),
+ ("com/android/aconfig/test/FeatureFlags.java", expect_featureflags_content.as_str()),
(
"com/android/aconfig/test/FakeFeatureFlagsImpl.java",
expect_fakefeatureflagsimpl_content.as_str(),
@@ -258,6 +261,11 @@
CodegenMode::Test,
)
.unwrap();
+ let expect_featureflags_content = EXPECTED_FEATUREFLAGS_COMMON_CONTENT.to_string()
+ + r#"
+ public void setFlag(String flagName, boolean value);
+ public void resetAll();
+ }"#;
let expect_flags_content = EXPECTED_FLAG_COMMON_CONTENT.to_string()
+ r#"
public static void setFeatureFlags(FeatureFlags featureFlags) {
@@ -275,6 +283,16 @@
.to_owned()
+ EXPECTED_METHOD_NOT_IMPL_COMMON_CONTENT
+ r#"
+ @Override
+ public void setFlag(String flagName, boolean value) {
+ throw new UnsupportedOperationException(
+ "Method is not implemented.");
+ }
+ @Override
+ public void resetAll() {
+ throw new UnsupportedOperationException(
+ "Method is not implemented.");
+ }
}
"#;
let expect_fakefeatureflagsimpl_content = r#"
@@ -300,12 +318,14 @@
public boolean enabledRw() {
return getFlag(Flags.FLAG_ENABLED_RW);
}
+ @Override
public void setFlag(String flagName, boolean value) {
if (!this.mFlagMap.containsKey(flagName)) {
throw new IllegalArgumentException("no such flag" + flagName);
}
this.mFlagMap.put(flagName, value);
}
+ @Override
public void resetAll() {
for (Map.Entry entry : mFlagMap.entrySet()) {
entry.setValue(null);
@@ -334,7 +354,7 @@
let mut file_set = HashMap::from([
("com/android/aconfig/test/Flags.java", expect_flags_content.as_str()),
- ("com/android/aconfig/test/FeatureFlags.java", EXPECTED_FEATUREFLAGS_CONTENT),
+ ("com/android/aconfig/test/FeatureFlags.java", expect_featureflags_content.as_str()),
(
"com/android/aconfig/test/FeatureFlagsImpl.java",
expect_featureflagsimpl_content.as_str(),