[prev in list] [next in list] [prev in thread] [next in thread]
List: slide-dev
Subject: svn commit: r1128295 - in
From: sebb () apache ! org
Date: 2011-05-27 13:14:32
Message-ID: 20110527131432.8300F2388A36 () eris ! apache ! org
[Download RAW message or body]
Author: sebb
Date: Fri May 27 13:14:32 2011
New Revision: 1128295
URL: http://svn.apache.org/viewvc?rev=1128295&view=rev
Log:
Refactor HC4 SSL factory setup
Added:
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java \
(with props) Modified:
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.java
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jm \
eter/protocol/http/sampler/HTTPHC4Impl.java?rev=1128295&r1=1128294&r2=1128295&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java \
(original)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java \
Fri May 27 13:14:32 2011 @@ -29,7 +29,6 @@ import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
-import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -66,9 +65,6 @@ import org.apache.http.client.protocol.R
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.FormBodyPart;
@@ -94,6 +90,7 @@ import org.apache.jmeter.protocol.http.c
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.util.EncoderCache;
+import org.apache.jmeter.protocol.http.util.HC4TrustAllSSLSocketFactory;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
import org.apache.jmeter.protocol.http.util.HTTPFileArg;
import org.apache.jmeter.protocol.http.util.SlowHC4SSLSocketFactory;
@@ -133,19 +130,11 @@ public class HTTPHC4Impl extends HTTPHCA
}
};
- // Trust all certificates
- private static final TrustStrategy TRUSTALL = new TrustStrategy(){
- public boolean isTrusted(X509Certificate[] chain, String authType) {
- return true;
- }
- };
-
- // Allow all host names
- private static final AllowAllHostnameVerifier ALLOW_ALL_HOSTNAMES = new \
AllowAllHostnameVerifier();
-
- // Scheme used for slow sockets. Cannot be set as a default, because must be set \
on an HttpClient instance. + // Scheme used for slow HTTP sockets. Cannot be set \
as a default, because must be set on an HttpClient instance. private static final \
Scheme SLOW_HTTP;
- private static final Scheme SLOW_HTTPS;
+
+ // We always want to override the HTTPS scheme, because we want to trust all \
certificates and hosts + private static final Scheme HTTPS_SCHEME;
/*
* Create a set of default parameters from the ones initially created.
@@ -166,24 +155,32 @@ public class HTTPHC4Impl extends HTTPHCA
HttpClientDefaultParameters.load(file, DEFAULT_HTTP_PARAMS);
}
+ // Set up HTTP scheme override if necessary
if (CPS_HTTP > 0) {
log.info("Setting up HTTP SlowProtocol, cps="+CPS_HTTP);
SLOW_HTTP = new Scheme(PROTOCOL_HTTP, DEFAULT_HTTP_PORT, new \
SlowHC4SocketFactory(CPS_HTTP)); } else {
SLOW_HTTP = null;
}
+
+ // We always want to override the HTTPS scheme
+ Scheme https = null;
if (CPS_HTTPS > 0) {
log.info("Setting up HTTPS SlowProtocol, cps="+CPS_HTTPS);
- Scheme s = null;
try {
- s = new Scheme(PROTOCOL_HTTPS, DEFAULT_HTTPS_PORT, new \
SlowHC4SSLSocketFactory(CPS_HTTPS)); + https = new \
Scheme(PROTOCOL_HTTPS, DEFAULT_HTTPS_PORT, new SlowHC4SSLSocketFactory(CPS_HTTPS)); \
} catch (GeneralSecurityException e) {
- log.warn("Failed to initialise SLOW_HTTPS scheme", e);
+ log.warn("Failed to initialise SLOW_HTTPS scheme, cps="+CPS_HTTPS, \
e); }
- SLOW_HTTPS = s;
} else {
- SLOW_HTTPS = null;
+ log.info("Setting up HTTPS TrustAll scheme");
+ try {
+ https = new Scheme(PROTOCOL_HTTPS, DEFAULT_HTTPS_PORT, new \
HC4TrustAllSSLSocketFactory()); + } catch (GeneralSecurityException e) {
+ log.warn("Failed to initialise HTTPS TrustAll scheme", e);
+ }
}
+ HTTPS_SCHEME = https;
if (localAddress != null){
DEFAULT_HTTP_PARAMS.setParameter(ConnRoutePNames.LOCAL_ADDRESS, \
localAddress); }
@@ -448,7 +445,7 @@ public class HTTPHC4Impl extends HTTPHCA
HttpClient httpClient = map.get(key);
- if (httpClient == null){
+ if (httpClient == null){ // One-time init for this client
HttpParams clientParams = new DefaultedHttpParams(new BasicHttpParams(), \
DEFAULT_HTTP_PARAMS);
@@ -456,22 +453,15 @@ public class HTTPHC4Impl extends HTTPHCA
((AbstractHttpClient) httpClient).addResponseInterceptor(new \
ResponseContentEncoding());
((AbstractHttpClient) httpClient).addResponseInterceptor(METRICS_SAVER); \
// HACK
+ // Override the defualt schemes as necessary
SchemeRegistry schemeRegistry = \
httpClient.getConnectionManager().getSchemeRegistry();
- // Allow all hostnames and all certificates
- try {
- SSLSocketFactory socketFactory = new SSLSocketFactory(TRUSTALL, \
ALLOW_ALL_HOSTNAMES);
- Scheme sch = new Scheme(PROTOCOL_HTTPS, DEFAULT_HTTPS_PORT, \
socketFactory);
- schemeRegistry.register(sch);
- } catch (GeneralSecurityException e) {
- log.warn("Failed to register trust-all socket factory", e);
- }
-
if (SLOW_HTTP != null){
schemeRegistry.register(SLOW_HTTP);
}
- if (SLOW_HTTPS != null){
- schemeRegistry.register(SLOW_HTTPS);
+
+ if (HTTPS_SCHEME != null){
+ schemeRegistry.register(HTTPS_SCHEME);
}
// Set up proxy details
Added: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java?rev=1128295&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java \
(added)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java \
Fri May 27 13:14:32 2011 @@ -0,0 +1,47 @@
+/*
+ * 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 org.apache.jmeter.protocol.http.util;
+
+import java.security.GeneralSecurityException;
+import java.security.cert.X509Certificate;
+
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.conn.ssl.TrustStrategy;
+
+/**
+ * Apache HttpClient protocol factory to generate SSL sockets
+ */
+
+public class HC4TrustAllSSLSocketFactory extends SSLSocketFactory {
+
+ private static final TrustStrategy TRUSTALL = new TrustStrategy(){
+ public boolean isTrusted(X509Certificate[] chain, String authType) {
+ return true;
+ }
+ };
+
+ /**
+ * Create an SSL factory which trusts all certificates and hosts.
+ * {@link SSLSocketFactory#SSLSocketFactory(TrustStrategy, \
org.apache.http.conn.ssl.X509HostnameVerifier)} + * @throws \
GeneralSecurityException if there's a problem setting up the security + */
+ public HC4TrustAllSSLSocketFactory() throws GeneralSecurityException {
+ super(TRUSTALL, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ }
+}
Propchange: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jm \
eter/protocol/http/util/SlowHC4SSLSocketFactory.java?rev=1128295&r1=1128294&r2=1128295&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.java \
(original)
+++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.java \
Fri May 27 13:14:32 2011 @@ -20,11 +20,7 @@ package org.apache.jmeter.protocol.http.
import java.net.Socket;
import java.security.GeneralSecurityException;
-import java.security.cert.X509Certificate;
-import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.params.HttpParams;
import org.apache.jmeter.util.SlowSocket;
@@ -32,28 +28,25 @@ import org.apache.jmeter.util.SlowSocket
* Apache HttpClient protocol factory to generate "slow" SSL sockets for emulating \
dial-up modems
*/
-public class SlowHC4SSLSocketFactory extends SSLSocketFactory {
-
- private static final TrustStrategy TRUSTALL = new TrustStrategy(){
- public boolean isTrusted(X509Certificate[] chain, String authType) {
- return true;
- }
- };
-
- private static final AllowAllHostnameVerifier ALLOW_ALL_HOSTS = new \
AllowAllHostnameVerifier(); +public class SlowHC4SSLSocketFactory extends \
HC4TrustAllSSLSocketFactory {
private final int CPS; // Characters per second to emulate
/**
* Create a factory
- * @param cps - characters per second
+ * @param cps - characters per second, must be > 0
* @throws GeneralSecurityException if there's a problem setting up the security
+ * @throws IllegalArgumentException if cps ≤ 0
*/
public SlowHC4SSLSocketFactory(final int cps) throws GeneralSecurityException {
- super(TRUSTALL, ALLOW_ALL_HOSTS);
+ super();
+ if (cps <= 0) {
+ throw new IllegalArgumentException("CPS must be > 0, but is "+cps);
+ }
CPS = cps;
}
+ // Override all the socket creation methods in SSLSocketFactory
@Override
public Socket createSocket(final HttpParams params) {
return new SlowSocket(CPS);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@jakarta.apache.org
For additional commands, e-mail: notifications-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic