8065072: sun/net/www/http/HttpClient/StreamingRetry.java failed intermittently
authorchegar
Tue, 25 Nov 2014 18:43:44 +0000
changeset 27759 8f9827afe8d0
parent 27758 dfba484228ed
child 27770 1335153ca9da
8065072: sun/net/www/http/HttpClient/StreamingRetry.java failed intermittently Reviewed-by: dfuchs
jdk/test/sun/net/www/http/HttpClient/StreamingRetry.java
--- a/jdk/test/sun/net/www/http/HttpClient/StreamingRetry.java	Tue Nov 25 14:16:55 2014 +0400
+++ b/jdk/test/sun/net/www/http/HttpClient/StreamingRetry.java	Tue Nov 25 18:43:44 2014 +0000
@@ -37,13 +37,13 @@
 
 public class StreamingRetry implements Runnable {
     static final int ACCEPT_TIMEOUT = 20 * 1000; // 20 seconds
-    ServerSocket ss;
+    volatile ServerSocket ss;
 
-    public static void main(String[] args) throws IOException {
+    public static void main(String[] args) throws Exception {
         (new StreamingRetry()).instanceMain();
     }
 
-    void instanceMain() throws IOException {
+    void instanceMain() throws Exception {
         out.println("Test with default method");
         test(null);
         out.println("Test with POST method");
@@ -54,12 +54,13 @@
         if (failed > 0) throw new RuntimeException("Some tests failed");
     }
 
-    void test(String method) throws IOException {
+    void test(String method) throws Exception {
         ss = new ServerSocket(0);
         ss.setSoTimeout(ACCEPT_TIMEOUT);
         int port = ss.getLocalPort();
 
-        (new Thread(this)).start();
+        Thread otherThread = new Thread(this);
+        otherThread.start();
 
         try {
             URL url = new URL("http://localhost:" + port + "/");
@@ -77,6 +78,7 @@
             //expected.printStackTrace();
         } finally {
             ss.close();
+            otherThread.join();
         }
     }