--- 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);