8246387: switch to jtreg 5.1
Reviewed-by: dholmes, erikj
This commit is contained in:
parent
bf22f82207
commit
e47b2bc8c3
make/conf
test
failure_handler/src/share/classes/jdk/test/failurehandler/jtreg
hotspot/jtreg
jaxp
jdk
langtools
lib-test
lib/jdk/test/lib
@ -1045,10 +1045,10 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
jtreg: {
|
jtreg: {
|
||||||
server: "jpg",
|
server: "jpg",
|
||||||
product: "jtreg",
|
product: "jtreg",
|
||||||
version: "5.0",
|
version: "5.1",
|
||||||
build_number: "b01",
|
build_number: "b01",
|
||||||
checksum_file: "MD5_VALUES",
|
checksum_file: "MD5_VALUES",
|
||||||
file: "bundles/jtreg_bin-5.0.zip",
|
file: "bundles/jtreg_bin-5.1.zip",
|
||||||
environment_name: "JT_HOME",
|
environment_name: "JT_HOME",
|
||||||
environment_path: input.get("jtreg", "home_path") + "/bin",
|
environment_path: input.get("jtreg", "home_path") + "/bin",
|
||||||
configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"),
|
configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -121,29 +121,4 @@ public class GatherDiagnosticInfoObserver implements Harness.Observer {
|
|||||||
compileJdk = rp.getCompileJDK().getAbsoluteFile().toPath();
|
compileJdk = rp.getCompileJDK().getAbsoluteFile().toPath();
|
||||||
testJdk = rp.getTestJDK().getAbsoluteFile().toPath();
|
testJdk = rp.getTestJDK().getAbsoluteFile().toPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void startingTest(TestResult tr) {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void stoppingTestRun() {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void finishedTesting() {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void finishedTestRun(boolean allOK) {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void error(String msg) {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ requires.properties= \
|
|||||||
test.vm.gc.nvdimm
|
test.vm.gc.nvdimm
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.0 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Path to libraries in the topmost test directory. This is needed so @library
|
# Path to libraries in the topmost test directory. This is needed so @library
|
||||||
# does not need ../../../ notation to reach them
|
# does not need ../../../ notation to reach them
|
||||||
|
@ -40,13 +40,14 @@ public class TestInitException {
|
|||||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("Example");
|
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("Example");
|
||||||
OutputAnalyzer oa = new OutputAnalyzer(pb.start());
|
OutputAnalyzer oa = new OutputAnalyzer(pb.start());
|
||||||
// First call stack trace
|
// First call stack trace
|
||||||
oa.shouldContain("at Example.$jacocoInit(Example.jasm)");
|
// shouldMatch is used to workaround CODETOOLS-7902686
|
||||||
|
oa.shouldMatch("^\tat Example\\.\\$jacocoInit\\(.*Example\\.jasm\\)$");
|
||||||
oa.shouldContain("Caused by: java.lang.RuntimeException");
|
oa.shouldContain("Caused by: java.lang.RuntimeException");
|
||||||
oa.shouldContain("at StaticInit.<clinit>(StaticInit.java:27)");
|
oa.shouldContain("at StaticInit.<clinit>(StaticInit.java:27)");
|
||||||
// Second call stack trace, with the message
|
// Second call stack trace, with the message
|
||||||
oa.shouldContain("java.lang.ExceptionInInitializerError: $jacocoData");
|
oa.shouldContain("java.lang.ExceptionInInitializerError: $jacocoData");
|
||||||
oa.shouldContain("at Example.foo(Example.jasm)");
|
oa.shouldMatch("^\tat Example\\.foo\\(.*Example\\.jasm\\)$");
|
||||||
oa.shouldContain("at Example.main(Example.jasm)");
|
oa.shouldMatch("^\tat Example\\.main\\(.*Example\\.jasm\\)$");
|
||||||
oa.shouldHaveExitValue(1);
|
oa.shouldHaveExitValue(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ modules=java.xml
|
|||||||
groups=TEST.groups
|
groups=TEST.groups
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.0 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Path to libraries in the topmost test directory. This is needed so @library
|
# Path to libraries in the topmost test directory. This is needed so @library
|
||||||
# does not need ../../ notation to reach them
|
# does not need ../../ notation to reach them
|
||||||
|
@ -59,7 +59,7 @@ requires.properties= \
|
|||||||
release.implementor
|
release.implementor
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.0 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Path to libraries in the topmost test directory. This is needed so @library
|
# Path to libraries in the topmost test directory. This is needed so @library
|
||||||
# does not need ../../ notation to reach them
|
# does not need ../../ notation to reach them
|
||||||
|
@ -15,7 +15,7 @@ keys=intermittent randomness
|
|||||||
groups=TEST.groups
|
groups=TEST.groups
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.0 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Use new module options
|
# Use new module options
|
||||||
useNewOptions=true
|
useNewOptions=true
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# It also contains test-suite configuration information.
|
# It also contains test-suite configuration information.
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.0 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Path to libraries in the topmost test directory. This is needed so @library
|
# Path to libraries in the topmost test directory. This is needed so @library
|
||||||
# does not need ../../ notation to reach them
|
# does not need ../../ notation to reach them
|
||||||
|
@ -113,6 +113,11 @@ public final class Utils {
|
|||||||
public static final String TEST_CLASSES = System.getProperty("test.classes", ".");
|
public static final String TEST_CLASSES = System.getProperty("test.classes", ".");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Returns the value of 'test.name' system property
|
||||||
|
*/
|
||||||
|
public static final String TEST_NAME = System.getProperty("test.name", ".");
|
||||||
|
|
||||||
|
/**
|
||||||
* Defines property name for seed value.
|
* Defines property name for seed value.
|
||||||
*/
|
*/
|
||||||
public static final String SEED_PROPERTY_NAME = "jdk.test.lib.random.seed";
|
public static final String SEED_PROPERTY_NAME = "jdk.test.lib.random.seed";
|
||||||
@ -824,87 +829,6 @@ public final class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method is intended to be called from a jtreg test.
|
|
||||||
// It will identify the name of the test by means of stack walking.
|
|
||||||
// It can handle both jtreg tests and a testng tests wrapped inside jtreg tests.
|
|
||||||
// For jtreg tests the name of the test will be searched by stack-walking
|
|
||||||
// until the method main() is found; the class containing that method is the
|
|
||||||
// main test class and will be returned as the name of the test.
|
|
||||||
// Special handling is used for testng tests.
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static String getTestName() {
|
|
||||||
String result = null;
|
|
||||||
// If we are using testng, then we should be able to load the "Test" annotation.
|
|
||||||
Class<? extends Annotation> testClassAnnotation, junitTestClassAnnotation;
|
|
||||||
|
|
||||||
try {
|
|
||||||
testClassAnnotation = (Class<? extends Annotation>)Class.forName("org.testng.annotations.Test");
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
testClassAnnotation = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we are using junit, then we should be able to load the "Test" annotation.
|
|
||||||
try {
|
|
||||||
junitTestClassAnnotation = (Class<? extends Annotation>)Class.forName("org.junit.Test");
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
junitTestClassAnnotation = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
StackTraceElement[] elms = (new Throwable()).getStackTrace();
|
|
||||||
for (StackTraceElement n: elms) {
|
|
||||||
String className = n.getClassName();
|
|
||||||
|
|
||||||
// If this is a "main" method, then use its class name, but only
|
|
||||||
// if we are not using testng or junit.
|
|
||||||
if (testClassAnnotation == null && junitTestClassAnnotation == null &&
|
|
||||||
"main".equals(n.getMethodName())) {
|
|
||||||
result = className;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If this is a testng test, the test will have no "main" method. We can
|
|
||||||
// detect a testng test class by looking for the org.testng.annotations.Test
|
|
||||||
// annotation. If present, then use the name of this class.
|
|
||||||
if (testClassAnnotation != null) {
|
|
||||||
try {
|
|
||||||
Class<?> c = Class.forName(className);
|
|
||||||
if (c.isAnnotationPresent(testClassAnnotation)) {
|
|
||||||
result = className;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
throw new RuntimeException("Unexpected exception: " + e, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If this is a junit test, the test will have no "main" method. We can
|
|
||||||
// detect a junit test class by going through all the methods and
|
|
||||||
// check if the method has the org.junit.Test annotation. If present,
|
|
||||||
// then use the name of this class.
|
|
||||||
if (junitTestClassAnnotation != null) {
|
|
||||||
try {
|
|
||||||
Class<?> c = Class.forName(className);
|
|
||||||
Method[] methods = c.getMethods();
|
|
||||||
for (Method method : methods) {
|
|
||||||
if (method.getName().equals(n.getMethodName()) &&
|
|
||||||
method.isAnnotationPresent(junitTestClassAnnotation)) {
|
|
||||||
result = className;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
throw new RuntimeException("Unexpected exception: " + e, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == null) {
|
|
||||||
throw new RuntimeException("Couldn't find main test class in stack trace");
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an empty file in "user.dir" if the property set.
|
* Creates an empty file in "user.dir" if the property set.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -499,7 +499,7 @@ public class CDSTestUtils {
|
|||||||
// create file containing the specified class list
|
// create file containing the specified class list
|
||||||
public static File makeClassList(String classes[])
|
public static File makeClassList(String classes[])
|
||||||
throws Exception {
|
throws Exception {
|
||||||
return makeClassList(getTestName() + "-", classes);
|
return makeClassList(testName + "-", classes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create file containing the specified class list
|
// create file containing the specified class list
|
||||||
@ -529,18 +529,7 @@ public class CDSTestUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String testName = Utils.TEST_NAME.replace('/', '.');
|
||||||
// Optimization for getting a test name.
|
|
||||||
// Test name does not change during execution of the test,
|
|
||||||
// but getTestName() uses stack walking hence it is expensive.
|
|
||||||
// Therefore cache it and reuse it.
|
|
||||||
private static String testName;
|
|
||||||
public static String getTestName() {
|
|
||||||
if (testName == null) {
|
|
||||||
testName = Utils.getTestName();
|
|
||||||
}
|
|
||||||
return testName;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final SimpleDateFormat timeStampFormat =
|
private static final SimpleDateFormat timeStampFormat =
|
||||||
new SimpleDateFormat("HH'h'mm'm'ss's'SSS");
|
new SimpleDateFormat("HH'h'mm'm'ss's'SSS");
|
||||||
@ -549,7 +538,7 @@ public class CDSTestUtils {
|
|||||||
|
|
||||||
// Call this method to start new archive with new unique name
|
// Call this method to start new archive with new unique name
|
||||||
public static void startNewArchiveName() {
|
public static void startNewArchiveName() {
|
||||||
defaultArchiveName = getTestName() +
|
defaultArchiveName = testName +
|
||||||
timeStampFormat.format(new Date()) + ".jsa";
|
timeStampFormat.format(new Date()) + ".jsa";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -561,7 +550,7 @@ public class CDSTestUtils {
|
|||||||
// ===================== FILE ACCESS convenience methods
|
// ===================== FILE ACCESS convenience methods
|
||||||
public static File getOutputFile(String name) {
|
public static File getOutputFile(String name) {
|
||||||
File dir = new File(System.getProperty("test.classes", "."));
|
File dir = new File(System.getProperty("test.classes", "."));
|
||||||
return new File(dir, getTestName() + "-" + name);
|
return new File(dir, testName + "-" + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -582,7 +571,7 @@ public class CDSTestUtils {
|
|||||||
long started = System.currentTimeMillis();
|
long started = System.currentTimeMillis();
|
||||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||||
String outputFileNamePrefix =
|
String outputFileNamePrefix =
|
||||||
getTestName() + "-" + String.format("%04d", getNextLogCounter()) + "-" + logName;
|
testName + "-" + String.format("%04d", getNextLogCounter()) + "-" + logName;
|
||||||
|
|
||||||
writeFile(getOutputFile(outputFileNamePrefix + ".stdout"), output.getStdout());
|
writeFile(getOutputFile(outputFileNamePrefix + ".stdout"), output.getStdout());
|
||||||
writeFile(getOutputFile(outputFileNamePrefix + ".stderr"), output.getStderr());
|
writeFile(getOutputFile(outputFileNamePrefix + ".stderr"), output.getStderr());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user