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 =================== -->