< 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 >