You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/09/06 15:58:19 UTC

svn commit: r1759452 - in /jmeter/trunk: src/core/org/apache/jmeter/report/core/ src/core/org/apache/jmeter/report/processor/graph/ src/core/org/apache/jmeter/report/processor/graph/impl/ xdocs/

Author: pmouawad
Date: Tue Sep  6 15:58:19 2016
New Revision: 1759452

URL: http://svn.apache.org/viewvc?rev=1759452&view=rev
Log:
[Bug 60090] New: Report / Dashboard : Empty Transaction Controller should not count in metrics
Bugzilla Id: 60090

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ConnectTimeValueSelector.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/CountValueSelector.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ElapsedTimeValueSelector.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/GraphValueSelector.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/LatencyValueSelector.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java
    jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java Tue Sep  6 15:58:19 2016
@@ -17,9 +17,9 @@
  */
 package org.apache.jmeter.report.core;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jmeter.save.CSVSaveService;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.commons.lang3.StringUtils;
 
 /**
  * Represents a sample read from a CSV source.
@@ -35,6 +35,8 @@ public class Sample {
     private static final String ERROR_ON_SAMPLE = "Error in sample at line:";
 
     private static final String CONTROLLER_PATTERN = "Number of samples in transaction";
+    
+    private static final String EMPTY_CONTROLLER_PATTERN = "Number of samples in transaction : 0";
 
     private final boolean storesStartTimeStamp;
     private final SampleMetadata metadata;
@@ -261,7 +263,7 @@ public class Sample {
     public int getReceivedBytes() {
         return getData(int.class, CSVSaveService.CSV_BYTES).intValue();
     }
-    
+
     /**
      * Gets the number of sent bytes stored in the sample.
      *
@@ -309,4 +311,15 @@ public class Sample {
         String message = getResponseMessage();
         return message != null && message.startsWith(CONTROLLER_PATTERN);
     }
+    
+    /**
+     * Checks if this sample is an empty controller.
+     *
+     * @return {@code true}, if this sample is a controller; otherwise
+     *         {@code false}
+     */
+    public boolean isEmptyController() {
+        String message = getResponseMessage();
+        return message != null && message.startsWith(EMPTY_CONTROLLER_PATTERN);
+    }
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java Tue Sep  6 15:58:19 2016
@@ -514,15 +514,15 @@ public abstract class AbstractGraphConsu
                 }
 
                 // Get the value to aggregate and dispatch it to the groupData
-                double value = groupInfo.getValueSelector().select(seriesName,
+                Double value = groupInfo.getValueSelector().select(seriesName,
                         sample);
-
-                aggregateValue(factory, seriesData, key, value);
-                if (overallSeries) {
-                    SeriesData overallData = groupData.getOverallSeries();
-                    aggregateValue(factory, overallData, key, value);
+                if(value != null) {
+                    aggregateValue(factory, seriesData, key, value);
+                    if (overallSeries) {
+                        SeriesData overallData = groupData.getOverallSeries();
+                        aggregateValue(factory, overallData, key, value);
+                    }
                 }
-
             }
         }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ConnectTimeValueSelector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ConnectTimeValueSelector.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ConnectTimeValueSelector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ConnectTimeValueSelector.java Tue Sep  6 15:58:19 2016
@@ -34,8 +34,12 @@ public class ConnectTimeValueSelector im
      * .lang.String, java.lang.Object, org.apache.jmeter.report.csv.core.Sample)
      */
     @Override
