test/hotspot/jtreg/compiler/graalunit/README.md
author neliasso
Fri, 29 Nov 2019 11:26:25 +0100
changeset 59324 5e8f9713e343
parent 54966 508285c7c6f7
permissions -rw-r--r--
8234520: ZGC: C2: Oop instance cloning causing skipped compiles Reviewed-by: pliden, vlivanov

This directory contains jtreg tests which are wrapper tests to execute Graal unit tests similar way they are run in Graal project.
The tests use compiler.graalunit.common.GraalUnitTestLauncher helper class to run Graal unit tests where the set of tests to execute
is specified by '-prefix' argument. GraalUnitTestLauncher launches ported com.oracle.mxtool.junit.MxJUnitWrapper to run Graal unit
tests as it is done by "mx unittest" command from Graal project.

All compiler/graalunit/*.java tests were automatically generated by generateTests.sh script which reads
"testName -> testPrefix [requiresStatement]" mapping from TestPackages.txt file and generates corresponding <testName>Test.java
tests. The mapping takes into account tests execution time to avoid very long test runs.

Graal unit tests depends on following external jar files:
 asm-5.0.4.jar:
 https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-5.0.4.jar

 asm-tree-5.0.4.jar:
 https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-tree-5.0.4.jar

 junit-4.12.jar:
 https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/junit-4.12.jar

 hamcrest-core-1.3.jar:
 https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hamcrest-core-1.3.jar

 java-allocation-instrumenter.jar:
 https://lafo.ssw.uni-linz.ac.at/pub/java-allocation-instrumenter/java-allocation-instrumenter.jar

Before running the tests you need to download these jars from above locations in build/<platform>/images/test/hotspot/jtreg/graal/
directory. You can use 'downloadLibs.sh' script which will try to download all these libs using wget.


Then you can run Graal unit test(s) using 'make run-test':

> make run-test TEST="compiler/graalunit/ApiTest.java" TEST_VM_OPTS="-server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI"


If you want to use jtreg directly you need to say jtreg where to find external jars.
You can do it by passing additional option "-vmoptions:-Dgraalunit.libs=" or setting environment variable by using "-e:TEST_IMAGE_GRAAL_DIR=..."

Example:
> jtreg -vt -jdk:<TESTED_JDK> -vmoptions:"-server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI"
        -vmoptions:"-Dgraalunit.libs=build/<platform>/images/test/hotspot/jtreg/graal"
        compiler/graalunit/UtilTest.java

To run Graal unit tests in Graal as JIT mode pass additional -vmoptions to jtreg:
 -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal