http-client-branch: add a test for the default proxy selector http-client-branch
authorchegar
Mon, 12 Mar 2018 13:11:15 +0000
branchhttp-client-branch
changeset 56278 8bc5fb608e30
parent 56275 19e3bbc3e471
child 56280 2baa59cfe37b
http-client-branch: add a test for the default proxy selector
src/java.net.http/share/classes/java/net/http/HttpClient.java
test/jdk/java/net/httpclient/whitebox/DefaultProxyDriver.java
test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/DefaultProxy.java
--- a/src/java.net.http/share/classes/java/net/http/HttpClient.java	Sun Mar 11 13:50:18 2018 +0000
+++ b/src/java.net.http/share/classes/java/net/http/HttpClient.java	Mon Mar 12 13:11:15 2018 +0000
@@ -358,7 +358,7 @@
      * builder, then the {@code Optional} is empty.
      *
      * <p> Even though this method may return an empty optional, the {@code
-     * HttpClient} may still have an non-exposed {@linkplain
+     * HttpClient} may still have a non-exposed {@linkplain
      * Builder#proxy(ProxySelector) default proxy selector} that is
      * used for sending HTTP requests.
      *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/DefaultProxyDriver.java	Mon Mar 12 13:11:15 2018 +0000
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @modules java.net.http/jdk.internal.net.http
+ * @summary Verifies that the HTTP Client, by default, uses the system-wide
+ * proxy selector, and that that selector supports the standard HTTP proxy
+ * system properties.
+ * @run testng/othervm
+ *     -Dhttp.proxyHost=foo.proxy.com
+ *     -Dhttp.proxyPort=9876
+ *     -Dhttp.nonProxyHosts=*.direct.com
+ *     -Dhttps.proxyHost=secure.proxy.com
+ *     -Dhttps.proxyPort=5443
+ *     java.net.http/jdk.internal.net.http.DefaultProxy
+ */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/DefaultProxy.java	Mon Mar 12 13:11:15 2018 +0000
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package jdk.internal.net.http;
+
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.ProxySelector;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.util.List;
+import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
+public class DefaultProxy {
+
+    static ProxySelector getProxySelector() {
+        return (((HttpClientFacade)HttpClient.newHttpClient()).impl).proxySelector();
+    }
+
+    @Test
+    public void testDefault() {
+        ProxySelector ps = getProxySelector();
+        System.out.println("HttpClientImpl proxySelector:" + ps);
+        assertEquals(ps, ProxySelector.getDefault());
+    }
+
+    // From the test driver
+    // -Dhttp.proxyHost=foo.proxy.com
+    // -Dhttp.proxyPort=9876
+    // -Dhttp.nonProxyHosts=*.direct.com
+    @Test
+    public void testHttpProxyProps() {
+        ProxySelector ps = getProxySelector();
+
+        URI uri = URI.create("http://foo.com/example.html");
+        List<Proxy> plist = ps.select(uri);
+        System.out.println("proxy list for " + uri + " : " + plist);
+        assertEquals(plist.size(), 1);
+        Proxy proxy = plist.get(0);
+        assertEquals(proxy.type(), Proxy.Type.HTTP);
+        InetSocketAddress expectedAddr =
+                InetSocketAddress.createUnresolved("foo.proxy.com", 9876);
+        assertEquals(proxy.address(), expectedAddr);
+
+        // nonProxyHosts
+        uri = URI.create("http://foo.direct.com/example.html");
+        plist = ps.select(uri);
+        System.out.println("proxy list for " + uri + " : " + plist);
+        assertEquals(plist.size(), 1);
+        proxy = plist.get(0);
+        assertEquals(proxy.type(), Proxy.Type.DIRECT);
+        assertEquals(proxy.address(), null);
+    }
+
+    // From the test driver
+    // -Dhttp.proxyHost=secure.proxy.com
+    // -Dhttp.proxyPort=5443
+    @Test
+    public void testHttpsProxyProps() {
+        ProxySelector ps = getProxySelector();
+
+        URI uri = URI.create("https://foo.com/example.html");
+        List<Proxy> plist = ps.select(uri);
+        System.out.println("proxy list for " + uri + " : " + plist);
+        assertEquals(plist.size(), 1);
+        Proxy proxy = plist.get(0);
+        assertEquals(proxy.type(), Proxy.Type.HTTP);
+        InetSocketAddress expectedAddr =
+                InetSocketAddress.createUnresolved("secure.proxy.com", 5443);
+        assertEquals(proxy.address(), expectedAddr);
+
+        // nonProxyHosts
+        uri = URI.create("https://foo.direct.com/example.html");
+        plist = ps.select(uri);
+        System.out.println("proxy list for " + uri + " : " + plist);
+        assertEquals(plist.size(), 1);
+        proxy = plist.get(0);
+        assertEquals(proxy.type(), Proxy.Type.DIRECT);
+        assertEquals(proxy.address(), null);
+    }
+
+}