< prev index next >

test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java

Print this page

@@ -19,23 +19,12 @@
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
-/*
- * @test
- * @bug 8205633
- * @summary Test VM Options with ranges
- * @library /test/lib /runtime/CommandLine/OptionsValidation/common
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.attach/sun.tools.attach
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @run main/othervm/timeout=1800 TestOptionsWithRanges
- */
-
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import jdk.test.lib.Asserts;
 import optionsvalidation.JVMOption;
 import optionsvalidation.JVMOptionsUtils;

@@ -70,13 +59,34 @@
         if (option != null) {
             option.setAllowedExitCodes(allowedExitCodes);
         }
     }
 
+    // Return a subset of the test cases, so we can break up allOptionsAsMap into small parts
+    // and test them in separate JTREG tests. See ./TestOptionsWithRanges_*.java
+    //
+    // args[] must be {part, "of", numParts}. The first part should be "1".
+    private static List<JVMOption> getTestSubset(String[] args) throws Exception {
+        int part = Integer.parseInt(args[0]) - 1;
+        int numParts = Integer.parseInt(args[2]);
+        List<String> keys = new ArrayList<>(allOptionsAsMap.keySet());
+        Collections.sort(keys);
+        int numTests = keys.size();
+        int start = numTests * (part    ) / numParts;
+        int end   = numTests * (part + 1) / numParts;
+
+        List<JVMOption> subset = new ArrayList<>();
+        for (int i=start; i < end; i++) {
+            subset.add(allOptionsAsMap.get(keys.get(i)));
+        }
+        System.out.println("Generating subset [" + start + " ... " + end + ") of " +
+                           subset.size() + " tests out of " + keys.size() + " total tests");
+        return subset;
+    }
+
     public static void main(String[] args) throws Exception {
         int failedTests;
-        List<JVMOption> allOptions;
 
         allOptionsAsMap = JVMOptionsUtils.getOptionsWithRangeAsMap(origin -> (!(origin.contains("develop") || origin.contains("notproduct"))));
 
         /*
          * Remove CICompilerCount from testing because currently it can hang system

@@ -127,17 +137,17 @@
         excludeTestMaxRange("NonProfiledCodeHeapSize");
         excludeTestMaxRange("ProfiledCodeHeapSize");
         excludeTestMaxRange("NonNMethodCodeHeapSize");
         excludeTestMaxRange("CodeCacheExpansionSize");
 
-        allOptions = new ArrayList<>(allOptionsAsMap.values());
+        List<JVMOption> testSubset = getTestSubset(args);
 
-        Asserts.assertGT(allOptions.size(), 0, "Options with ranges not found!");
+        Asserts.assertGT(testSubset.size(), 0, "Options with ranges not found!");
 
-        System.out.println("Parsed " + allOptions.size() + " options with ranges. Start test!");
+        System.out.println("Parsed " + testSubset.size() + " options with ranges. Start test!");
 
-        failedTests = JVMOptionsUtils.runCommandLineTests(allOptions);
+        failedTests = JVMOptionsUtils.runCommandLineTests(testSubset);
 
         Asserts.assertEQ(failedTests, 0,
                 String.format("%d tests failed! %s", failedTests, JVMOptionsUtils.getMessageWithFailures()));
     }
 }
< prev index next >