8223463: Replace wildcard address with loopback or local host in tests - part 2
Removes (or documents) some usages of the wildcard address in intermittently failing tests. Reviewed-by: alanb
This commit is contained in:
parent
c797bc008e
commit
1188188ee6
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2019, 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
|
||||
@ -32,6 +32,7 @@ import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.channels.ServerSocketChannel;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Supplier;
|
||||
@ -41,8 +42,8 @@ public class AcceptInheritHandle {
|
||||
enum ServerSocketProducer {
|
||||
JAVA_NET(() -> {
|
||||
try {
|
||||
return new ServerSocket(); }
|
||||
catch(IOException x) {
|
||||
return new ServerSocket();
|
||||
} catch(IOException x) {
|
||||
throw new UncheckedIOException(x);
|
||||
}
|
||||
}),
|
||||
@ -86,13 +87,13 @@ public class AcceptInheritHandle {
|
||||
test(ServerSocketProducer.NIO_CHANNELS);
|
||||
}
|
||||
|
||||
static void test(ServerSocketProducer ssp, String... sysProps) throws Exception {
|
||||
static void test(ServerSocketProducer ssp, String... jvmArgs) throws Exception {
|
||||
System.out.println("\nStarting test for " + ssp.name());
|
||||
|
||||
List<String> commands = new ArrayList<>();
|
||||
commands.add(JAVA);
|
||||
for (String prop : sysProps)
|
||||
commands.add(prop);
|
||||
for (String arg : jvmArgs)
|
||||
commands.add(arg);
|
||||
commands.add("-cp");
|
||||
commands.add(CLASSPATH);
|
||||
commands.add("AcceptInheritHandle");
|
||||
@ -107,7 +108,14 @@ public class AcceptInheritHandle {
|
||||
int port = dis.readInt();
|
||||
System.out.println("Server process listening on " + port + ", connecting...");
|
||||
|
||||
Socket socket = new Socket("localhost", port);
|
||||
String address;
|
||||
if (Arrays.stream(jvmArgs).anyMatch("-Djava.net.preferIPv4Stack=true"::equals)) {
|
||||
address = "127.0.0.1";
|
||||
} else {
|
||||
InetAddress loopback = InetAddress.getLoopbackAddress();
|
||||
address = loopback.getHostAddress();
|
||||
}
|
||||
Socket socket = new Socket(address, port);
|
||||
String s = dis.readUTF();
|
||||
System.out.println("Server process said " + s);
|
||||
|
||||
@ -128,7 +136,8 @@ public class AcceptInheritHandle {
|
||||
|
||||
static void server(ServerSocketProducer producer) throws Exception {
|
||||
try (ServerSocket ss = producer.supplier().get()) {
|
||||
ss.bind(new InetSocketAddress(0));
|
||||
InetAddress loopback = InetAddress.getLoopbackAddress();
|
||||
ss.bind(new InetSocketAddress(loopback, 0));
|
||||
int port = ss.getLocalPort();
|
||||
DataOutputStream dos = new DataOutputStream(System.out);
|
||||
dos.writeInt(port);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2019, 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
|
||||
@ -60,7 +60,9 @@ public class Responses {
|
||||
|
||||
public HttpServer() {
|
||||
try {
|
||||
ss = new ServerSocket(0);
|
||||
InetAddress loopback = InetAddress.getLoopbackAddress();
|
||||
ss = new ServerSocket();
|
||||
ss.bind(new InetSocketAddress(loopback, 0));
|
||||
} catch (IOException ioe) {
|
||||
throw new Error("Unable to create ServerSocket: " + ioe);
|
||||
}
|
||||
@ -70,6 +72,16 @@ public class Responses {
|
||||
return ss.getLocalPort();
|
||||
}
|
||||
|
||||
public String authority() {
|
||||
InetAddress address = ss.getInetAddress();
|
||||
String hostaddr = address.isAnyLocalAddress()
|
||||
? "localhost" : address.getHostAddress();
|
||||
if (hostaddr.indexOf(':') > -1) {
|
||||
hostaddr = "[" + hostaddr + "]";
|
||||
}
|
||||
return hostaddr + ":" + port();
|
||||
}
|
||||
|
||||
public void shutdown() throws IOException {
|
||||
ss.close();
|
||||
}
|
||||
@ -116,7 +128,8 @@ public class Responses {
|
||||
HttpServer svr = new HttpServer();
|
||||
(new Thread(svr)).start();
|
||||
|
||||
int port = svr.port();
|
||||
String authority = svr.authority();
|
||||
System.out.println("Server listening on: " + authority);
|
||||
|
||||
/*
|
||||
* Iterate through each test case and check that getResponseCode
|
||||
@ -129,7 +142,7 @@ public class Responses {
|
||||
System.out.println("******************");
|
||||
System.out.println("Test with response: >" + tests[i][0] + "<");
|
||||
|
||||
URL url = new URL("http://localhost:" + port + "/" + i);
|
||||
URL url = new URL("http://" + authority + "/" + i);
|
||||
HttpURLConnection http = (HttpURLConnection)url.openConnection();
|
||||
|
||||
try {
|
||||
|
@ -25,7 +25,9 @@
|
||||
* @test
|
||||
* @bug 4868820
|
||||
* @key intermittent
|
||||
* @summary IPv6 support for Windows XP and 2003 server
|
||||
* @summary IPv6 support for Windows XP and 2003 server. This test requires
|
||||
* binding to the wildcard address, and as such is susceptible
|
||||
* of intermittent failures caused by port reuse policy.
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.NetworkConfiguration
|
||||
* jdk.test.lib.Platform
|
||||
@ -216,4 +218,3 @@ public class TcpTest extends Tests {
|
||||
System.out.println ("Test4: OK");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2019, 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
|
||||
@ -36,8 +36,8 @@ public class FtpURL {
|
||||
*/
|
||||
|
||||
private class FtpServer extends Thread {
|
||||
private ServerSocket server;
|
||||
private int port;
|
||||
private final ServerSocket server;
|
||||
private final int port;
|
||||
private boolean done = false;
|
||||
private boolean portEnabled = true;
|
||||
private boolean pasvEnabled = true;
|
||||
@ -253,8 +253,12 @@ public class FtpURL {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
if (pasv == null)
|
||||
pasv = new ServerSocket(0);
|
||||
if (pasv == null) {
|
||||
// Not sure how to support PASV mode over
|
||||
// IPv6
|
||||
pasv = new ServerSocket();
|
||||
pasv.bind(new InetSocketAddress("127.0.0.1", 0));
|
||||
}
|
||||
int port = pasv.getLocalPort();
|
||||
out.println("227 Entering Passive Mode (127,0,0,1," +
|
||||
(port >> 8) + "," + (port & 0xff) +")");
|
||||
@ -369,21 +373,39 @@ public class FtpURL {
|
||||
}
|
||||
|
||||
public FtpServer(int port) {
|
||||
this(InetAddress.getLoopbackAddress(), port);
|
||||
}
|
||||
|
||||
public FtpServer(InetAddress address, int port) {
|
||||
this.port = port;
|
||||
try {
|
||||
server = new ServerSocket(port);
|
||||
if (address == null) {
|
||||
server = new ServerSocket(port);
|
||||
} else {
|
||||
server = new ServerSocket();
|
||||
server.bind(new InetSocketAddress(address, port));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public FtpServer() {
|
||||
this(21);
|
||||
this(null, 21);
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
if (server != null)
|
||||
return server.getLocalPort();
|
||||
return 0;
|
||||
return server.getLocalPort();
|
||||
}
|
||||
|
||||
public String getAuthority() {
|
||||
InetAddress address = server.getInetAddress();
|
||||
String hostaddr = address.isAnyLocalAddress()
|
||||
? "localhost" : address.getHostAddress();
|
||||
if (hostaddr.indexOf(':') > -1) {
|
||||
hostaddr = "[" + hostaddr +"]";
|
||||
}
|
||||
return hostaddr + ":" + getPort();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -449,15 +471,17 @@ public class FtpURL {
|
||||
}
|
||||
|
||||
public FtpURL() throws Exception {
|
||||
FtpServer server = new FtpServer(0);
|
||||
FtpServer server = new FtpServer(InetAddress.getLoopbackAddress(), 0);
|
||||
BufferedReader in = null;
|
||||
try {
|
||||
server.start();
|
||||
int port = server.getPort();
|
||||
String authority = server.getAuthority();
|
||||
System.out.println("FTP server waiting for connections at: " + authority);
|
||||
assert authority != null;
|
||||
|
||||
// Now let's check the URL handler
|
||||
|
||||
URL url = new URL("ftp://user:password@localhost:" + port + "/%2Fetc/motd;type=a");
|
||||
URL url = new URL("ftp://user:password@" + authority + "/%2Fetc/motd;type=a");
|
||||
URLConnection con = url.openConnection();
|
||||
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
String s;
|
||||
@ -479,11 +503,10 @@ public class FtpURL {
|
||||
// We're done!
|
||||
|
||||
// Second URL test
|
||||
port = server.getPort();
|
||||
|
||||
// Now let's check the URL handler
|
||||
|
||||
url = new URL("ftp://user2@localhost:" + port + "/%2Fusr/bin;type=d");
|
||||
url = new URL("ftp://user2@" + authority + "/%2Fusr/bin;type=d");
|
||||
con = url.openConnection();
|
||||
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
do {
|
||||
|
Loading…
x
Reference in New Issue
Block a user