Merge
authorhseigel
Sat, 09 May 2015 07:35:16 -0400
changeset 30674 24f77e5a7938
parent 30673 d0dc762e56a5 (diff)
parent 30669 1e0b67b29f14 (current diff)
child 30675 94206e28ec64
Merge
jdk/test/com/sun/jdi/NoLaunchOptionTest.java
--- a/jdk/make/lib/Lib-jdk.attach.gmk	Fri May 08 13:26:07 2015 -0400
+++ b/jdk/make/lib/Lib-jdk.attach.gmk	Sat May 09 07:35:16 2015 -0400
@@ -27,6 +27,12 @@
 
 ################################################################################
 
+ifeq ($(OPENJDK_TARGET_OS), windows)
+  # In (at least) VS2013 and later, -DPSAPI_VERSION=1 is needed to generate
+  # a binary that is compatible with windows versions older than 7/2008R2.
+  # See MSDN documentation for GetProcessMemoryInfo for more information.
+  LIBATTACH_CFLAGS := -DPSAPI_VERSION=1
+endif
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBATTACH, \
     LIBRARY := attach, \
@@ -35,7 +41,7 @@
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/jdk.attach \
-        $(LIBJAVA_HEADER_FLAGS), \
+        $(LIBJAVA_HEADER_FLAGS) $(LIBATTACH_CFLAGS), \
     CFLAGS_windows := /Gy, \
     MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \
     VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Fri May 08 13:26:07 2015 -0400
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Sat May 09 07:35:16 2015 -0400
@@ -241,7 +241,7 @@
      * (using the zero-arg constructor) at the first invocation of this method.
      * The list returned by the first invocation of this method is the list
      * of providers. Subsequent invocations of this method return a list of the same
-     * providers. The list is unmodifable.
+     * providers. The list is unmodifiable.
      *
      * @return  A list of the installed attach providers.
      */
@@ -264,8 +264,8 @@
                             ThreadDeath td = (ThreadDeath)t;
                             throw td;
                         }
-                        // Ignore errors and exceptions
-                        System.err.println(t);
+                        // Log errors and exceptions since we cannot return them
+                        t.printStackTrace();
                     }
                 }
             }
--- a/jdk/test/ProblemList.txt	Fri May 08 13:26:07 2015 -0400
+++ b/jdk/test/ProblemList.txt	Sat May 09 07:35:16 2015 -0400
@@ -385,4 +385,10 @@
 # 8064572 8060736 8062938
 sun/jvmstat/monitor/MonitoredVm/CR6672135.java			generic-all
 
+# 8079273
+demo/jvmti/hprof/CpuOldTest.java            generic-all
+demo/jvmti/hprof/CpuTimesTest.java          generic-all
+demo/jvmti/hprof/OptionsTest.java           generic-all
+demo/jvmti/hprof/StackMapTableTest.java     generic-all
+
 ############################################################################
--- a/jdk/test/com/sun/jdi/NoLaunchOptionTest.java	Fri May 08 13:26:07 2015 -0400
+++ b/jdk/test/com/sun/jdi/NoLaunchOptionTest.java	Sat May 09 07:35:16 2015 -0400
@@ -21,6 +21,10 @@
  * questions.
  */
 
+import static jdk.testlibrary.Asserts.assertFalse;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+
 /*
  *   @test       NoLaunchOptionTest.java
  *   @bug        4554734 4724714
@@ -32,123 +36,20 @@
  *  @build VMConnection
  *  @run driver NoLaunchOptionTest
  */
