Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbeda859 authored by Oriol Prieto Gasco's avatar Oriol Prieto Gasco Committed by Oriol Prieto Gascó
Browse files

aconfig: Respect flag naming convention on test flags

Test: atest aconfig.test
Bug: 311152507
Change-Id: I960867d32415007db5dacab57e97b813cbbee650
parent 7c607a0e
Loading
Loading
Loading
Loading
+56 −0
Original line number Diff line number Diff line
@@ -170,6 +170,8 @@ public:

    virtual bool enabled_ro() = 0;

    virtual bool enabled_ro_exported() = 0;

    virtual bool enabled_rw() = 0;
};

@@ -199,6 +201,10 @@ inline bool enabled_ro() {
    return true;
}

inline bool enabled_ro_exported() {
    return true;
}

inline bool enabled_rw() {
    return provider_->enabled_rw();
}
@@ -220,6 +226,8 @@ bool com_android_aconfig_test_enabled_fixed_ro();

bool com_android_aconfig_test_enabled_ro();

bool com_android_aconfig_test_enabled_ro_exported();

bool com_android_aconfig_test_enabled_rw();

#ifdef __cplusplus
@@ -265,6 +273,10 @@ public:

    virtual void enabled_ro(bool val) = 0;

    virtual bool enabled_ro_exported() = 0;

    virtual void enabled_ro_exported(bool val) = 0;

    virtual bool enabled_rw() = 0;

    virtual void enabled_rw(bool val) = 0;
@@ -322,6 +334,14 @@ inline void enabled_ro(bool val) {
    provider_->enabled_ro(val);
}

inline bool enabled_ro_exported() {
    return provider_->enabled_ro_exported();
}

inline void enabled_ro_exported(bool val) {
    provider_->enabled_ro_exported(val);
}

inline bool enabled_rw() {
    return provider_->enabled_rw();
}
@@ -363,6 +383,10 @@ bool com_android_aconfig_test_enabled_ro();

void set_com_android_aconfig_test_enabled_ro(bool val);

bool com_android_aconfig_test_enabled_ro_exported();

void set_com_android_aconfig_test_enabled_ro_exported(bool val);

bool com_android_aconfig_test_enabled_rw();

