< prev index next >

test/java/net/HttpURLConnection/SetAuthenticator/HTTPTestServer.java

Print this page

        

*** 53,62 **** --- 53,63 ---- import java.util.Arrays; import java.util.Base64; import java.util.List; import java.util.Objects; import java.util.Random; + import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import javax.net.ssl.SSLContext; import sun.net.www.HeaderParser; /**
*** 143,156 **** default: throw new InternalError("Unknown server type: " + authType); } } ! static HttpServer createHttpServer(HttpProtocolType protocol) throws IOException { switch (protocol) { case HTTP: return HttpServer.create(); ! case HTTPS: return configure(HttpsServer.create()); default: throw new InternalError("Unsupported protocol " + protocol); } } static HttpsServer configure(HttpsServer server) throws IOException { --- 144,195 ---- default: throw new InternalError("Unknown server type: " + authType); } } ! /** ! * The HttpServerFactory ensure that the local port used by an HttpServer ! * previously created by the current test/VM will not get reused by ! * a subsequent test in the same VM. ! */ ! private static final class HttpServerFactory { ! private static final int MAX = 10; ! private static final CopyOnWriteArrayList<String> addresses = ! new CopyOnWriteArrayList<>(); ! private static HttpServer newHttpServer(HttpProtocolType protocol) ! throws IOException { switch (protocol) { case HTTP: return HttpServer.create(); ! case HTTPS: return HttpsServer.create(); ! default: throw new InternalError("Unsupported protocol " + protocol); ! } ! } ! static <T extends HttpServer> T create(HttpProtocolType protocol) ! throws IOException { ! final int max = addresses.size() + MAX; ! for (int i = 1; i <= max; i++) { ! HttpServer server = newHttpServer(protocol); ! server.bind(new InetSocketAddress("127.0.0.1", 0), 0); ! InetSocketAddress address = server.getAddress(); ! String key = address.toString(); ! if (addresses.addIfAbsent(key)) { ! System.out.println("Server bound to: " + key ! + " after " + i + " attempt(s)"); ! return (T) server; ! } ! System.out.println("warning: address " + key ! + " already used. Retrying bind."); ! } ! throw new IOException("Couldn't bind servers after " + max + " attempts: " ! + "addresses used before: " + addresses); ! } ! } ! ! static HttpServer createHttpServer(HttpProtocolType protocol) throws IOException { ! switch (protocol) { ! case HTTP: return HttpServerFactory.create(protocol); ! case HTTPS: return configure(HttpServerFactory.create(protocol)); default: throw new InternalError("Unsupported protocol " + protocol); } } static HttpsServer configure(HttpsServer server) throws IOException {
*** 191,201 **** HttpServer impl = createHttpServer(protocol); final HTTPTestServer server = new HTTPTestServer(impl, null, delegate); final HttpHandler hh = server.createHandler(schemeType, auth, authType); HttpContext ctxt = impl.createContext(path, hh); server.configureAuthentication(ctxt, schemeType, auth, authType); - impl.bind(new InetSocketAddress("127.0.0.1", 0), 0); impl.start(); return server; } public static HTTPTestServer createProxy(HttpProtocolType protocol, --- 230,239 ----
*** 213,224 **** ? new HttpsProxyTunnel(impl, null, delegate) : new HTTPTestServer(impl, null, delegate); final HttpHandler hh = server.createHandler(schemeType, auth, authType); HttpContext ctxt = impl.createContext(path, hh); server.configureAuthentication(ctxt, schemeType, auth, authType); - - impl.bind(new InetSocketAddress("127.0.0.1", 0), 0); impl.start(); return server; } --- 251,260 ----
*** 251,261 **** InetSocketAddress redirectAddr = redirectTarget.getAddress(); URL locationURL = url(targetProtocol, redirectAddr, "/"); final HttpHandler hh = redirectingServer.create300Handler(locationURL, HttpAuthType.SERVER, code300); impl.createContext("/", hh); - impl.bind(new InetSocketAddress("127.0.0.1", 0), 0); impl.start(); return redirectingServer; } public InetSocketAddress getAddress() { --- 287,296 ----
< prev index next >