android13/art/test
..
000-nop
001-HelloWorld
001-Main
002-sleep
003-omnibus-opcodes
004-InterfaceTest
004-JniTest
004-NativeAllocations
004-ReferenceMap
004-SignalTest
004-StackWalk
004-ThreadStress
004-UnsafeTest
004-checker-UnsafeTest18
005-annotations
006-args
007-count10
008-exceptions
009-instanceof
010-instance
011-array-copy
012-math
013-math2
014-math3
015-switch
016-intern
017-float
018-stack-overflow
019-wrong-array-type
020-string
021-string2
022-interface
023-many-interfaces
024-illegal-access
025-access-controller
026-access
027-arithmetic
028-array-write
029-assert
030-bad-finalizer
031-class-attributes
032-concrete-sub
033-class-init-deadlock
034-call-null
035-enum
036-finalizer
037-inherit
038-inner-null
039-join-main
040-miranda
041-narrowing
042-new-instance
043-privates
044-proxy
045-reflect-array
046-reflect
047-returns
048-reflect-v8
049-show-object
050-sync-test
051-thread
052-verifier-fun
053-wait-some
054-uncaught
055-enum-performance
056-const-string-jumbo
058-enum-order
059-finalizer-throw
061-out-of-memory
062-character-encodings
063-process-manager
064-field-access
065-mismatched-implements
066-mismatched-super
067-preemptive-unpark
068-classloader
069-field-type
070-nio-buffer
071-dexfile
071-dexfile-get-static-size
071-dexfile-map-clean
072-precise-gc
072-reachability-fence
073-mismatched-field
074-gc-thrash
075-verification-error
076-boolean-put
077-method-override
078-polymorphic-virtual
079-phantom
080-oom-fragmentation
080-oom-throw
080-oom-throw-with-finalizer
081-hot-exceptions
082-inline-execute
083-compiler-regressions
084-class-init
085-old-style-inner-class
086-null-super
087-gc-after-link
088-monitor-verification
089-many-methods
090-loop-formation
091-override-package-private-method
092-locale
093-serialization
094-pattern
095-switch-MAX_INT
096-array-copy-concurrent-gc
097-duplicate-method
099-vmdebug
100-reflect2
101-fibonacci
102-concurrent-gc
103-string-append
104-growth-limit
105-invoke
106-exceptions2
107-int-math2
108-check-cast
109-suspend-check
110-field-access
111-unresolvable-exception
112-double-math
113-multidex
114-ParallelGC
115-native-bridge
116-nodex2oat
118-noimage-dex2oat
120-hashcode
121-modifiers
121-simple-suspend-check
122-npe
123-compiler-regressions-mt
123-inline-execute2
124-missing-classes
125-gc-and-classloading
126-miranda-multidex
127-checker-secondarydex
128-reg-spill-on-implicit-nullcheck
129-ThreadGetId
130-hprof
132-daemon-locks-shutdown
133-static-invoke-super
134-reg-promotion
135-MirandaDispatch
136-daemon-jni-shutdown
137-cfi
138-duplicate-classes-check
138-duplicate-classes-check2
139-register-natives
140-dce-regression
140-field-packing
141-class-unload
142-classloader2
143-string-value
144-static-field-sigquit
145-alloc-tracking-stress
146-bad-interface
148-multithread-gc-annotations
149-suspend-all-stress
150-loadlibrary
151-OpenFileLimit
152-dead-large-object
153-reference-stress
154-gc-loop
155-java-set-resolved-type
156-register-dex-file-multi-loader
157-void-class
158-app-image-class-table
159-app-image-fields
160-read-barrier-stress
161-final-abstract-class
162-method-resolution
163-app-image-methods
164-resolution-trampoline-dex-cache
165-lock-owner-proxy
166-bad-interface-super
167-visit-locks
168-vmstack-annotated
169-threadgroup-jni
170-interface-init
171-init-aste
172-app-image-twice
173-missing-field-type
174-escaping-instance-of-bad-class
175-alloc-big-bignums
176-app-image-string
177-visibly-initialized-deadlock
178-app-image-native-method
179-nonvirtual-jni
180-native-default-method
181-default-methods
182-method-linking
201-built-in-except-detail-messages
202-thread-oome
203-multi-checkpoint
300-package-override
301-abstract-protected
302-float-conversion
303-verification-stress
304-method-tracing
305-other-fault-handler
370-dex-v37
401-optimizing-compiler
402-optimizing-control-flow
403-optimizing-long
404-optimizing-allocator
405-optimizing-long-allocator
406-fields
407-arrays
408-move-bug
409-materialized-condition
410-floats
411-checker-hdiv-hrem-const
411-checker-hdiv-hrem-pow2
411-checker-instruct-simplifier-hrem
411-optimizing-arith
412-new-array
413-regalloc-regression
414-static-fields
416-optimizing-arith-not
418-const-string
419-long-parameter
420-const-class
421-exceptions
421-large-frame
422-instanceof
422-type-conversion
423-invoke-interface
424-checkcast
425-invoke-super
426-monitor
427-bitwise
427-bounds
429-ssa-builder
430-live-register-slow-path
431-type-propagation
432-optimizing-cmp
433-gvn
434-invoke-direct
434-shifter-operand
435-new-instance
435-try-finally-without-catch
436-rem-float
436-shift-constant
437-inline
438-volatile
439-npe
439-swap-double
440-stmp
441-checker-inliner
442-checker-constant-folding
443-not-bool-inline
444-checker-nce
445-checker-licm
446-checker-inliner2
447-checker-inliner3
448-multiple-returns
449-checker-bce
449-checker-bce-rem
450-checker-types
451-regression-add-float
451-spill-splot
452-multiple-returns2
453-not-byte
454-get-vreg
455-checker-gvn
456-baseline-array-set
457-regs
458-checker-instruct-simplification
458-long-to-fpu
459-dead-phi
460-multiple-returns3
461-get-reference-vreg
462-checker-inlining-dex-files
463-checker-boolean-simplifier
464-checker-inline-sharpen-calls
465-checker-clinit-gvn
466-get-live-vreg
467-regalloc-pair
468-checker-bool-simplif-regression
469-condition-materialization
470-huge-method
471-deopt-environment
471-uninitialized-locals
472-type-propagation
472-unreachable-if-regression
473-checker-inliner-constants
473-remove-dead-block
474-checker-boolean-input
474-fp-sub-neg
475-regression-inliner-ids
475-simplify-mul-zero
476-checker-ctor-fence-redun-elim
476-checker-ctor-memory-barrier
476-clinit-inline-static-invoke
477-checker-bound-type
477-long-2-float-convers-precision
478-checker-clinit-check-pruning
478-checker-inline-noreturn
478-checker-inliner-nested-loop
479-regression-implicit-null-check
480-checker-dead-blocks
481-regression-phi-cond
482-checker-loop-back-edge-use
483-dce-block
484-checker-register-hints
485-checker-dce-loop-update
485-checker-dce-switch
486-checker-must-do-null-check
487-checker-inline-calls
488-checker-inline-recursive-calls
489-current-method-regression
490-checker-inline
491-current-method
492-checker-inline-invoke-interface
493-checker-inline-invoke-interface
494-checker-instanceof-tests
495-checker-checkcast-tests
496-checker-inlining-class-loader
497-inlining-and-class-loader
498-type-propagation
499-bce-phi-array-length
500-instanceof
501-null-constant-dce
501-regression-packed-switch
503-dead-instructions
504-regression-baseline-entry
505-simplifier-type-propagation
506-verify-aput
507-boolean-test
507-referrer
508-checker-disassembly
508-referrer-method
509-pre-header
510-checker-try-catch
511-clinit-interface
513-array-deopt
514-shifts
515-dce-dominator
516-dead-move-result
517-checker-builder-fallthrough
518-null-array-get
519-bound-load-class
520-equivalent-phi
521-checker-array-set-null
521-regression-integer-field-set
522-checker-regression-monitor-exit
523-checker-can-throw-regression
524-boolean-simplifier-regression
525-checker-arrays-fields1
525-checker-arrays-fields2
526-checker-caller-callee-regs
526-long-regalloc
527-checker-array-access-simd
527-checker-array-access-split
528-long-hint
529-checker-unresolved
529-long-split
530-checker-instance-of-simplifier
530-checker-loops-try-catch
530-checker-loops1
530-checker-loops2
530-checker-loops3
530-checker-loops4
530-checker-loops5
530-checker-lse
530-checker-lse-ctor-fences
530-checker-lse-simd
530-checker-lse-try-catch
530-checker-lse3
530-checker-peel-unroll
530-checker-regression-reftyp-final
530-instanceof-checkcast
530-regression-lse
531-regression-debugphi
532-checker-nonnull-arrayset
533-regression-debugphi
534-checker-bce-deoptimization
535-deopt-and-inlining
535-regression-const-val
536-checker-intrinsic-optimization
536-checker-needs-access-check
537-checker-arraycopy
537-checker-debuggable
537-checker-inline-and-unverified
537-checker-jump-over-jump
538-checker-embed-constants
540-checker-rtp-bug
541-regression-inlined-deopt
542-bitfield-rotates
542-inline-trycatch
542-unresolved-access-check
543-checker-dce-trycatch
543-env-long-ref
545-tracing-and-jit
546-regression-simplify-catch
547-regression-trycatch-critic-edge
548-checker-inlining-and-dce
549-checker-types-merge
550-checker-multiply-accumulate
550-checker-regression-wide-store
550-new-instance-clinit
551-checker-clinit
551-checker-shifter-operand
551-implicit-null-checks
551-invoke-super
552-checker-primitive-typeprop
552-checker-sharpening
552-checker-x86-avx2-bit-manipulation
552-invoke-non-existent-super
553-invoke-super
554-checker-rtp-checkcast
555-UnsafeGetLong-regression
556-invoke-super
557-checker-instruct-simplifier-ror
557-checker-ref-equivalent
558-switch
559-bce-ssa
559-checker-irreducible-loop
559-checker-rtp-ifnotnull
560-packed-switch
561-divrem
561-shared-slowpaths
562-bce-preheader
562-checker-no-intermediate
563-checker-fakestring
563-checker-invoke-super
564-checker-bitcount
564-checker-inline-loop
564-checker-irreducible-loop
564-checker-negbitwise
565-checker-condition-liveness
565-checker-doublenegbitwise
565-checker-irreducible-loop
566-checker-codegen-select
566-polymorphic-inlining
567-checker-builder-intrinsics
568-checker-onebit
569-checker-pattern-replacement
570-checker-osr
570-checker-osr-locals
570-checker-select
571-irreducible-loop
572-checker-array-get-regression
573-checker-checkcast-regression
574-irreducible-and-constant-area
575-checker-string-init-alias
576-polymorphic-inlining
577-checker-fp2int
578-bce-visit
578-polymorphic-inlining
579-inline-infinite
580-checker-fp16
580-checker-round
580-checker-string-fact-intrinsics
580-crc32
581-checker-rtp
582-checker-bce-length
583-checker-zero
584-checker-div-bool
585-inline-unresolved
586-checker-null-array-get
587-inline-class-error
588-checker-irreducib-lifetime-hole
589-super-imt
590-checker-arr-set-null-regression
590-infinite-loop-with-nop
591-checker-regression-dead-loop
591-new-instance-string
592-checker-regression-bool-input
593-checker-boolean-2-integral-conv
593-checker-long-2-float-regression
593-checker-shift-and-simplifier
594-checker-array-alias
594-checker-irreducible-linorder
594-invoke-super
594-load-string-regression
595-error-class
595-profile-saving
596-app-images
596-checker-dead-phi
596-monitor-inflation
597-app-images-same-classloader
597-deopt-busy-loop
597-deopt-invoke-stub
597-deopt-new-string
598-checker-irreducible-dominance
599-checker-irreducible-loop
600-verifier-fails
601-method-access
602-deoptimizeable
603-checker-instanceof
604-hot-static-interface
605-new-string-from-bytes
606-erroneous-class
607-daemon-stress
608-checker-unresolved-lse
609-checker-inline-interface
609-checker-x86-bounds-check
610-arraycopy
611-checker-simplify-if
612-jit-dex-cache
613-inlining-dex-cache
614-checker-dump-constant-location
615-checker-arm64-store-zero
616-cha
616-cha-abstract
616-cha-interface
616-cha-interface-default
616-cha-miranda
616-cha-native
616-cha-proxy-method-inline
616-cha-regression-proxy-method
616-cha-unloading
617-clinit-oome
618-checker-induction
619-checker-current-method
620-checker-bce-intrinsics
622-checker-bce-regressions
622-simplifyifs-exception-edges
623-checker-loop-regressions
624-checker-stringops
625-checker-licm-regressions
626-checker-arm64-scratch-register
626-const-class-linking
626-set-resolved-string
627-checker-unroll
628-vdex
629-vdex-speed
630-safecast-array
631-checker-get-class
632-checker-char-at-bounds
633-checker-rtp-getclass
634-vdex-duplicate
635-checker-arm64-volatile-load-cc
636-arm64-veneer-pool
636-wrong-static-access
637-checker-throw-inline
638-checker-inline-cache-intrinsic
638-checker-inline-caches
638-no-line-number
639-checker-code-sinking
640-checker-boolean-simd
640-checker-integer-valueof
640-checker-simd
641-checker-arraycopy
641-irreducible-inline
641-iterations
642-fp-callees
643-checker-bogus-ic
645-checker-abs-simd
646-checker-arraycopy-large-cst-pos
646-checker-long-const-to-int
646-checker-simd-hadd
647-jni-get-field-id
647-sinking-catch
648-inline-caches-unresolved
648-many-direct-methods
649-vdex-duplicate-method
650-checker-inline-access-thunks
652-deopt-intrinsic
654-checker-periodic
655-checker-simd-arm-opt
655-jit-clinit
656-annotation-lookup-generic-jni
656-checker-simd-opt
656-loop-deopt
657-branches
658-fp-read-barrier
659-unpadded-array
660-checker-sad
660-checker-simd-sad
660-clinit
660-store-8-16
661-checker-simd-reduc
661-classloader-allocator
661-oat-writer-layout
662-regression-alias
663-checker-select-generator
663-odd-dex-size
663-odd-dex-size2
663-odd-dex-size3
663-odd-dex-size4
664-aget-verifier
665-checker-simd-zero
666-dex-cache-itf
667-checker-simd-alignment
667-jit-jni-stub
667-out-of-bounds
668-aiobe
669-checker-break
670-bitstring-type-check
671-npe-field-opts
672-checker-throw-method
673-checker-throw-vmethod
674-HelloWorld-Dm
674-hiddenapi
674-hotness-compiled
674-vdex-uncompress
675-checker-unverified-method
676-proxy-jit-at-first-use
676-resolve-field-type
677-fsi
677-fsi2
678-quickening
679-locks
680-checker-deopt-dex-pc-0
682-double-catch-phi
683-clinit-inline-static-invoke
684-checker-simd-dotprod
684-select-condition
685-deoptimizeable
685-shifts
686-get-this
687-deopt
688-shared-library
689-multi-catch
689-zygote-jit-deopt
690-hiddenapi-same-name-methods
691-hiddenapi-proxy
692-vdex-inmem-loader
692-vdex-secondary-loader
693-vdex-inmem-loader-evict
694-clinit-jit
695-simplify-throws
696-loop
697-checker-string-append
698-selects
699-checker-string-append2
700-LoadArgRegs
701-easy-div-rem
702-LargeBranchOffset
703-floating-point-div
704-multiply-accumulate
705-register-conflict
706-checker-scheduler
707-checker-invalid-profile
708-jit-cache-churn
710-varhandle-creation
711-checker-type-conversion
712-varhandle-invocations
713-varhandle-invokers
714-invoke-custom-lambda-metafactory
715-clinit-implicit-parameter-annotations
716-jli-jit-samples
717-integer-value-of
718-zipfile-finalizer
719-varhandle-concurrency
720-thread-priority
721-osr
723-string-init-range
724-invoke-super-npe
725-imt-conflict-object
726-array-store
727-checker-unresolved-class
728-imt-conflict-zygote
729-checker-polymorphic-intrinsic
730-cha-deopt
730-checker-inlining-super
731-bounds-check-slow-path
800-smali
801-VoidCheckCast
802-deoptimization
803-no-super
804-class-extends-itself
805-TooDeepClassInstanceOf
806-TooWideClassInstanceOf
807-method-handle-and-mr
808-checker-invoke-super
809-checker-invoke-super-bss
810-checker-invoke-super-default
811-checker-invoke-super-secondary
812-recursive-default
813-fp-args
814-large-field-offsets
815-invokeinterface-default
816-illegal-new-array
817-hiddenapi
818-clinit-nterp
819-verification-runtime
820-vdex-multidex
821-madvise-willneed
821-many-args
822-hiddenapi-future
823-cha-inlining
824-verification-rethrow
825-unbalanced-lock
826-infinite-loop
827-resolve-method
828-partial-lse
829-unresolved-enclosing
830-goto-zero
831-unresolved-field
831-unverified-bcp
832-cha-recursive
833-background-verification
834-lse
835-b216762268
836-32768classes
900-hello-plugin
901-hello-ti-agent
902-hello-transformation
903-hello-tagging
904-object-allocation
905-object-free
906-iterate-heap
907-get-loaded-classes
908-gc-start-finish
909-attach-agent
910-methods
911-get-stack-trace
912-classes
913-heaps
914-hello-obsolescence
915-obsolete-2
916-obsolete-jit
917-fields-transformation
918-fields
919-obsolete-fields
920-objects
921-hello-failure
922-properties
923-monitors
924-threads
925-threadgroups
926-multi-obsolescence
927-timers
928-jni-table
929-search
930-hello-retransform
931-agent-thread
932-transform-saves
933-misc-events
934-load-transform
935-non-retransformable
936-search-onload
937-hello-retransform-package
938-load-transform-bcp
939-hello-transformation-bcp
940-recursive-obsolete
941-recursive-obsolete-jit
942-private-recursive
943-private-recursive-jit
944-transform-classloaders
945-obsolete-native
946-obsolete-throw
947-reflect-method
948-change-annotations
949-in-memory-transform
950-redefine-intrinsic
951-threaded-obsolete
952-invoke-custom
953-invoke-polymorphic-compiler
954-invoke-polymorphic-verifier
955-methodhandles-smali
956-methodhandles
957-methodhandle-transforms
958-methodhandle-stackframe
959-invoke-polymorphic-accessors
960-default-smali
961-default-iface-resolution-gen
962-iface-static
963-default-range-smali
964-default-iface-init-gen
965-default-verify
966-default-conflict
967-default-ame
968-default-partial-compile-gen
969-iface-super
970-iface-super-resolution-gen
971-iface-super
972-default-imt-collision
972-iface-super-multidex
973-default-multidex
974-verify-interface-super
975-iface-private
976-conflict-no-methods
978-virtual-interface
979-const-method-handle
980-redefine-object
981-dedup-original-dex
982-ok-no-retransform
983-source-transform-verify
984-obsolete-invoke
985-re-obsolete
986-native-method-bind
987-agent-bind
988-method-trace
989-method-trace-throw
990-field-trace
991-field-trace-2
992-source-data
993-breakpoints
994-breakpoint-line
995-breakpoints-throw
996-breakpoint-obsolete
997-single-step
998-redefine-use-after-free
999-redefine-hiddenapi
1000-non-moving-space-stress
1001-app-image-regions
1002-notify-startup
1003-metadata-section-strings
1004-checker-volatile-ref-load
1336-short-finalizer-timeout
1337-gc-coverage
1338-gc-no-los
1339-dead-reference-safe
1900-track-alloc
1901-get-bytecodes
1902-suspend
1903-suspend-self
1904-double-suspend
1905-suspend-native
1906-suspend-list-me-first
1907-suspend-list-self-twice
1908-suspend-native-resume-self
1909-per-agent-tls
1910-transform-with-default
1911-get-local-var-table
1912-get-set-local-primitive
1913-get-set-local-objects
1914-get-local-instance
1915-get-set-local-current-thread
1916-get-set-current-frame
1917-get-stack-frame
1919-vminit-thread-start-timing
1920-suspend-native-monitor
1921-suspend-native-recursive-monitor
1922-owned-monitors-info
1923-frame-pop
1924-frame-pop-toggle
1925-self-frame-pop
1926-missed-frame-pop
1927-exception-event
1928-exception-event-exception
1929-exception-catch-exception
1930-monitor-info
1931-monitor-events
1932-monitor-events-misc
1933-monitor-current-contended
1934-jvmti-signal-thread
1935-get-set-current-frame-jit
1936-thread-end-events
1937-transform-soft-fail
1938-transform-abstract-single-impl
1939-proxy-frames
1940-ddms-ext
1941-dispose-stress
1942-suspend-raw-monitor-exit
1943-suspend-raw-monitor-wait
1945-proxy-method-arguments
1946-list-descriptors
1947-breakpoint-redefine-deopt
1948-obsolete-const-method-handle
1949-short-dex-file
1950-unprepared-transform
1951-monitor-enter-no-suspend
1953-pop-frame
1954-pop-frame-jit
1955-pop-frame-jit-called
1956-pop-frame-jit-calling
1957-error-ext
1958-transform-try-jit
1959-redefine-object-instrument
1960-checker-bounds-codegen
1960-obsolete-jit-multithread-native
1961-checker-loop-vectorizer
1961-obsolete-jit-multithread
1962-multi-thread-events
1963-add-to-dex-classloader-in-memory
1964-add-to-dex-classloader-file
1965-get-set-local-primitive-no-tables
1966-get-set-local-objects-no-table
1967-get-set-local-bad-slot
1968-force-early-return
1969-force-early-return-void
1970-force-early-return-long
1971-multi-force-early-return
1972-jni-id-swap-indices
1973-jni-id-swap-pointer
1974-resize-array
1975-hello-structural-transformation
1976-hello-structural-static-methods
1977-hello-structural-obsolescence
1978-regular-obsolete-then-structural-obsolescence
1979-threaded-structural-transformation
1980-obsolete-object-cleared
1981-structural-redef-private-method-handles
1982-no-virtuals-structural-redefinition
1983-structural-redefinition-failures
1984-structural-redefine-field-trace
1985-structural-redefine-stack-scope
1986-structural-redefine-multi-thread-stack-scope
1987-structural-redefine-recursive-stack-scope
1988-multi-structural-redefine
1989-transform-bad-monitor
1990-structural-bad-verify
1991-hello-structural-retransform
1992-retransform-no-such-field
1993-fallback-non-structural
1994-final-virtual-structural
1995-final-virtual-structural-multithread
1996-final-override-virtual-structural
1997-structural-shadow-method
1998-structural-shadow-field
1999-virtual-structural
2000-virtual-list-structural
2001-virtual-structural-multithread
2002-virtual-structural-initializing
2003-double-virtual-structural
2004-double-virtual-structural-abstract
2005-pause-all-redefine-multithreaded
2006-virtual-structural-finalizing
2007-virtual-structural-finalizable
2008-redefine-then-old-reflect-field
2009-structural-local-ref
2011-stack-walk-concurrent-instrument
2012-structural-redefinition-failures-jni-id
2019-constantcalculationsinking
2020-InvokeVirtual-Inlining
2021-InvokeStatic-Inlining
2022-Invariantloops
2023-InvariantLoops_typecast
2024-InvariantNegativeLoop
2025-ChangedArrayValue
2026-DifferentMemoryLSCouples
2027-TwiceTheSameMemoryCouple
2028-MultiBackward
2029-contended-monitors
2030-long-running-child
2031-zygote-compiled-frame-deopt
2032-default-method-private-override
2033-shutdown-mechanics
2034-spaces-in-SimpleName
2035-structural-native-method
2036-jni-filechannel
2036-structural-subclass-shadow
2037-thread-name-inherit
2038-hiddenapi-jvmti-ext
2039-load-transform-larger
2040-huge-native-alloc
2041-bad-cleaner
2042-checker-dce-always-throw
2230-profile-save-hotness
2231-checker-heap-poisoning
2232-write-metrics-to-log
2234-checker-remove-entry-suspendcheck
2235-JdkUnsafeTest
2236-JdkUnsafeGetLong-regression
2237-checker-inline-multidex
2238-checker-polymorphic-recursive-inlining
2239-varhandle-perf
AbstractMethod
AllFields
DefaultMethods
Dex2oatVdexPublicSdkDex
Dex2oatVdexTestDex
ErroneousA
ErroneousB
ErroneousInit
ExceptionHandle
Extension1
Extension2
ForClassLoaderA
ForClassLoaderB
ForClassLoaderC
ForClassLoaderD
GetMethodSignature
HiddenApi
HiddenApiSignatures
HiddenApiStubs
IMTA
IMTB
ImageLayoutA
ImageLayoutB
Instrumentation
Interfaces
LinkageTest
Lookup
Main
ManyMethods
MethodTypes
MultiDex
MultiDexModifiedSecondary
MyClass
MyClassNatives
Nested
NonStaticLeafMethods
Packages
ProfileTestMultiDex
ProtoCompare
ProtoCompare2
StaticLeafMethods
Statics
StaticsFromCode
StringLiterals
Transaction
VerifierDeps
VerifierDepsMulti
VerifySoftFailDuringClinit
XandY
common
dexdump
dexpreopt
etc
generate-boot-image
jvmti-common
odsign
testrunner
ti-agent
ti-stress
update-rollback
utils
Android.bp
Android.run-test.bp
Android.run-test.bp.py
Android.run-test.mk
OWNERS
README.arm_fvp.md
README.atest.md
README.chroot.md
README.md
art-gtests-target-chroot.xml
art-gtests-target-install-apex.xml
art-gtests-target-standalone-cts-template.xml
art-gtests-target-standalone-root-template.xml
art-gtests-target-standalone-template.xml
art-gtests-target-standalone-with-boot-image-template.xml
art-run-test-target-cts-template.xml
art-run-test-target-no-test-suite-tag-template.xml
art-run-test-target-slow-template.xml
art-run-test-target-template.xml
buildfailures.json
csuite-app-compile-launch.xml
knownfailures.json
run-test
run-test-build.py

