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

Commit db9227d7 authored by Marybeth Fair's avatar Marybeth Fair
Browse files

Add fingerprint info to package context.

For rust/cpp codegen.

Test: atest
Change-Id: I3a247279329a369593925f1ac32967e397df9509
parent 57bbaf99
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -433,21 +433,24 @@ mod tests {
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_1")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 0, boolean_start_index: 0 };
        let expected_package_context =
            PackageReadContext { package_id: 0, boolean_start_index: 0, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_2")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 1, boolean_start_index: 3 };
        let expected_package_context =
            PackageReadContext { package_id: 1, boolean_start_index: 3, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_4")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 2, boolean_start_index: 6 };
        let expected_package_context =
            PackageReadContext { package_id: 2, boolean_start_index: 6, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);
    }

+44 −3
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ use anyhow::anyhow;
pub struct PackageReadContext {
    pub package_id: u32,
    pub boolean_start_index: u32,
    pub fingerprint: u64,
}

/// Query package read context: package id and start index
@@ -62,6 +63,7 @@ pub fn find_package_read_context(
            return Ok(Some(PackageReadContext {
                package_id: interpreted_node.package_id,
                boolean_start_index: interpreted_node.boolean_start_index,
                fingerprint: interpreted_node.fingerprint,
            }));
        }
        match interpreted_node.next_offset {
@@ -84,19 +86,58 @@ mod tests {
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_1")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 0, boolean_start_index: 0 };
        let expected_package_context =
            PackageReadContext { package_id: 0, boolean_start_index: 0, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);
        let package_context =
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_2")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 1, boolean_start_index: 3 };
        let expected_package_context =
            PackageReadContext { package_id: 1, boolean_start_index: 3, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);
        let package_context =
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_4")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 2, boolean_start_index: 6 };
        let expected_package_context =
            PackageReadContext { package_id: 2, boolean_start_index: 6, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);
    }

    #[test]
    // this test point locks down table query
    fn test_package_query_v2() {
        let package_table = create_test_package_table(2).into_bytes();
        let package_context =
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_1")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 0,
            boolean_start_index: 0,
            fingerprint: 15248948510590158086u64,
        };
        assert_eq!(package_context, expected_package_context);
        let package_context =
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_2")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 1,
            boolean_start_index: 3,
            fingerprint: 4431940502274857964u64,
        };
        assert_eq!(package_context, expected_package_context);
        let package_context =
            find_package_read_context(&package_table[..], "com.android.aconfig.storage.test_4")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 2,
            boolean_start_index: 6,
            fingerprint: 16233229917711622375u64,
        };
        assert_eq!(package_context, expected_package_context);
    }

+49 −3
Original line number Diff line number Diff line
@@ -64,21 +64,67 @@ mod aconfig_storage_rust_test {
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_1")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 0, boolean_start_index: 0 };
        let expected_package_context =
            PackageReadContext { package_id: 0, boolean_start_index: 0, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_2")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 1, boolean_start_index: 3 };
        let expected_package_context =
            PackageReadContext { package_id: 1, boolean_start_index: 3, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_4")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext { package_id: 2, boolean_start_index: 6 };
        let expected_package_context =
            PackageReadContext { package_id: 2, boolean_start_index: 6, fingerprint: 0 };
        assert_eq!(package_context, expected_package_context);
    }

    #[test]
    fn test_package_context_query_with_fingerprint() {
        let storage_dir = create_test_storage_files(2);
        // SAFETY:
        // The safety here is ensured as the test process will not write to temp storage file
        let package_mapped_file = unsafe {
            get_mapped_file(&storage_dir, "mockup", StorageFileType::PackageMap).unwrap()
        };

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_1")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 0,
            boolean_start_index: 0,
            fingerprint: 15248948510590158086u64,
        };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_2")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 1,
            boolean_start_index: 3,
            fingerprint: 4431940502274857964u64,
        };
        assert_eq!(package_context, expected_package_context);

        let package_context =
            get_package_read_context(&package_mapped_file, "com.android.aconfig.storage.test_4")
                .unwrap()
                .unwrap();
        let expected_package_context = PackageReadContext {
            package_id: 2,
            boolean_start_index: 6,
            fingerprint: 16233229917711622375u64,
        };
        assert_eq!(package_context, expected_package_context);
    }