RFR: JDK-8072842 Add support for building native JTReg tests
david.holmes at oracle.com
Wed Feb 11 08:23:17 UTC 2015
On 11/02/2015 6:09 PM, Magnus Ihse Bursie wrote:
> On 2015-02-11 02:35, David Holmes wrote:
>> Hi Magnus,
>> On 11/02/2015 12:23 AM, Magnus Ihse Bursie wrote:
>>> Here is an addition to the build system, that will compile native
>>> libraries and executables and make them available for JTReg tests
>>> written in Java.
>> Sorry I'm missing the basics here: when does this compilation take
>> place? As part of a normal build? Where will the build artifacts go?
> This is the first application of the new test-image/product-images
> separation we discussed previously. :)
> These tests are built as part of the "test-image" target. (Actually,
> they are built by individual rules like build-test-jdk-jtreg-native, and
> the relevant parts are put into the test image by
> test-image-jdk-jtreg-native, which test-image depends on.)
Okay so if I just cd into hotspot/test and use the Makefile to try and
run some jtreg tests it looks to me that it will define an invalid
> The test-image target, as we discussed earlier, are built as part of
> "all" or "all-images", but not the old "images" or "jdk" targets. Also,
> the "test" target depends on "test-image", so you can actually start off
> a complete build by specifying just what tests you want to run. ("test
> driven" from a makefile point of view :-))
> The build artifacts go into the new test image, in
> build/$BUILD/images/test, which hitherto has only contained a
> placeholder. For Oracle engineers: This test image is built by default
> by JPRT, and some of the changes in jprt.properties allow JPRT to know
> to depend on that test image to run tests.
>> David H.
>>> This patch is the result of the work (in serial, mostly) of Staffan
>>> Larsen, David Simms and me. (And possible more that I don't know about.)
>>> In it current form, the patch only provides the framework on which to
>>> attach real tests. To prove the concept, some initial dummy tests are
>>> present. These are supposed to be removed as soon as real tests starts
>>> to propagate into the jdk and hotspot jtreg test suites.
>>> The behavior is based on the following design: For directories with
>>> native jtreg compilation enabled, the build system searches for native
>>> files prefixed with either "lib" or "exe", and compiles a free-standing
>>> library or an executable, respectively, for each such file. Since all
>>> compiled files are placed in a single directory (this is currently a
>>> requirement from the jtreg native support), there is the additional
>>> requirement that all files have unique names.
>>> My personal opinion is that a better long-term approach is to compile
>>> all tests into a single library, if possible. (I realize some tests need
>>> to be separate to test library loading, etc.) For that to work, however,
>>> JTReg needs to be changed. The build framework in the patch is designed
>>> in such a way that it will be easy to add compilation to a common
>>> library in the future, if that restriction is lifted from JTReg.
>>> This patch also lays the foundation for building additional tests, not
>>> only native jtreg tests, by the build system in the future. For
>>> instance, it codifies the suggested correspondence between make targets,
>>> intermediate test output and test image final build results. With the
>>> on-going test co-location project, we expect a stream of tests to be
>>> added to the build system in the future, and we hope this project can
>>> serve as an example of a suitable way of integration.
>>> The patch modifies hotspot code, but it's mostly due to the addition of
>>> the new dummy tests. My preference would be to integrate this patch via
>>> jdk9-dev, since it modifies the build system most of all, but I'm open
>>> for discussion.
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8072842
More information about the build-dev