No guards to this change because we will guard actually writing the
fingerprint, and right now new storage is not in trunkfood yet. This
change modifies the package map file structure. Note that if the new
storage was in trunkfood, this could (theoretically) cause issues if
there were cross-container READ_WRITE flags (not permitted per
documentation) and if the containers were built at separate aconfig
versions (ie before and after this change). Adding the fingerprint will
help prevent such issues in the future. Incremented the storage version
number as I've changed the format.
Again, fingerprint is not actually written in this CL, it always has a
value of 0.
Updated the test files as well to have the new version and the
fingerprint. Since this changed the package node size, some of the
information in the buckets there (offset) has changed as well.
Also added a test util for flags from another package to test future
changes.
Bug: 316357686
Test: atest aconfig.test
Change-Id: I09e10808492f241fe78028d2757f7d63328623c3
Incompatible interface between test-mode and normal mode.
Bluetooth is linking the normal flag for the code that is shipped, and
it is linking the test-mode library for unit testing.
While trying to move some test to use the test-mode, we noticed some
failure as the flag returned were not the one expected.
It appear the code and the test are built against 2 different library,
but linked against one.
The provide interface only contains getter in normal mode, and it is
alternating between getter/setter in test-mode.
By moving the setter in test-mode toward the end of the interface, we
are not modifying the assumed order for the code built against the
normal mode.
This CL is a short term fix, to make the test goes green and prevent
immediat failure. An refactor of the cpp generated code should be done
to avoid using 2 different version of the same symbol in 2 different
libs.
Bug: 311772251
Test: atest aconfig.test
Change-Id: I97f6523452c451d005d2e92bfa1ef861611ab840
This is the last launch of new storage. Use the flag enable_only_new_storage to control if the rust codegen should read from new storage or old storage.
Change-Id: Id2bea8df191a939acb5e07b6a9ac8dc1ddd0f7fb
I was updating the format of PackageTableHeader to add an additional
field (and due to that change incremented the file version). This broke
several tests under aconfig_storage_read_api and
aconfig_storage_write_api that were operating on files written in the
old schema. I tried to re-generate them using aconfig create-storage as
explained in aosp/2933375, but was having some trouble. Figure if we can
just update the files directly it will be easier to make updates in the
future anyway. This isn't bypassing logic that's tested - IIUC the tests
cover reading the file correctly (writing is covered in separate tests).
Usage:
$ aconfig-storage print --file=path/to/flag.map --type=flag_map
--format=json > flag_map.json
$ vim flag_map.json // Manually make updates
$ aconfig-storage write-bytes --input-file=flag_map.json
--output-file=path/to/flag.map --type=flag_map
Change-Id: I212bf0b97483740b30130eb121acb895d350da84
Test: manual (adding debug-only tooling) + cargo t
Bug: 316357686
Framework currently hardcodes the paths to flags protos, with
this change it will be able to reuse the globally defined ones
and also gets access to all APEX flags
Bug: 301491148
Test: build + boot
Flag: EXEMPT build change
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1e85e40c3ead83585ac3d7c71a712d35cd420a36)
Merged-In: I91dae72c32c47888697914265c90918389aa4c25
Change-Id: I91dae72c32c47888697914265c90918389aa4c25
Avoid log spam by skipping log statements for matching validated flag
entries in the Java codegen. Also change any mismatched logs from
info to warning.
Change-Id: Icb8bba38d8594438757d76957c4c0188f6c2758a
Test: atest aconfig.test
Flag: EXEMPT bugfix
Uses SipHasher implementation added to the project. Ideally the output
would remain consistent between builds (though the worst case of an
updated algorithm would be a string lookup for cross-container reads
only).
Sort the flags first so everything is always added to the hasher in the
same order - note this code is only run at build time, not runtime.
Next step is to write this fingerprint into the package.map file and
introduce a flag to guard this change.
Bug: 316357686
Test: atest aconfig.test
Change-Id: Ie5f34541d982dfa120ffb05fc0790603689d47c0
Now that we have Rust 1.80 LazyLock is available in the standard library
so we no longer need to use external crates such as lazy_static.
Bug: 364211748
Test: atest aconfig.test
Test: atest aconfig.prod_mode.test.rust
Test: atest aconfig.test_mode.test.rust
Test: atest aconfig.force_read_only_mode.test.rust
Change-Id: If2862eaf20065c118daa9fc51e9fb403b99dada3
This commit changes java reader to directly read the flag value from the
map file instead of load the entire file.
Change-Id: Icee42d99506894da1e3e32a31c6554895719de7b
Test: atest aconfig_storage_read_api.test.java aconfig_storage_file.test.java
Bug: 352078117
This change implements SipHasher in rust and java to make sure same
bytes array will be hashed into the same u64.
The implementation is needed, thus when rust, and java code read the
same flag file, they can find the same entry based on the same key.
Test: atest aconfig_storage_file.test.java aconfig_storage_file.test.cpp
Bug: 352078117
Change-Id: I2ce470039213a09a1df7637e60f4649b053fb2ea
This change removes the local copy of the flag file in PackageTable, and
FlagValueList.
PackageTable copied the entire flag file into memory, and the
FlagValueList copied the entire flag value list into memory. In this
change FlagValueList directly access the flag value list in the memory.
PackageTable will iterate the file, and find the target package node.
Change-Id: Id766c28b71a54290b266cc5f3f404f5c82590da2
Test: atest aconfig_storage_file.test.java aconfig_storage_read_api.test.java
Bug: 352078117
"fake_device_config" and "strict_mode_stub" provide stubs and do not
contain any implementation details. Specifying the property
"is_stubs_module" to these modules allow inter-container dependency on
these modules.
Test: m nothing
Bug: 354029496
Change-Id: Ia65ad36ca02c0594fc753935f9cc7c0af6caa20d
The restrict mode doesn't allow to have disk read from main thread. Some
apps enabled this check. The code in the dependencies of the
fileinputstream. This chagne switch to filechannel.
Test: presubmit
Bug: 356614910
Change-Id: Icf2175fe75ed1bfad4a048ead680b08e57d6c2ca
Close file stream, since the in the restrict mode the runtime will check
whether all the resource is closed when it is out of scope.
Test: ABTD ImsStackJavaTests
Bug: 349874828
Change-Id: Ib297622bae730bf99e4d5d1b3adeff3fee805a93
This change changes the logic to read the flag value from new storage.
Before it check the existence of a file. Not it will directly check the
flag value from DeviceConfig.
Test: m and presubmit
Bug: 349874828
Change-Id: I4a360564a3b48564057eede9bd893899136b3221