8209164: [TESTBUG] Apply jtreg skipped status to cds tests
authormseledtsov
Wed, 15 Aug 2018 10:00:16 -0700
changeset 51411 4699147a4f91
parent 51410 cb8cab787ba2
child 51412 8f7e3f9ddbc0
8209164: [TESTBUG] Apply jtreg skipped status to cds tests Summary: Added the SkippedException where applicable Reviewed-by: iklam, jiangli
test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java
test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java
test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java
test/lib/jdk/test/lib/cds/CDSTestUtils.java
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java	Wed Aug 15 10:00:16 2018 -0700
@@ -51,18 +51,16 @@
 
         // -Xshare=on
         OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldContain("Specified shared archive not found")
-               .shouldHaveExitValue(1);
-        }
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldContain("Specified shared archive not found")
+            .shouldHaveExitValue(1);
 
         // -Xshare=auto
         opts.setXShareMode("auto");
         out = CDSTestUtils.runWithArchive(opts);
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldMatch("(java|openjdk) version")
-               .shouldNotContain("sharing")
-               .shouldHaveExitValue(0);
-        }
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldMatch("(java|openjdk) version")
+            .shouldNotContain("sharing")
+            .shouldHaveExitValue(0);
     }
 }
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java	Wed Aug 15 10:00:16 2018 -0700
@@ -50,10 +50,10 @@
         CDSTestUtils.checkDump(out);
 
         out = CDSTestUtils.runWithArchive(loadCompactStringsArgument);
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldMatch("The shared archive file's CompactStrings " +
-                "setting .* does not equal the current CompactStrings setting")
-                .shouldHaveExitValue(1);
-        }
+        CDSTestUtils.checkMappingFailure(out);
+
+        out.shouldMatch("The shared archive file's CompactStrings " +
+                        "setting .* does not equal the current CompactStrings setting")
+            .shouldHaveExitValue(1);
     }
 }
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java	Wed Aug 15 10:00:16 2018 -0700
@@ -35,7 +35,6 @@
 import jdk.test.lib.cds.CDSTestUtils;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
-import java.io.File;
 
 public class NonBootLoaderClasses {
     public static void main(String[] args) throws Exception {
@@ -56,11 +55,11 @@
                 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
                 "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary");
         OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "print-shared-archive");
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldContain("archive is valid")
-               .shouldHaveExitValue(0)               // Should report success in error code.
-               .shouldContain(PLATFORM_CLASS.replace('/', '.'))
-               .shouldContain(APP_CLASS.replace('/', '.'));
-        }
+        CDSTestUtils.checkMappingFailure(out);
+
+        out.shouldContain("archive is valid")
+            .shouldHaveExitValue(0)               // Should report success in error code.
+            .shouldContain(PLATFORM_CLASS.replace('/', '.'))
+            .shouldContain(APP_CLASS.replace('/', '.'));
    }
 }
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java	Wed Aug 15 10:00:16 2018 -0700
@@ -36,7 +36,6 @@
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.process.OutputAnalyzer;
 
-
 public class PrintSharedArchiveAndExit {
     public static void main(String[] args) throws Exception {
         String archiveName = "PrintSharedArchiveAndExit.jsa";
@@ -49,20 +48,19 @@
                 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
                 "-XX:+PrintSharedArchiveAndExit", "-version");
         out = CDSTestUtils.executeAndLog(pb, "print-shared-archive-and-version");
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldContain("archive is valid")
-                .shouldNotContain("java version")     // Should not print JVM version
-                .shouldHaveExitValue(0);              // Should report success in error code.
-        }
+        CDSTestUtils.checkMappingFailure(out);
+
+        out.shouldContain("archive is valid")
+            .shouldNotContain("java version")     // Should not print JVM version
+            .shouldHaveExitValue(0);              // Should report success in error code.
 
         pb = ProcessTools.createJavaProcessBuilder(
                 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
                 "-XX:+PrintSharedArchiveAndExit");
         out = CDSTestUtils.executeAndLog(pb, "print-shared-archive");
-        if (!CDSTestUtils.isUnableToMap(out)) {
-            out.shouldContain("archive is valid")
-                .shouldNotContain("Usage:")           // Should not print JVM help message
-                .shouldHaveExitValue(0);               // Should report success in error code.
-        }
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldContain("archive is valid")
+            .shouldNotContain("Usage:")           // Should not print JVM help message
+            .shouldHaveExitValue(0);              // Should report success in error code.
     }
 }
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java	Wed Aug 15 10:00:16 2018 -0700
@@ -42,15 +42,14 @@
             CDSTestUtils.createArchive("-XX:SharedSymbolTableBucketSize="
                                        + Integer.valueOf(bucket_size));
         CDSTestUtils.checkDump(output);
