jtreg - building java and cpp test

Jonathan Gibbons jonathan.gibbons at oracle.com
Thu Nov 19 18:44:09 UTC 2015

On 11/19/2015 07:46 AM, Pete Brunet wrote:
> Hi, I need to build a regression test that has both Java and C++ code.
> I see some similar cases in the test tree and they include the exe of
> the cpp file.  I also see a Makefile.  If I run the test without the exe
> it is not built so what is the Makefile for?  Documentation?
> The Makefile I used as a prototype has
> cl -o name.exe name.cpp name.lib name.lib
> but when I ran make at the command line cl was not found but at least at
> this point I don't see the need to look into the cl failure if the
> Makefile is just for documentation.
> Pete

jtreg has no direct, complete solution for mixed code like this, and is 
unlikely to support
it any time soon.

You can use Makefiles from a shell script, but that is unlikely to be 
successful in a
broad multi-platform world, like OpenJDK.  Not only is it problematic to 
know what
compiler to use and where to find it, but at least in our internal test 
the test machines may not even have the native code compilers installed.
(i.e. it is common practice to build and test on different host systems.)

The compromise solution we adopted in conjunction with the Hotspot SQE team
is to use the OpenJDK build process to compile the C/C++ code needed for 
the tests.
The build has the info needed on how to do platform-specific compilation 
of native
code.   The build can then generate a bundle that can be passed to jtreg 
with the
-nativepath option.

I cannot speak to the existence of Makefiles appearing in the regression 
test suite.
Sometimes they are used manually to create native files that are checked 
in to the
repo (uugh) and sometimes the tests are restricted to run on a limited 
set of platforms
(e.g. Windows only, or Unix only.)

-- Jon

More information about the jtreg-use mailing list