README.md

ART Testing

There are two suites of tests in the Android Runtime (ART):

  • ART run-tests: Tests of the ART runtime using Dex bytecode (mostly written in Java).
  • ART gtests: C++ tests exercising various aspects of ART.

ART run-tests

ART run-tests are tests exercising the runtime using Dex bytecode. They are written in Java and/or Smali (compiled/assembled as Dex bytecode) and sometimes native code (written as C/C++ testing libraries). Some tests also make use of the Jasmin assembler or the ASM bytecode manipulation tool. Run-tests are executed on the ART runtime (dalvikvm), possibly preceded by a pre-optimization of the Dex code (using dex2oat).

The run-tests are identified by directories in this test directory, named with a numeric prefix and containing an info.txt file. For most run tests, the sources are in the src subdirectory. Sources found in the src2 directory are compiled separately but to the same output directory; this can be used to exercise "API mismatch" situations by replacing class files created in the first pass. The src-ex directory is built separately, and is intended for exercising class loaders. Resources can be stored in the res directory, which is distributed together with the executable files.

The run-tests logic lives in the test/run-test Bash script. The execution of a run-test has three main parts: building the test, running the test, and checking the test's output. By default, these three steps are implemented by three Bash scripts located in the test/etc directory (default-build, default-run, and default-check). These scripts rely on environment variables set by test/run-test.

