Author: sebb
Date: Thu Mar 11 23:33:24 2010
New Revision: 922069

URL: http://svn.apache.org/viewvc?rev=922069&view=rev
Log:
Bug 48889 - Wrong response time with mode=Statistical and num_sample_threshold 
> 1
Maintain elapsed time locally; change to threadName key to allow its use in 
aggregate sample

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java?rev=922069&r1=922068&r2=922069&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java
 Thu Mar 11 23:33:24 2010
@@ -28,10 +28,13 @@ import java.io.Serializable;
 public class StatisticalSampleResult extends SampleResult implements
         Serializable {
 
-    private static final long serialVersionUID = 24L;
+    private static final long serialVersionUID = 240L;
 
     private int errorCount;
 
+    // Need to maintain our own elapsed timer to ensure more accurate 
aggregation
+    private long elapsed;
+
     public StatisticalSampleResult(){// May be called by XStream
     }
 
@@ -51,10 +54,11 @@ public class StatisticalSampleResult ext
     public StatisticalSampleResult(SampleResult res) {
         // Copy data that is shared between samples (i.e. the key items):
         setSampleLabel(res.getSampleLabel());
-        // Nothing else can be saved, as the samples may come from any thread
+        setThreadName(res.getThreadName());
 
         setSuccessful(true); // Assume result is OK
         setSampleCount(0); // because we add the sample count in later
+        elapsed = 0;
     }
 
     public void add(SampleResult res) {
@@ -79,11 +83,12 @@ public class StatisticalSampleResult ext
 
         setLatency(getLatency()+ res.getLatency());
 
+        elapsed += res.getTime();
     }
 
     @Override
     public long getTime() {
-        return getEndTime() - getStartTime() - this.getIdleTime();
+        return elapsed;
     }
 
     @Override
@@ -103,7 +108,7 @@ public class StatisticalSampleResult ext
 
     /**
      * Generates the key to be used for aggregating samples as follows:<br/>
-     * <code>sampleLabel</code> "-" <code>threadGroup</code>
+     * <code>sampleLabel</code> "-" <code>threadName</code>
      *
      * N.B. the key should agree with the fixed items that are saved in the 
sample.
      *
@@ -112,7 +117,8 @@ public class StatisticalSampleResult ext
      */
     public static String getKey(SampleEvent event) {
         StringBuilder sb = new StringBuilder(80);
-        
sb.append(event.getResult().getSampleLabel()).append("-").append(event.getThreadGroup());
+        sb.append(event.getResult().getSampleLabel());
+        sb.append('-').append(event.getResult().getThreadName());
         return sb.toString();
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org

Reply via email to