RFR(M): 8205207: Port Graal unit tests under jtreg

Erik Joelsson erik.joelsson at oracle.com
Fri Jun 22 21:38:43 UTC 2018


Hello Katya,

This looks much better, thanks!

A few suggestions still:

Main.gmk: instead of repeating the assignment in both if and else block:

ifeq ($(INCLUDE_GRAAL), true)
   JVM_TEST_IMAGE_TARGETS += test-image-hotspot-jtreg-graal
endif

I think it's fine to do that without the ?= because an alternative JVM 
implementation is unlikely to be using graal anyway.

In JtregGraalUnit.gmk: Some minor style nits:
54: align )) with first eval line as you have done with the other eval calls
118: Since 117 is a one line parameter, please move comma to 117
133: Same as for 118
130-132: Please indent 4 spaces for continuation

/Erik

On 2018-06-22 14:16, Ekaterina Pavlova wrote:
> Erik, Doug,
>
> thank you a lot for your reviews and advises.
> I fixed everything what Erik has pointed out, please see my answers 
> inlined.
> As about moving more staff in 'updategraalinopenjdk' can we consider 
> this as next step?
> I am not quite familiar with 'updategraalinopenjdk' and didn't 
> contribute into Graal ws yet,
> so I will prefer to do this improvement/refactoring as part of 
> separate JDK issue.
>
> New webrev is here:
>   webrev: 
> http://cr.openjdk.java.net/~epavlova//8205207/webrev.01/index.html
>      JBS: https://bugs.openjdk.java.net/browse/JDK-8205207
>  testing: tested by building and running graal unit tests
>
>
> On 6/19/18 2:00 PM, Erik Joelsson wrote:
>> Hello,
>>
>> Please always include build-dev when reviewing build changes.
>>
>> In general this looks pretty good but there are some details that 
>> need fixing.
>>
>> (Aside from this particular review, I must state my reservation 
>> against all the special treatment graal is enjoying from a source and 
>> test layout and build perspective. My understanding here is that 
>> someone will have to regularly update the wrapper jtreg tests 
>> manually using the script. This in addition to having to implement 
>> this very convoluted redirection logic because the tests are in the 
>> wrong place. Wouldn't it make a lot more sense to put the complicated 
>> logic in the import procedure for graal source so that it would fit 
>> nicely into the OpenJDK source/build/test model, instead of adding 
>> more and more complicated workarounds in the OpenJDK build and test 
>> procedures?)
>>
>> On 2018-06-18 22:26, Ekaterina Pavlova wrote:
>>> Hi All,
>>>
>>> please review porting of Graal unit tests under jtreg. The main idea 
>>> of this porting is to keep Graal unit tests as is
>>> (located in src/jdk.internal.vm.compiler/share/classes/*.test) and 
>>> run them similar way they are run in Graal project.
>>> To achieve this 
>>> test/hotspot/jtreg/compiler/graalunit/common/GraalUnitTestLauncher.java 
>>> helper class has been written
>>> which simply launches com.oracle.mxtool.junit.MxJUnitWrapper to run 
>>> specified set of Graal unit tests. The groups of
>>> Graal unit tests to run are defined in auto-generated 
>>> test/hotspot/jtreg/compiler/graalunit/*.java jtreg tests.
>>>
>>> New make/test/JtregGraalUnit.gmk is used to build Graal unit tests 
>>> into jdk.vm.compiler.tests.jar and then install
>>> it in $(TEST_IMAGE_DIR)/hotspot/jtreg/graal/.
>>>
>> GRAALUNIT_LIB is never defined (in the open). Since this is used in 
>> open makefiles, we need an open configure option to set it.
>
> ok, I created open/make/autoconf/lib-tests.m4 and did put Graal 
> related staff there.
>
>> To make things clearer, I would rename LIB_DIR to something like 
>> LIB_OUTPUTDIR to signal that this is a location to put files in, 
>> rather than read them from.
>
> ok, renamed
>
>>
>> FLATTEN has no effect in the SetupCopyFiles call since all the jar 
>> files found by wildcard can only be in one directory anyway.
>
> ok, removed
>
>> BUILDTOOLS_OUTPUTDIR is meant for tools used during the build. Tests 
>> classes and jars should be built into $(SUPPORT_OUTPUTDIR)/test/..> 
>> Please create a suitable sub directory there for the output from this 
>> makefile.
>
> ok, introduced COMPILE_OUTPUTDIR := 
> $(SUPPORT_OUTPUTDIR)/test/graalunit to be used to build graal unit 
> test classes.
>
>> The all and test-image targets are never called so no need to declare 
>> them.
>>
>> There are some style issues too. (Please see 
>> http://openjdk.java.net/groups/build/doc/code-conventions.html for 
>> details.)
>> * 43 logic indent 2 spaces
>> * 52 we like to put the ending )) on a new line with ', \' at the end 
>> of the line before
>> * 58 continuation indent 4 spaces
>> * 88, 89 please break long lines
>> * 90 continuation indent 4 spaces
>> * 99 continuation indent 4 spaces
>> * 120 break before ))
>
> I think I fixed everything
>
>>> make/Main.gmk adds proper dependencies for 
>>> build-test-hotspot-jtreg-graal and test-image-hotspot-jtreg-graal.
>>>
>> The target build-test-hotspot-jtreg-graal only needs to depend on 
>> exploded-image-optimize.
>
> fixed
>
>> The new graal specific targets should be guarded by INCLUDE_GRAAL in 
>> Main.gmk. Otherwise those targets will silently do nothing if invoked 
>> without graal. That means adding them to JVM_TEST_IMAGE_TARGETS needs 
>> to be conditional too.
>
> fixed
>
>>> test/TestCommon.gmk passes TEST_IMAGE_GRAAL_DIR to jtreg so jtreg 
>>> knows where to find Graal tests and libs.
>>>
>> This needs to be duplicated for make/RunTest.gmk so that these tests 
>> work with "make run-test" as well.
>
> added
>
> thanks,
> -katya
>
>> /Erik
>>> test/hotspot/jtreg/compiler/graalunit/TestPackages.txt file defines 
>>> "testName -> testPrefix [requiresStatement]" mapping
>>> which is used by 
>>> test/hotspot/jtreg/compiler/graalunit/generateTests.sh script to 
>>> generate jtreg tests.
>>>
>>> test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit was 
>>> ported from mx project without any changes.
>>>
>>>
>>>     JBS: https://bugs.openjdk.java.net/browse/JDK-8205207
>>>  webrev: 
>>> http://cr.openjdk.java.net/~epavlova//8205207/webrev.00/index.html
>>> testing: new tests were executed as part of automatic HS testing for 
>>> several months.
>>>
>>>
>>> thanks,
>>> -katya
>>>
>>> p.s.
>>>  Igor Ignatyev volunteered to sponsor this change. 
>>
>




More information about the build-dev mailing list