| /* Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package tests.api.java.net; |
| |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestTargets; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| |
| import java.io.IOException; |
| import java.net.InetSocketAddress; |
| import java.net.NetPermission; |
| import java.net.Proxy; |
| import java.net.ProxySelector; |
| import java.net.SocketAddress; |
| import java.net.SocketException; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| import java.security.Permission; |
| import java.util.List; |
| import java.util.Properties; |
| |
| import junit.framework.TestCase; |
| import tests.util.TestEnvironment; |
| |
| @TestTargetClass(ProxySelector.class) |
| public class ProxySelectorTest extends TestCase { |
| |
| private static final String HTTP_PROXY_HOST = "127.0.0.1"; |
| |
| private static final int HTTP_PROXY_PORT = 80; |
| |
| private static final String HTTPS_PROXY_HOST = "127.0.0.2"; |
| |
| private static final int HTTPS_PROXY_PORT = 443; |
| |
| private static final String FTP_PROXY_HOST = "127.0.0.3"; |
| |
| private static final int FTP_PROXY_PORT = 80; |
| |
| private static final String SOCKS_PROXY_HOST = "127.0.0.4"; |
| |
| private static final int SOCKS_PROXY_PORT = 1080; |
| |
| private static URI httpUri; |
| |
| private static URI ftpUri; |
| |
| private static URI httpsUri; |
| |
| private static URI tcpUri; |
| |
| private List proxyList; |
| |
| private ProxySelector selector = ProxySelector.getDefault(); |
| |
| static { |
| try { |
| httpUri = new URI("http://test.com"); |
| ftpUri = new URI("ftp://test.com"); |
| httpsUri = new URI("https://test.com"); |
| tcpUri = new URI("socket://host.com"); |
| } catch (URISyntaxException e) { |
| |
| } |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#getDefault() |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for getDefault method.", |
| method = "getDefault", |
| args = {} |
| ) |
| public void test_getDefault() { |
| ProxySelector selector1 = ProxySelector.getDefault(); |
| assertNotNull(selector1); |
| |
| ProxySelector selector2 = ProxySelector.getDefault(); |
| assertSame(selector1, selector2); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#getDefault() |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for getDefault method.", |
| method = "getDefault", |
| args = {} |
| ) |
| public void test_getDefault_Security() { |
| SecurityManager orignalSecurityManager = System.getSecurityManager(); |
| try { |
| System.setSecurityManager(new MockSecurityManager()); |
| } catch (SecurityException e) { |
| System.err.println("No setSecurityManager permission."); |
| System.err.println("test_getDefault_Security is not tested"); |
| return; |
| } |
| try { |
| ProxySelector.getDefault(); |
| fail("should throw SecurityException"); |
| } catch (SecurityException e) { |
| // expected |
| } finally { |
| System.setSecurityManager(orignalSecurityManager); |
| } |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#setDefault(ProxySelector)} |
| */ |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for setDefault method.", |
| method = "setDefault", |
| args = {java.net.ProxySelector.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "ProxySelector", |
| args = {} |
| ) |
| }) |
| public void test_setDefaultLjava_net_ProxySelector() { |
| ProxySelector originalSelector = ProxySelector.getDefault(); |
| try { |
| ProxySelector newSelector = new MockProxySelector(); |
| ProxySelector.setDefault(newSelector); |
| assertSame(newSelector, ProxySelector.getDefault()); |
| // use null to unset |
| ProxySelector.setDefault(null); |
| assertSame(null, ProxySelector.getDefault()); |
| } finally { |
| ProxySelector.setDefault(originalSelector); |
| } |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#setDefault(ProxySelector)} |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for setDefault method.", |
| method = "setDefault", |
| args = {java.net.ProxySelector.class} |
| ) |
| public void test_setDefaultLjava_net_ProxySelector_Security() { |
| ProxySelector originalSelector = ProxySelector.getDefault(); |
| SecurityManager orignalSecurityManager = System.getSecurityManager(); |
| try { |
| System.setSecurityManager(new MockSecurityManager()); |
| } catch (SecurityException e) { |
| System.err.println("No setSecurityManager permission."); |
| System.err |
| .println("test_setDefaultLjava_net_ProxySelector_Security is not tested"); |
| return; |
| } |
| try { |
| ProxySelector.setDefault(new MockProxySelector()); |
| fail("should throw SecurityException"); |
| } catch (SecurityException e) { |
| // expected |
| } finally { |
| System.setSecurityManager(orignalSecurityManager); |
| ProxySelector.setDefault(originalSelector); |
| } |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectExact() |
| throws URISyntaxException { |
| // no proxy, return a proxyList only contains NO_PROXY |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); |
| |
| proxyList = selector.select(tcpUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectExact_NullHost() |
| throws URISyntaxException { |
| // regression test for Harmony-1063 |
| httpUri = new URI("http://a@"); |
| ftpUri = new URI("ftp://a@"); |
| httpsUri = new URI("https://a@"); |
| tcpUri = new URI("socket://a@"); |
| // no proxy, return a proxyList only contains NO_PROXY |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList, Proxy.NO_PROXY); |
| |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTP_PROXY_HOST, |
| HTTP_PROXY_PORT); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTPS_PROXY_HOST, |
| HTTPS_PROXY_PORT); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList, Proxy.Type.HTTP, FTP_PROXY_HOST, |
| FTP_PROXY_PORT); |
| |
| proxyList = selector.select(tcpUri); |
| assertProxyEquals(proxyList, Proxy.Type.SOCKS, SOCKS_PROXY_HOST, |
| SOCKS_PROXY_PORT); |
| |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectExact_DefaultPort() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); |
| |
| proxyList = selector.select(tcpUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectExact_InvalidPort() |
| throws URISyntaxException { |
| final String INVALID_PORT = "abc"; |
| |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", INVALID_PORT); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", INVALID_PORT); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", INVALID_PORT); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksproxyPort", INVALID_PORT); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); |
| |
| proxyList = selector.select(tcpUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| // RI may fail this test case. |
| // Uncomment this test case when regex.jar is ready. |
| /* |
| public void test_selectLjava_net_URI_Select_NonProxyHosts() |
| throws URISyntaxException { |
| // RI's bug. Some RIs may fail this test case. |
| URI[] httpUris = { new URI("http://test.com"), |
| new URI("http://10.10.1.2"), new URI("http://a"), |
| new URI("http://def.abc.com") }; |
| URI[] ftpUris = { new URI("ftp://test.com"), |
| new URI("ftp://10.10.1.2"), new URI("ftp://a"), |
| new URI("ftp://def.abc.com") }; |
| |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com"); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com"); |
| |
| for (int i = 0; i < httpUris.length; i++) { |
| proxyList = selector.select(httpUris[i]); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| |
| for (int i = 0; i < ftpUris.length; i++) { |
| proxyList = selector.select(ftpUris[i]); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| }*/ |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectLikeHTTP() |
| throws URISyntaxException { |
| System.setProperty("http.proxyHost", ""); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectNoHTTP() |
| throws URISyntaxException { |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| |
| proxyList = selector.select(httpUri); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectLikeHTTPS() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy host empty |
| System.setProperty("http.proxyHost", ""); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectNoHTTPS() |
| throws URISyntaxException { |
| // set https proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| |
| proxyList = selector.select(httpsUri); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectLikeFTP() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set ftp host empty |
| System.setProperty("ftp.proxyHost", ""); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectNoFTP() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| |
| proxyList = selector.select(ftpUri); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_SelectNoSOCKS() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| |
| proxyList = selector.select(tcpUri); |
| assertProxyEquals(proxyList,Proxy.NO_PROXY); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for connectFailed method.", |
| method = "connectFailed", |
| args = {java.net.URI.class, java.net.SocketAddress.class, java.io.IOException.class} |
| ) |
| public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException() |
| throws URISyntaxException { |
| // set http proxy |
| System.setProperty("http.proxyHost", HTTP_PROXY_HOST); |
| System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); |
| // set https proxy |
| System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); |
| System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); |
| // set ftp proxy |
| System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); |
| System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); |
| // set socks proxy |
| System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); |
| System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); |
| |
| List proxyList1 = selector.select(httpUri); |
| assertNotNull(proxyList1); |
| assertEquals(1, proxyList1.size()); |
| Proxy proxy1 = (Proxy) proxyList1.get(0); |
| selector |
| .connectFailed(httpUri, proxy1.address(), new SocketException()); |
| |
| List proxyList2 = selector.select(httpUri); |
| assertNotNull(proxyList2); |
| assertEquals(1, proxyList2.size()); |
| Proxy proxy2 = (Proxy) proxyList2.get(0); |
| // Default implemention doesn't change the proxy list |
| assertEquals(proxy1, proxy2); |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for connectFailed method.", |
| method = "connectFailed", |
| args = {java.net.URI.class, java.net.SocketAddress.class, java.io.IOException.class} |
| ) |
| public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException_IllegalArguement() |
| throws URISyntaxException { |
| SocketAddress sa = InetSocketAddress.createUnresolved("127.0.0.1", 0); |
| try { |
| selector.connectFailed(null, sa, new SocketException()); |
| fail("should throw IllegalArgumentException if any argument is null."); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } |
| try { |
| selector.connectFailed(httpUri, null, new SocketException()); |
| fail("should throw IllegalArgumentException if any argument is null."); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } |
| try { |
| selector.connectFailed(httpUri, sa, null); |
| fail("should throw IllegalArgumentException if any argument is null."); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } |
| |
| } |
| |
| /** |
| * @tests java.net.ProxySelector#select(URI) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "This is a complete subset of tests for select method.", |
| method = "select", |
| args = {java.net.URI.class} |
| ) |
| public void test_selectLjava_net_URI_IllegalArgument() |
| throws URISyntaxException { |
| URI[] illegalUris = { new URI("abc"), new URI("http"), null }; |
| for (int i = 0; i < illegalUris.length; i++) { |
| try { |
| selector.select(illegalUris[i]); |
| fail("should throw IllegalArgumentException"); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } |
| } |
| } |
| |
| /* |
| * asserts whether selectedProxyList contains one and only one element, |
| * and the element equals proxy. |
| */ |
| private void assertProxyEquals(List selectedProxyList, Proxy proxy) { |
| assertNotNull(selectedProxyList); |
| assertEquals(1, selectedProxyList.size()); |
| assertEquals((Proxy) selectedProxyList.get(0), proxy); |
| } |
| |
| /* |
| * asserts whether selectedProxyList contains one and only one element, |
| * and the element equals proxy which is represented by arguments "type", |
| * "host","port". |
| */ |
| private void assertProxyEquals(List selectedProxyList, Proxy.Type type, |
| String host, int port) { |
| SocketAddress sa = InetSocketAddress.createUnresolved(host, port); |
| Proxy proxy = new Proxy(type, sa); |
| assertProxyEquals(selectedProxyList, proxy); |
| } |
| |
| /* |
| * Mock selector for setDefault test |
| */ |
| static class MockProxySelector extends ProxySelector { |
| |
| public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { |
| |
| } |
| |
| public List <Proxy> select(URI uri) { |
| return null; |
| } |
| } |
| |
| /* |
| * MockSecurityMaanger. It denies NetPermission("getProxySelector") and |
| * NetPermission("setProxySelector"). |
| */ |
| class MockSecurityManager extends SecurityManager { |
| public void checkPermission(Permission permission) { |
| if (permission instanceof NetPermission) { |
| if ("getProxySelector".equals(permission.getName())) { |
| throw new SecurityException(); |
| } |
| } |
| |
| if (permission instanceof NetPermission) { |
| if ("setProxySelector".equals(permission.getName())) { |
| throw new SecurityException(); |
| } |
| } |
| |
| if (permission instanceof RuntimePermission) { |
| if ("setSecurityManager".equals(permission.getName())) { |
| return; |
| } |
| } |
| } |
| } |
| |
| /* |
| * @see junit.framework.TestCase#setUp() |
| */ |
| protected void setUp() throws Exception { |
| super.setUp(); |
| TestEnvironment.reset(); |
| } |
| |
| /* |
| * @see junit.framework.TestCase#tearDown() |
| */ |
| protected void tearDown() throws Exception { |
| TestEnvironment.reset(); |
| super.tearDown(); |
| } |
| } |