Skip to content

Commit 33bafb9

Browse files
committed
Introduce listenerIsEnabled to InfluxDBRawBackendListenerClient.java
By this it is possible to enable/disable the sending of Metrics by properties (like in the Dynatrace/MINT Backend Listener)
1 parent a941c17 commit 33bafb9

File tree

1 file changed

+30
-23
lines changed

1 file changed

+30
-23
lines changed

src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient.java

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,14 @@ public class InfluxDBRawBackendListenerClient implements BackendListenerClient {
5959
DEFAULT_ARGS.put("influxdbUrl", "http://host_to_change:8086/write?db=jmeter");
6060
DEFAULT_ARGS.put("influxdbToken", "");
6161
DEFAULT_ARGS.put("measurement", DEFAULT_MEASUREMENT);
62+
DEFAULT_ARGS.put("enabled", "${__P(InfluxdbBackendListener.enabled, true)}");
6263
}
6364

6465
private InfluxdbMetricsSender influxDBMetricsManager;
6566
private String measurement;
6667

68+
private boolean listenerIsEnabled;
69+
6770
public InfluxDBRawBackendListenerClient() {
6871
// default constructor
6972
}
@@ -89,45 +92,49 @@ InfluxdbMetricsSender getInfluxDBMetricsManager() {
8992

9093
@Override
9194
public void setupTest(BackendListenerContext context) throws Exception {
92-
initInfluxDBMetricsManager(context);
93-
measurement = context.getParameter("measurement", DEFAULT_MEASUREMENT);
94-
}
95+
listenerIsEnabled = Boolean.parseBoolean(context.getParameter("enabled", "true"));
96+
log.info("{} will send metrics: {}", this.getClass().getSimpleName(), listenerIsEnabled);
9597

96-
private void initInfluxDBMetricsManager(BackendListenerContext context) throws Exception {
97-
influxDBMetricsManager = Class
98-
.forName(context.getParameter("influxdbMetricsSender"))
99-
.asSubclass(InfluxdbMetricsSender.class)
100-
.getDeclaredConstructor()
101-
.newInstance();
98+
if (listenerIsEnabled) {
99+
influxDBMetricsManager = Class
100+
.forName(context.getParameter("influxdbMetricsSender"))
101+
.asSubclass(InfluxdbMetricsSender.class)
102+
.getDeclaredConstructor()
103+
.newInstance();
102104

103-
influxDBMetricsManager.setup(
104-
context.getParameter("influxdbUrl"),
105-
context.getParameter("influxdbToken"));
105+
influxDBMetricsManager.setup(
106+
context.getParameter("influxdbUrl"),
107+
context.getParameter("influxdbToken"));
108+
109+
measurement = context.getParameter("measurement", DEFAULT_MEASUREMENT);
110+
}
106111
}
107112

113+
108114
@Override
109115
public void teardownTest(BackendListenerContext context) {
110-
influxDBMetricsManager.destroy();
116+
if (influxDBMetricsManager != null) {
117+
influxDBMetricsManager.destroy();
118+
}
111119
}
112120

113121
@Override
114-
public void handleSampleResults(
115-
List<SampleResult> sampleResults, BackendListenerContext context) {
116-
log.debug("Handling {} sample results", sampleResults.size());
117-
synchronized (LOCK) {
118-
for (SampleResult sampleResult : sampleResults) {
119-
addMetricFromSampleResult(sampleResult);
122+
public void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context) {
123+
if (listenerIsEnabled) {
124+
log.debug("Handling {} sample results", sampleResults.size());
125+
synchronized (LOCK) {
126+
for (SampleResult sampleResult : sampleResults) {
127+
addMetricFromSampleResult(sampleResult);
128+
}
129+
influxDBMetricsManager.writeAndSendMetrics();
120130
}
121-
influxDBMetricsManager.writeAndSendMetrics();
122131
}
123132
}
124133

125134
private void addMetricFromSampleResult(SampleResult sampleResult) {
126135
String tags = "," + createTags(sampleResult);
127136
String fields = createFields(sampleResult);
128-
long timestamp = sampleResult.getTimeStamp();
129-
130-
influxDBMetricsManager.addMetric(measurement, tags, fields, timestamp);
137+
influxDBMetricsManager.addMetric(measurement, tags, fields, sampleResult.getTimeStamp());
131138
}
132139

133140
@VisibleForTesting

0 commit comments

Comments
 (0)