void set_com_android_aconfig_test_enabled_rw(bool val);
@@ -429,6 +453,10 @@ namespace com::android::aconfig::test {
                return true;
            }

            virtual bool enabled_ro_exported() override {
                return true;
            }

            virtual bool enabled_rw() override {
                if (cache_[3] == -1) {
                    cache_[3] = server_configurable_flags::GetServerConfigurableFlag(
@@ -471,6 +499,10 @@ bool com_android_aconfig_test_enabled_ro() {
    return true;
}

bool com_android_aconfig_test_enabled_ro_exported() {
    return true;
}

bool com_android_aconfig_test_enabled_rw() {
    return com::android::aconfig::test::enabled_rw();
}
@@ -581,6 +613,19 @@ namespace com::android::aconfig::test {
                overrides_["enabled_ro"] = val;
            }

            virtual bool enabled_ro_exported() override {
                auto it = overrides_.find("enabled_ro_exported");
                  if (it != overrides_.end()) {
                      return it->second;
                } else {
                  return true;
                }
            }

            virtual void enabled_ro_exported(bool val) override {
                overrides_["enabled_ro_exported"] = val;
            }

            virtual bool enabled_rw() override {
                auto it = overrides_.find("enabled_rw");
                  if (it != overrides_.end()) {
@@ -661,6 +706,17 @@ void set_com_android_aconfig_test_enabled_ro(bool val) {
    com::android::aconfig::test::enabled_ro(val);
}


bool com_android_aconfig_test_enabled_ro_exported() {
    return com::android::aconfig::test::enabled_ro_exported();
}


void set_com_android_aconfig_test_enabled_ro_exported(bool val) {
    com::android::aconfig::test::enabled_ro_exported(val);
}


bool com_android_aconfig_test_enabled_rw() {
    return com::android::aconfig::test::enabled_rw();
}
+47 −19
Original line number Diff line number Diff line
@@ -193,6 +193,9 @@ mod tests {
        @com.android.aconfig.annotations.AssumeTrueForR8
        @UnsupportedAppUsage
        boolean enabledRo();
        @com.android.aconfig.annotations.AssumeTrueForR8
        @UnsupportedAppUsage
        boolean enabledRoExported();
        @UnsupportedAppUsage
        boolean enabledRw();
    }
@@ -217,6 +220,8 @@ mod tests {
        /** @hide */
        public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro";
        /** @hide */
        public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";
        /** @hide */
        public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";

        @com.android.aconfig.annotations.AssumeFalseForR8
@@ -246,6 +251,11 @@ mod tests {
        public static boolean enabledRo() {
            return FEATURE_FLAGS.enabledRo();
        }
        @com.android.aconfig.annotations.AssumeTrueForR8
        @UnsupportedAppUsage
        public static boolean enabledRoExported() {
            return FEATURE_FLAGS.enabledRoExported();
        }
        @UnsupportedAppUsage
        public static boolean enabledRw() {
            return FEATURE_FLAGS.enabledRw();
@@ -295,6 +305,11 @@ mod tests {
        }
        @Override
        @UnsupportedAppUsage
        public boolean enabledRoExported() {
            return getValue(Flags.FLAG_ENABLED_RO_EXPORTED);
        }
        @Override
        @UnsupportedAppUsage
        public boolean enabledRw() {
            return getValue(Flags.FLAG_ENABLED_RW);
        }
@@ -324,6 +339,7 @@ mod tests {
                Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false),
                Map.entry(Flags.FLAG_ENABLED_FIXED_RO, false),
                Map.entry(Flags.FLAG_ENABLED_RO, false),
                Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false),
                Map.entry(Flags.FLAG_ENABLED_RW, false)
            )
        );
@@ -442,6 +458,11 @@ mod tests {
            }
            @Override
            @UnsupportedAppUsage
            public boolean enabledRoExported() {
                return true;
            }
            @Override
            @UnsupportedAppUsage
            public boolean enabledRw() {
                if (!aconfig_test_is_cached) {
                    load_overrides_aconfig_test();
@@ -494,19 +515,19 @@ mod tests {
        import android.compat.annotation.UnsupportedAppUsage;
        /** @hide */
        public final class Flags {
            /** @hide */
            public static final String FLAG_DISABLED_RW = "com.android.aconfig.test.disabled_rw";
            /** @hide */
            public static final String FLAG_DISABLED_RW_EXPORTED = "com.android.aconfig.test.disabled_rw_exported";
            /** @hide */
            public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";

            @UnsupportedAppUsage
            public static boolean disabledRw() {
                return FEATURE_FLAGS.disabledRw();
            }
            @UnsupportedAppUsage
            public static boolean disabledRwExported() {
                return FEATURE_FLAGS.disabledRwExported();
            }
            @UnsupportedAppUsage
            public static boolean enabledRoExported() {
                return FEATURE_FLAGS.enabledRoExported();
            }
            private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
        }
        "#;
@@ -517,10 +538,10 @@ mod tests {
        import android.compat.annotation.UnsupportedAppUsage;
        /** @hide */
        public interface FeatureFlags {
            @UnsupportedAppUsage
            boolean disabledRw();
            @UnsupportedAppUsage
            boolean disabledRwExported();
            @UnsupportedAppUsage
            boolean enabledRoExported();
        }
        "#;

@@ -534,17 +555,17 @@ mod tests {
        public final class FeatureFlagsImpl implements FeatureFlags {
            private static boolean aconfig_test_is_cached = false;
            private static boolean other_namespace_is_cached = false;
            private static boolean disabledRw = false;
            private static boolean disabledRwExported = false;
            private static boolean enabledRoExported = false;


            private void load_overrides_aconfig_test() {
                try {
                    Properties properties = DeviceConfig.getProperties("aconfig_test");
                    disabledRw =
                        properties.getBoolean("com.android.aconfig.test.disabled_rw", false);
                    disabledRwExported =
                        properties.getBoolean("com.android.aconfig.test.disabled_rw_exported", false);
                    enabledRoExported =
                        properties.getBoolean("com.android.aconfig.test.enabled_ro_exported", false);
                } catch (NullPointerException e) {
                    throw new RuntimeException(
                        "Cannot read value from namespace aconfig_test "
@@ -576,20 +597,20 @@ mod tests {

            @Override
            @UnsupportedAppUsage
            public boolean disabledRw() {
            public boolean disabledRwExported() {
                if (!aconfig_test_is_cached) {
                    load_overrides_aconfig_test();
                }
                return disabledRw;
                return disabledRwExported;
            }

            @Override
            @UnsupportedAppUsage
            public boolean disabledRwExported() {
            public boolean enabledRoExported() {
                if (!aconfig_test_is_cached) {
                    load_overrides_aconfig_test();
                }
                return disabledRwExported;
                return enabledRoExported;
            }
        }"#;

@@ -606,13 +627,13 @@ mod tests {
            }
            @Override
            @UnsupportedAppUsage
            public boolean disabledRw() {
                return getValue(Flags.FLAG_DISABLED_RW);
            public boolean disabledRwExported() {
                return getValue(Flags.FLAG_DISABLED_RW_EXPORTED);
            }
            @Override
            @UnsupportedAppUsage
            public boolean disabledRwExported() {
                return getValue(Flags.FLAG_DISABLED_RW_EXPORTED);
            public boolean enabledRoExported() {
                return getValue(Flags.FLAG_ENABLED_RO_EXPORTED);
            }
            public void setFlag(String flagName, boolean value) {
                if (!this.mFlagMap.containsKey(flagName)) {
@@ -640,6 +661,7 @@ mod tests {
                    Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false),
                    Map.entry(Flags.FLAG_ENABLED_FIXED_RO, false),
                    Map.entry(Flags.FLAG_ENABLED_RO, false),
                    Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false),
                    Map.entry(Flags.FLAG_ENABLED_RW, false)
                )
            );
@@ -739,6 +761,12 @@ mod tests {
            }
            @Override
            @UnsupportedAppUsage
            public boolean enabledRoExported() {
                throw new UnsupportedOperationException(
                    "Method is not implemented.");
            }
            @Override
            @UnsupportedAppUsage
            public boolean enabledRw() {
                throw new UnsupportedOperationException(
                    "Method is not implemented.");
+35 −0
Original line number Diff line number Diff line
@@ -158,6 +158,11 @@ impl FlagProvider {
        true
    }

    /// query flag enabled_ro_exported
    pub fn enabled_ro_exported(&self) -> bool {
        true
    }

    /// query flag enabled_rw
    pub fn enabled_rw(&self) -> bool {
        *CACHED_enabled_rw
@@ -203,6 +208,12 @@ pub fn enabled_ro() -> bool {
    true
}

/// query flag enabled_ro_exported
#[inline(always)]
pub fn enabled_ro_exported() -> bool {
    true
}

/// query flag enabled_rw
#[inline(always)]
pub fn enabled_rw() -> bool {
@@ -303,6 +314,18 @@ impl FlagProvider {
        self.overrides.insert("enabled_ro", val);
    }

    /// query flag enabled_ro_exported
    pub fn enabled_ro_exported(&self) -> bool {
        self.overrides.get("enabled_ro_exported").copied().unwrap_or(
            true
        )
    }

    /// set flag enabled_ro_exported
    pub fn set_enabled_ro_exported(&mut self, val: bool) {
        self.overrides.insert("enabled_ro_exported", val);
    }

    /// query flag enabled_rw
    pub fn enabled_rw(&self) -> bool {
        self.overrides.get("enabled_rw").copied().unwrap_or(
@@ -401,6 +424,18 @@ pub fn set_enabled_ro(val: bool) {
    PROVIDER.lock().unwrap().set_enabled_ro(val);
}

/// query flag enabled_ro_exported
#[inline(always)]
pub fn enabled_ro_exported() -> bool {
    PROVIDER.lock().unwrap().enabled_ro_exported()
}

/// set flag enabled_ro_exported
#[inline(always)]
pub fn set_enabled_ro_exported(val: bool) {
    PROVIDER.lock().unwrap().set_enabled_ro_exported(val);
}

/// query flag enabled_rw
#[inline(always)]
pub fn enabled_rw() -> bool {
+1 −1
Original line number Diff line number Diff line
@@ -370,7 +370,7 @@ mod tests {
        assert_eq!(ProtoFlagState::ENABLED, enabled_ro.trace[2].state());
        assert_eq!(ProtoFlagPermission::READ_ONLY, enabled_ro.trace[2].permission());

        assert_eq!(7, parsed_flags.parsed_flag.len());
        assert_eq!(8, parsed_flags.parsed_flag.len());
        for pf in parsed_flags.parsed_flag.iter() {
            if pf.name() == "enabled_fixed_ro" {
                continue;
+27 −2
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ parsed_flag {
    permission: READ_WRITE
  }
  is_fixed_read_only: false
  is_exported: true
  is_exported: false
  container: "system"
  metadata {
    purpose: PURPOSE_UNSPECIFIED
@@ -72,7 +72,7 @@ parsed_flag {
  package: "com.android.aconfig.test"
  name: "disabled_rw_exported"
  namespace: "aconfig_test"
  description: "This flag is exported"
  description: "This flag is DISABLED + READ_WRITE and exported"
  bug: "111"
  state: DISABLED
  permission: READ_WRITE
@@ -173,6 +173,31 @@ parsed_flag {
    purpose: PURPOSE_BUGFIX
  }
}
parsed_flag {
  package: "com.android.aconfig.test"
  name: "enabled_ro_exported"
  namespace: "aconfig_test"
  description: "This flag is ENABLED + READ_ONLY and exported"
  bug: "111"
  state: ENABLED
  permission: READ_ONLY
  trace {
    source: "tests/test.aconfig"
    state: DISABLED
    permission: READ_WRITE
  }
  trace {
    source: "tests/first.values"
    state: ENABLED
    permission: READ_ONLY
  }
  is_fixed_read_only: false
  is_exported: true
  container: "system"
  metadata {
    purpose: PURPOSE_UNSPECIFIED
  }
}
parsed_flag {
  package: "com.android.aconfig.test"
  name: "enabled_rw"
Loading