8210040: TestOptionsWithRanges.java is very slow
Added -Xmx1024m -XX:-ZapUnusedHeapArea; split into 10 smaller tests Reviewed-by: kvn, coleenp
This commit is contained in:
parent
4c58f6768a
commit
6c65a9f193
@ -21,19 +21,122 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// --- start auto-generated
|
||||
// the following portion is auto-generated by TestOptionsWithRanges_generate.sh. Do not edit manually.
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges
|
||||
* @summary Test VM Options with ranges (1 of 10)
|
||||
* @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
|
||||
* @run main/othervm/timeout=1800 TestOptionsWithRanges 1 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (2 of 10)
|
||||
* @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 2 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (3 of 10)
|
||||
* @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 3 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (4 of 10)
|
||||
* @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 4 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (5 of 10)
|
||||
* @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 5 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (6 of 10)
|
||||
* @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 6 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (7 of 10)
|
||||
* @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 7 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (8 of 10)
|
||||
* @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 8 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (9 of 10)
|
||||
* @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 9 of 10
|
||||
*/
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges (10 of 10)
|
||||
* @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 10 of 10
|
||||
*/
|
||||
// --- end auto-generated
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import jdk.test.lib.Asserts;
|
||||
@ -72,9 +175,30 @@ public class TestOptionsWithRanges {
|
||||
}
|
||||
}
|
||||
|
||||
// Return a subset of the test cases, so we can break up allOptionsAsMap into small parts
|
||||
// and use them in separate JTREG @test blocks (for parallel execution).
|
||||
//
|
||||
// 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"))));
|
||||
|
||||
@ -129,13 +253,13 @@ public class TestOptionsWithRanges {
|
||||
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()));
|
||||
|
@ -0,0 +1,42 @@
|
||||
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# Generate the @test tags inside TestOptionsWithRanges.java
|
||||
|
||||
echo "// --- start auto-generated"
|
||||
echo "// the following portion is auto-generated by $0. Do not edit manually."
|
||||
|
||||
for i in {1..10}; do
|
||||
cat <<EOF
|
||||
/*
|
||||
* @test
|
||||
* @bug 8205633
|
||||
* @summary Test VM Options with ranges ($i of 10)
|
||||
* @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 $i of 10
|
||||
*/
|
||||
EOF
|
||||
done
|
||||
echo "// --- end auto-generated"
|
@ -34,6 +34,7 @@ import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
import jdk.test.lib.dcmd.CommandExecutor;
|
||||
import jdk.test.lib.dcmd.JMXExecutor;
|
||||
import jdk.test.lib.Platform;
|
||||
import sun.tools.attach.HotSpotVirtualMachine;
|
||||
|
||||
import static optionsvalidation.JVMOptionsUtils.failedMessage;
|
||||
@ -384,6 +385,17 @@ public abstract class JVMOption {
|
||||
runJava.add(VMType);
|
||||
}
|
||||
|
||||
// Run with a small heap to avoid excessive execution time
|
||||
long max = Runtime.getRuntime().maxMemory() / 1024 / 1024;
|
||||
if (max > 1024) {
|
||||
runJava.add("-Xmx1024m");
|
||||
}
|
||||
|
||||
if (Platform.isDebugBuild()) {
|
||||
// Avoid excessive execution time.
|
||||
runJava.add("-XX:-ZapUnusedHeapArea");
|
||||
}
|
||||
|
||||
if (GCType != null &&
|
||||
!(prepend.contains("-XX:+UseConcMarkSweepGC") ||
|
||||
prepend.contains("-XX:+UseSerialGC") ||
|
||||
|
Loading…
Reference in New Issue
Block a user