test/jdk/java/net/httpclient/HttpClientBuilderTest.java
changeset 51364 31d9e82b2e64
parent 50681 4254bed3c09d
child 52121 934969c63223
child 56868 67c7659ecda5
--- a/test/jdk/java/net/httpclient/HttpClientBuilderTest.java	Wed Aug 08 15:51:08 2018 -0700
+++ b/test/jdk/java/net/httpclient/HttpClientBuilderTest.java	Thu Aug 09 11:23:12 2018 +0100
@@ -50,6 +50,7 @@
 import java.net.http.HttpClient.Version;
 import jdk.testlibrary.SimpleSSLContext;
 import org.testng.annotations.Test;
+import static java.time.Duration.*;
 import static org.testng.Assert.*;
 
 /*
@@ -74,6 +75,7 @@
             // Empty optionals and defaults
             assertFalse(client.authenticator().isPresent());
             assertFalse(client.cookieHandler().isPresent());
+            assertFalse(client.connectTimeout().isPresent());
             assertFalse(client.executor().isPresent());
             assertFalse(client.proxy().isPresent());
             assertTrue(client.sslParameters() != null);
@@ -88,6 +90,7 @@
         HttpClient.Builder builder = HttpClient.newBuilder();
         assertThrows(NPE, () -> builder.authenticator(null));
         assertThrows(NPE, () -> builder.cookieHandler(null));
+        assertThrows(NPE, () -> builder.connectTimeout(null));
         assertThrows(NPE, () -> builder.executor(null));
         assertThrows(NPE, () -> builder.proxy(null));
         assertThrows(NPE, () -> builder.sslParameters(null));
@@ -128,6 +131,26 @@
         assertTrue(builder.build().cookieHandler().get() == c);
     }
 
+    @Test
+    public void testConnectTimeout() {
+        HttpClient.Builder builder = HttpClient.newBuilder();
+        Duration a = Duration.ofSeconds(5);
+        builder.connectTimeout(a);
+        assertTrue(builder.build().connectTimeout().get() == a);
+        Duration b = Duration.ofMinutes(1);
+        builder.connectTimeout(b);
+        assertTrue(builder.build().connectTimeout().get() == b);
+        assertThrows(NPE, () -> builder.cookieHandler(null));
+        Duration c = Duration.ofHours(100);
+        builder.connectTimeout(c);
+        assertTrue(builder.build().connectTimeout().get() == c);
+
+        assertThrows(IAE, () -> builder.connectTimeout(ZERO));
+        assertThrows(IAE, () -> builder.connectTimeout(ofSeconds(0)));
+        assertThrows(IAE, () -> builder.connectTimeout(ofSeconds(-1)));
+        assertThrows(IAE, () -> builder.connectTimeout(ofNanos(-100)));
+    }
+
     static class TestExecutor implements Executor {
         public void execute(Runnable r) { }
     }
@@ -292,6 +315,7 @@
 
     static class MockHttpClient extends HttpClient {
         @Override public Optional<CookieHandler> cookieHandler() { return null; }
+        @Override public Optional<Duration> connectTimeout() { return null; }
         @Override public Redirect followRedirects() { return null; }
         @Override public Optional<ProxySelector> proxy() { return null; }
         @Override public SSLContext sslContext() { return null; }