RFR for JDK-8028711: TEST_BUG: Tests should pass through VM options: corelibs tests

michael cui michael.cui at oracle.com
Mon Jan 27 01:22:11 UTC 2014


On 01/26/2014 05:14 PM, Alan Bateman wrote:
> On 26/01/2014 08:10, michael cui wrote:
>> Hi,
>>
>> Please review the following code changes for
>>
>> https://bugs.openjdk.java.net/browse/JDK-8028711
>>
>> The bug and fix are for enforcing the following rules:
>>
>> launch java from shell script, ${TESTVMOPTS} and ${TESTJAVAOPTS} 
>> should be passed in.
>> launch javac from shell script, ${TESTTOOLVMOPTS} and 
>> ${TESTJAVACOPTS} should be passed in.
>>
>> So almost all the scripts who failed to follow above rules are 
>> touched by this fix.
>>
>> There are very few exceptions since test cases explicitly state that 
>> they are intended to launch java without any vm options.
>>
>>
>> webrev
>> http://cr.openjdk.java.net/~tyan/michael/JDK-8028711/webrev.01/
> You might be aware of this area but we've had two previous efforts 
> ([1] [2]) to update these tests to pass through options. 
I am aware of efforts [1] JDK-8003890. Initially JDK-8028711 is opened 
for double check the result of JDK-8003890 and fix them if there are 
uncovered scripts.

Initial list scripts need to touch are :
java/lang/Thread/UncaughtExceptions.sh
sun/tools/common/ApplicationSetup.sh
sun/tools/jrunscript/jrunscript-argsTest.sh
sun/tools/jrunscript/jrunscript-cpTest.sh
sun/tools/jrunscript/jrunscript-DTest.sh
sun/tools/jrunscript/jrunscript-eTest.sh
sun/tools/jrunscript/jrunscript-fTest.sh
sun/tools/jrunscript/jrunscriptTest.sh

Later on, by reading http://openjdk.java.net/jtreg/vmoptions.html and  
current last comments of JDK-8019502 (which is the parent of 
JDK-8028711), also by exploring current existing usage (I mean large 
part of scripts passing TESTJAVAOPTS or TESTJAVACOPTS.), I feel that we 
might want to make the consistent usage of these two env variables as well.

I am not aware of efforts [2]. Thanks for the link.
> I have to admit that I wasn't aware of TESTJAVAOPTS or TESTJAVACOPTS. 
> Looking at the" jtreg -help all" page then these seem to correspond to 
> -javaoption and -javacoption. I see -vmoption used all the time to 
> specify options, I don't think I've seen -javaoption being used but I 
> see your point. One thing that might be helpful here is some guidance 
> or examples as it confusing to have so many options that initially 
> appear to do the same thing.
I just attached a very simple example to show the behaviours described 
at http://openjdk.java.net/jtreg/vmoptions.html.

Sample can download it from 
https://bugs.openjdk.java.net/secure/attachment/18467/sample.zip

My understanding of options is :

When we start jtreg with "-vmoptions" , jtreg will set its value to 
TESTVMOPTS and TESTTOOLVMOPTS before running shell script test (shell 
scripts identified by jtreg tags @test and @run shell ). So if we call 
java with TESTVMOPTS and call javac with TESTTOOLVMOPTS in shell script, 
then it impact to both.

If we want to set some options only for launching java without impact 
other javac or other java tools, then we need to use "-javaoptions" with 
jtreg. (Precondition : TESTJAVAOPTS was passed)

Similarly, "-javacoptions" will only impact launching javac from all 
shell scripts. (Precondition : TESTJAVACOPTS was passed)

It would be less confusing if we could keep use them in a consistent way.

>
> Mike Duigou might want to have a quick look to see if jdk/Makefile 
> needs to be updated to support -javacoption. As these tests aren't 
> really testing javac (except incidentally) then it might not be 
> important but it's yet another place where you can loose a finger.
>
> I haven't looked at all the files but just notice that you've updated 
> the genXXX scripts. They are used to generate tests, they aren't tests 
> themselves and so aren't run by jtreg.
Then I will rollback those changes. I found three scripts belongs to 
these category.

test/java/nio/Buffer/genBasic.sh
test/java/nio/Buffer/genCopyDirectMemory.sh
test/java/util/Formatter/genBasic.sh
>
> So are you planning to also update the java tests that create VMs to 
> pass through the options? This point came up during previous efforts 
> (and some test infrastructure has been added) but it isn't clear to me 
> where we are on that.
>

I don't plan to cover that in this bug fix. I though it will be covered 
by JDK-8019502. I could work on that bug if you want me to cover that as 
well.

> -Alan.
>
> [1] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/ae5d04dbacd6
> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/7da291690aa0

-Michael Cui



More information about the core-libs-dev mailing list