1   /*
2    * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/TestLocalHostBase.java,v 1.6 2004/06/25 03:34:56 mbecke Exp $
3    * $Revision: 155418 $
4    * $Date: 2005-02-26 08:01:52 -0500 (Sat, 26 Feb 2005) $
5    * ====================================================================
6    *
7    *  Copyright 2002-2004 The Apache Software Foundation
8    *
9    *  Licensed under the Apache License, Version 2.0 (the "License");
10   *  you may not use this file except in compliance with the License.
11   *  You may obtain a copy of the License at
12   *
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   *
15   *  Unless required by applicable law or agreed to in writing, software
16   *  distributed under the License is distributed on an "AS IS" BASIS,
17   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   *  See the License for the specific language governing permissions and
19   *  limitations under the License.
20   * ====================================================================
21   *
22   * This software consists of voluntary contributions made by many
23   * individuals on behalf of the Apache Software Foundation.  For more
24   * information on the Apache Software Foundation, please see
25   * <http://www.apache.org/>.
26   *
27   * [Additional notices, if required by prior licensing conditions]
28   *
29   */
30  package org.apache.commons.httpclient;
31  
32  import junit.framework.TestCase;
33  
34  /***
35   * The base class for all tests that need to connection to the localhost
36   * web server.
37   * 
38   * @author Michael Becke
39   */
40  public abstract class TestLocalHostBase extends TestCase {
41  
42      private final String protocol = System.getProperty(
43          "httpclient.test.localHost.protocol",
44          "http"
45      );
46      private final String host = System.getProperty("httpclient.test.localHost","localhost");
47      private final int port;
48      private final String proxyHost = System.getProperty("httpclient.test.proxy.host");
49      private final int proxyPort;
50      
51      /***
52       * Constructor for TestLocalHostBase.
53       * @param testName
54       */
55      public TestLocalHostBase(String testName) {
56          super(testName);
57          String portString = System.getProperty("httpclient.test.localPort","8080");
58          int tempPort = 8080;
59          try {
60              tempPort = Integer.parseInt(portString);
61          } catch(Exception e) {
62              tempPort = 8080;
63          }
64          port = tempPort;
65          String proxyPortString = System.getProperty("httpclient.test.proxy.port","3128");
66          int tempProxyPort = 3128;
67          try {
68              tempProxyPort = Integer.parseInt(proxyPortString);
69          } catch(Exception e) {
70              tempProxyPort = 3128;
71          }
72          proxyPort = tempProxyPort;
73      }
74  
75      /***
76       * Gets a new HttpClient instance.  This instance has been configured
77       * with all appropriate host/proxy values.
78       * 
79       * @return a new HttpClient instance
80       */
81      public HttpClient createHttpClient() {
82          return createHttpClient(null);
83      }
84  
85      /***
86       * Gets a new HttpClient instance that uses the given connection manager. 
87       * This instance has been configured with all appropriate host/proxy values.
88       * 
89       * @param connectionManager the connection manager to use or <code>null</code>
90       * 
91       * @return a new HttpClient instance
92       */
93      public HttpClient createHttpClient(HttpConnectionManager connectionManager) {
94          
95          HttpClient client = null;
96  
97          if (connectionManager == null) {
98              client = new HttpClient();
99          } else {
100             client = new HttpClient(connectionManager);
101         }
102 
103         configureHostConfiguration(client.getHostConfiguration());
104 
105         return client;
106     }
107     
108     /***
109      * Configures the host config with the correct host and proxy settings.
110      * 
111      * @param hostConfiguration
112      */
113     public void configureHostConfiguration(HostConfiguration hostConfiguration) {
114         hostConfiguration.setHost(host, port, protocol);
115         if (proxyHost != null) {
116             hostConfiguration.setProxy(proxyHost, proxyPort);
117         }
118     }
119 
120     /***
121      * @return String
122      */
123     public String getHost() {
124         return host;
125     }
126 
127     /***
128      * @return int
129      */
130     public int getPort() {
131         return port;
132     }
133 
134     /***
135      * @return String
136      */
137     public String getProtocol() {
138         return protocol;
139     }
140 
141 }