Here is a simplified example from the hotspot test groups to demonstrate the problem. I will try to attach jtreg-bug.tar which contains all the necessary files and directories.
Here are the group definitions:
jtreg-bug > cat TEST.groups
jre = \
:needs_full_vm_compact1 \
runtime \
gc
needs_full_vm_compact1 = \
gc/g1/TestRegionAlignment.java \
gc/g1/TestShrinkToOneRegion.java
jtreg-bug > cat closed/TEST.groups
embedded_jre = \
:jre \
-:not_embedded
not_embedded = \
:needs_g1gc
needs_g1gc = \
gc/g1
The explicit listing of two G1 tests in needs_full_vm_compact1 is essential for the bug to manifest.
Here are the sets of tests that jtreg sees in each group:
jtreg-bug > jtreg -l :jre
Testsuite: jtreg-bug
gc/g1/TestPrintGCDetails.java
gc/g1/TestPrintRegionRememberedSetInfo.java
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
gc/g1/TestSummarizeRSetStats.java
runtime/6294277/SourceDebugExtension.java
Tests found: 6
jtreg-bug > jtreg -l :needs_g1gc
Testsuite: jtreg-bug
gc/g1/TestPrintGCDetails.java
gc/g1/TestPrintRegionRememberedSetInfo.java
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
gc/g1/TestSummarizeRSetStats.java
Tests found: 5
jtreg-bug > jtreg -l :embedded_jre
Testsuite: jtreg-bug
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
runtime/6294277/SourceDebugExtension.java
Tests found: 3
As you can see the two explicitly listed G1 tests get included in embedded_jre when they should have been excluded.
Here are the group definitions:
jtreg-bug > cat TEST.groups
jre = \
:needs_full_vm_compact1 \
runtime \
gc
needs_full_vm_compact1 = \
gc/g1/TestRegionAlignment.java \
gc/g1/TestShrinkToOneRegion.java
jtreg-bug > cat closed/TEST.groups
embedded_jre = \
:jre \
-:not_embedded
not_embedded = \
:needs_g1gc
needs_g1gc = \
gc/g1
The explicit listing of two G1 tests in needs_full_vm_compact1 is essential for the bug to manifest.
Here are the sets of tests that jtreg sees in each group:
jtreg-bug > jtreg -l :jre
Testsuite: jtreg-bug
gc/g1/TestPrintGCDetails.java
gc/g1/TestPrintRegionRememberedSetInfo.java
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
gc/g1/TestSummarizeRSetStats.java
runtime/6294277/SourceDebugExtension.java
Tests found: 6
jtreg-bug > jtreg -l :needs_g1gc
Testsuite: jtreg-bug
gc/g1/TestPrintGCDetails.java
gc/g1/TestPrintRegionRememberedSetInfo.java
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
gc/g1/TestSummarizeRSetStats.java
Tests found: 5
jtreg-bug > jtreg -l :embedded_jre
Testsuite: jtreg-bug
gc/g1/TestRegionAlignment.java
gc/g1/TestShrinkToOneRegion.java
runtime/6294277/SourceDebugExtension.java
Tests found: 3
As you can see the two explicitly listed G1 tests get included in embedded_jre when they should have been excluded.