You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2013/08/30 00:40:23 UTC

svn commit: r1518848 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java

Author: sebb
Date: Thu Aug 29 22:40:23 2013
New Revision: 1518848

URL: http://svn.apache.org/r1518848
Log:
Proxy should deliver failed requests to any configured Listeners
Allow deliverSampler to just send results
Bugzilla Id: 55506

Modified:
    jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java

Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java?rev=1518848&r1=1518847&r2=1518848&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java (original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java Thu Aug 29 22:40:23 2013
@@ -376,31 +376,38 @@ public class ProxyControl extends Generi
 
     /**
      * Receives the recorded sampler from the proxy server for placing in the
-     * test tree. param serverResponse to be added to allow saving of the
-     * server's response while recording. A future consideration.
+     * test tree; this is skipped if the sampler is null (e.g. for recording SSL errors)
+     * Always sends the result to any registered sample listeners.
+     *
+     * @param sampler the sampler, may be null
+     * @param subConfigs the configuration elements to be added (e.g. header namager)
+     * @param result the sample result, not null
+     * TODO param serverResponse to be added to allow saving of the
+     * server's response while recording.
      */
     public synchronized void deliverSampler(final HTTPSamplerBase sampler, final TestElement[] subConfigs, final SampleResult result) {
-        if (filterContentType(result) && filterUrl(sampler)) {
-            JMeterTreeNode myTarget = findTargetControllerNode();
-            @SuppressWarnings("unchecked") // OK, because find only returns correct element types
-            Collection<ConfigTestElement> defaultConfigurations = (Collection<ConfigTestElement>) findApplicableElements(myTarget, ConfigTestElement.class, false);
-            @SuppressWarnings("unchecked") // OK, because find only returns correct element types
-            Collection<Arguments> userDefinedVariables = (Collection<Arguments>) findApplicableElements(myTarget, Arguments.class, true);
-
-            removeValuesFromSampler(sampler, defaultConfigurations);
-            replaceValues(sampler, subConfigs, userDefinedVariables);
-            sampler.setAutoRedirects(samplerRedirectAutomatically.get());
-            sampler.setFollowRedirects(samplerFollowRedirects.get());
-            sampler.setUseKeepAlive(useKeepAlive.get());
-            sampler.setImageParser(samplerDownloadImages.get());
-
-            placeSampler(sampler, subConfigs, myTarget);
-        }
-        else {
-            if(log.isDebugEnabled()) {
-                log.debug("Sample excluded based on url or content-type: " + result.getUrlAsString() + " - " + result.getContentType());
+        if (sampler != null) {
+            if (filterContentType(result) && filterUrl(sampler)) {
+                JMeterTreeNode myTarget = findTargetControllerNode();
+                @SuppressWarnings("unchecked") // OK, because find only returns correct element types
+                Collection<ConfigTestElement> defaultConfigurations = (Collection<ConfigTestElement>) findApplicableElements(myTarget, ConfigTestElement.class, false);
+                @SuppressWarnings("unchecked") // OK, because find only returns correct element types
+                Collection<Arguments> userDefinedVariables = (Collection<Arguments>) findApplicableElements(myTarget, Arguments.class, true);
+    
+                removeValuesFromSampler(sampler, defaultConfigurations);
+                replaceValues(sampler, subConfigs, userDefinedVariables);
+                sampler.setAutoRedirects(samplerRedirectAutomatically.get());
+                sampler.setFollowRedirects(samplerFollowRedirects.get());
+                sampler.setUseKeepAlive(useKeepAlive.get());
+                sampler.setImageParser(samplerDownloadImages.get());
+    
+                placeSampler(sampler, subConfigs, myTarget);
+            } else {
+                if(log.isDebugEnabled()) {
+                    log.debug("Sample excluded based on url or content-type: " + result.getUrlAsString() + " - " + result.getContentType());
+                }
+                result.setSampleLabel("["+result.getSampleLabel()+"]");
             }
-            result.setSampleLabel("["+result.getSampleLabel()+"]");
         }
         // SampleEvent is not passed JMeterVariables, because they don't make sense for Proxy Recording
         notifySampleListeners(new SampleEvent(result, "WorkBench")); // TODO - is this the correct threadgroup name?