--- old/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java 2018-08-28 08:56:26.502867674 -0700 +++ new/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java 2018-08-28 08:56:26.230857329 -0700 @@ -21,19 +21,8 @@ * 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; @@ -72,9 +61,30 @@ } } + // 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 getTestSubset(String[] args) throws Exception { + int part = Integer.parseInt(args[0]) - 1; + int numParts = Integer.parseInt(args[2]); + List keys = new ArrayList<>(allOptionsAsMap.keySet()); + Collections.sort(keys); + int numTests = keys.size(); + int start = numTests * (part ) / numParts; + int end = numTests * (part + 1) / numParts; + + List 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 allOptions; allOptionsAsMap = JVMOptionsUtils.getOptionsWithRangeAsMap(origin -> (!(origin.contains("develop") || origin.contains("notproduct")))); @@ -129,13 +139,13 @@ excludeTestMaxRange("NonNMethodCodeHeapSize"); excludeTestMaxRange("CodeCacheExpansionSize"); - allOptions = new ArrayList<>(allOptionsAsMap.values()); + List 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()));