• Home
Name Date Size #Lines LOC

..--

jni/03-May-2024-302199

src/com/android/art/libnativehelper/03-May-2024-233150

Android.bpD03-May-20242.1 KiB7367

AndroidManifest.xmlD03-May-20241.3 KiB3114

OWNERSD03-May-202490 65

README.mdD03-May-20241.7 KiB5238

README.md

1# libnativehelper MTS tests
2
3These tests cover the API surface of libnativehelper that is applicable once
4the runtime is initialized.
5
6These tests do not cover the API surface relating to the binding of the ART
7runtime (DalvikVM), that preclude the initialization of the runtime, nor do
8they cover JNI_CreateJavaVM(). These APIs have been invoked before the test
9harness runs these tests.
10
11API surface not directly covered here are:
12
13```
14    JNI_GetCreatedJavaVMs
15
16    JniInvocationCreate
17    JniInvocationDestroy
18    JniInvocationInit
19    JniInvocationGetLibrary
20
21    jniUninitializeConstants
22```
23
24`JniInvocationInit()` is responsible for binding the ART runtime and
25specifically the following methods:
26
27```
28    JNI_CreateJavaVM
29    JNI_GetCreatedJavaVMs
30    JNI_GetDefaultJavaVMInitArgs
31```
32
33These tests do check that `JNI_GetCreatedJavaVMs()` and
34`JNI_GetDefaultJavaVMInitArgs()` behave as expected and are thus asserted to
35be correctly bound. `JNI_CreateJavaVM()` cannot be called in these tests
36because Android only supports a single runtime per process.
37
38`JniInvocationInit()` uses `JniInvocationGetLibrary()` to determine which
39runtime to load (release, debug, or custom). The code responsible for that
40decision is tested comprehensively in `libnativehelper_gtests`.
41
42`jniUninitializeConstants` is only intended to be called when the runtime is
43shutting down and unloading the managed core libraries.
44
45## Potential Issues
46
47The test harness depends on libnativehelper_compat_libc++ and the tests
48depend on libnativehelper. The former library is a subset of libnativehelper.
49There are potential ODR problems if the two libraries having overlapping
50global state. It would be better to have two separate test suites for these
51two libraries.
52