This is an automated email from the ASF dual-hosted git repository.
pmouawad pushed a commit to branch bug_64553
in repository https://gitbox.apache.org/repos/asf/jmeter.git
commit 847a9cecd1f426106b9b5c6d8d13601ca2a202ad
Author: pmouawad <p.mouawad@ubik-ingenierie.com>
AuthorDate: Thu Aug 6 08:28:13 2020 +0200
64553 When using Transaction Controller, send Bytes and Received Bytes
are displayed as 0 in the influxdb(BackendListener)
---
.../jmeter/visualizers/backend/SamplerMetric.java | 37 ++++++++++++++--------
.../graphite/GraphiteBackendListenerClient.java | 4 +--
.../backend/influxdb/HttpMetricsSender.java | 5 +--
.../influxdb/InfluxdbBackendListenerClient.java | 18 ++++++-----
.../backend/SamplerMetricFixedModeTest.java | 10 +++---
.../backend/SamplerMetricTimedModeTest.java | 4 +--
xdocs/changes.xml | 1 +
7 files changed, 46 insertions(+), 33 deletions(-)
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java
b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java
index b41d41e..e6ad2f0 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java
@@ -99,8 +99,9 @@ public class SamplerMetric {
/**
* Add a {@link SampleResult} to be used in the statistics
* @param result {@link SampleResult} to be used
+ * @param isCumulated is the overall Sampler Metric
*/
- public synchronized void add(SampleResult result) {
+ public synchronized void add(SampleResult result, boolean isCumulated) {
if(result.isSuccessful()) {
successes+=result.getSampleCount()-result.getErrorCount();
} else {
@@ -118,32 +119,40 @@ public class SamplerMetric {
}else {
koResponsesStats.addValue(time);
}
- addHits(result);
- addNetworkData(result);
+ addHits(result, isCumulated);
+ addNetworkData(result, isCumulated);
}
/**
* Increment traffic metrics. A Parent sampler cumulates its children metrics.
* @param result SampleResult
+ * @param isCumulated related to the overall sampler metric
*/
- private void addNetworkData(SampleResult result) {
- if (!TransactionController.isFromTransactionController(result)) {
- sentBytes += result.getSentBytes();
- receivedBytes += result.getBytesAsLong();
+ private void addNetworkData(SampleResult result, boolean isCumulated) {
+ if (isCumulated && TransactionController.isFromTransactionController(result)
+ && result.getSubResults().length == 0) { // Transaction controller
without generate parent sampler
+ return;
}
+ sentBytes += result.getSentBytes();
+ receivedBytes += result.getBytesAsLong();
}
/**
- * Compute hits from res
- * @param res {@link SampleResult}
+ * Compute hits from result
+ * @param result {@link SampleResult}
+ * @param isCumulated related to the overall sampler metric
*/
- private void addHits(SampleResult res) {
- SampleResult[] subResults = res.getSubResults();
- if (!TransactionController.isFromTransactionController(res)) {
- hits += 1;
+ private void addHits(SampleResult result, boolean isCumulated) {
+ if (isCumulated && TransactionController.isFromTransactionController(result)
+ && result.getSubResults().length == 0) { // Transaction controller
without generate parent sampler
+ return;
+ }
+ SampleResult[] subResults = result.getSubResults();
+ if (!(TransactionController.isFromTransactionController(result) && subResults.length
> 0)) {
+ hits += result.getSampleCount();
}
for (SampleResult subResult : subResults) {
- addHits(subResult);
+ addHits(subResult, isCumulated);
}
}
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.java
b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.java
index 50abbe0..f6bb597 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/GraphiteBackendListenerClient.java
@@ -285,10 +285,10 @@ public class GraphiteBackendListenerClient extends AbstractBackendListenerClient
}
if (samplersToFilterMatch) {
SamplerMetric samplerMetric = getSamplerMetric(sampleResult.getSampleLabel());
- samplerMetric.add(sampleResult);
+ samplerMetric.add(sampleResult, false);
}
}
- getSamplerMetric(CUMULATED_METRICS).add(sampleResult);
+ getSamplerMetric(CUMULATED_METRICS).add(sampleResult, true);
}
}
}
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/HttpMetricsSender.java
b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/HttpMetricsSender.java
index 0b6202e..a40c114 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/HttpMetricsSender.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/HttpMetricsSender.java
@@ -185,8 +185,9 @@ class HttpMetricsSender extends AbstractInfluxdbMetricsSender {
.append("000000")
.append("\n"); //$NON-NLS-1$
}
-
- httpRequest.setEntity(new StringEntity(sb.toString(), StandardCharsets.UTF_8));
+ String data = sb.toString();
+ log.debug("Sending to influxdb:{}", data);
+ httpRequest.setEntity(new StringEntity(data, StandardCharsets.UTF_8));
lastRequest = httpClient.execute(httpRequest, new FutureCallback<HttpResponse>()
{
@Override
public void completed(final HttpResponse response) {
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.java
b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.java
index 02c6dc1..3651c48 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxdbBackendListenerClient.java
@@ -177,15 +177,15 @@ public class InfluxdbBackendListenerClient extends AbstractBackendListenerClient
// ALL
addMetric(transaction, metric.getTotal(), metric.getSentBytes(), metric.getReceivedBytes(),
TAG_ALL, metric.getAllMean(), metric.getAllMinTime(),
- metric.getAllMaxTime(), allPercentiles.values(), metric::getAllPercentile);
+ metric.getAllMaxTime(), metric.getHits(), allPercentiles.values(), metric::getAllPercentile);
// OK
- addMetric(transaction, metric.getSuccesses(), null, null,
+ addMetric(transaction, metric.getSuccesses(), metric.getSentBytes(), metric.getReceivedBytes(),
TAG_OK, metric.getOkMean(), metric.getOkMinTime(),
- metric.getOkMaxTime(), okPercentiles.values(), metric::getOkPercentile);
+ metric.getOkMaxTime(), metric.getHits(), okPercentiles.values(), metric::getOkPercentile);
// KO
- addMetric(transaction, metric.getFailures(), null, null,
+ addMetric(transaction, metric.getFailures(), metric.getSentBytes(), metric.getReceivedBytes(),
TAG_KO, metric.getKoMean(), metric.getKoMinTime(),
- metric.getKoMaxTime(), koPercentiles.values(), metric::getKoPercentile);
+ metric.getKoMaxTime(), metric.getHits(), koPercentiles.values(), metric::getKoPercentile);
metric.getErrors().forEach((err, count) -> addErrorMetric(transaction, err, count));
}
@@ -209,14 +209,15 @@ public class InfluxdbBackendListenerClient extends AbstractBackendListenerClient
private void addMetric(String transaction, int count,
Long sentBytes, Long receivedBytes,
String statut, double mean, double minTime, double maxTime,
+ int hits,
Collection<Float> pcts, PercentileProvider percentileProvider)
{
if (count <= 0) {
return;
}
StringBuilder tag = new StringBuilder(95);
tag.append(TAG_APPLICATION).append(applicationName);
- tag.append(TAG_STATUS).append(statut);
tag.append(TAG_TRANSACTION).append(transaction);
+ tag.append(TAG_STATUS).append(statut);
tag.append(userTag);
StringBuilder field = new StringBuilder(80);
@@ -230,6 +231,7 @@ public class InfluxdbBackendListenerClient extends AbstractBackendListenerClient
if (!Double.isNaN(maxTime)) {
field.append(',').append(METRIC_MAX).append(maxTime);
}
+ field.append(',').append(METRIC_HIT).append(hits);
if (sentBytes != null) {
field.append(',').append(METRIC_SENT_BYTES).append(sentBytes);
}
@@ -298,10 +300,10 @@ public class InfluxdbBackendListenerClient extends AbstractBackendListenerClient
Matcher matcher = samplersToFilter.matcher(sampleResult.getSampleLabel());
if (!summaryOnly && (matcher.find())) {
SamplerMetric samplerMetric = getSamplerMetricInfluxdb(sampleResult.getSampleLabel());
- samplerMetric.add(sampleResult);
+ samplerMetric.add(sampleResult, false);
}
SamplerMetric cumulatedMetrics = getSamplerMetricInfluxdb(CUMULATED_METRICS);
- cumulatedMetrics.add(sampleResult);
+ cumulatedMetrics.add(sampleResult, true);
}
}
}
diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java
b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java
index 6f479f3..0c25028 100644
--- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java
+++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java
@@ -36,7 +36,7 @@ public class SamplerMetricFixedModeTest {
@Test
public void checkResetOkAndAllStats() throws Exception {
SamplerMetric metric = new SamplerMetric();
- metric.add(createSampleResult(true));
+ metric.add(createSampleResult(true), false);
assertEquals("Before reset ok.max", DEFAULT_ELAPSED_TIME, metric.getOkMaxTime(),
0.001);
assertEquals("Before reset all.max", DEFAULT_ELAPSED_TIME, metric.getAllMaxTime(),
0.001);
assertEquals("Before reset failure", 1, metric.getHits(), 0.0);
@@ -56,7 +56,7 @@ public class SamplerMetricFixedModeTest {
@Test
public void checkResetKoAndAllStats() throws Exception {
SamplerMetric metric = new SamplerMetric();
- metric.add(createSampleResult(false));
+ metric.add(createSampleResult(false), false);
assertEquals("Before reset ko.max", DEFAULT_ELAPSED_TIME, metric.getKoMaxTime(),
0.001);
assertEquals("Before reset all.max", DEFAULT_ELAPSED_TIME, metric.getAllMaxTime(),
0.001);
assertEquals("Before reset failure", 1, metric.getFailures(), 0.0);
@@ -76,9 +76,9 @@ public class SamplerMetricFixedModeTest {
@Test
public void checkErrorsDetailStat() {
SamplerMetric metric = new SamplerMetric();
- metric.add(createSampleResult("400", "bad request"));
- metric.add(createSampleResult("400", "Bad Request "));
- metric.add(createSampleResult("500", "Internal Server Error"));
+ metric.add(createSampleResult("400", "bad request"), false);
+ metric.add(createSampleResult("400", "Bad Request "), false);
+ metric.add(createSampleResult("500", "Internal Server Error"), false);
ErrorMetric error = new ErrorMetric(createSampleResult("400", "Bad request"));
assertEquals("Count for '400 - bad request' error ", 2, metric.getErrors().get(error),
0.0);
error = new ErrorMetric(createSampleResult("500", "Internal Server Error"));
diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java
b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java
index 82ca45d..ac4573f 100644
--- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java
+++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java
@@ -38,7 +38,7 @@ public class SamplerMetricTimedModeTest {
SamplerMetric metric = new SamplerMetric();
- metric.add(createSampleResult(true));
+ metric.add(createSampleResult(true), false);
assertEquals("Before reset ok.max", DEFAULT_ELAPSED_TIME, metric.getOkMaxTime(),
0.001);
assertEquals("Before reset all.max", DEFAULT_ELAPSED_TIME, metric.getAllMaxTime(),
0.001);
assertEquals("Before reset failure", 1, metric.getHits(), 0.0);
@@ -58,7 +58,7 @@ public class SamplerMetricTimedModeTest {
public void checkResetKoAndAllStats() throws Exception {
SamplerMetric metric = new SamplerMetric();
- metric.add(createSampleResult(false));
+ metric.add(createSampleResult(false), false);
assertEquals("Before reset ko.max", DEFAULT_ELAPSED_TIME, metric.getKoMaxTime(),
0.001);
assertEquals("Before reset all.max", DEFAULT_ELAPSED_TIME, metric.getAllMaxTime(),
0.001);
assertEquals("Before reset failure", 1, metric.getFailures(), 0.0);
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 6d13466..d037c26 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -166,6 +166,7 @@ Summary
<ul>
<li><bug>64547</bug>Report/Dashboard: Ensure graphs Response codes
per second is not broken by empty response code in SampleResult. Contributed by Ubik Load
Pack (https://ubikloadpack.com)</li>
<li><bug>64617</bug>HTML report: In graph Response Time Percentiles
Over Time 90,95,99th percentile correspond in reality to 0.90, 0.95 and 0.99 percentiles</li>
+ <li>64553<bug>When using Transaction Controller, send Bytes and Received
Bytes are displayed as 0 in the influxdb(BackendListener)</bug></li>
</ul>
<h3>Documentation</h3>
|