The default logic for all of these these steps (build, run, check) is overridden if the test's directory contains a Bash script named after the step (i.e. build, run, or check). Note that the default logic of the "run" step is actually implemented in the "JAR runner" (test/etc/run-test-jar), invoked by test/etc/default-run.

After the execution of a run-test, the check step's default behavior (implemented in test/etc/default-check) is to respectively compare its standard output and standard error with the contents of the expected-stdout.txt and expected-stderr.txt files contained in the test's directory; any mismatch triggers a test failure.

The test/run-test script handles the execution of a single run-test in a given configuration. The Python script test/testrunner/testrunner.py is a convenient script handling the construction and execution of multiple tests in one configuration or more.

To see the invocation options supported by run-test and testrunner.py, run these commands from the Android source top-level directory:

art/test/run-test --help
art/test/testrunner/testrunner.py --help

Checker tests

Some ART run-tests, known as "Checker tests", perform additional checks on ART's compiler. They are identified by their name, which match the ^[0-9]+-checker-.* regular expression (e.g. 004-checker-UnsafeTest18).

Checker assertions are annotations in a run-test's (Java and Smali) source files verifying the behavior of the ART compiler when compiling the corresponding Dex code. They are checked by the checker tool (see directory art/tools/checker) against a c1visualizer-style (.cfg) file emitted by dex2oat, containing control-flow graphs (CFGs) for compiled methods at each step (pass) in the compiler's pipeline, as well as the emitted assembly code.

