diff a/test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java b/test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java --- a/test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java +++ b/test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java @@ -96,25 +96,42 @@ if (ha.maxSize < 32) { dumptimeArgs.add(noCoops); } dumptimeArgs.add(logArg); OutputAnalyzer output; + boolean shouldProceed = true; if (heapArg.length() == 0) { System.out.println("\n Test without heap args\n"); output = TestCommon.dump(appJar, appClasses, dumptimeArgs.toArray(new String[0])); } else { System.out.println("\n Test with heap args: " + heapArg + "\n"); String[] heapSizes = heapArg.split(" "); for (String heapSize : heapSizes) { dumptimeArgs.add(heapSize); } output = TestCommon.dump(appJar, appClasses, dumptimeArgs.toArray(new String[0])); - output.shouldContain("Setting MaxHeapSize to 4G for CDS dumping"); + try { + output.shouldContain("Setting MaxHeapSize to 4G for CDS dumping"); + } catch (java.lang.RuntimeException ex) { + String stdout = output.getStdout(); + if (stdout.contains("Initial heap size set to a larger value than the maximum heap size") || + stdout.contains("Incompatible minimum and maximum heap sizes specified")) { + System.out.println("Available MaxHeapSize is insufficient to run this test case."); + shouldProceed = false; + } else { + if (!stdout.contains("Setting MinHeapSize to 4G for CDS dumping") && + !stdout.contains("Setting InitialHeapSize to 4G for CDS dumping")) { + throw(ex); + } + } + } } - TestCommon.checkDump(output); + if (shouldProceed) { + TestCommon.checkDump(output); - TestCommon.run("-cp", appJar, - logArg, "-Xlog:class+load", noCoops, "Hello") - .assertNormalExit("Hello source: shared objects file"); + TestCommon.run("-cp", appJar, + logArg, "-Xlog:class+load", noCoops, "Hello") + .assertNormalExit("Hello source: shared objects file"); + } } } }