--- old/test/java/net/Authenticator/B4678055.java 2012-09-05 15:21:01.494224567 -0400 +++ new/test/java/net/Authenticator/B4678055.java 2012-09-05 15:21:01.194224572 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4678055 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4678055 * @summary Basic Authentication fails with multiple realms */ @@ -119,13 +119,13 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new B4678055(), 1, 10, 0); + server = new TestHttpServer (new B4678055(), 1, 10, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); client ("http://localhost:"+server.getLocalPort()+"/d1/foo.html"); client ("http://localhost:"+server.getLocalPort()+"/d2/foo.html"); --- old/test/java/net/Authenticator/B4722333.java 2012-09-05 15:21:02.230224551 -0400 +++ new/test/java/net/Authenticator/B4722333.java 2012-09-05 15:21:01.998224556 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4722333 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4722333 * @summary JRE Proxy Authentication Not Working with ISA2000 */ @@ -114,13 +114,13 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new B4722333(), 1, 10, 0); + server = new TestHttpServer (new B4722333(), 1, 10, 0); System.out.println ("Server started: listening on port: " + server.getLocalPort()); client ("http://localhost:"+server.getLocalPort()+"/d1/d2/d3/foo.html"); client ("http://localhost:"+server.getLocalPort()+"/ASD/d3/x.html"); --- old/test/java/net/Authenticator/B4759514.java 2012-09-05 15:21:02.986224536 -0400 +++ new/test/java/net/Authenticator/B4759514.java 2012-09-05 15:21:02.742224539 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4759514 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4759514 * @summary Digest Authentication is erroniously quoting the nc value, contrary to RFC 2617 */ @@ -91,13 +91,13 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new B4759514(), 1, 10, 0); + server = new TestHttpServer (new B4759514(), 1, 10, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); client ("http://localhost:"+server.getLocalPort()+"/d1/foo.html"); } catch (Exception e) { --- old/test/java/net/Authenticator/B4769350.java 2012-09-05 15:21:03.714224521 -0400 +++ new/test/java/net/Authenticator/B4769350.java 2012-09-05 15:21:03.490224524 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4769350 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction AbstractCallback + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction AbstractCallback * @run main/othervm B4769350 server * @run main/othervm B4769350 proxy * @summary proxy authentication username and password caching only works in serial case @@ -142,10 +142,10 @@ switch (count) { case 0: errorReply (req, "Basic realm=\"realm1\""); - HttpServer.rendezvous ("one", 2); + TestHttpServer.rendezvous ("one", 2); break; case 1: - HttpServer.waitForCondition ("cond2"); + TestHttpServer.waitForCondition ("cond2"); okReply (req); break; default: @@ -158,11 +158,11 @@ switch (count) { case 0: errorReply (req, "Basic realm=\"realm2\""); - HttpServer.rendezvous ("one", 2); - HttpServer.setCondition ("cond1"); + TestHttpServer.rendezvous ("one", 2); + TestHttpServer.setCondition ("cond1"); break; case 1: - HttpServer.waitForCondition ("cond2"); + TestHttpServer.waitForCondition ("cond2"); okReply (req); break; default: @@ -174,7 +174,7 @@ switch (count) { case 0: errorReply (req, "Basic realm=\"realm1\""); - HttpServer.rendezvous ("two", 2); + TestHttpServer.rendezvous ("two", 2); break; case 1: okReply (req); @@ -188,8 +188,8 @@ switch (count) { case 0: errorReply (req, "Basic realm=\"realm2\""); - HttpServer.rendezvous ("two", 2); - HttpServer.setCondition ("cond2"); + TestHttpServer.rendezvous ("two", 2); + TestHttpServer.setCondition ("cond2"); break; case 1: okReply (req); @@ -207,7 +207,7 @@ void doT2a (HttpTransaction req, int count) throws IOException { /* This will be called several times */ if (count == 1) { - HttpServer.setCondition ("T2cond1"); + TestHttpServer.setCondition ("T2cond1"); } errorReply (req, "Basic realm=\"realm3\""); } @@ -233,7 +233,7 @@ switch (count) { case 0: proxyReply (req, "Basic realm=\"proxy\""); - HttpServer.setCondition ("T3cond1"); + TestHttpServer.setCondition ("T3cond1"); break; case 1: errorReply (req, "Basic realm=\"realm4\""); @@ -260,7 +260,7 @@ } }; - static HttpServer server; + static TestHttpServer server; static MyAuthenticator auth = new MyAuthenticator (); static int redirects = 4; @@ -276,7 +276,7 @@ c4 = new Client (authority, "/test/realm2/t1d", false); c1.start(); c2.start(); - HttpServer.waitForCondition ("cond1"); + TestHttpServer.waitForCondition ("cond1"); c3.start(); c4.start(); c1.join(); c2.join(); c3.join(); c4.join(); @@ -294,7 +294,7 @@ c5 = new Client (authority, "/test/realm3/t2a", true); c6 = new Client (authority, "/test/realm3/t2b", false); c5.start (); - HttpServer.waitForCondition ("T2cond1"); + TestHttpServer.waitForCondition ("T2cond1"); c6.start (); c5.join(); c6.join(); @@ -313,7 +313,7 @@ c8 = new Client (authority, "/test/realm4/t3b", false); c9 = new Client (authority, "/test/realm4/t3c", false); c7.start (); - HttpServer.waitForCondition ("T3cond1"); + TestHttpServer.waitForCondition ("T3cond1"); c8.start (); c9.start (); c7.join(); c8.join(); c9.join(); @@ -333,7 +333,7 @@ Authenticator.setDefault (auth); boolean proxy = args[0].equals ("proxy"); try { - server = new HttpServer (new CallBack(), 10, 1, 0); + server = new TestHttpServer (new CallBack(), 10, 1, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); if (proxy) { System.setProperty ("http.proxyHost", "localhost"); --- old/test/java/net/Authenticator/B4921848.java 2012-09-05 15:21:04.458224506 -0400 +++ new/test/java/net/Authenticator/B4921848.java 2012-09-05 15:21:04.230224509 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4921848 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm -Dhttp.auth.preference=basic B4921848 * @summary Allow user control over authentication schemes */ @@ -82,13 +82,13 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new B4921848(), 1, 10, 0); + server = new TestHttpServer (new B4921848(), 1, 10, 0); System.out.println ("Server started: listening on port: " + server.getLocalPort()); client ("http://localhost:"+server.getLocalPort()+"/d1/d2/d3/foo.html"); } catch (Exception e) { --- old/test/java/net/Authenticator/B4933582.java 2012-09-05 15:21:05.182224489 -0400 +++ new/test/java/net/Authenticator/B4933582.java 2012-09-05 15:21:04.958224494 -0400 @@ -119,7 +119,7 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { firstTime = args[0].equals ("first"); @@ -128,11 +128,11 @@ CacheImpl cache; try { if (firstTime) { - server = new HttpServer (new B4933582(), 1, 10, 0); + server = new TestHttpServer (new B4933582(), 1, 10, 0); cache = new CacheImpl (server.getLocalPort()); } else { cache = new CacheImpl (); - server = new HttpServer(new B4933582(), 1, 10, cache.getPort()); + server = new TestHttpServer(new B4933582(), 1, 10, cache.getPort()); } AuthCacheValue.setAuthCache (cache); System.out.println ("Server: listening on port: " + server.getLocalPort()); --- old/test/java/net/Authenticator/B4962064.java 2012-09-05 15:21:05.910224476 -0400 +++ new/test/java/net/Authenticator/B4962064.java 2012-09-05 15:21:05.674224479 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4962064 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm B4962064 * @summary Extend Authenticator to provide access to request URI and server/proxy */ @@ -85,12 +85,12 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; static URL urlsave; public static void main (String[] args) throws Exception { try { - server = new HttpServer (new B4962064(), 1, 10, 0); + server = new TestHttpServer (new B4962064(), 1, 10, 0); int port = server.getLocalPort(); System.setProperty ("http.proxyHost", "localhost"); System.setProperty ("http.proxyPort", Integer.toString (port)); --- old/test/java/net/CookieHandler/CookieManagerTest.java 2012-09-05 15:21:06.630224461 -0400 +++ new/test/java/net/CookieHandler/CookieManagerTest.java 2012-09-05 15:21:06.398224464 -0400 @@ -26,7 +26,7 @@ * @summary Unit test for java.net.CookieManager * @bug 6244040 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm -ea CookieManagerTest * @author Edward Wang */ @@ -38,7 +38,7 @@ public class CookieManagerTest { static CookieHttpTransaction httpTrans; - static HttpServer server; + static TestHttpServer server; public static void main(String[] args) throws Exception { startHttpServer(); @@ -52,7 +52,7 @@ public static void startHttpServer() { try { httpTrans = new CookieHttpTransaction(); - server = new HttpServer(httpTrans, 1, 1, 0); + server = new TestHttpServer(httpTrans, 1, 1, 0); } catch (IOException e) { e.printStackTrace(); } --- old/test/java/net/ProxySelector/LoopbackAddresses.java 2012-09-05 15:21:07.350224446 -0400 +++ new/test/java/net/ProxySelector/LoopbackAddresses.java 2012-09-05 15:21:07.130224449 -0400 @@ -25,7 +25,7 @@ * @bug 4924226 * @summary PIT: Can no launch jnlp application via 127.0.0.1 address on the web server * @library ../../../sun/net/www/httptest/ - * @build ClosedChannelList HttpServer HttpTransaction HttpCallback + * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile LoopbackAddresses.java * @run main/othervm LoopbackAddresses */ @@ -39,7 +39,7 @@ */ public class LoopbackAddresses implements HttpCallback { - static HttpServer server; + static TestHttpServer server; public void request (HttpTransaction req) { req.setResponseEntityBody ("Hello ."); @@ -52,7 +52,7 @@ public static void main(String[] args) { try { - server = new HttpServer (new LoopbackAddresses(), 1, 10, 0); + server = new TestHttpServer (new LoopbackAddresses(), 1, 10, 0); ProxyServer pserver = new ProxyServer(InetAddress.getByName("localhost"), server.getLocalPort()); // start proxy server new Thread(pserver).start(); --- old/test/java/net/ProxySelector/ProxyTest.java 2012-09-05 15:21:08.066224431 -0400 +++ new/test/java/net/ProxySelector/ProxyTest.java 2012-09-05 15:21:07.846224436 -0400 @@ -26,7 +26,7 @@ * @bug 4696512 * @summary HTTP client: Improve proxy server configuration and selection * @library ../../../sun/net/www/httptest/ - * @build ClosedChannelList HttpServer HttpTransaction HttpCallback + * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile ProxyTest.java * @run main/othervm -Dhttp.proxyHost=inexistant -Dhttp.proxyPort=8080 ProxyTest */ @@ -36,7 +36,7 @@ import java.util.ArrayList; public class ProxyTest implements HttpCallback { - static HttpServer server; + static TestHttpServer server; public ProxyTest() { } @@ -74,7 +74,7 @@ throw new RuntimeException("Default ProxySelector is null"); ProxySelector.setDefault(new MyProxySelector()); try { - server = new HttpServer (new ProxyTest(), 1, 10, 0); + server = new TestHttpServer (new ProxyTest(), 1, 10, 0); URL url = new URL("http://localhost:"+server.getLocalPort()); System.out.println ("client opening connection to: " + url); HttpURLConnection urlc = (HttpURLConnection)url.openConnection (); --- old/test/java/net/URL/PerConnectionProxy.java 2012-09-05 15:21:08.782224416 -0400 +++ new/test/java/net/URL/PerConnectionProxy.java 2012-09-05 15:21:08.562224420 -0400 @@ -25,7 +25,7 @@ * @bug 4920526 * @summary Needs per connection proxy support for URLs * @library ../../../sun/net/www/httptest/ - * @build ClosedChannelList HttpServer HttpTransaction HttpCallback + * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile PerConnectionProxy.java * @run main/othervm -Dhttp.proxyHost=inexistant -Dhttp.proxyPort=8080 PerConnectionProxy */ @@ -35,7 +35,7 @@ import sun.net.www.*; public class PerConnectionProxy implements HttpCallback { - static HttpServer server; + static TestHttpServer server; public void request (HttpTransaction req) { req.setResponseEntityBody ("Hello ."); @@ -48,7 +48,7 @@ public static void main(String[] args) { try { - server = new HttpServer (new PerConnectionProxy(), 1, 10, 0); + server = new TestHttpServer (new PerConnectionProxy(), 1, 10, 0); ProxyServer pserver = new ProxyServer(InetAddress.getByName("localhost"), server.getLocalPort()); // start proxy server new Thread(pserver).start(); --- old/test/java/net/URLConnection/B5052093.java 2012-09-05 15:21:09.498224402 -0400 +++ new/test/java/net/URLConnection/B5052093.java 2012-09-05 15:21:09.270224405 -0400 @@ -25,7 +25,7 @@ * @test * @bug 5052093 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B5052093 * @summary URLConnection doesn't support large files */ @@ -34,7 +34,7 @@ import sun.net.www.protocol.file.FileURLConnection; public class B5052093 implements HttpCallback { - private static HttpServer server; + private static TestHttpServer server; private static long testSize = ((long) (Integer.MAX_VALUE)) + 2; public static class LargeFile extends File { @@ -63,7 +63,7 @@ } public static void main(String[] args) throws Exception { - server = new HttpServer(new B5052093(), 1, 10, 0); + server = new TestHttpServer(new B5052093(), 1, 10, 0); try { URL url = new URL("http://localhost:"+server.getLocalPort()+"/foo"); URLConnection conn = url.openConnection(); --- old/test/sun/net/www/AuthHeaderTest.java 2012-09-05 15:21:10.210224388 -0400 +++ new/test/sun/net/www/AuthHeaderTest.java 2012-09-05 15:21:09.982224391 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4804309 * @library ../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main AuthHeaderTest * @summary AuthHeaderTest bug */ @@ -90,13 +90,13 @@ is.close(); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new AuthHeaderTest(), 1, 10, 0); + server = new TestHttpServer (new AuthHeaderTest(), 1, 10, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); client ("http://localhost:"+server.getLocalPort()+"/d1/foo.html"); } catch (Exception e) { --- old/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java 2012-09-05 15:21:10.930224371 -0400 +++ new/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java 2012-09-05 15:21:10.702224376 -0400 @@ -24,8 +24,6 @@ /** * @test * @bug 4333920 4994372 - * @library ../../../../../sun/net/www/httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction * @run main ChunkedEncodingWithProgressMonitorTest * @summary ChunkedEncoding unit test; MeteredStream/ProgressData problem */ --- old/test/sun/net/www/http/KeepAliveCache/B5045306.java 2012-09-05 15:21:11.646224358 -0400 +++ new/test/sun/net/www/http/KeepAliveCache/B5045306.java 2012-09-05 15:21:11.426224361 -0400 @@ -25,7 +25,7 @@ * @test * @bug 5045306 6356004 6993490 * @library ../../httptest/ - * @build HttpCallback HttpServer HttpTransaction + * @build HttpCallback TestHttpServer HttpTransaction * @run main/othervm B5045306 * @summary Http keep-alive implementation is not efficient */ @@ -50,7 +50,7 @@ public class B5045306 { static SimpleHttpTransaction httpTrans; - static HttpServer server; + static TestHttpServer server; public static void main(String[] args) throws Exception { startHttpServer(); @@ -60,7 +60,7 @@ public static void startHttpServer() { try { httpTrans = new SimpleHttpTransaction(); - server = new HttpServer(httpTrans, 1, 10, 0); + server = new TestHttpServer(httpTrans, 1, 10, 0); } catch (IOException e) { e.printStackTrace(); } --- old/test/sun/net/www/httptest/HttpTransaction.java 2012-09-05 15:21:12.362224344 -0400 +++ new/test/sun/net/www/httptest/HttpTransaction.java 2012-09-05 15:21:12.138224348 -0400 @@ -37,7 +37,7 @@ String command; URI requesturi; - HttpServer.Server server; + TestHttpServer.Server server; MessageHeader reqheaders, reqtrailers; String reqbody; byte[] rspbody; @@ -46,7 +46,7 @@ int rspbodylen; boolean rspchunked; - HttpTransaction (HttpServer.Server server, String command, + HttpTransaction (TestHttpServer.Server server, String command, URI requesturi, MessageHeader headers, String body, MessageHeader trailers, SelectionKey key) { this.command = command; @@ -290,7 +290,7 @@ * @param rTag the response string to send with the response code */ public void sendResponse (int rCode, String rTag) throws IOException { - OutputStream os = new HttpServer.NioOutputStream(channel()); + OutputStream os = new TestHttpServer.NioOutputStream(channel()); PrintStream ps = new PrintStream (os); ps.print ("HTTP/1.1 " + rCode + " " + rTag + "\r\n"); if (rspheaders != null) { @@ -314,7 +314,7 @@ /* sends one byte less than intended */ public void sendPartialResponse (int rCode, String rTag)throws IOException { - OutputStream os = new HttpServer.NioOutputStream(channel()); + OutputStream os = new TestHttpServer.NioOutputStream(channel()); PrintStream ps = new PrintStream (os); ps.print ("HTTP/1.1 " + rCode + " " + rTag + "\r\n"); ps.flush(); --- old/test/sun/net/www/protocol/http/B6296310.java 2012-09-05 15:21:13.070224328 -0400 +++ new/test/sun/net/www/protocol/http/B6296310.java 2012-09-05 15:21:12.850224332 -0400 @@ -25,7 +25,7 @@ * @test * @bug 6296310 * @library ../../httptest/ - * @build HttpCallback HttpServer HttpTransaction + * @build HttpCallback TestHttpServer HttpTransaction * @run main/othervm B6296310 * @summary REGRESSION: AppletClassLoader.getResourceAsStream() behaviour is wrong in some cases */ @@ -42,7 +42,7 @@ public class B6296310 { static SimpleHttpTransaction httpTrans; - static HttpServer server; + static TestHttpServer server; public static void main(String[] args) { @@ -55,7 +55,7 @@ public static void startHttpServer() { try { httpTrans = new SimpleHttpTransaction(); - server = new HttpServer(httpTrans, 1, 10, 0); + server = new TestHttpServer(httpTrans, 1, 10, 0); } catch (IOException e) { e.printStackTrace(); } --- old/test/sun/net/www/protocol/http/B6299712.java 2012-09-05 15:21:13.798224313 -0400 +++ new/test/sun/net/www/protocol/http/B6299712.java 2012-09-05 15:21:13.558224317 -0400 @@ -25,7 +25,7 @@ * @test * @bug 6299712 * @library ../../httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm B6299712 * @summary NullPointerException in sun.net.www.protocol.http.HttpURLConnection.followRedirect */ @@ -49,7 +49,7 @@ */ public class B6299712 { static SimpleHttpTransaction httpTrans; - static HttpServer server; + static TestHttpServer server; public static void main(String[] args) throws Exception { ResponseCache.setDefault(new DeployCacheHandler()); @@ -61,7 +61,7 @@ public static void startHttpServer() { try { httpTrans = new SimpleHttpTransaction(); - server = new HttpServer(httpTrans, 1, 10, 0); + server = new TestHttpServer(httpTrans, 1, 10, 0); } catch (IOException e) { e.printStackTrace(); } --- old/test/sun/net/www/protocol/http/RelativeRedirect.java 2012-09-05 15:21:14.518224300 -0400 +++ new/test/sun/net/www/protocol/http/RelativeRedirect.java 2012-09-05 15:21:14.282224304 -0400 @@ -25,7 +25,7 @@ * @test * @bug 4726087 * @library ../../httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main RelativeRedirect * @summary URLConnection cannot handle redirects */ @@ -35,7 +35,7 @@ public class RelativeRedirect implements HttpCallback { static int count = 0; - static HttpServer server; + static TestHttpServer server; static class MyAuthenticator extends Authenticator { public MyAuthenticator () { @@ -89,7 +89,7 @@ MyAuthenticator auth = new MyAuthenticator (); Authenticator.setDefault (auth); try { - server = new HttpServer (new RelativeRedirect(), 1, 10, 0); + server = new TestHttpServer (new RelativeRedirect(), 1, 10, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); URL url = new URL("http://localhost:"+server.getLocalPort()); System.out.println ("client opening connection to: " + url); --- old/test/sun/net/www/protocol/http/ResponseCacheStream.java 2012-09-05 15:21:15.242224284 -0400 +++ new/test/sun/net/www/protocol/http/ResponseCacheStream.java 2012-09-05 15:21:15.018224288 -0400 @@ -25,7 +25,7 @@ * @test * @bug 6262486 * @library ../../httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm -Dhttp.keepAlive=false ResponseCacheStream * @summary COMPATIBILITY: jagex_com - Monkey Puzzle applet fails to load */ @@ -91,13 +91,13 @@ } } - static HttpServer server; + static TestHttpServer server; public static void main(String[] args) throws Exception { MyResponseCache cache = new MyResponseCache(); try { ResponseCache.setDefault(cache); - server = new HttpServer (new ResponseCacheStream()); + server = new TestHttpServer (new ResponseCacheStream()); System.out.println ("Server: listening on port: " + server.getLocalPort()); URL url = new URL ("http://127.0.0.1:"+server.getLocalPort()+"/"); System.out.println ("Client: connecting to " + url); --- old/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java 2012-09-05 15:21:15.962224268 -0400 +++ new/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java 2012-09-05 15:21:15.738224274 -0400 @@ -25,7 +25,7 @@ * @test * @bug 5049976 * @library ../../httptest/ - * @build HttpCallback HttpServer ClosedChannelList HttpTransaction + @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main SetChunkedStreamingMode * @summary Unspecified NPE is thrown when streaming output mode is enabled */ @@ -60,11 +60,11 @@ System.out.println ("finished reading"); } - static HttpServer server; + static TestHttpServer server; public static void main (String[] args) throws Exception { try { - server = new HttpServer (new SetChunkedStreamingMode(), 1, 10, 0); + server = new TestHttpServer (new SetChunkedStreamingMode(), 1, 10, 0); System.out.println ("Server: listening on port: " + server.getLocalPort()); URL url = new URL ("http://127.0.0.1:"+server.getLocalPort()+"/"); System.out.println ("Client: connecting to " + url); --- old/test/sun/security/ssl/sun/net/www/httpstest/HttpTransaction.java 2012-09-05 15:21:16.686224253 -0400 +++ new/test/sun/security/ssl/sun/net/www/httpstest/HttpTransaction.java 2012-09-05 15:21:16.458224258 -0400 @@ -37,7 +37,7 @@ String command; URI requesturi; - HttpServer.ServerWorker server; + TestHttpsServer.ServerWorker server; MessageHeader reqheaders, reqtrailers; String reqbody; byte[] rspbody; @@ -46,7 +46,7 @@ int rspbodylen; boolean rspchunked; - HttpTransaction (HttpServer.ServerWorker server, String command, + HttpTransaction (TestHttpsServer.ServerWorker server, String command, URI requesturi, MessageHeader headers, String body, MessageHeader trailers, SocketChannel ch) { this.command = command; @@ -290,7 +290,7 @@ * @param rTag the response string to send with the response code */ public void sendResponse (int rCode, String rTag) throws IOException { - OutputStream os = new HttpServer.NioOutputStream(channel(), server.getSSLEngine(), server.outNetBB(), server.outAppBB()); + OutputStream os = new TestHttpsServer.NioOutputStream(channel(), server.getSSLEngine(), server.outNetBB(), server.outAppBB()); PrintStream ps = new PrintStream (os); ps.print ("HTTP/1.1 " + rCode + " " + rTag + "\r\n"); if (rspheaders != null) { @@ -314,7 +314,7 @@ /* sends one byte less than intended */ public void sendPartialResponse (int rCode, String rTag)throws IOException { - OutputStream os = new HttpServer.NioOutputStream(channel(), server.getSSLEngine(), server.outNetBB(), server.outAppBB()); + OutputStream os = new TestHttpsServer.NioOutputStream(channel(), server.getSSLEngine(), server.outNetBB(), server.outAppBB()); PrintStream ps = new PrintStream (os); ps.print ("HTTP/1.1 " + rCode + " " + rTag + "\r\n"); ps.flush(); --- old/test/sun/net/www/httptest/HttpServer.java 2012-09-05 15:21:17.422224240 -0400 +++ /dev/null 2012-08-28 07:24:16.656816964 -0400 @@ -1,728 +0,0 @@ -/* - * Copyright (c) 2002, 2010, 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 - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import java.net.*; -import java.io.*; -import java.nio.*; -import java.nio.channels.*; -import sun.net.www.MessageHeader; -import java.util.*; - -/** - * This class implements a simple HTTP server. It uses multiple threads to - * handle connections in parallel, and also multiple connections/requests - * can be handled per thread. - *
- * It must be instantiated with a {@link HttpCallback} object to which - * requests are given and must be handled. - *
- * Simple synchronization between the client(s) and server can be done
- * using the {@link #waitForCondition(String)}, {@link #setCondition(String)} and
- * {@link #rendezvous(String,int)} methods.
- *
- * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
- *
- * If changes are made here, please sure they are propagated to
- * the HTTPS equivalent in the JSSE regression test suite.
- *
- * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
- */
-
-public class HttpServer {
-
- ServerSocketChannel schan;
- int threads;
- int cperthread;
- HttpCallback cb;
- Server[] servers;
-
- /**
- * Create a
- * A rendezvous built on a condition is also provided for synchronizing
- * N threads.
- */
-
- private static HashMap conditions = new HashMap();
-
- /*
- * Modifiable boolean object
- */
- private static class BValue {
- boolean v;
- }
-
- /*
- * Modifiable int object
- */
- private static class IValue {
- int v;
- IValue (int i) {
- v =i;
- }
- }
-
-
- private static BValue getCond (String condition) {
- synchronized (conditions) {
- BValue cond = (BValue) conditions.get (condition);
- if (cond == null) {
- cond = new BValue();
- conditions.put (condition, cond);
- }
- return cond;
- }
- }
-
- /**
- * Set the condition to true. Any threads that are currently blocked
- * waiting on the condition, will be unblocked and allowed to continue.
- * Threads that subsequently call waitForCondition() will not block.
- * If the named condition did not exist prior to the call, then it is created
- * first.
- */
-
- public static void setCondition (String condition) {
- BValue cond = getCond (condition);
- synchronized (cond) {
- if (cond.v) {
- return;
- }
- cond.v = true;
- cond.notifyAll();
- }
- }
-
- /**
- * If the named condition does not exist, then it is created and initialized
- * to false. If the condition exists or has just been created and its value
- * is false, then the thread blocks until another thread sets the condition.
- * If the condition exists and is already set to true, then this call returns
- * immediately without blocking.
- */
-
- public static void waitForCondition (String condition) {
- BValue cond = getCond (condition);
- synchronized (cond) {
- if (!cond.v) {
- try {
- cond.wait();
- } catch (InterruptedException e) {}
- }
- }
- }
-
- /* conditions must be locked when accessing this */
- static HashMap rv = new HashMap();
-
- /**
- * Force N threads to rendezvous (ie. wait for each other) before proceeding.
- * The first thread(s) to call are blocked until the last
- * thread makes the call. Then all threads continue.
- *
- * All threads that call with the same condition name, must use the same value
- * for N (or the results may be not be as expected).
- *
- * Obviously, if fewer than N threads make the rendezvous then the result
- * will be a hang.
- */
-
- public static void rendezvous (String condition, int N) {
- BValue cond;
- IValue iv;
- String name = "RV_"+condition;
-
- /* get the condition */
-
- synchronized (conditions) {
- cond = (BValue)conditions.get (name);
- if (cond == null) {
- /* we are first caller */
- if (N < 2) {
- throw new RuntimeException ("rendezvous must be called with N >= 2");
- }
- cond = new BValue ();
- conditions.put (name, cond);
- iv = new IValue (N-1);
- rv.put (name, iv);
- } else {
- /* already initialised, just decrement the counter */
- iv = (IValue) rv.get (name);
- iv.v --;
- }
- }
-
- if (iv.v > 0) {
- waitForCondition (name);
- } else {
- setCondition (name);
- synchronized (conditions) {
- clearCondition (name);
- rv.remove (name);
- }
- }
- }
-
- /**
- * If the named condition exists and is set then remove it, so it can
- * be re-initialized and used again. If the condition does not exist, or
- * exists but is not set, then the call returns without doing anything.
- * Note, some higher level synchronization
- * may be needed between clear and the other operations.
- */
-
- public static void clearCondition(String condition) {
- BValue cond;
- synchronized (conditions) {
- cond = (BValue) conditions.get (condition);
- if (cond == null) {
- return;
- }
- synchronized (cond) {
- if (cond.v) {
- conditions.remove (condition);
- }
- }
- }
- }
-}
--- /dev/null 2012-08-28 07:24:16.656816964 -0400
+++ new/test/sun/net/www/httptest/TestHttpServer.java 2012-09-05 15:21:17.182224243 -0400
@@ -0,0 +1,728 @@
+/*
+ * Copyright (c) 2002, 2010, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+import sun.net.www.MessageHeader;
+import java.util.*;
+
+/**
+ * This class implements a simple HTTP server. It uses multiple threads to
+ * handle connections in parallel, and also multiple connections/requests
+ * can be handled per thread.
+ *
+ * It must be instantiated with a {@link HttpCallback} object to which
+ * requests are given and must be handled.
+ *
+ * Simple synchronization between the client(s) and server can be done
+ * using the {@link #waitForCondition(String)}, {@link #setCondition(String)} and
+ * {@link #rendezvous(String,int)} methods.
+ *
+ * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+ *
+ * If changes are made here, please sure they are propagated to
+ * the HTTPS equivalent in the JSSE regression test suite.
+ *
+ * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+ */
+
+public class TestHttpServer {
+
+ ServerSocketChannel schan;
+ int threads;
+ int cperthread;
+ HttpCallback cb;
+ Server[] servers;
+
+ /**
+ * Create a
+ * A rendezvous built on a condition is also provided for synchronizing
+ * N threads.
+ */
+
+ private static HashMap conditions = new HashMap();
+
+ /*
+ * Modifiable boolean object
+ */
+ private static class BValue {
+ boolean v;
+ }
+
+ /*
+ * Modifiable int object
+ */
+ private static class IValue {
+ int v;
+ IValue (int i) {
+ v =i;
+ }
+ }
+
+
+ private static BValue getCond (String condition) {
+ synchronized (conditions) {
+ BValue cond = (BValue) conditions.get (condition);
+ if (cond == null) {
+ cond = new BValue();
+ conditions.put (condition, cond);
+ }
+ return cond;
+ }
+ }
+
+ /**
+ * Set the condition to true. Any threads that are currently blocked
+ * waiting on the condition, will be unblocked and allowed to continue.
+ * Threads that subsequently call waitForCondition() will not block.
+ * If the named condition did not exist prior to the call, then it is created
+ * first.
+ */
+
+ public static void setCondition (String condition) {
+ BValue cond = getCond (condition);
+ synchronized (cond) {
+ if (cond.v) {
+ return;
+ }
+ cond.v = true;
+ cond.notifyAll();
+ }
+ }
+
+ /**
+ * If the named condition does not exist, then it is created and initialized
+ * to false. If the condition exists or has just been created and its value
+ * is false, then the thread blocks until another thread sets the condition.
+ * If the condition exists and is already set to true, then this call returns
+ * immediately without blocking.
+ */
+
+ public static void waitForCondition (String condition) {
+ BValue cond = getCond (condition);
+ synchronized (cond) {
+ if (!cond.v) {
+ try {
+ cond.wait();
+ } catch (InterruptedException e) {}
+ }
+ }
+ }
+
+ /* conditions must be locked when accessing this */
+ static HashMap rv = new HashMap();
+
+ /**
+ * Force N threads to rendezvous (ie. wait for each other) before proceeding.
+ * The first thread(s) to call are blocked until the last
+ * thread makes the call. Then all threads continue.
+ *
+ * All threads that call with the same condition name, must use the same value
+ * for N (or the results may be not be as expected).
+ *
+ * Obviously, if fewer than N threads make the rendezvous then the result
+ * will be a hang.
+ */
+
+ public static void rendezvous (String condition, int N) {
+ BValue cond;
+ IValue iv;
+ String name = "RV_"+condition;
+
+ /* get the condition */
+
+ synchronized (conditions) {
+ cond = (BValue)conditions.get (name);
+ if (cond == null) {
+ /* we are first caller */
+ if (N < 2) {
+ throw new RuntimeException ("rendezvous must be called with N >= 2");
+ }
+ cond = new BValue ();
+ conditions.put (name, cond);
+ iv = new IValue (N-1);
+ rv.put (name, iv);
+ } else {
+ /* already initialised, just decrement the counter */
+ iv = (IValue) rv.get (name);
+ iv.v --;
+ }
+ }
+
+ if (iv.v > 0) {
+ waitForCondition (name);
+ } else {
+ setCondition (name);
+ synchronized (conditions) {
+ clearCondition (name);
+ rv.remove (name);
+ }
+ }
+ }
+
+ /**
+ * If the named condition exists and is set then remove it, so it can
+ * be re-initialized and used again. If the condition does not exist, or
+ * exists but is not set, then the call returns without doing anything.
+ * Note, some higher level synchronization
+ * may be needed between clear and the other operations.
+ */
+
+ public static void clearCondition(String condition) {
+ BValue cond;
+ synchronized (conditions) {
+ cond = (BValue) conditions.get (condition);
+ if (cond == null) {
+ return;
+ }
+ synchronized (cond) {
+ if (cond.v) {
+ conditions.remove (condition);
+ }
+ }
+ }
+ }
+}
--- old/test/sun/security/ssl/sun/net/www/httpstest/HttpServer.java 2012-09-05 15:21:18.178224224 -0400
+++ /dev/null 2012-08-28 07:24:16.656816964 -0400
@@ -1,933 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.net.*;
-import java.io.*;
-import java.nio.*;
-import java.nio.channels.*;
-import sun.net.www.MessageHeader;
-import java.util.*;
-import javax.net.ssl.*;
-import javax.net.ssl.SSLEngineResult.*;
-import java.security.*;
-
-/**
- * This class implements a simple HTTPS server. It uses multiple threads to
- * handle connections in parallel, and will spin off a new thread to handle
- * each request. (this is easier to implement with SSLEngine)
- *
- * It must be instantiated with a {@link HttpCallback} object to which
- * requests are given and must be handled.
- *
- * Simple synchronization between the client(s) and server can be done
- * using the {@link #waitForCondition(String)}, {@link #setCondition(String)} and
- * {@link #rendezvous(String,int)} methods.
- *
- * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
- *
- * If you make a change in here, please don't forget to make the
- * corresponding change in the J2SE equivalent.
- *
- * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
- */
-
-public class HttpServer {
-
- ServerSocketChannel schan;
- int threads;
- int cperthread;
- HttpCallback cb;
- Server[] servers;
-
- // ssl related fields
- static SSLContext sslCtx;
-
- /**
- * Create a
- * A rendezvous built on a condition is also provided for synchronizing
- * N threads.
- */
-
- private static HashMap conditions = new HashMap();
-
- /*
- * Modifiable boolean object
- */
- private static class BValue {
- boolean v;
- }
-
- /*
- * Modifiable int object
- */
- private static class IValue {
- int v;
- IValue (int i) {
- v =i;
- }
- }
-
-
- private static BValue getCond (String condition) {
- synchronized (conditions) {
- BValue cond = (BValue) conditions.get (condition);
- if (cond == null) {
- cond = new BValue();
- conditions.put (condition, cond);
- }
- return cond;
- }
- }
-
- /**
- * Set the condition to true. Any threads that are currently blocked
- * waiting on the condition, will be unblocked and allowed to continue.
- * Threads that subsequently call waitForCondition() will not block.
- * If the named condition did not exist prior to the call, then it is created
- * first.
- */
-
- public static void setCondition (String condition) {
- BValue cond = getCond (condition);
- synchronized (cond) {
- if (cond.v) {
- return;
- }
- cond.v = true;
- cond.notifyAll();
- }
- }
-
- /**
- * If the named condition does not exist, then it is created and initialized
- * to false. If the condition exists or has just been created and its value
- * is false, then the thread blocks until another thread sets the condition.
- * If the condition exists and is already set to true, then this call returns
- * immediately without blocking.
- */
-
- public static void waitForCondition (String condition) {
- BValue cond = getCond (condition);
- synchronized (cond) {
- if (!cond.v) {
- try {
- cond.wait();
- } catch (InterruptedException e) {}
- }
- }
- }
-
- /* conditions must be locked when accessing this */
- static HashMap rv = new HashMap();
-
- /**
- * Force N threads to rendezvous (ie. wait for each other) before proceeding.
- * The first thread(s) to call are blocked until the last
- * thread makes the call. Then all threads continue.
- *
- * All threads that call with the same condition name, must use the same value
- * for N (or the results may be not be as expected).
- *
- * Obviously, if fewer than N threads make the rendezvous then the result
- * will be a hang.
- */
-
- public static void rendezvous (String condition, int N) {
- BValue cond;
- IValue iv;
- String name = "RV_"+condition;
-
- /* get the condition */
-
- synchronized (conditions) {
- cond = (BValue)conditions.get (name);
- if (cond == null) {
- /* we are first caller */
- if (N < 2) {
- throw new RuntimeException ("rendezvous must be called with N >= 2");
- }
- cond = new BValue ();
- conditions.put (name, cond);
- iv = new IValue (N-1);
- rv.put (name, iv);
- } else {
- /* already initialised, just decrement the counter */
- iv = (IValue) rv.get (name);
- iv.v --;
- }
- }
-
- if (iv.v > 0) {
- waitForCondition (name);
- } else {
- setCondition (name);
- synchronized (conditions) {
- clearCondition (name);
- rv.remove (name);
- }
- }
- }
-
- /**
- * If the named condition exists and is set then remove it, so it can
- * be re-initialized and used again. If the condition does not exist, or
- * exists but is not set, then the call returns without doing anything.
- * Note, some higher level synchronization
- * may be needed between clear and the other operations.
- */
-
- public static void clearCondition(String condition) {
- BValue cond;
- synchronized (conditions) {
- cond = (BValue) conditions.get (condition);
- if (cond == null) {
- return;
- }
- synchronized (cond) {
- if (cond.v) {
- conditions.remove (condition);
- }
- }
- }
- }
-}
--- /dev/null 2012-08-28 07:24:16.656816964 -0400
+++ new/test/sun/security/ssl/sun/net/www/httpstest/TestHttpsServer.java 2012-09-05 15:21:17.942224228 -0400
@@ -0,0 +1,933 @@
+/*
+ * Copyright (c) 2002, 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+import sun.net.www.MessageHeader;
+import java.util.*;
+import javax.net.ssl.*;
+import javax.net.ssl.SSLEngineResult.*;
+import java.security.*;
+
+/**
+ * This class implements a simple HTTPS server. It uses multiple threads to
+ * handle connections in parallel, and will spin off a new thread to handle
+ * each request. (this is easier to implement with SSLEngine)
+ *
+ * It must be instantiated with a {@link HttpCallback} object to which
+ * requests are given and must be handled.
+ *
+ * Simple synchronization between the client(s) and server can be done
+ * using the {@link #waitForCondition(String)}, {@link #setCondition(String)} and
+ * {@link #rendezvous(String,int)} methods.
+ *
+ * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+ *
+ * If you make a change in here, please don't forget to make the
+ * corresponding change in the J2SE equivalent.
+ *
+ * NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+ */
+
+public class TestHttpsServer {
+
+ ServerSocketChannel schan;
+ int threads;
+ int cperthread;
+ HttpCallback cb;
+ Server[] servers;
+
+ // ssl related fields
+ static SSLContext sslCtx;
+
+ /**
+ * Create a
+ * A rendezvous built on a condition is also provided for synchronizing
+ * N threads.
+ */
+
+ private static HashMap conditions = new HashMap();
+
+ /*
+ * Modifiable boolean object
+ */
+ private static class BValue {
+ boolean v;
+ }
+
+ /*
+ * Modifiable int object
+ */
+ private static class IValue {
+ int v;
+ IValue (int i) {
+ v =i;
+ }
+ }
+
+
+ private static BValue getCond (String condition) {
+ synchronized (conditions) {
+ BValue cond = (BValue) conditions.get (condition);
+ if (cond == null) {
+ cond = new BValue();
+ conditions.put (condition, cond);
+ }
+ return cond;
+ }
+ }
+
+ /**
+ * Set the condition to true. Any threads that are currently blocked
+ * waiting on the condition, will be unblocked and allowed to continue.
+ * Threads that subsequently call waitForCondition() will not block.
+ * If the named condition did not exist prior to the call, then it is created
+ * first.
+ */
+
+ public static void setCondition (String condition) {
+ BValue cond = getCond (condition);
+ synchronized (cond) {
+ if (cond.v) {
+ return;
+ }
+ cond.v = true;
+ cond.notifyAll();
+ }
+ }
+
+ /**
+ * If the named condition does not exist, then it is created and initialized
+ * to false. If the condition exists or has just been created and its value
+ * is false, then the thread blocks until another thread sets the condition.
+ * If the condition exists and is already set to true, then this call returns
+ * immediately without blocking.
+ */
+
+ public static void waitForCondition (String condition) {
+ BValue cond = getCond (condition);
+ synchronized (cond) {
+ if (!cond.v) {
+ try {
+ cond.wait();
+ } catch (InterruptedException e) {}
+ }
+ }
+ }
+
+ /* conditions must be locked when accessing this */
+ static HashMap rv = new HashMap();
+
+ /**
+ * Force N threads to rendezvous (ie. wait for each other) before proceeding.
+ * The first thread(s) to call are blocked until the last
+ * thread makes the call. Then all threads continue.
+ *
+ * All threads that call with the same condition name, must use the same value
+ * for N (or the results may be not be as expected).
+ *
+ * Obviously, if fewer than N threads make the rendezvous then the result
+ * will be a hang.
+ */
+
+ public static void rendezvous (String condition, int N) {
+ BValue cond;
+ IValue iv;
+ String name = "RV_"+condition;
+
+ /* get the condition */
+
+ synchronized (conditions) {
+ cond = (BValue)conditions.get (name);
+ if (cond == null) {
+ /* we are first caller */
+ if (N < 2) {
+ throw new RuntimeException ("rendezvous must be called with N >= 2");
+ }
+ cond = new BValue ();
+ conditions.put (name, cond);
+ iv = new IValue (N-1);
+ rv.put (name, iv);
+ } else {
+ /* already initialised, just decrement the counter */
+ iv = (IValue) rv.get (name);
+ iv.v --;
+ }
+ }
+
+ if (iv.v > 0) {
+ waitForCondition (name);
+ } else {
+ setCondition (name);
+ synchronized (conditions) {
+ clearCondition (name);
+ rv.remove (name);
+ }
+ }
+ }
+
+ /**
+ * If the named condition exists and is set then remove it, so it can
+ * be re-initialized and used again. If the condition does not exist, or
+ * exists but is not set, then the call returns without doing anything.
+ * Note, some higher level synchronization
+ * may be needed between clear and the other operations.
+ */
+
+ public static void clearCondition(String condition) {
+ BValue cond;
+ synchronized (conditions) {
+ cond = (BValue) conditions.get (condition);
+ if (cond == null) {
+ return;
+ }
+ synchronized (cond) {
+ if (cond.v) {
+ conditions.remove (condition);
+ }
+ }
+ }
+ }
+}
HttpServer
instance with the specified callback object
- * for handling requests. One thread is created to handle requests,
- * and up to ten TCP connections will be handled simultaneously.
- * @param cb the callback object which is invoked to handle each
- * incoming request
- */
-
- public HttpServer (HttpCallback cb) throws IOException {
- this (cb, 1, 10, 0);
- }
-
- /**
- * Create a
HttpServer
instance with the specified number of
- * threads and maximum number of connections per thread. This functions
- * the same as the 4 arg constructor, where the port argument is set to zero.
- * @param cb the callback object which is invoked to handle each
- * incoming request
- * @param threads the number of threads to create to handle requests
- * in parallel
- * @param cperthread the number of simultaneous TCP connections to
- * handle per thread
- */
-
- public HttpServer (HttpCallback cb, int threads, int cperthread)
- throws IOException {
- this (cb, threads, cperthread, 0);
- }
-
- /**
- * Create a
HttpServer
instance with the specified number
- * of threads and maximum number of connections per thread and running on
- * the specified port. The specified number of threads are created to
- * handle incoming requests, and each thread is allowed
- * to handle a number of simultaneous TCP connections.
- * @param cb the callback object which is invoked to handle
- * each incoming request
- * @param threads the number of threads to create to handle
- * requests in parallel
- * @param cperthread the number of simultaneous TCP connections
- * to handle per thread
- * @param port the port number to bind the server to.
Zero
- * means choose any free port.
- */
-
- public HttpServer (HttpCallback cb, int threads, int cperthread, int port)
- throws IOException {
- schan = ServerSocketChannel.open ();
- InetSocketAddress addr = new InetSocketAddress (port);
- schan.socket().bind (addr);
- this.threads = threads;
- this.cb = cb;
- this.cperthread = cperthread;
- servers = new Server [threads];
- for (int i=0; iTestHttpServer
instance with the specified callback object
+ * for handling requests. One thread is created to handle requests,
+ * and up to ten TCP connections will be handled simultaneously.
+ * @param cb the callback object which is invoked to handle each
+ * incoming request
+ */
+
+ public TestHttpServer (HttpCallback cb) throws IOException {
+ this (cb, 1, 10, 0);
+ }
+
+ /**
+ * Create a
TestHttpServer
instance with the specified number of
+ * threads and maximum number of connections per thread. This functions
+ * the same as the 4 arg constructor, where the port argument is set to zero.
+ * @param cb the callback object which is invoked to handle each
+ * incoming request
+ * @param threads the number of threads to create to handle requests
+ * in parallel
+ * @param cperthread the number of simultaneous TCP connections to
+ * handle per thread
+ */
+
+ public TestHttpServer (HttpCallback cb, int threads, int cperthread)
+ throws IOException {
+ this (cb, threads, cperthread, 0);
+ }
+
+ /**
+ * Create a
TestHttpServer
instance with the specified number
+ * of threads and maximum number of connections per thread and running on
+ * the specified port. The specified number of threads are created to
+ * handle incoming requests, and each thread is allowed
+ * to handle a number of simultaneous TCP connections.
+ * @param cb the callback object which is invoked to handle
+ * each incoming request
+ * @param threads the number of threads to create to handle
+ * requests in parallel
+ * @param cperthread the number of simultaneous TCP connections
+ * to handle per thread
+ * @param port the port number to bind the server to.
Zero
+ * means choose any free port.
+ */
+
+ public TestHttpServer (HttpCallback cb, int threads, int cperthread, int port)
+ throws IOException {
+ schan = ServerSocketChannel.open ();
+ InetSocketAddress addr = new InetSocketAddress (port);
+ schan.socket().bind (addr);
+ this.threads = threads;
+ this.cb = cb;
+ this.cperthread = cperthread;
+ servers = new Server [threads];
+ for (int i=0; iHttpServer
instance with the specified callback object
- * for handling requests. One thread is created to handle requests,
- * and up to ten TCP connections will be handled simultaneously.
- * @param cb the callback object which is invoked to handle each
- * incoming request
- */
-
- public HttpServer (HttpCallback cb) throws IOException {
- this (cb, 1, 10, 0);
- }
-
- /**
- * Create a
HttpServer
instance with the specified number of
- * threads and maximum number of connections per thread. This functions
- * the same as the 4 arg constructor, where the port argument is set to zero.
- * @param cb the callback object which is invoked to handle each
- * incoming request
- * @param threads the number of threads to create to handle requests
- * in parallel
- * @param cperthread the number of simultaneous TCP connections to
- * handle per thread
- */
-
- public HttpServer (HttpCallback cb, int threads, int cperthread)
- throws IOException {
- this (cb, threads, cperthread, 0);
- }
-
- /**
- * Create a
HttpServer
instance with the specified number
- * of threads and maximum number of connections per thread and running on
- * the specified port. The specified number of threads are created to
- * handle incoming requests, and each thread is allowed
- * to handle a number of simultaneous TCP connections.
- * @param cb the callback object which is invoked to handle
- * each incoming request
- * @param threads the number of threads to create to handle
- * requests in parallel
- * @param cperthread the number of simultaneous TCP connections
- * to handle per thread
- * @param port the port number to bind the server to.
Zero
- * means choose any free port.
- */
-
- public HttpServer (HttpCallback cb, int threads, int cperthread, int port)
- throws IOException {
- schan = ServerSocketChannel.open ();
- InetSocketAddress addr = new InetSocketAddress (port);
- schan.socket().bind (addr);
- this.threads = threads;
- this.cb = cb;
- this.cperthread = cperthread;
-
- try {
- // create and initialize a SSLContext
- KeyStore ks = KeyStore.getInstance("JKS");
- KeyStore ts = KeyStore.getInstance("JKS");
- char[] passphrase = "passphrase".toCharArray();
-
- ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")), passphrase);
- ts.load(new FileInputStream(System.getProperty("javax.net.ssl.trustStore")), passphrase);
-
- KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
- kmf.init(ks, passphrase);
-
- TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
- tmf.init(ts);
-
- sslCtx = SSLContext.getInstance("TLS");
-
- sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
-
- servers = new Server [threads];
- for (int i=0; iTestHttpsServer
instance with the specified callback object
+ * for handling requests. One thread is created to handle requests,
+ * and up to ten TCP connections will be handled simultaneously.
+ * @param cb the callback object which is invoked to handle each
+ * incoming request
+ */
+
+ public TestHttpsServer (HttpCallback cb) throws IOException {
+ this (cb, 1, 10, 0);
+ }
+
+ /**
+ * Create a
TestHttpsServer
instance with the specified number of
+ * threads and maximum number of connections per thread. This functions
+ * the same as the 4 arg constructor, where the port argument is set to zero.
+ * @param cb the callback object which is invoked to handle each
+ * incoming request
+ * @param threads the number of threads to create to handle requests
+ * in parallel
+ * @param cperthread the number of simultaneous TCP connections to
+ * handle per thread
+ */
+
+ public TestHttpsServer (HttpCallback cb, int threads, int cperthread)
+ throws IOException {
+ this (cb, threads, cperthread, 0);
+ }
+
+ /**
+ * Create a
TestHttpsServer
instance with the specified number
+ * of threads and maximum number of connections per thread and running on
+ * the specified port. The specified number of threads are created to
+ * handle incoming requests, and each thread is allowed
+ * to handle a number of simultaneous TCP connections.
+ * @param cb the callback object which is invoked to handle
+ * each incoming request
+ * @param threads the number of threads to create to handle
+ * requests in parallel
+ * @param cperthread the number of simultaneous TCP connections
+ * to handle per thread
+ * @param port the port number to bind the server to.
Zero
+ * means choose any free port.
+ */
+
+ public TestHttpsServer (HttpCallback cb, int threads, int cperthread, int port)
+ throws IOException {
+ schan = ServerSocketChannel.open ();
+ InetSocketAddress addr = new InetSocketAddress (port);
+ schan.socket().bind (addr);
+ this.threads = threads;
+ this.cb = cb;
+ this.cperthread = cperthread;
+
+ try {
+ // create and initialize a SSLContext
+ KeyStore ks = KeyStore.getInstance("JKS");
+ KeyStore ts = KeyStore.getInstance("JKS");
+ char[] passphrase = "passphrase".toCharArray();
+
+ ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")), passphrase);
+ ts.load(new FileInputStream(System.getProperty("javax.net.ssl.trustStore")), passphrase);
+
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+ kmf.init(ks, passphrase);
+
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
+ tmf.init(ts);
+
+ sslCtx = SSLContext.getInstance("TLS");
+
+ sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+
+ servers = new Server [threads];
+ for (int i=0; i