001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU General
007: * Public License Version 2 only ("GPL") or the Common Development and Distribution
008: * License("CDDL") (collectively, the "License"). You may not use this file except in
009: * compliance with the License. You can obtain a copy of the License at
010: * http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
011: * License for the specific language governing permissions and limitations under the
012: * License. When distributing the software, include this License Header Notice in
013: * each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Sun
014: * designates this particular file as subject to the "Classpath" exception as
015: * provided by Sun in the GPL Version 2 section of the License file that
016: * accompanied this code. If applicable, add the following below the License Header,
017: * with the fields enclosed by brackets [] replaced by your own identifying
018: * information: "Portions Copyrighted [year] [name of copyright owner]"
019: *
020: * Contributor(s):
021: *
022: * The Original Software is NetBeans. The Initial Developer of the Original Software
023: * is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
024: * Rights Reserved.
025: *
026: * If you wish your version of this file to be governed by only the CDDL or only the
027: * GPL Version 2, indicate your decision by adding "[Contributor] elects to include
028: * this software in this distribution under the [CDDL or GPL Version 2] license." If
029: * you do not indicate a single choice of license, a recipient has the option to
030: * distribute your version of this file under either the CDDL, the GPL Version 2 or
031: * to extend the choice of license to its licensees as provided above. However, if
032: * you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
033: * the option applies only if the new code is made subject to such option by the
034: * copyright holder.
035: */
036:
037: package org.connector;
038:
039: import java.io.FileNotFoundException;
040: import java.io.IOException;
041: import java.io.InputStream;
042: import java.net.InetSocketAddress;
043: import java.net.MalformedURLException;
044: import java.net.Proxy;
045: import java.net.URL;
046: import java.net.URLConnection;
047: import org.MyTestCase;
048: import org.netbeans.installer.downloader.connector.MyProxy;
049: import org.netbeans.installer.downloader.connector.URLConnector;
050: import org.server.TestDataGenerator;
051: import org.server.WithServerTestCase;
052:
053: /**
054: *
055: * @author Danila_Dugurov
056: */
057: public class ConnectorTest extends WithServerTestCase {
058:
059: public static URL smallest;
060: public static URL small;
061: public static URL noResource;
062:
063: static {
064: try {
065: smallest = new URL("http://localhost:8080/"
066: + TestDataGenerator.testFiles[0]);
067: small = new URL("http://127.0.0.1:8080/"
068: + TestDataGenerator.testFiles[1]);
069: noResource = new URL("http://localhost:8080/kadabra.data");
070: } catch (MalformedURLException ex) {
071: ex.printStackTrace();
072: }
073: }
074:
075: public void testDirect() {
076: URLConnector connector = new URLConnector(MyTestCase.testWD);
077: URLConnection connection = null;
078: try {
079: connection = connector.establishConnection(smallest);
080: assertEquals(TestDataGenerator.testFileSizes[0], connection
081: .getContentLength());
082: connection.getInputStream().close();
083: connection = connector.establishConnection(small);
084: assertEquals(TestDataGenerator.testFileSizes[1], connection
085: .getContentLength());
086: connection.getInputStream().close();
087: } catch (IOException ex) {
088: ex.printStackTrace();
089: fail();
090: }
091: try {
092: connection = connector.establishConnection(noResource);
093: connection.getInputStream().close();
094: fail();
095: } catch (FileNotFoundException ex) {
096: } catch (IOException ex) {
097: ex.printStackTrace();
098: fail();
099: } finally {
100: if (connection != null) {
101: try {
102: final InputStream in = connection.getInputStream();
103: if (in != null)
104: in.close();
105: } catch (IOException ignored) {//skip
106: }
107: }
108: }
109: }
110:
111: public void testWithProxy() {
112: URLConnector connector = new URLConnector(MyTestCase.testWD);
113: URLConnection connection = null;
114: try {
115: connection = connector.establishConnection(smallest);
116: connection.getInputStream().close();
117: } catch (IOException ex) {
118: ex.printStackTrace();
119: fail();
120: }
121: connector.addProxy(new MyProxy(new Proxy(Proxy.Type.HTTP,
122: new InetSocketAddress("www.fake.com", 1234))));
123: connector.setUseProxy(true);
124: try {
125: connection = connector.establishConnection(smallest);
126: connection.getInputStream().close();
127: fail();//what's the matter?It's seems to me that sometimes for localhost java URLConnection just ignor proxy as argument.
128: } catch (IOException ex) {
129: System.out.println(ex.getMessage());
130: }
131: }
132:
133: public void testWithProxyWithByPassList() {
134: URLConnector connector = new URLConnector(MyTestCase.testWD);
135: connector.addProxy(new MyProxy(new Proxy(Proxy.Type.HTTP,
136: new InetSocketAddress("www.fake.com", 1234))));
137: connector.setUseProxy(true);
138: connector.addByPassHost("127.0.0.1");
139: URLConnection connection = null;
140: try {
141: connection = connector.establishConnection(smallest);
142: connection.getInputStream().close();
143: fail();
144: } catch (IOException ex) {
145: System.out.println(ex.getMessage());
146: }
147: try {
148: connection = connector.establishConnection(small);
149: connection.getInputStream().close();
150: } catch (IOException ex) {
151: ex.printStackTrace();
152: fail();
153: }
154: }
155: }
|