aconfig: instrument actual flag read APIs

The logging instrumentation for the storage migration contained a bug;
we want to instrument the actual flag read APIs, not the FlagProvider.

Bug: 328444881
Test: m
Change-Id: I6973ccf69005e812ac443ac5e7e14293db7b0845
Ignore-AOSP-First: internal storage migration, this code will be deleted
diff --git a/tools/aconfig/aconfig/src/codegen/rust.rs b/tools/aconfig/aconfig/src/codegen/rust.rs
index 591781e..6042593 100644
--- a/tools/aconfig/aconfig/src/codegen/rust.rs
+++ b/tools/aconfig/aconfig/src/codegen/rust.rs
@@ -114,7 +114,7 @@
 
 static STORAGE_MIGRATION_MARKER_FILE: &str =
     "/metadata/aconfig/storage_test_mission_1";
-static MIGRATION_LOG_TAG: &str = "AconfigStorageTestMission1";
+static MIGRATION_LOG_TAG: &str = "AconfigTestMission1";
 
 /// flag provider
 pub struct FlagProvider;
@@ -517,7 +517,7 @@
 
 static STORAGE_MIGRATION_MARKER_FILE: &str =
     "/metadata/aconfig/storage_test_mission_1";
-static MIGRATION_LOG_TAG: &str = "AconfigStorageTestMission1";
+static MIGRATION_LOG_TAG: &str = "AconfigTestMission1";
 
 /// flag provider
 pub struct FlagProvider;
@@ -546,20 +546,17 @@
 impl FlagProvider {
     /// query flag disabled_rw_exported
     pub fn disabled_rw_exported(&self) -> bool {
-        let result = *CACHED_disabled_rw_exported;
-        result
+        *CACHED_disabled_rw_exported
     }
 
     /// query flag enabled_fixed_ro_exported
     pub fn enabled_fixed_ro_exported(&self) -> bool {
-        let result = *CACHED_enabled_fixed_ro_exported;
-        result
+        *CACHED_enabled_fixed_ro_exported
     }
 
     /// query flag enabled_ro_exported
     pub fn enabled_ro_exported(&self) -> bool {
-        let result = *CACHED_enabled_ro_exported;
-        result
+        *CACHED_enabled_ro_exported
     }
 }
 
@@ -594,7 +591,7 @@
 
 static STORAGE_MIGRATION_MARKER_FILE: &str =
     "/metadata/aconfig/storage_test_mission_1";
-static MIGRATION_LOG_TAG: &str = "AconfigStorageTestMission1";
+static MIGRATION_LOG_TAG: &str = "AconfigTestMission1";
 
 /// flag provider
 pub struct FlagProvider;
