Author: pmouawad
Date: Sun Sep  2 13:24:52 2018
New Revision: 1839882

URL: http://svn.apache.org/viewvc?rev=1839882&view=rev
Log:
Bug 62321 - Computing of response size is incorrect in nightly build
Bugzilla Id: 62321

Modified:
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1839882&r1=1839881&r2=1839882&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
 Sun Sep  2 13:24:52 2018
@@ -182,10 +182,8 @@ public class HTTPHC4Impl extends HTTPHCA
     private static final String CONTEXT_ATTRIBUTE_CLIENT_KEY = 
"__jmeter.C_K__";
 
     private static final String CONTEXT_ATTRIBUTE_SENT_BYTES = 
"__jmeter.S_B__";
-    
-    private static final String CONTEXT_ATTRIBUTE_RECEIVED_BYTES = 
"__jmeter.R_B__";
-
-    private static final int MAX_BODY_RETAIN_SIZE = 
JMeterUtils.getPropDefault("httpclient4.max_body_retain_size", 32 * 1024);
+        
+    private static final String CONTEXT_ATTRIBUTE_METRICS = "__jmeter.M__";
 
     private static final boolean DEFLATE_RELAX_MODE = 
JMeterUtils.getPropDefault("httpclient4.deflate_relax_mode", false);
 
@@ -378,6 +376,7 @@ public class HTTPHC4Impl extends HTTPHCA
     
     private static final HttpRequestInterceptor PREEMPTIVE_AUTH_INTERCEPTOR = 
new PreemptiveAuthRequestInterceptor();
 
+
     // see  
https://stackoverflow.com/questions/26166469/measure-bandwidth-usage-with-apache-httpcomponents-httpclient
     private static final HttpRequestExecutor REQUEST_EXECUTOR = new 
HttpRequestExecutor() {
 
@@ -389,26 +388,13 @@ public class HTTPHC4Impl extends HTTPHCA
             HttpResponse response = super.doSendRequest(request, conn, 
context);
             HttpConnectionMetrics metrics = conn.getMetrics();
             long sentBytesCount = metrics.getSentBytesCount();
+            // We save to store sent bytes as we need to reset metrics for 
received bytes
             context.setAttribute(CONTEXT_ATTRIBUTE_SENT_BYTES, 
metrics.getSentBytesCount());
+            context.setAttribute(CONTEXT_ATTRIBUTE_METRICS, metrics);
             log.debug("Sent {} bytes", sentBytesCount);
             metrics.reset();
             return response;
         }
-
-        @Override
-        protected HttpResponse doReceiveResponse(
-                final HttpRequest request,
-                final HttpClientConnection conn,
-                final HttpContext context) throws HttpException, IOException {
-            HttpResponse response = super.doReceiveResponse(request, conn, 
context);
-            HttpConnectionMetrics metrics = conn.getMetrics();
-            long receivedBytesCount = metrics.getReceivedBytesCount();
-            context.setAttribute(CONTEXT_ATTRIBUTE_RECEIVED_BYTES, 
-                    metrics.getReceivedBytesCount());
-            log.debug("Received {} bytes", receivedBytesCount);
-            metrics.reset();
-            return response;
-        }
     };
     
     /**
@@ -628,7 +614,8 @@ public class HTTPHC4Impl extends HTTPHCA
               + (long) httpResponse.getAllHeaders().length // Add \r for each 
header
               + 1L // Add \r for initial header
               + 2L; // final \r\n before data
-            long totalBytes = (Long) 
localContext.getAttribute(CONTEXT_ATTRIBUTE_RECEIVED_BYTES);
+            HttpConnectionMetrics metrics = (HttpConnectionMetrics) 
localContext.getAttribute(CONTEXT_ATTRIBUTE_METRICS);
+            long totalBytes = metrics.getReceivedBytesCount();
             res.setHeadersSize((int)headerBytes);
             res.setBodySize(totalBytes - headerBytes);
             res.setSentBytes((Long) 
localContext.getAttribute(CONTEXT_ATTRIBUTE_SENT_BYTES));


Reply via email to