-    public double select(String series, Sample sample) {
-        return sample.getConnectTime();
+    public Double select(String series, Sample sample) {
+        if(!sample.isEmptyController()) {
+            return Double.valueOf(sample.getConnectTime());
+        } else {
+            return null;
+        }
     }
 
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/CountValueSelector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/CountValueSelector.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/CountValueSelector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/CountValueSelector.java Tue Sep  6 15:58:19 2016
@@ -25,7 +25,8 @@ import org.apache.jmeter.report.core.Sam
  * @since 3.0
  */
 public class CountValueSelector implements GraphValueSelector {
-
+    private static final Double ONE = Double.valueOf(1.0d);
+    private static final Double ZERO = Double.valueOf(0.0d);
     /*
      * (non-Javadoc)
      * 
@@ -34,8 +35,12 @@ public class CountValueSelector implemen
      * .lang.String, java.lang.Object, org.apache.jmeter.report.csv.core.Sample)
      */
     @Override
-    public double select(String series, Sample sample) {
-        return 1;
+    public Double select(String series, Sample sample) {
+        if(!sample.isEmptyController()) {
+            return ONE;
+        } else {
+            return ZERO;
+        }
     }
 
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ElapsedTimeValueSelector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ElapsedTimeValueSelector.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ElapsedTimeValueSelector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/ElapsedTimeValueSelector.java Tue Sep  6 15:58:19 2016
@@ -35,8 +35,12 @@ public class ElapsedTimeValueSelector im
      * .lang.String, java.lang.Object, org.apache.jmeter.report.csv.core.Sample)
      */
     @Override
-    public double select(String series, Sample sample) {
-        return sample.getElapsedTime();
+    public Double select(String series, Sample sample) {
+        if(!sample.isEmptyController()) {
+            return Double.valueOf(sample.getElapsedTime());
+        } else {
+            return null;
+        }
     }
 
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/GraphValueSelector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/GraphValueSelector.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/GraphValueSelector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/GraphValueSelector.java Tue Sep  6 15:58:19 2016
@@ -35,7 +35,7 @@ public interface GraphValueSelector {
      *            the series where the value will be aggregated
      * @param sample
      *            the sample
-     * @return the value to aggregate
+     * @return the value to aggregate or null if value should be ignored
      */
-    double select(String series, Sample sample);
+    Double select(String series, Sample sample);
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/LatencyValueSelector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/LatencyValueSelector.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/LatencyValueSelector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/LatencyValueSelector.java Tue Sep  6 15:58:19 2016
@@ -35,8 +35,12 @@ public class LatencyValueSelector implem
      * .lang.String, java.lang.Object, org.apache.jmeter.report.csv.core.Sample)
      */
     @Override
-    public double select(String series, Sample sample) {
-        return sample.getLatency();
+    public Double select(String series, Sample sample) {
+        if(!sample.isEmptyController()) {
+            return Double.valueOf(sample.getLatency());
+        } else {
+            return null;
+        }
     }
 
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java Tue Sep  6 15:58:19 2016
@@ -76,8 +76,12 @@ public class ActiveThreadsGraphConsumer
                 }, new GraphValueSelector() {
 
                     @Override
-                    public double select(String series, Sample sample) {
-                        return sample.getGroupThreads();
+                    public Double select(String series, Sample sample) {
+                        if(!sample.isEmptyController()) {
+                            return Double.valueOf(sample.getGroupThreads());
+                        } else {
+                            return null;
+                        }
                     }
                 }, false, false));
         return groupInfos;

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java Tue Sep  6 15:58:19 2016
@@ -77,9 +77,14 @@ public class BytesThroughputGraphConsume
                 }, new GraphValueSelector() {
 
                     @Override
-                    public double select(String series, Sample sample) {
-                        return (RECEIVED_BYTES_SERIES_LABEL.equals(series)) ? sample
-                                .getReceivedBytes() : sample.getSentBytes();
+                    public Double select(String series, Sample sample) {
+                        if(!sample.isEmptyController()) {
+                            return Double.valueOf(
+                                (RECEIVED_BYTES_SERIES_LABEL.equals(series)) ? sample
+                                .getReceivedBytes() : sample.getSentBytes());
+                        } else {
+                            return null;
+                        }
                     }
                 }, false, false));
         return groupInfos;

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1759452&r1=1759451&r2=1759452&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Tue Sep  6 15:58:19 2016
@@ -67,6 +67,7 @@ Summary
 <ul>
     <li>A cache for CSS Parsing of URLs has been introduced in this version, it is enabled by default. It is controlled by property <code>css.parser.cache.size</code>. It can be disabled by setting its value to 0. See <bugzilla>59885</bugzilla></li>
     <li>ThroughputController defaults have changed. Now defaults are Percent Executions which is global and no more per user. See <bugzilla>60023</bugzilla></li>
+    <li>Since 3.1 version, HTML ignores Empty Transaction controller (possibly generated by If Controller or Throughput Controller) when computing metrics. This provides more accurate metrics</li>
 </ul>
 
 <h3>Deprecated and removed elements</h3>
@@ -205,6 +206,7 @@ Summary
     <li><bug>60053</bug>In Non GUI mode, a Stacktrace is shown at end of test while report is being generated</li>
     <li><bug>60049</bug>When using Timers with high delays or Constant Throughput Timer with low throughput, Scheduler may take a lot of time to exit, same for Shutdown test </li>
     <li><bug>60089</bug>Report / Dashboard : Bytes throughput Over Time has reversed Sent and Received bytes. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
+    <li><bug>60090</bug>Report / Dashboard : Empty Transaction Controller should not count in metrics</li>
 </ul>
 
  <!--  =================== Thanks =================== -->