+        CDSTestUtils.checkMappingFailure(output);
 
-        if (!CDSTestUtils.isUnableToMap(output)) {
-            String s = output.firstMatch("Average bucket size     : .*");
-            Float f = Float.parseFloat(s.substring(25));
-            int size = Math.round(f);
-            if (size != bucket_size) {
-                throw new Exception("FAILED: incorrect bucket size " + size +
-                                    ", expect " + bucket_size);
-            }
+        String s = output.firstMatch("Average bucket size     : .*");
+        Float f = Float.parseFloat(s.substring(25));
+        int size = Math.round(f);
+        if (size != bucket_size) {
+            throw new Exception("FAILED: incorrect bucket size " + size +
+                                ", expect " + bucket_size);
         }
 
         // Invalid SharedSymbolTableBucketSize input
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java	Wed Aug 15 10:00:16 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 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
@@ -24,7 +24,6 @@
 import jdk.test.lib.cds.CDSTestUtils;
 import jdk.test.lib.process.OutputAnalyzer;
 
-
 // This class contains methods common to all transformation test cases
 public class TransformTestCommon {
 
@@ -101,8 +100,7 @@
         // If we were not able to map an archive,
         // then do not perform other checks, since
         // there was no sharing at all
-        if (CDSTestUtils.isUnableToMap(out))
-            return;
+        CDSTestUtils.checkMappingFailure(out);
 
         String childVmName = child.replace('.', '/');
         String parentVmName = parent.replace('.', '/');
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java	Wed Aug 15 10:00:16 2018 -0700
@@ -36,8 +36,9 @@
  * @run main/othervm -XX:-CompactStrings InvalidFileFormat
  */
 
+import java.io.File;
+import jdk.test.lib.cds.CDSTestUtils;
 import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
 
 // Checking most common error use cases
 // This file is not an exhastive test of various shared data file corruption
@@ -65,8 +66,8 @@
         OutputAnalyzer out = SharedStringsUtils.dumpWithoutChecks(TestCommon.list("HelloString"),
                                  "invalidFormat" + File.separator + dataFileName);
 
-        if (!TestCommon.isUnableToMap(out))
-            out.shouldContain(expectedWarning).shouldHaveExitValue(1);
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldContain(expectedWarning).shouldHaveExitValue(1);
     }
 
 }
--- a/test/lib/jdk/test/lib/cds/CDSTestUtils.java	Wed Aug 15 14:35:33 2018 +0200
+++ b/test/lib/jdk/test/lib/cds/CDSTestUtils.java	Wed Aug 15 10:00:16 2018 -0700
@@ -32,7 +32,7 @@
 import jdk.test.lib.Utils;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