-
-import java.net.ServerSocket;
-
 public class NoLaunchOptionTest extends Object {
-    private Process subprocess;
-    private int subprocessStatus;
-    private static final String CR = System.getProperty("line.separator");
-    private static final int BUFFERSIZE = 4096;
-    public static final int RETSTAT = 0;
-    public static final int STDOUT = 1;
-    public static final int STDERR = 2;
-
-    /**
-     * Run an arbitrary command and return the results to caller.
-     *
-     * @param an array of String containing the command
-     *        to run and any flags or parameters to the command.
-     *
-     * @return completion status, stderr and stdout as array of String
-     *  Look for:
-     *    return status in result[NoLaunchOptionTest.RETSTAT]
-     *    standard out in result[NoLaunchOptionTest.STDOUT]
-     *    standard err in result[NoLaunchOptionTest.STDERR]
-     *
-     */
-    public String[] run (String[] cmdStrings) {
-        StringBuffer stdoutBuffer = new StringBuffer();
-        StringBuffer stderrBuffer = new StringBuffer();
-
-        System.out.print(CR + "runCommand method about to execute: ");
-        for (int iNdx = 0; iNdx < cmdStrings.length; iNdx++) {
-            System.out.print(" ");
-            System.out.print(cmdStrings[iNdx]);
-        }
-        System.out.println(CR);
-        try {
-            Process process = Runtime.getRuntime().exec(cmdStrings);
-            /*
-             * Gather up the output of the subprocess using non-blocking
-             * reads so we can get both the subprocess stdout and the
-             * subprocess stderr without overfilling any buffers.
-             */
-            java.io.BufferedInputStream is =
-                new java.io.BufferedInputStream(process.getInputStream());
-            int isLen = 0;
-            byte[] isBuf = new byte[BUFFERSIZE];
-
-            java.io.BufferedInputStream es =
-                new java.io.BufferedInputStream(process.getErrorStream());
-            int esLen = 0;
-            byte[] esBuf = new byte[BUFFERSIZE];
-
-            do {
-                isLen = is.read(isBuf);
-                if (isLen > 0) {
-                    stdoutBuffer.append(
-                                        new String(isBuf, 0, isLen));
-                }
-                esLen = es.read(esBuf);
-                if (esLen > 0) {
-                    stderrBuffer.append(
-                                        new String(esBuf, 0, esLen));
-                }
-            } while ((isLen > -1) || (esLen > -1));
-            try {
-                process.waitFor();
-                subprocessStatus = process.exitValue();
-                process = null;
-            } catch(java.lang.InterruptedException e) {
-                System.err.println("InterruptedException: " + e);
-            }
-
-        } catch(java.io.IOException ex) {
-            System.err.println("IO error: " + ex);
-        }
-        String[] result =
-            new String[] {
-                Integer.toString(subprocessStatus),
-                stdoutBuffer.toString(),
-                stderrBuffer.toString()
-        };
-
-        System.out.println(CR + "--- Return code was: " +
-                           CR + result[RETSTAT]);
-        System.out.println(CR + "--- Return stdout was: " +
-                           CR + result[STDOUT]);
-        System.out.println(CR + "--- Return stderr was: " +
-                           CR + result[STDERR]);
-
-        return result;
-    }
 
     public static void main(String[] args) throws Exception {
-        // find a free port
-        ServerSocket ss = new ServerSocket(0);
-        int port = ss.getLocalPort();
-        ss.close();
-        String address = String.valueOf(port);
+        String[] cmd = VMConnection.insertDebuggeeVMOptions(new String[] {
+                "-agentlib:jdwp=transport=dt_socket,address=5555," +
+                "onthrow=java.lang.ClassNotFoundException,suspend=n",
+                "NotAClass" });
 
-        String javaExe = System.getProperty("java.home") +
-            java.io.File.separator + "bin" +
-            java.io.File.separator + "java";
-        String targetClass = "NotAClass";
-        String cmds [] = {javaExe,
-                          "-agentlib:jdwp=transport=dt_socket,address=" +
-                          address + "," +
-                          "onthrow=java.lang.ClassNotFoundException,suspend=n",
-                          targetClass};
-        NoLaunchOptionTest myTest = new NoLaunchOptionTest();
-        String results [] = myTest.run(VMConnection.insertDebuggeeVMOptions(cmds));
-        if ((results[RETSTAT].equals("1")) &&
-            (results[STDERR].contains("ERROR:"))) {
-            System.out.println("Test passed: status = 1 with warning messages " +
-                               "is expected and normal for this test");
-        } else {
-            throw new Exception("Test failed: unspecified test failure");
-        }
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmd);
+        OutputAnalyzer output = ProcessTools.executeProcess(pb);
+        System.out.println(output.getOutput());
+
+        assertFalse(output.getExitValue() == 0, "Exit code should not be 0");
+        output.shouldContain("ERROR: JDWP Specify launch=<command line> when using onthrow or onuncaught suboption");
     }
 
 }