RFR: 8062537: [TESTBUG] Conflicting GC combinations in hotspot tests

Evgeniya Stepanova evgeniya.stepanova at oracle.com
Fri Oct 31 10:34:42 UTC 2014

Hi Jon!

Please see comments inline
On 31.10.2014 7:45, Jon Masamitsu wrote:
> Evgeniya,
> I've only look at a few of the files.  I'm not sure
> I'm interpreting the @requires correctly.  If you
> reply to these initial comments, that will help
> me understand.
> http://cr.openjdk.java.net/~eistepan/8062537/webrev.00/test/gc/arguments/TestMaxNewSize.java.udiff.html
> + * @requires vm.gc=="null"
> Test seems to expect Serial GC.  Should the requires
> be Serial or null?
The diff info is not full:
   25  * @test TestMaxNewSize
   26  * @key gc
   27  * @bug 7057939
   28  * @requires vm.gc=="null"
   29  * @summary Make sure that MaxNewSize always has a useful value 
after argument
   30  * processing.
   31  * @library /testlibrary
   32  * @build TestMaxNewSize
   33  * @run main TestMaxNewSize -XX:+UseSerialGC
   34  * @run main TestMaxNewSize -XX:+UseParallelGC
   35  * @run main TestMaxNewSize -XX:+UseConcMarkSweepGC
   36  * @run main TestMaxNewSize -XX:+UseG1GC

So test run with all GCs.

> http://cr.openjdk.java.net/~eistepan/8062537/webrev.00/test/gc/arguments/TestSerialHeapSizeFlags.java.udiff.html
> Comments say this is a test of Serial but null
> allowed.
> + * @requires vm.gc=="Serial" | vm.gc=="null"
Test itself set "-XX:+UseSerialGC" flag and launch separate java process.
Setting @requires in such cases aiming 2 targets:
1)It is skipps if GC is for example ParallelGC. In concrete case you 
could guess it only for serial GC, but in some tests you couldn't.
So you see test passed and think it passed with your options and 
actually it passed with other GC. With requires you are totally sure 
test run with option you set. I believe such tests should be changed to 
pass options to the java processes, but now they doesn't.
2)From the other hand, when run without options, tests always run (ALL 
tests will run, no tests skipped at all)

> http://cr.openjdk.java.net/~eistepan/8062537/webrev.00/test/gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java.udiff.html
> If you're going to use this on all the collectors (allow vm.gc == null),
> then class loading should be turned off on all the GC's, not
> just CMS (-XX:-CMSClassUnloadingEnabled only affects CMS).
See previous comment. All tests you mentioned were not failed, and 
"requires" added for them to make order in test run.
> Jon
> On 10/30/2014 07:05 AM, Evgeniya Stepanova wrote:
>> Hi,
>> Please review changes for 8062537, the OpenJDK/hotspot part of the 
>> JDK-8019361 <https://bugs.openjdk.java.net/browse/JDK-8019361>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8062537
>> fix: http://cr.openjdk.java.net/~eistepan/8062537/webrev.00/
>> Problem: Some tests explicitly set GC and fail when jtreg set another GC.
>> Solution: Such tests marked with the jtreg tag "requires" to skip 
>> test if there is a conflict
>> Tested locally with different GC flags (-XX:+UseG1GC, 
>> -XX:+UseParallelGC, -XX:+UseSerialGC, -XX:+UseConcMarkSweep and 
>> without any GC flag). Tests are being excluded as expected. No tests 
>> failed because of the conflict.
>> Thanks,
>> Evgeniya Stepanova

/Evgeniya Stepanova/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20141031/60ea1a5f/attachment.htm>

More information about the hotspot-gc-dev mailing list