@@ -602,344 +599,32 @@
 impl FlagProvider {
     /// query flag disabled_ro
     pub fn disabled_ro(&self) -> bool {
-        let result = false;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'disabled_ro', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'disabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 0 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_ro': {}", err);
-                    return result;
-                }
-            };
-            if false != value {
-                let default_value = false;
-                error!("flag mismatch for 'disabled_ro'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        false
     }
 
     /// query flag disabled_rw
     pub fn disabled_rw(&self) -> bool {
-        let result = false;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'disabled_rw', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 1 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw': {}", err);
-                    return result;
-                }
-            };
-            if false != value {
-                let default_value = false;
-                error!("flag mismatch for 'disabled_rw'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        false
     }
 
     /// query flag disabled_rw_in_other_namespace
     pub fn disabled_rw_in_other_namespace(&self) -> bool {
-        let result = false;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw_in_other_namespace': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'disabled_rw_in_other_namespace', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw_in_other_namespace': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw_in_other_namespace': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 2 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'disabled_rw_in_other_namespace': {}", err);
-                    return result;
-                }
-            };
-            if false != value {
-                let default_value = false;
-                error!("flag mismatch for 'disabled_rw_in_other_namespace'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        false
     }
 
     /// query flag enabled_fixed_ro
     pub fn enabled_fixed_ro(&self) -> bool {
-        let result = true;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_fixed_ro': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'enabled_fixed_ro', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'enabled_fixed_ro': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_fixed_ro': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 3 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_fixed_ro': {}", err);
-                    return result;
-                }
-            };
-            if true != value {
-                let default_value = true;
-                error!("flag mismatch for 'enabled_fixed_ro'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        true
     }
 
     /// query flag enabled_ro
     pub fn enabled_ro(&self) -> bool {
-        let result = true;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'enabled_ro', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'enabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_ro': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 4 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_ro': {}", err);
-                    return result;
-                }
-            };
-            if true != value {
-                let default_value = true;
-                error!("flag mismatch for 'enabled_ro'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        true
     }
 
     /// query flag enabled_rw
     pub fn enabled_rw(&self) -> bool {
-        let result = true;
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() {
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe {
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) {
-                Ok(file) => file,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "com.android.aconfig.test") {
-                Ok(Some(offset)) => offset,
-                Ok(None) => {
-                    error!("failed to read flag 'enabled_rw', not found in package map");
-                    return result;
-                },
-                Err(err) => {
-                    error!("failed to read flag 'enabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("system", StorageFileType::FlagVal) {
-                Ok(val_map) => val_map,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_rw': {}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, 5 + package_offset.boolean_offset) {
-                Ok(val) => val,
-                Err(err) => {
-                    error!("failed to read flag 'enabled_rw': {}", err);
-                    return result;
-                }
-            };
-            if true != value {
-                let default_value = true;
-                error!("flag mismatch for 'enabled_rw'. Legacy storage was {default_value}, new storage was {value}")
-            }
-        }
-        result
+        true
     }
 }
 
@@ -1020,16 +705,16 @@
 
     #[test]
     fn test_generate_rust_code_for_test() {
-        test_generate_rust_code(CodegenMode::Test, true);
+        test_generate_rust_code(CodegenMode::Test, false);
     }
 
     #[test]
     fn test_generate_rust_code_for_exported() {
-        test_generate_rust_code(CodegenMode::Exported, true);
+        test_generate_rust_code(CodegenMode::Exported, false);
     }
 
     #[test]
     fn test_generate_rust_code_for_force_read_only() {
-        test_generate_rust_code(CodegenMode::ForceReadOnly, true);
+        test_generate_rust_code(CodegenMode::ForceReadOnly, false);
     }
 }
diff --git a/tools/aconfig/aconfig/templates/rust.template b/tools/aconfig/aconfig/templates/rust.template
index 4b1ad83..fe07ac5 100644
--- a/tools/aconfig/aconfig/templates/rust.template
+++ b/tools/aconfig/aconfig/templates/rust.template
@@ -7,7 +7,7 @@
 
 static STORAGE_MIGRATION_MARKER_FILE: &str =
     "/metadata/aconfig/storage_test_mission_1";
-static MIGRATION_LOG_TAG: &str = "AconfigStorageTestMission1";
+static MIGRATION_LOG_TAG: &str = "AconfigTestMission1";
 
 /// flag provider
 pub struct FlagProvider;
@@ -31,76 +31,11 @@
 {{ for flag in template_flags }}
     /// query flag {flag.name}
     pub fn {flag.name}(&self) -> bool \{
-        {{ if not allow_instrumentation }}
-
         {{ -if flag.readwrite }}
         *CACHED_{flag.name}
         {{ -else }}
         {flag.default_value}
         {{ -endif }}
-
-        {{ else }}
-        let result = {{ -if flag.readwrite }} *CACHED_{flag.name}{{ else }} {flag.default_value} {{ -endif }};
-
-        {{ if flag.readwrite }}
-        result
-        {{ else }}
-
-        if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() \{
-            return result;
-        }
-
-        // This will be called multiple times. Subsequent calls after the first
-        // are noops.
-        logger::init(
-            logger::Config::default()
-                .with_tag_on_device(MIGRATION_LOG_TAG)
-                .with_max_level(LevelFilter::Info),
-        );
-
-        unsafe \{
-            let package_map = match get_mapped_storage_file("system", StorageFileType::PackageMap) \{
-                Ok(file) => file,
-                Err(err) => \{
-                    error!("failed to read flag '{flag.name}': \{}", err);
-                    return result;
-                }
-            };
-            let package_offset = match get_package_offset(&package_map, "{package}") \{
-                Ok(Some(offset)) => offset,
-                Ok(None) => \{
-                    error!("failed to read flag '{flag.name}', not found in package map");
-                    return result;
-                },
-                Err(err) => \{
-                    error!("failed to read flag '{flag.name}': \{}", err);
-                    return result;
-                }
-            };
-            let flag_val_map = match get_mapped_storage_file("{flag.container}", StorageFileType::FlagVal) \{
-                Ok(val_map) => val_map,
-                Err(err) => \{
-                    error!("failed to read flag '{flag.name}': \{}", err);
-                    return result;
-                }
-            };
-            let value = match get_boolean_flag_value(&flag_val_map, {flag.flag_offset} + package_offset.boolean_offset) \{
-                Ok(val) => val,
-                Err(err) => \{
-                    error!("failed to read flag '{flag.name}': \{}", err);
-                    return result;
-                }
-            };
-
-            if {flag.default_value} != value \{
-                let default_value = {flag.default_value};
-                error!("flag mismatch for '{flag.name}'. Legacy storage was \{default_value}, new storage was \{value}")
-            }
-        }
-
-        result
-        {{ endif }}
-        {{ endif }}
     }
 {{ endfor }}
 
@@ -117,7 +52,67 @@
     PROVIDER.{flag.name}()
 {{ -else }}
 pub fn {flag.name}() -> bool \{
+    {{ if not allow_instrumentation }}
     {flag.default_value}
+    {{ else }}
+
+    let result = {flag.default_value};
+    if !Path::new(STORAGE_MIGRATION_MARKER_FILE).exists() \{
+        return result;
+    }
+
+    // This will be called multiple times. Subsequent calls after the first
+    // are noops.
+    logger::init(
+        logger::Config::default()
+            .with_tag_on_device(MIGRATION_LOG_TAG)
+            .with_max_level(LevelFilter::Info),
+    );
+
+    unsafe \{
+        let package_map = match get_mapped_storage_file("{flag.container}", StorageFileType::PackageMap) \{
+            Ok(file) => file,
+            Err(err) => \{
+                error!("failed to read flag '{flag.name}': \{}", err);
+                return result;
+            }
+        };
+        let package_offset = match get_package_offset(&package_map, "{package}") \{
+            Ok(Some(offset)) => offset,
+            Ok(None) => \{
+                error!("failed to read flag '{flag.name}', not found in package map");
+                return result;
+            },
+            Err(err) => \{
+                error!("failed to read flag '{flag.name}': \{}", err);
+                return result;
+            }
+        };
+        let flag_val_map = match get_mapped_storage_file("{flag.container}", StorageFileType::FlagVal) \{
+            Ok(val_map) => val_map,
+            Err(err) => \{
+                error!("failed to read flag '{flag.name}': \{}", err);
+                return result;
+            }
+        };
+        let value = match get_boolean_flag_value(&flag_val_map, {flag.flag_offset} + package_offset.boolean_offset) \{
+            Ok(val) => val,
+            Err(err) => \{
+                error!("failed to read flag '{flag.name}': \{}", err);
+                return result;
+            }
+        };
+
+        if result != value \{
+            error!("error: flag mismatch for '{flag.name}'. Legacy storage was \{result}, new storage was \{value}")
+        } else \{
+            let default_value = {flag.default_value};
+            info!("success! flag '{flag.name}' contained correct value. Legacy storage was \{default_value}, new storage was \{value}")
+        }
+    }
+
+    result
+    {{ endif }}
 {{ -endif }}
 }
 {{ endfor }}