1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 7fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net; 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetSocketAddress; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.NetPermission; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.Proxy; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.ProxySelector; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketAddress; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URI; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URISyntaxException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ProxySelectorTest extends TestCase { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String HTTP_PROXY_HOST = "127.0.0.1"; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int HTTP_PROXY_PORT = 80; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String HTTPS_PROXY_HOST = "127.0.0.2"; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int HTTPS_PROXY_PORT = 443; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String FTP_PROXY_HOST = "127.0.0.3"; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int FTP_PROXY_PORT = 80; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String SOCKS_PROXY_HOST = "127.0.0.4"; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int SOCKS_PROXY_PORT = 1080; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static URI httpUri; 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static URI ftpUri; 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static URI httpsUri; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static URI tcpUri; 58fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private List proxyList; 60fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ProxySelector selector = ProxySelector.getDefault(); 62fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes httpUri = new URI("http://test.com"); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ftpUri = new URI("ftp://test.com"); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes httpsUri = new URI("https://test.com"); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tcpUri = new URI("socket://host.com"); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Original system properties must be restored after running each test case. 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Properties originalSystemProperties; 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#getDefault() 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDefault() { 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector selector1 = ProxySelector.getDefault(); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(selector1); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector selector2 = ProxySelector.getDefault(); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(selector1, selector2); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#setDefault(ProxySelector)} 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setDefaultLjava_net_ProxySelector() { 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector originalSelector = ProxySelector.getDefault(); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector newSelector = new MockProxySelector(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector.setDefault(newSelector); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(newSelector, ProxySelector.getDefault()); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use null to unset 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector.setDefault(null); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(null, ProxySelector.getDefault()); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProxySelector.setDefault(originalSelector); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectExact() 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no proxy, return a proxyList only contains NO_PROXY 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); 134fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); 137fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(tcpUri); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 142fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectExact_NullHost() 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // regression test for Harmony-1063 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes httpUri = new URI("http://a@"); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ftpUri = new URI("ftp://a@"); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes httpsUri = new URI("https://a@"); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tcpUri = new URI("socket://a@"); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no proxy, return a proxyList only contains NO_PROXY 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.NO_PROXY); 156fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTP_PROXY_HOST, 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HTTP_PROXY_PORT); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTPS_PROXY_HOST, 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HTTPS_PROXY_PORT); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.Type.HTTP, FTP_PROXY_HOST, 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FTP_PROXY_PORT); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(tcpUri); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.Type.SOCKS, SOCKS_PROXY_HOST, 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SOCKS_PROXY_PORT); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 187fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Regression for HARMONY-4281 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectExact_NullHost_withNoProxyHostsProperty(){ 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1"); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTP_PROXY_HOST, 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HTTP_PROXY_PORT); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectExact_DefaultPort() 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); 228fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); 231fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(tcpUri); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectExact_InvalidPort() 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final String INVALID_PORT = "abc"; 243fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", INVALID_PORT); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", INVALID_PORT); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", INVALID_PORT); 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksproxyPort", INVALID_PORT); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(tcpUri); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 273fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // RI may fail this test case. 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Uncomment this test case when regex.jar is ready. 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_Select_NonProxyHosts() 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 278fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // RI's bug. Some RIs may fail this test case. 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] httpUris = { new URI("http://test.com"), 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://10.10.1.2"), new URI("http://a"), 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://def.abc.com") }; 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] ftpUris = { new URI("ftp://test.com"), 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("ftp://10.10.1.2"), new URI("ftp://a"), 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("ftp://def.abc.com") }; 285fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com"); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com"); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < httpUris.length; i++) { 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUris[i]); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < ftpUris.length; i++) { 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUris[i]); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }*/ 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectLikeHTTP() 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", ""); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectNoHTTP() 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpUri); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectLikeHTTPS() 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy host empty 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", ""); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectNoHTTPS() 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(httpsUri); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectLikeFTP() 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp host empty 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", ""); 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectNoFTP() 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(ftpUri); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_SelectNoSOCKS() 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyList = selector.select(tcpUri); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(proxyList,Proxy.NO_PROXY); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException() 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set http proxy 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyHost", HTTP_PROXY_HOST); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT)); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set https proxy 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyHost", HTTPS_PROXY_HOST); 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT)); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set ftp proxy 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyHost", FTP_PROXY_HOST); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT)); 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set socks proxy 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyHost", SOCKS_PROXY_HOST); 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT)); 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List proxyList1 = selector.select(httpUri); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(proxyList1); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, proxyList1.size()); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Proxy proxy1 = (Proxy) proxyList1.get(0); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes selector 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .connectFailed(httpUri, proxy1.address(), new SocketException()); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List proxyList2 = selector.select(httpUri); 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(proxyList2); 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, proxyList2.size()); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Proxy proxy2 = (Proxy) proxyList2.get(0); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Default implementation doesn't change the proxy list 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(proxy1, proxy2); 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException_IllegalArguement() 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SocketAddress sa = InetSocketAddress.createUnresolved("127.0.0.1", 0); 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes selector.connectFailed(null, sa, new SocketException()); 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException if any argument is null."); 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes selector.connectFailed(httpUri, null, new SocketException()); 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException if any argument is null."); 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes selector.connectFailed(httpUri, sa, null); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException if any argument is null."); 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.ProxySelector#select(URI) 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_selectLjava_net_URI_IllegalArgument() 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] illegalUris = { new URI("abc"), new URI("http"), null }; 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < illegalUris.length; i++) { 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes selector.select(illegalUris[i]); 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * asserts whether selectedProxyList contains one and only one element, 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and the element equals proxy. 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void assertProxyEquals(List selectedProxyList, Proxy proxy) { 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(selectedProxyList); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, selectedProxyList.size()); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((Proxy) selectedProxyList.get(0), proxy); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 518fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * asserts whether selectedProxyList contains one and only one element, 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and the element equals proxy which is represented by arguments "type", 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * "host","port". 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void assertProxyEquals(List selectedProxyList, Proxy.Type type, 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host, int port) { 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SocketAddress sa = InetSocketAddress.createUnresolved(host, port); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Proxy proxy = new Proxy(type, sa); 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertProxyEquals(selectedProxyList, proxy); 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 530fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Mock selector for setDefault test 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class MockProxySelector extends ProxySelector { 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public List <Proxy> select(URI uri) { 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see junit.framework.TestCase#setUp() 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // save original system properties 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes originalSystemProperties = (Properties) System.getProperties().clone(); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see junit.framework.TestCase#tearDown() 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore original system properties 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperties(originalSystemProperties); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 563