ART gtests

ART gtests are written in C++ using the Google Test framework. These tests exercise various aspects of the runtime (the logic in libart, libart-compiler, etc.) and its binaries (dalvikvm, dex2oat, oatdump, etc.). Some of them are used as unit tests to verify a particular construct in ART. These tests may depend on some test Dex files and core images.

ART gtests are defined in various directories within the ART project (usually in the same directory as the code they exercise). Their source files usually end with the suffix _test.cc. The construction logic of these tests is implemented in ART's build system (Android.bp and Android*.mk files). On host, these gtests can be run by executing m test-art-host-gtest. On device, the recommended approach is to run these tests in a chroot environment (see README.chroot.md in this directory).

Test execution

All tests in either suite can be run using the art/test.py script. Additionally, run-tests can be run individually. All of the tests can be run on the build host, on a USB-attached device, or using the build host "reference implementation".

ART also supports running target (device) tests in a chroot environment (see README.chroot.md in this directory). This is currently the recommended way to run tests on target (rather than using art/test.py --target).

To see command flags run:

$ art/test.py -h

Building tests

In general all tests require some dependencies to be built before they can be run. In general you can pass the --build-dependencies flag (also available as short option -b) to art/test.py program to automatically build required dependencies. One can also directly use the various test-art-...-dependencies targets listed below.