-
+import jtreg.SkippedException;
 
 // This class contains common test utilities for testing CDS
 public class CDSTestUtils {
@@ -114,17 +114,14 @@
     public static class Result {
         private final OutputAnalyzer output;
         private final CDSOptions options;
-        private final boolean hasMappingFailure;
-        private final boolean hasAbnormalExit;
         private final boolean hasNormalExit;
         private final String CDS_DISABLED = "warning: CDS is disabled when the";
 
         public Result(CDSOptions opts, OutputAnalyzer out) throws Exception {
-            options = opts;
-            output = out;
-            hasMappingFailure = CDSTestUtils.checkCommonExecExceptions(output);
-            hasAbnormalExit   = (!hasMappingFailure) && (output.getExitValue() != 0);
-            hasNormalExit     = (!hasMappingFailure) && (output.getExitValue() == 0);
+            checkMappingFailure(out);
+            this.options = opts;
+            this.output = out;
+            hasNormalExit = (output.getExitValue() == 0);
 
             if (hasNormalExit) {
                 if ("on".equals(options.xShareMode) &&
@@ -138,30 +135,22 @@
         }
 
         public Result assertNormalExit(Checker checker) throws Exception {
-            if (!hasMappingFailure) {
-                checker.check(output);
-                output.shouldHaveExitValue(0);
-            }
+            checker.check(output);
+            output.shouldHaveExitValue(0);
             return this;
         }
 
         public Result assertAbnormalExit(Checker checker) throws Exception {
-            if (!hasMappingFailure) {
-                checker.check(output);
-                output.shouldNotHaveExitValue(0);
-            }
+            checker.check(output);
+            output.shouldNotHaveExitValue(0);
             return this;
         }
 
         // When {--limit-modules, --patch-module, and/or --upgrade-module-path}
         // are specified, CDS is silently disabled for both -Xshare:auto and -Xshare:on.
         public Result assertSilentlyDisabledCDS(Checker checker) throws Exception {
-            if (hasMappingFailure) {
-                throw new RuntimeException("Unexpected mapping failure");
-            }
             // this comes from a JVM warning message.
             output.shouldContain(CDS_DISABLED);
-
             checker.check(output);
             return this;
         }
@@ -181,34 +170,27 @@
         }
 
         public Result ifAbnormalExit(Checker checker) throws Exception {
-            if (hasAbnormalExit) {
+            if (!hasNormalExit) {
                 checker.check(output);
             }
             return this;
         }
 
         public Result ifNoMappingFailure(Checker checker) throws Exception {
-            if (!hasMappingFailure) {
-                checker.check(output);
-            }
+            checker.check(output);
             return this;
         }
 
 
         public Result assertNormalExit(String... matches) throws Exception {
-            if (!hasMappingFailure) {
-                checkMatches(output, matches);
-                output.shouldHaveExitValue(0);
-            }
+            checkMatches(output, matches);
+            output.shouldHaveExitValue(0);
             return this;
         }
 
         public Result assertAbnormalExit(String... matches) throws Exception {
-            if (!hasMappingFailure) {
-                checkMatches(output, matches);
-                output.shouldNotHaveExitValue(0);
-            }
-
+            checkMatches(output, matches);
+            output.shouldNotHaveExitValue(0);
             return this;
         }
     }
@@ -223,7 +205,7 @@
     public static final String TestTimeoutFactor = System.getProperty("test.timeout.factor", "1.0");
 
     public static final String UnableToMapMsg =
-        "Unable to map shared archive: test did not complete; assumed PASS";
+        "Unable to map shared archive: test did not complete";
 
     // Create bootstrap CDS archive,
     // use extra JVM command line args as a prefix.
@@ -295,7 +277,7 @@
     // of exceptions and common errors.
     // Exception e argument - an exception to be re-thrown if none of the common
     // exceptions match. Pass null if you wish not to re-throw any exception.
-    public static boolean checkCommonExecExceptions(OutputAnalyzer output, Exception e)
+    public static void checkCommonExecExceptions(OutputAnalyzer output, Exception e)
         throws Exception {
         if (output.getStdout().contains("http://bugreport.java.com/bugreport/crash.jsp")) {
             throw new RuntimeException("Hotspot crashed");
@@ -303,9 +285,6 @@
         if (output.getStdout().contains("TEST FAILED")) {
             throw new RuntimeException("Test Failed");
         }
-        if (output.getOutput().contains("shared class paths mismatch")) {
-//            throw new RuntimeException("shared class paths mismatch");
-        }
         if (output.getOutput().contains("Unable to unmap shared space")) {
             throw new RuntimeException("Unable to unmap shared space");
         }
@@ -314,18 +293,16 @@
         // at given address. This behavior is platform-specific, machine config-specific
         // and can be random (see ASLR).
         if (isUnableToMap(output)) {
-            System.out.println(UnableToMapMsg);
-            return true;
+            throw new SkippedException(UnableToMapMsg);
         }
 
         if (e != null) {
             throw e;
         }
-        return false;
     }
 
-    public static boolean checkCommonExecExceptions(OutputAnalyzer output) throws Exception {
-        return checkCommonExecExceptions(output, null);
+    public static void checkCommonExecExceptions(OutputAnalyzer output) throws Exception {
+        checkCommonExecExceptions(output, null);
     }
 
 
@@ -358,6 +335,12 @@
         return false;
     }
 
+    public static void checkMappingFailure(OutputAnalyzer out) throws SkippedException {
+        if (isUnableToMap(out)) {
+            throw new SkippedException(UnableToMapMsg);
+        }
+    }
+
     public static Result run(String... cliPrefix) throws Exception {
         CDSOptions opts = new CDSOptions();
         opts.setArchiveName(getDefaultArchiveName());
@@ -446,8 +429,7 @@
                                              int expectedExitValue,
                                              String... extraMatches) throws Exception {
         if (isUnableToMap(output)) {
-            System.out.println(UnableToMapMsg);
-            return output;
+            throw new SkippedException(UnableToMapMsg);
         }
 
         output.shouldHaveExitValue(expectedExitValue);