test/jdk/java/net/URLConnection/SetIfModifiedSince.java
changeset 55645 3203e857fa71
parent 47216 71c04702a3d5
child 57760 ec948d19180a
--- a/test/jdk/java/net/URLConnection/SetIfModifiedSince.java	Wed Jul 10 07:27:58 2019 -0700
+++ b/test/jdk/java/net/URLConnection/SetIfModifiedSince.java	Wed Jul 10 16:09:20 2019 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -23,6 +23,7 @@
 
 /* @test
  * @bug 4397096
+ * @library /test/lib
  * @run main/othervm SetIfModifiedSince
  * @summary setIfModifiedSince() of HttpURLConnection sets invalid date of default locale
  */
@@ -31,7 +32,10 @@
 import java.io.*;
 import java.util.*;
 
+import jdk.test.lib.net.URIBuilder;
+
 public class SetIfModifiedSince {
+    static volatile boolean successfulHeaderCheck = false;
 
     static class XServer extends Thread {
         ServerSocket srv;
@@ -66,28 +70,42 @@
                         break;
                     }
                 }
+                successfulHeaderCheck = true;
                 s.close ();
                 srv.close (); // or else the HTTPURLConnection will retry
             } catch (IOException e) {}
         }
     }
 
-    public static void main (String[] args) {
+    public static void main(String[] args) throws Exception {
         Locale reservedLocale = Locale.getDefault();
         try {
             Locale.setDefault(Locale.JAPAN);
-            ServerSocket serversocket = new ServerSocket (0);
+            ServerSocket serversocket = new ServerSocket();
+            serversocket.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
             int port = serversocket.getLocalPort ();
             XServer server = new XServer (serversocket);
             server.start ();
             Thread.sleep (2000);
-            URL url = new URL ("http://localhost:"+port+"/index.html");
-            URLConnection urlc = url.openConnection ();
+            URL url = URIBuilder.newBuilder()
+                    .scheme("http")
+                    .loopback()
+                    .port(port)
+                    .path("/index.html")
+                    .toURLUnchecked();
+            URLConnection urlc = url.openConnection(Proxy.NO_PROXY);
             urlc.setIfModifiedSince (10000000);
             InputStream is = urlc.getInputStream ();
-            int i=0, c;
-            Thread.sleep (5000);
-        } catch (Exception e) {
+            int i = 0, c;
+            Thread.sleep(5000);
+            if (!successfulHeaderCheck) {
+                throw new RuntimeException("Header check was unsuccessful");
+            }
+        } catch (SocketException ce) {
+            if (!successfulHeaderCheck) {
+                throw ce;
+            }
+            System.out.println("ConnectionException expected on successful check of If-modified-since header");
         } finally {
             // restore the reserved locale
             Locale.setDefault(reservedLocale);