< prev index next >

test/jdk/com/sun/jdi/BasicJDWPConnectionTest.java

Print this page

        

*** 27,47 **** * @library /test/lib * @run driver BasicJDWPConnectionTest */ import java.io.IOException; - import java.io.BufferedReader; - import java.io.InputStreamReader; import java.net.Socket; import java.net.SocketException; import jdk.test.lib.apps.LingeredApp; - import jdk.test.lib.Utils; import java.util.ArrayList; ! import java.util.List; public class BasicJDWPConnectionTest { public static int handshake(int port) throws IOException { --- 27,45 ---- * @library /test/lib * @run driver BasicJDWPConnectionTest */ import java.io.IOException; import java.net.Socket; import java.net.SocketException; import jdk.test.lib.apps.LingeredApp; import java.util.ArrayList; ! import java.util.regex.Matcher; ! import java.util.regex.Pattern; public class BasicJDWPConnectionTest { public static int handshake(int port) throws IOException {
*** 62,105 **** } } return res; } ! public static ArrayList<String> prepareCmd(int port, String allowOpt) { ! String address = "*:" + String.valueOf(port); ArrayList<String> cmd = new ArrayList<>(); String jdwpArgs = "-agentlib:jdwp=transport=dt_socket,server=y," + ! "suspend=n,address=" + address + allowOpt; cmd.add(jdwpArgs); return cmd; } public static void positiveTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! int port = Utils.getFreePort(); ! ArrayList<String> cmd = prepareCmd(port, allowOpt); LingeredApp a = LingeredApp.startApp(cmd); ! int res = handshake(port); a.stopApp(); if (res < 0) { throw new RuntimeException(testName + " FAILED"); } System.err.println(testName + " PASSED"); } public static void negativeTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! int port = Utils.getFreePort(); ! ArrayList<String> cmd = prepareCmd(port, allowOpt); LingeredApp a = LingeredApp.startApp(cmd); ! int res = handshake(port); a.stopApp(); if (res > 0) { System.err.println(testName + ": res=" + res); throw new RuntimeException(testName + " FAILED"); } System.err.println(testName + ": returned a negative code as expected: " + res); --- 60,118 ---- } } return res; } ! public static ArrayList<String> prepareCmd(String allowOpt) { ArrayList<String> cmd = new ArrayList<>(); String jdwpArgs = "-agentlib:jdwp=transport=dt_socket,server=y," + ! "suspend=n,address=*:0" + allowOpt; cmd.add(jdwpArgs); return cmd; } + private static Pattern listenRegexp = Pattern.compile("Listening for transport \\b(.+)\\b at address: \\b(\\d+)\\b"); + private static int detectPort(String s) { + Matcher m = listenRegexp.matcher(s); + if (!m.find()) { + throw new RuntimeException("Could not detect port from '" + s + "'"); + } + // m.group(1) is transport, m.group(2) is port + return Integer.parseInt(m.group(2)); + } + public static void positiveTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! ArrayList<String> cmd = prepareCmd(allowOpt); LingeredApp a = LingeredApp.startApp(cmd); ! int res; ! try { ! res = handshake(detectPort(a.getProcessStdout())); ! } finally { a.stopApp(); + } if (res < 0) { throw new RuntimeException(testName + " FAILED"); } System.err.println(testName + " PASSED"); } public static void negativeTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! ArrayList<String> cmd = prepareCmd(allowOpt); LingeredApp a = LingeredApp.startApp(cmd); ! int res; ! try { ! res = handshake(detectPort(a.getProcessStdout())); ! } finally { a.stopApp(); + } if (res > 0) { System.err.println(testName + ": res=" + res); throw new RuntimeException(testName + " FAILED"); } System.err.println(testName + ": returned a negative code as expected: " + res);
*** 107,121 **** } public static void badAllowOptionTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! int port = Utils.getFreePort(); ! ArrayList<String> cmd = prepareCmd(port, allowOpt); try { LingeredApp a = LingeredApp.startApp(cmd); } catch (IOException ex) { System.err.println(testName + ": caught expected IOException"); System.err.println(testName + " PASSED"); return; } --- 120,142 ---- } public static void badAllowOptionTest(String testName, String allowOpt) throws InterruptedException, IOException { System.err.println("\nStarting " + testName); ! ArrayList<String> cmd = prepareCmd(allowOpt); try { LingeredApp a = LingeredApp.startApp(cmd); + + // startApp is expected to fail, but if not, terminate the app + try { + a.stopApp(); + } catch (IOException e) { + // print and let the test fail + System.err.println("LingeredApp.stopApp failed"); + e.printStackTrace(); + } } catch (IOException ex) { System.err.println(testName + ": caught expected IOException"); System.err.println(testName + " PASSED"); return; }
*** 172,199 **** // Bad mix of allow address value with '*' String allowOpt = ",allow=allow=127.0.0.1+*"; badAllowOptionTest("ExplicitMultiDefault2Test", allowOpt); } ! public static void main(String[] args) { ! try { DefaultTest(); ExplicitDefaultTest(); AllowTest(); MultiAllowTest(); DenyTest(); MultiDenyTest(); EmptyAllowOptionTest(); ExplicitMultiDefault1Test(); ExplicitMultiDefault2Test(); System.err.println("\nTest PASSED"); - } catch (InterruptedException ex) { - System.err.println("\nTest ERROR, getFreePort"); - ex.printStackTrace(); - System.exit(3); - } catch (IOException ex) { - System.err.println("\nTest ERROR"); - ex.printStackTrace(); - System.exit(3); - } } } --- 193,210 ---- // Bad mix of allow address value with '*' String allowOpt = ",allow=allow=127.0.0.1+*"; badAllowOptionTest("ExplicitMultiDefault2Test", allowOpt); } ! public static void main(String[] args) throws Exception { DefaultTest(); ExplicitDefaultTest(); AllowTest(); MultiAllowTest(); DenyTest(); MultiDenyTest(); EmptyAllowOptionTest(); ExplicitMultiDefault1Test(); ExplicitMultiDefault2Test(); System.err.println("\nTest PASSED"); } }
< prev index next >