RFR: 8269032: Stringdedup tests are failing if the ergonomically select GC does not support it

Per Liden pliden at openjdk.java.net
Wed Jun 30 10:14:04 UTC 2021


On Wed, 30 Jun 2021 07:28:40 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java line 44:
>> 
>>> 42:  * @bug 8029075
>>> 43:  * @requires vm.gc == "null" & vm.gc.G1
>>> 44:  * @library /test/lib
>> 
>> ... and same here, this should be `@requires vm.gc.Shenandoah` and it should pass `-XX:+UseShenandoahGC`to the test, which it appends to the list of arguments for the JVM that will be spawned.
>> 
>> Of course, same comments apply to all tests.
>
> I think the eventual goal should probably be that these are all driver
> tests, and just have `@requires vm.gc != "Epsilon"` with a "driver" test,
> but we're not there yet.
> 
> Until then, what I'm attempting to do is get good test coverage without
> wasting a lot of testing resources. Driver tests are preferred to othervm
> tests where that's possible, for better resource utilization. Driver tests
> can't use VM options.
> 
> Most of the string deduplication implementation is entirely GC-agnostic. So
> ideally we would run these tests with a given GC as part of focused testing
> of that GC, and not when testing some other GC. Hence the use of `@requires`
> for specific GC options (vm.gc == "XXX").
> 
> But that doesn't provide any testing for the case where the GC is being
> selected ergonomically. The new `@test` clauses to test with G1 are not
> entirely ideal, since they won't run if someone builds a VM that excludes G1
> but does include some other GC that supports string deduplication. But I
> couldn't come up with a way to address that without having to deal with
> WhiteBox.
> 
> I'm not sure exactly what you are proposing and how it might relate to the
> above considerations.  I'm not enamored of what I've proposed, but haven't
> come up with something I like better.  Maybe if you could be more explicit
> about the diffs you think should be made for one of the tests?

Sorry, let me be more specific. I was proposing you do this (in all these tests):

```diff --git a/test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java b/test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java
index 66d58a6e580..6a358ae54f3 100644
--- a/test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java
+++ b/test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java
@@ -27,26 +27,26 @@ package gc.stringdedup;
  * @test TestStringDeduplicationFullGC
  * @summary Test string deduplication during full GC
  * @bug 8029075
- * @requires vm.gc == "G1" | vm.gc == "Shenandoah"
+ * @requires vm.gc.G1
  * @library /test/lib
  * @library /
  * @modules java.base/jdk.internal.misc:open
  * @modules java.base/java.lang:open
  *          java.management
- * @run driver gc.stringdedup.TestStringDeduplicationFullGC
+ * @run driver gc.stringdedup.TestStringDeduplicationFullGC G1
  */
 
 /*
  * @test TestStringDeduplicationFullGC
  * @summary Test string deduplication during full GC
  * @bug 8029075
- * @requires vm.gc == "null" & vm.gc.G1
+ * @requires vm.gc.Shenandoah
  * @library /test/lib
  * @library /
  * @modules java.base/jdk.internal.misc:open
  * @modules java.base/java.lang:open
  *          java.management
- * @run driver gc.stringdedup.TestStringDeduplicationFullGC G1
+ * @run driver gc.stringdedup.TestStringDeduplicationFullGC Shenandoah
  */
 
 public class TestStringDeduplicationFullGC {

-------------

PR: https://git.openjdk.java.net/jdk/pull/4603


More information about the hotspot-gc-dev mailing list