OpenJDK / portola / portola
changeset 30673:d0dc762e56a5
Merge
author | ykantser |
---|---|
date | Fri, 08 May 2015 11:15:52 +0200 |
parents | e15162aff527 304ed79789c7 |
children | 24f77e5a7938 |
files | |
diffstat | 1 files changed, 22 insertions(+), 122 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/test/com/sun/jdi/NoLaunchOptionTest.java Fri May 08 09:40:46 2015 +0200 +++ b/jdk/test/com/sun/jdi/NoLaunchOptionTest.java Fri May 08 11:15:52 2015 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2015, 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 @@ -21,133 +21,33 @@ * questions. */ +import static jdk.testlibrary.Asserts.assertFalse; +import jdk.testlibrary.OutputAnalyzer; +import jdk.testlibrary.ProcessTools; + /* - * @test NoLaunchOptionTest.java - * @bug 4554734 4724714 - * @summary Test for -Xrunjdwp:[onthrow,onuncaught] suboptions require launch suboption - * @author Tim Bell - * - * @run compile -g NoLaunchOptionTest.java - * @build VMConnection - * @run driver NoLaunchOptionTest + * @test NoLaunchOptionTest.java + * @bug 4554734 4724714 + * @summary Test for -Xrunjdwp:[onthrow,onuncaught] suboptions require launch suboption + * @library /lib/testlibrary + * @run compile -g NoLaunchOptionTest.java + * @build jdk.testlibrary.* 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"); } }