summaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2025-02-14Refactor OatFileAssistant - Step 3. Jiakai Zhang
After this change, error messages in OatFileAssistant are all propagated along the way to `GetBestInfo` and logged there. This change reduces the amount of artd log by 82%. Before: https://paste.googleplex.com/4527623093616640 After: https://paste.googleplex.com/4842357558870016 As we are adding two more paths to check, for SDM files, reducing the amount of artd log becomes more critical than before. Otherwise, the log spamming problem will get even worse. Bug: 377474232 Bug: 345762752 Test: adb shell pm art dump Change-Id: I34cdd7228fb063466c86511610687f831ae465ad
2025-02-11verifier: Keep locking info for no-op move-object. Vladimir Marko
Refactor `move{,-wide,-object}` verification. Make sure we keep the locking info for no-op `move-object vN, vN`. Refactor `monitor-enter` and `monitor-exit` verification as well because the former used the same helper functions as `move-object`. Bail out on a hard failure - previously, we'd keep processing previous instructions and use helper functions that can add an additional hard failure. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I2d76812ecf1b8232b4a5da0426461d6f572da13b
2025-02-10Add //apex_available:platform to art tests Colin Cross
Soong was accidentally allowing a corner case where modules that were not supposed to be available to the platform (due to apex_available being set to an apex and not including "//apex_available:platform") were being made available to the platform as long as no apex modules depended on them. art_test_defaults has apex_available: ["com.android.art.bug"] to work around an issue with duplicate install rules. Add "//apex_available:platform" explicitly to some art tests whose install rules are hidden when the corner case is fixed. These can be removed when b/395617594 is investigated and fixed. Bug: 394664568 Bug: 395617594 Test: compare out/soong/installs-${TARGET_PRODUCT}.mk Change-Id: If0646aa317b1033f5a7c0622fa0fbf89286b4a83
2025-02-10Use `std::string_view` for `DescriptorToDot()`, ... Vladimir Marko
... `DotToDescriptor()` and `DescriptorToName()` parameter. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 338123769 Change-Id: I9cda6e70f52ed8779fcd532a4e34515c12c40c78
2025-01-30Reduce alignment for .rodata section in OAT files Richard Neill
This patch removes almost 16 KiB of padding at the start of each OAT file, by reducing .rodata alignment from kElfSegmentAlignment (16 KiB) to 4 bytes. It is valid to do because: * The first loadable segment in the OAT (ELF) file is specified to start at 0x0 and includes the .rodata and data before it (ELF header, program headers, etc.): +--------+---------+--------------------+---------+ | ELF | program | optional | .rodata | | header | headers | .note.gnu.build-id | | +--------+---------+--------------------+---------+ ^ ^ | | +-------- first loadable segment in memory -------+ | +-- page-aligned This patch does not change the alignment of this first loadable segment mapped by the linker (both bionic's linker and ART's one), it only reduces the size of the mapping by reducing the padding within it. * Content of .rodata doesn't need to be page-aligned, the maximum memory alignment that it requires is 4 bytes. At the moment the OatWriter uses offsets relative to the oat header (actually the start of the .rodata); so all data *in other sections* that requires more than 4-byte memory-alignment must account for the fact that the header is no longer kElfSegmentAlignment aligned and instead use the offset from the start of the file. This patch also fixes an issue with the algorithm in ImmuneSpaces::CreateLargestImmuneRegion, specifically when ART's ELF loader is used. As this loader only guarantees mmaps begin on a page-size aligned virtual address (rather than aligning to the largest segment alignment as done via dlopen implementations), it is possible that when an image space's end is rounded up to 16K, it may overlap the next space's begin (see an illustration below), causing a failure. Therefore, instead round up the end to the next 4K boundary when calculating the region. image space interval /---------------------------+ oat space interval \ +------+----------------------------/ / | | \ \---+----------+-----+------+----------------------------/ / | | | | \ \---+----------+-----+------+----------------------------/ ^ ^ ^ ^ | | | +----- image space end (16 KiB aligned) image end | | | +-- oatdata (.rodata) | oat file (4 KiB aligned) Actual disk usage reduction from this patch: * Approx 90% of tested dense .odex files are reduced by 16 KiB (all reductions are in range 0-16 KiB). * Approx 75% of tested sparse .odex files are reduced by 4 KiB (all reductions are in range 0-4 KiB). Authors: Richard Neill <richard.neill@arm.com> Konstantin Baladurin <konstantin.baladurin@arm.com> Test: testrunner.py --optimizing Bug: 378792349 Change-Id: I874bad5bea28fa1bcf66f331e7d74a506dda72cc
2025-01-29Optimizing: Fix `SimplifyIfs()` for FP bias mismatch. Vladimir Marko
Test: m test-art-host-test Test: testrunner.py --host --optimizing --interpreter Change-Id: I8fd0cfa02ed3242c84143a4a99a76a4fec95a4ee
2025-01-29Ignore hiddenapi denial errors on qemu as well. Martin Stjernholm
It's not just host testing that sends logcat messages to stderr. Simply remove the condition for the sed command - it just won't have any effect on device where the messages don't go to stderr in the first place. Test: 674-hiddenapi 690-hiddenapi-same-name-methods 691-hiddenapi-proxy 817-hiddenapi 822-hiddenapi-future 999-redefine-hiddenapi 2038-hiddenapi-jvmti-ext 2270-mh-internal-hiddenapi-use on host and device Bug: 377676642 Change-Id: I3faf97557dcb3e47bf3e927185cce1c96fe2ac8b
2025-01-28Do not always set ART_TEST_CHROOT in testrunner.py. Martin Stjernholm
Necessary to allow executing run tests without a chroot setup, e.g. on user devices. Also, the documented approach in README.chroot.md is that the user should set ART_TEST_CHROOT explicitly to enable chroot mode. Fixes regression from https://r.android.com/2977715. Test: art/test/testrunner/testrunner.py --target 2279-aconfig-flags Change-Id: I3deabdf2ef3b807065583fadc4f2c4e847956401
2025-01-28Log info about the caller and callee in hiddenapi denial messages. Martin Stjernholm
If enforcement is enabled then log as error instead of warning. Also add "hiddenapi:" prefix to all log messages to make it easier to search for them. Test: Boot and check errors in logcat Test: 674-hiddenapi 690-hiddenapi-same-name-methods 691-hiddenapi-proxy 817-hiddenapi 822-hiddenapi-future 999-redefine-hiddenapi 2038-hiddenapi-jvmti-ext 2270-mh-internal-hiddenapi-use on host and target Bug: 377676642 Change-Id: Ib4f790d7ab4850d398639c64f55be0d14c5c0408
2025-01-28Allow ART internal libs to load libs in NATIVELOADER_DEFAULT_NAMESPACE_LIBS. Martin Stjernholm
This complements the treatment of NATIVELOADER_DEFAULT_NAMESPACE_LIBS, so that ART internal libs can load the libraries listed in that variable, as well as the other way around. This makes it possible to load libartagent(d).so without absolute paths in run tests on target, so use that to re-enable 900-hello-plugin. Test: art/test/testrunner/testrunner.py --target --64 900 in armv8 target chroot Test: art/test/testrunner/testrunner.py --host 900 Bug: 186654484 Change-Id: Ic418b26b2b77af8839af7b65ad44ea8b5121169c
2025-01-28Use libarttest(d)_external to fix 656-annotation-lookup-generic-jni, Martin Stjernholm
and enable it on target again. Test: art/test/testrunner/testrunner.py --target --64 656 in armv8 target chroot Test: art/test/testrunner/testrunner.py --host 656 Bug: 186654484 Change-Id: I4cd3dde548aa30afe46c249bc79e36aa952a4aae
2025-01-28Fix the loading of libarttest(d).so in 150-loadlibrary and enable it Martin Stjernholm
again. This changes the test to load the native library by name instead of through an absolute path, but that shouldn't affect what the test is intended to do, i.e. test that the class loader object for the boot class loader gets translated to nullptr internally. Test: art/test/testrunner/testrunner.py --target --64 150 in armv8 target chroot Test: art/test/testrunner/testrunner.py --host 150 Bug: 186654484 Change-Id: Ib951c287ba8e7a721b671b0d50aa84da4d89bf90
2025-01-28Use libarttest(d)_external to fix 674-hiddenapi, and enable it on Martin Stjernholm
target again. This requires adding an extra link from system to default linker namespaces for NATIVELOADER_DEFAULT_NAMESPACE_LIBS, since some of the test cases load a child class with the boot class loader, which in turn loads libarttest(d)_external.so. Test: art/test/testrunner/testrunner.py --target --64 674 in armv8 target chroot Test: art/test/testrunner/testrunner.py --host 674 Bug: 186654484 Change-Id: I19a3332d99a4d8b2c7682e688cf3d965425a2eb0
2025-01-27Limit 1336-short-finalizer-timeout with emulation Hans Boehm
No longer test that we actually time out quickly enough if we're running on an emulator. That test sometimes fails on slow platforms because we don't succeed in shutting down the process on time.. Bug: 385362249 Test: Check 1336-short-finalizer-timeout with a much too short timeout Test: Treehugger Change-Id: I33b7a25be4d8e15ffaace98b08262832a24206e0
2025-01-24Optimizing: Rename `HCodeFlowSimplifier`... Vladimir Marko
... to `HControlFlowSimplifier` because "control flow" is the correct technical term. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I2607ac699fa33c3e7ca7f54364e1e8497148412b
2025-01-23Optimizing: Generate `HSelect` if there are more phis... Vladimir Marko
... as long as they have identical inputs at the relevant indexes. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I40168de61d2dfe1143786a2e4a27549cc54b0451
2025-01-22Optimizing: Allow moving `HCondition` to use site. Vladimir Marko
Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 358519867 Change-Id: I5b49f27c09582dc42eba8b6650a7032fad0ff14d
2025-01-20Introduce an "external" variant of libarttest(d).so and use it to fix Martin Stjernholm
and re-enable 817-hiddenapi. 817-hiddenapi and some other run tests have been disabled on target since https://r.android.com/1689792. A problem has been that (at least some of) those tests depended on libarttest(d).so being in java.library.path, so that the .so could be e.g. found and copied from there by the test. That's not possible to get to work with libarttest(d).so, since we have to "register" it with NATIVELOADER_DEFAULT_NAMESPACE_LIBS before dalvikvm starts. Instead introduce a new test library libarttest(d)_external.so that takes the place libarttest(d) had before https://r.android.com/1689792. I.e. it gets installed in /data/nativetest(64)/art/<arch>, which is present on java.library.path. It will be loaded in the test's classloader namespace rather than com_android_art, so it cannot access ART internals. However, it can access symbols in libarttest(d).so, so it's possible to export an (unstable) API there that the "external" library can call across the linker namespace boundary. Use this approach to fix 817-hiddenapi, and re-enable it again. Note: Since libarttest(d)_external doesn't have direct access to ART internal it ought not need to be split into -d and non-d variants. The only reason that's still the case is that its variants need to depend on the corresponding variants of libarttest(d). Test: art/test/testrunner/testrunner.py --target --64 817 in armv8 target chroot Test: art/test/testrunner/testrunner.py --host 817 Bug: 186654484 Change-Id: I13c186e8d086d07c2480e96a1c1f85651dac7d84
2025-01-17Optimizing: Rename `HSelectGenerator`... Vladimir Marko
... to `HCodeFlowSimplifier` in preparation for adding more optimizations to this pass. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Icb05c3455d93a7b939f82ced9b08165e533bb21a
2025-01-17Fix crash when calling a public Object method with invokesuper. Nicolas Geoffray
If the invokesuper is from a default method, fail the resolution as we only expect interfaces in super calls from interface methods. Test: 736-interface-super-Object Change-Id: I7bd105cf1e441a9e575250db867678908b147477
2025-01-16Update test. Nicolas Geoffray
Update expectation to not run on RI and be more robust by throwing an error if the expected exception doesn't happen. Test: 735-interface-clone Change-Id: Ia8594a4cec9744fef2e5eed7f1f4441b18ddb7f7
2025-01-16Merge sFields and iFields. Nicolas Geoffray
Test: test.py Change-Id: Ib97fca637a8866a41a4389b150c6000d9fb6d99b
2025-01-16Make it an error to call an Object method with super in an interface. Nicolas Geoffray
We used to have it as an error, but aosp/3117218 accidentally changed it to a crash. Test: 735-interface-clone Bug: 349569228 Change-Id: I5005ac0a97d32e88ea3f89cdc9176a174a721224
2025-01-14Disable test on RI. Nicolas Geoffray
Test: test.py Change-Id: I063e951a1660c6fb5b4890eb94751b3d2ef409dc
2025-01-13Fail dex verification for duplicate static/instance fields. Nicolas Geoffray
Just like we ensure direct and virtual methods don't conflict, check that static and instance fields also don't conflict. Test: test.py Test: 734-duplicate-fields Change-Id: I3b959bf68a43fda573788ed848976a5fae91f8d1
2025-01-08Skip 2286-method-trace-aot-code on RI Mythri Alle
That works only on art runtime. Test: art/test.py -t 2286 --jvm Change-Id: I4d65b800458c09bc40deae3d3dceb6e888bc5060
2025-01-07Add tests with a permanently enabled flag in art-flags.aconfig. Martin Stjernholm
Test: art/test/testrunner/testrunner.py --host 2279-aconfig-flags Test: art/test/testrunner/testrunner.py --target 2279-aconfig-flags Test: art/tools/run-gtests.sh \ /apex/com.android.art/bin/art/x86/art_libartbase_tests \ | grep Aconfig Test: m test-art-host-gtest-art_libartbase_tests | grep Aconfig Bug: 352723620 Change-Id: I693cbef25a8b62f437e6eef95003944f35354177
2025-01-06Handle invoke-virtual targeting invokeExact gracefully. Almaz Mingaleev
The interpreter handles such invoke-virtual as if they are native method and executes MethodHandle_invokeExact, which throws UOE. Bug: 383057088 Test: ./art/test/testrunner/testrunner.py --host --64 -b --optimizing Test: ./art/test/testrunner/testrunner.py --host --64 -b --interpreter Change-Id: I4dd4dea46eddd2b26e5866c80548b530a603d9c9
2025-01-05Add a test to check AOT code is used when method tracing is stopped Mythri Alle
Adds a test to check that AOT code is restored when available when method tracing is stopped. Also updates isAotCompiled to work with more methods. Bug: 303686344 Test: art/test.py -t 2286 Change-Id: I4b7abdeef4aa2bddb85e9cf86f3d844974b69dba
2024-12-19run-test: Rename eng-prod archive file David Srbecky
Make the archive filename less verbose Also follow eng-prod convention of including '#' in test name. Test: locall run (with further local changes) Change-Id: I815db825f59fa6418f1d4459ab14ee118977544c
2024-12-19Add back a test that was missed from a previous CL. Nicolas Geoffray
CL aosp/3370562 refactored method resolution but accidentally removed an ICCE check. Test: 733-icce Bug: 381631627 Change-Id: Ic9ad2f13053c0c81844ee09ed12a99a9fe9b8b99
2024-12-10run-test: Fix dump cfg on target Roman Artemev
Remove redundant '$' symbol Test: test-art-host, test-art-target. Change-Id: Ic50c07e8c9fad06b57fbac7b74d52bd3a162f4a0
2024-12-09qemu: Reduce work for 153-reference-stress David Srbecky
Test: run locally on ARM qemu Change-Id: I9ff301199c7753da1fad8624b8a54601df4427c2
2024-12-09qemu: Increase timeout for 2040-huge-native-alloc David Srbecky
Test: ./art/test.py -r --target 2040 Change-Id: I27da38750182b324cbb50d774e5afd4c6de6b315
2024-12-04Implement missing Unsafe.get*Volatile and Unsafe.put*Volatile methods. Almaz Mingaleev
JNI implementation for now. Bug: 297147201 Test: ./art/test/testrunner/testrunner.py -b --host --64 Change-Id: Ib0d485f4e6f5b5db22398718c71a460de9c3e941
2024-12-04Remove remnants of quickened opcode verification. Vladimir Marko
Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 170086509 Change-Id: I1865f016934158e2691116b59a5b6d462c99eccb
2024-12-02Make sure that MH/VH do not operate on uninitialized classes. Almaz Mingaleev
Bug: 379259800 Test: ./art/test/testrunner/testrunner.py -b --jvm Test: ./art/test/testrunner/testrunner.py -b --host --64 Change-Id: Ie0c4a60ed1ff3b25c35dc324ae11d24b8fdcec92
2024-11-29Disable test 153- for all debuggable Santiago Aboy Solanes
It timed out in https://ci.chromium.org/ui/p/art/builders/ci/qemu.riscv.64/68/overview besides the previous debuggable + poison timeout. Bug: 378656071 Test: Presubmit Change-Id: I713db317e8ef2ca54e470644ddab071bc4b20e62
2024-11-29verifier: Stronger uninitialized `this` access checks. Vladimir Marko
Check uninitialized `this` field access early and make the check more strict than before. Ideally, two cases should be rejected now and the run-test 064-field-access is updated with the corresponding tests. First, we no longer allow `iget` on uninitialized `this`. Second, we do not allow iput on uninitialized `this` to specify a field by referencing a subclass even if the field id actually resolves to the class being verified. However, the first case is actually something that we see in some existing apps - they get the zero-initialized field values from the object before the superclass constructor call. To avoid breaking these apps, we continue to allow such access if the class is resolved; when it's unresolved for AOT, we reject the class and it shall be reverified at runtime. Note that the RI would reject such access. Note that doing this check early can also result in reporting bad uninitialized `this` access instead of another hard failure when both apply. It also suppresses soft failures that would have been reported previously. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ieb41115e6aaf618bc283f3aebf0739b606caa3b3
2024-11-28Promote two ART run-tests to presubmits (2024-11-15). Roland Levillain
Promote the following post-submit tests to pre-submit test groups in ART's Test Mapping file: * `art-run-test-2282-checker-always-throws-try-catch` * `art-run-test-2283-checker-remove-null-check` Output of `art/test/utils/regen-test-files`: $ art/test/utils/regen-test-files Generated Blueprint files for 750 ART run-tests out of 1065 (70%). Generated TEST_MAPPING entries for 467 ART run-tests out of 1065 (43%): 467 ART run-tests (100%) in `art-mainline-presubmit` test group. 467 ART run-tests (100%) in `mainline-presubmit` test group. 467 ART run-tests (100%) in `presubmit` test group. 0 ART run-tests (0%) in `postsubmit` test group. 26 ART gtests (100%) in `mainline-presubmit` test group. 26 ART gtests (100%) in `presubmit` test group. 0 ART gtests (0%) in `postsubmit` test group. Note: Tests in `*presubmit` test groups are executed in pre- and post-submit test runs. Tests in the `postsubmit` test group are only executed in post-submit test runs. Test: atest --test-mapping art:presubmit Bug: 152374989 Change-Id: Id117278ac514e0d72eab4194b53bf4f0ca5459bb
2024-11-28Handle abstract and conflicting default methods in MH interpreter. Almaz Mingaleev
Bug: 297147201 Test: ./art/test/testrunner/testrunner.py -b --host --64 -t 2277 Change-Id: Ia9ecbe10eefb386074d50c556b496545a60f96f7
2024-11-27Regenerate ART test files (2024-11-15). Roland Levillain
This change enables build-time support for the following test: * `art-run-test-2282-single-step-before-catch` Output of `art/test/utils/regen-test-files`: $ art/test/utils/regen-test-files Generated Blueprint files for 750 ART run-tests out of 1065 (70%). Generated TEST_MAPPING entries for 467 ART run-tests out of 1065 (43%): 465 ART run-tests (99%) in `art-mainline-presubmit` test group. 465 ART run-tests (99%) in `mainline-presubmit` test group. 465 ART run-tests (99%) in `presubmit` test group. 2 ART run-tests (0%) in `postsubmit` test group. 26 ART gtests (100%) in `mainline-presubmit` test group. 26 ART gtests (100%) in `presubmit` test group. 0 ART gtests (0%) in `postsubmit` test group. Note: Tests in `*presubmit` test groups are executed in pre- and post-submit test runs. Tests in the `postsubmit` test group are only executed in post-submit test runs. Test: m art-run-test-2282-single-step-before-catch Bug: 147814778 Change-Id: Iaa94ed9c763fd273349f9c666ed78fcbd3fb0cca
2024-11-27x86-64: handle invoke-interface in invokeExact intrinsic. Almaz Mingaleev
Bug: 297147201 Test: ./art/test/testrunner/testrunner.py -b --host --64 Test: ./art/test/testrunner/testrunner.py -b --jvm Change-Id: I2c07ae919921363e8e419ec7296cd24696e7f3b5
2024-11-26Add known failure 710-varhandle-creation for gcstress & debug David Srbecky
The test times out Test: ./art/test.py -r --target --gcstress 710-varhandle-creation Change-Id: Ica07a16ba0f21e1c0a1964a2f76f49e47e0c8ab8
2024-11-26Disable test 153- for more configs due to timeouts Santiago Aboy Solanes
Test: Presubmit Change-Id: I12455c807f9ef4dee41c89d3e8e1e24e0ea5e9d7
2024-11-25Adjust art tests to java.lang changes. Almaz Mingaleev
New methods in Integer and Long classes were introduced. Bug: 378651167 Test: ./art/test/testrunner/testrunner.py -b --host --64 Change-Id: Ie4ecadcfb5eca9164f055b9bacce4b52ddf9b344
2024-11-25Fix races around JIT GC and deoptimizations. Nicolas Geoffray
When we update the entrypoint of one JNI method, we update all registered JNI methods that share the same stub. Therefore, we should also remove those methods from the zombie list. Also have `RemoveMethod` remove the method from all zombie lists. Test: test.py Bug: 325919750 Change-Id: Ia174ff16909be92ab9b4990e948670e3cf2844b0
2024-11-25Allow the inliner pattern matcher to work with invoke-direct/range Santiago Aboy Solanes
Bug: 378823200 Fixes: 378823200 Test: art/test/testrunner/testrunner.py --host --64 -b --optimizing with r8 version 8.9.2-dev Change-Id: Ic70da9f2996c2a2671b2e5781900784c194b9064
2024-11-22Increase timeout (give extra 60 min) for tests on QEMU. Ulya Trofimovich
Test: launched custom LUCI build as: led get-builder art/ci/qemu.riscv.64 \ | led edit-gerrit-cl https://android-review.googlesource.com/c/platform/art/+/3364946 \ | led launch Change-Id: I517ee0528c385cca8d1e65aee760286477897bd7
2024-11-21Order oat methods by startup Jared Duke
Prefer ordering any startup-specific methods first in the compiled oat file, ensuring a contiguous region of startup methods. A follow-up change will embed this region as a hint that we can use to bulk madvise *only* startup methods during process startup, avoiding unnecessary paging in of code that is likely unneeded at startup. Bug: 379179925 Test: m + inspect services.odex method ordering Test: art/test/testrunner/testrunner.py -b --host -t 661 Test: ART benchmark service Change-Id: I7a7ff3cb69d4bff21d702c4a17da62c41796bfd6