hotspot/test/runtime/ErrorHandling/TestOnOutOfMemoryError.java
changeset 46476 8ead62daaa47
parent 40631 ed82623d7831
--- a/hotspot/test/runtime/ErrorHandling/TestOnOutOfMemoryError.java	Wed May 17 23:36:19 2017 +0200
+++ b/hotspot/test/runtime/ErrorHandling/TestOnOutOfMemoryError.java	Thu May 18 08:14:33 2017 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, 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
@@ -23,11 +23,11 @@
 
 /*
  * @test TestOnOutOfMemoryError
- * @summary Test using -XX:OnOutOfMemoryError=<cmd>
+ * @summary Test using single and multiple -XX:OnOutOfMemoryError=<cmd>
  * @modules java.base/jdk.internal.misc
  * @library /test/lib
  * @run main TestOnOutOfMemoryError
- * @bug 8078470
+ * @bug 8078470 8177522
  */
 
 import jdk.test.lib.process.ProcessTools;
@@ -44,13 +44,22 @@
         }
 
         // else this is the main test
-        String msg = "Test Succeeded";
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-           "-XX:OnOutOfMemoryError=echo " + msg,
+        String msg1 = "Test1 Succeeded";
+        String msg2 = "Test2 Succeeded";
+        ProcessBuilder pb_single = ProcessTools.createJavaProcessBuilder(
+           "-XX:OnOutOfMemoryError=echo " + msg1,
            TestOnOutOfMemoryError.class.getName(),
            "throwOOME");
 
-        OutputAnalyzer output = new OutputAnalyzer(pb.start());
+        ProcessBuilder pb_multiple = ProcessTools.createJavaProcessBuilder(
+           "-XX:OnOutOfMemoryError=echo " + msg1,
+           "-XX:OnOutOfMemoryError=echo " + msg2,
+           TestOnOutOfMemoryError.class.getName(),
+           "throwOOME");
+
+        OutputAnalyzer output_single = new OutputAnalyzer(pb_single.start());
+
+        OutputAnalyzer output_multiple = new OutputAnalyzer(pb_multiple.start());
 
         /* Actual output should look like this:
            #
@@ -64,8 +73,13 @@
            So we don't want to match on the "# Executing ..." line, and they
            both get written to stdout.
         */
-        output.shouldContain("Requested array size exceeds VM limit");
-        output.stdoutShouldMatch("^" + msg); // match start of line only
+        output_single.shouldContain("Requested array size exceeds VM limit");
+        output_single.stdoutShouldMatch("^" + msg1); // match start of line only
+
+        output_multiple.shouldContain("Requested array size exceeds VM limit");
+        output_multiple.stdoutShouldMatch("^" + msg1); // match start of line only
+        output_multiple.stdoutShouldMatch("^" + msg2); // match start of line only
+
         System.out.println("PASSED");
     }
 }