e5dd91bca7
1, See AconfigStorageReadAPI.java to see java APIs to map storage files and read flag values. It is using fast native annotation, in theory it should be faster than regular JNI without much of the overhead. 2, The java api calls into Rust wrapper in srcs/lib.rs, note that MappedByteBuffer is not copied during JNI. In the rust side implementation we get the underlying raw pointer and buffer size and reconstruct a rust slice. However, at current implmentation, the string input such as package name and flag name are most likely copied. They are converted from JStirng to JavaStr first without copy, then the into() call to convert it to Rust string. We could potentially optimize it to without copy. 3, Add an android_test target to lock down the API behaviors. Bug: b/321077378 Test: atest -c Change-Id: I8915fe70e8eb341be563c70f85e19e644e8aa6be
109 lines
3.1 KiB
Text
109 lines
3.1 KiB
Text
{
|
|
"presubmit": [
|
|
{
|
|
// aconfig unit tests
|
|
"name": "aconfig.test"
|
|
},
|
|
{
|
|
// aconfig Java integration tests (host)
|
|
"name": "AconfigJavaHostTest"
|
|
},
|
|
{
|
|
// aconfig Java integration tests
|
|
"name": "aconfig.test.java"
|
|
},
|
|
{
|
|
// aconfig C++ integration tests (production mode auto-generated code)
|
|
"name": "aconfig.test.cpp"
|
|
},
|
|
{
|
|
// aconfig C++ integration tests (test mode auto-generated code)
|
|
"name": "aconfig.test.cpp.test_mode"
|
|
},
|
|
// TODO(b/327420679): Enable export mode for native flag library
|
|
// {
|
|
// // aconfig C++ integration tests (exported mode auto-generated code)
|
|
// "name": "aconfig.test.cpp.exported_mode"
|
|
// },
|
|
{
|
|
// aconfig Rust integration tests (production mode auto-generated code)
|
|
"name": "aconfig.prod_mode.test.rust"
|
|
},
|
|
{
|
|
// aconfig Rust integration tests (test mode auto-generated code)
|
|
"name": "aconfig.test_mode.test.rust"
|
|
},
|
|
// TODO(b/327420679): Enable export mode for native flag library
|
|
// {
|
|
// // aconfig Rust integration tests (exported mode auto-generated code)
|
|
// "name": "aconfig.exported_mode.test.rust"
|
|
// },
|
|
{
|
|
// aflags CLI unit tests
|
|
"name": "aflags.test"
|
|
},
|
|
{
|
|
// printflags unit tests
|
|
"name": "printflags.test"
|
|
},
|
|
{
|
|
// aconfig_protos unit tests
|
|
"name": "aconfig_protos.test"
|
|
},
|
|
{
|
|
// aconfig_storage_file unit tests
|
|
"name": "aconfig_storage_file.test"
|
|
},
|
|
{
|
|
// Ensure changes on aconfig auto generated library is compatible with
|
|
// test testing filtering logic. Breakage on this test means all tests
|
|
// that using the flag annotations to do filtering will get affected.
|
|
"name": "FlagAnnotationTests",
|
|
"options": [
|
|
{
|
|
"include-filter": "android.cts.flags.tests.FlagAnnotationTest"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
// Ensure changes on aconfig auto generated library is compatible with
|
|
// test testing filtering logic. Breakage on this test means all tests
|
|
// that using the flag macros to do filtering will get affected.
|
|
"name": "FlagMacrosTests"
|
|
},
|
|
{
|
|
// aconfig_storage_write_api unit tests
|
|
"name": "aconfig_storage_write_api.test"
|
|
},
|
|
{
|
|
// aconfig_storage_read_api unit tests
|
|
"name": "aconfig_storage_read_api.test"
|
|
},
|
|
{
|
|
// aconfig_storage write api rust integration tests
|
|
"name": "aconfig_storage_write_api.test.rust"
|
|
},
|
|
{
|
|
// aconfig_storage write api cpp integration tests
|
|
"name": "aconfig_storage_write_api.test.cpp"
|
|
},
|
|
{
|
|
// aconfig_storage read api rust integration tests
|
|
"name": "aconfig_storage_read_api.test.rust"
|
|
},
|
|
{
|
|
// aconfig_storage read api cpp integration tests
|
|
"name": "aconfig_storage_read_api.test.cpp"
|
|
},
|
|
{
|
|
// aconfig_storage file cpp integration tests
|
|
"name": "aconfig_storage_file.test.cpp"
|
|
}
|
|
],
|
|
"postsubmit": [
|
|
{
|
|
// aconfig_storage read api java integration tests
|
|
"name": "aconfig_storage_read_api.test.java"
|
|
}
|
|
]
|
|
}
|