Running all tests on the build host

$ # Build test files
$ m test-art-host-run-test-dependencies
$ # Run the tests
$ art/test.py --host

Or:

$ art/test.py -b --host

Running all tests on the target device

$ # Build test files
$ m test-art-target-run-test-dependencies
$ # Run the tests
$ art/test.py --target

Or:

$ art/test.py -b --target

Running all gtests on the build host

$ art/test.py --host -g

Running all gtests on the target device

$ art/test.py --target -g

Running all run-tests on the build host

$ # Build test files
$ m test-art-host-run-test-dependencies
$ art/test.py --host -r

Or:

$ art/test.py -b --host -r

Running all run-tests on the target device

$ art/test.py --target -r

Running one run-test on the build host

$ # Build test files
$ m test-art-host-run-test-dependencies
$ # Run the tests
$ art/test.py --host -r -t 001-HelloWorld

Or:

$ art/test.py -b --host -r -t 001-HelloWorld

Running one run-test on the target device

$ art/test.py --target -r -t 001-HelloWorld

Running one gtest on the build host

$ find out/host/ -type f -name art_runtime_tests  # Find the path of the test.
$ out/host/linux-x86/nativetest/art_runtime_tests/art_runtime_tests

Add "--no_isolate" to run the tests one by one in single process (disable forking). Add "--gtest_filter=..." to select specific sub-test(s) to run. Prefix by "gdb --args " to run the test in gdb.

ART Continuous Integration

Both ART run-tests and gtests are run continuously as part of ART's continuous integration. In addition, two other test suites are run continuously on this service: Libcore tests and JDWP tests.