Skip to content

Commit 0aa6b59

Browse files
Merge pull request anthonygauthier#78 from bratwurzt/multiple_bugs
Multiple bugs
2 parents 4a265bd + cf76b7d commit 0aa6b59

File tree

6 files changed

+30
-24
lines changed

6 files changed

+30
-24
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ JMeter ElasticSearch Backend Listener is a JMeter plugin enabling you to send te
1515
* Bulk requests
1616
* By making bulk requests, there are practically no impacts on the performance of the tests themselves.
1717
* Filters
18-
* Only send the samples you want by using Filters! Simply type them as follows in the appropriate field : ``filter1;filter2;filter3`` or ``sampleLabel_must_contain_this``.
18+
* Only send the samples you want by using Filters! Simply type them as follows in the field ``es.sample.filter`` : ``filter1;filter2;filter3`` or ``sampleLabel_must_contain_this``.
1919
* Specific fields ```field1;field2;field3`
2020
* Specify fields that you want to send to ElasticSearch (possible fields below)
2121
* AllThreads
@@ -56,7 +56,7 @@ JMeter ElasticSearch Backend Listener is a JMeter plugin enabling you to send te
5656
<dependency>
5757
<groupId>io.github.delirius325</groupId>
5858
<artifactId>jmeter.backendlistener.elasticsearch</artifactId>
59-
<version>2.6.10</version>
59+
<version>2.6.10-SNAPSHOT</version>
6060
</dependency>
6161
```
6262

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>io.github.delirius325</groupId>
77
<artifactId>jmeter.backendlistener.elasticsearch</artifactId>
8-
<version>2.6.10</version>
8+
<version>2.6.10-SNAPSHOT</version>
99
<packaging>jar</packaging>
1010

1111
<name>jmeter.backendlistener.elasticsearch</name>

src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetric.java

+13-11
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
2222

23+
import static org.apache.commons.lang.math.NumberUtils.isNumber;
24+
2325
public class ElasticSearchMetric {
2426
private static final Logger logger = LoggerFactory.getLogger(ElasticSearchMetric.class);
2527
private SampleResult sampleResult;
@@ -31,8 +33,9 @@ public class ElasticSearchMetric {
3133
private boolean allReqHeaders;
3234
private boolean allResHeaders;
3335

34-
public ElasticSearchMetric(SampleResult sr, String testMode, String timeStamp, int buildNumber,
35-
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
36+
public ElasticSearchMetric(
37+
SampleResult sr, String testMode, String timeStamp, int buildNumber,
38+
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
3639
this.sampleResult = sr;
3740
this.esTestMode = testMode.trim();
3841
this.esTimestamp = timeStamp.trim();
@@ -155,18 +158,16 @@ private void addElapsedTime() {
155158
*/
156159
private void addCustomFields(BackendListenerContext context) {
157160
Iterator<String> pluginParameters = context.getParameterNamesIterator();
161+
String parameter;
158162
while (pluginParameters.hasNext()) {
159163
String parameterName = pluginParameters.next();
160164

161-
if (!parameterName.startsWith("es.") && !context.getParameter(parameterName).trim().equals("")) {
162-
String parameter = context.getParameter(parameterName).trim();
163-
164-
try {
165+
if (!parameterName.startsWith("es.") && context.containsParameter(parameterName)
166+
&& !"".equals(parameter = context.getParameter(parameterName).trim())) {
167+
if (isNumber(parameter)) {
165168
addFilteredJSON(parameterName, Long.parseLong(parameter));
166-
} catch (Exception e) {
167-
if (logger.isDebugEnabled())
168-
logger.debug("Cannot convert custom field to number");
169-
addFilteredJSON(parameterName, context.getParameter(parameterName).trim());
169+
} else {
170+
addFilteredJSON(parameterName, parameter);
170171
}
171172
}
172173
}
@@ -217,7 +218,7 @@ private void parseHeadersAsJsonProps(boolean allReqHeaders, boolean allResHeader
217218

218219
// if not all res/req headers and header contains special X-tag
219220
if (!allReqHeaders && !allResHeaders && header.length > 1) {
220-
if (header[0].startsWith("X-es-backend")) {
221+
if (header[0].startsWith("X-es-backend-")) {
221222
this.json.put(header[0].replaceAll("X-es-backend-", "").trim(), header[1].trim());
222223
}
223224
}
@@ -280,4 +281,5 @@ public Date getElapsedTime(boolean forBuildComparison) {
280281
return null;
281282
}
282283
}
284+
283285
}

src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticSearchMetricSender.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,11 @@ private Request setAuthorizationHeader(Request request) {
8787

8888
/**
8989
* This method creates the ElasticSearch index.
90-
*
91-
* @throws IOException
9290
*/
93-
public void createIndex() throws IOException {
91+
public void createIndex() {
9492
try {
9593
this.client.performRequest(setAuthorizationHeader(new Request("PUT", "/" + this.esIndex)));
96-
} catch (Exception e) {
94+
} catch (IOException e) {
9795
logger.info("Index already exists!");
9896
}
9997
}
@@ -104,7 +102,8 @@ public int getElasticSearchVersion() {
104102
try {
105103
Response response = this.client.performRequest(setAuthorizationHeader(request));
106104
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK && logger.isErrorEnabled()) {
107-
logger.error("Unable to perform request to ElasticSearch engine", this.esIndex);
105+
logger.error("Unable to perform request to ElasticSearch engine for index {}. Response status: {}",
106+
this.esIndex, response.getStatusLine().toString());
108107
}else {
109108
String responseBody = EntityUtils.toString(response.getEntity());
110109
JSONObject elasticSearchConfig = new JSONObject(responseBody);
@@ -152,8 +151,14 @@ public void sendRequest(int elasticSearchVersionPrefix) {
152151

153152
Response response = this.client.performRequest(setAuthorizationHeader(request));
154153

155-
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK && logger.isErrorEnabled()) {
156-
logger.error("ElasticSearch Backend Listener failed to write results for index {}", this.esIndex);
154+
if (logger.isErrorEnabled()) {
155+
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
156+
logger.error("ElasticSearch Backend Listener failed to write results for index {}. Response status: {}",
157+
this.esIndex, response.getStatusLine().toString());
158+
} else {
159+
logger.debug("ElasticSearch Backend Listener has successfully written to ES instance [{}] _bulk request {}",
160+
client.getNodes().iterator().next().getHost().toHostString(), request.toString());
161+
}
157162
}
158163
} catch (Exception e) {
159164
if (logger.isErrorEnabled()) {

src/main/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/ElasticsearchBackendClient.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.delirius325.jmeter.backendlistener.elasticsearch;
1+
package io.github.delirius325.jmeter.backendlistener.elasticsearch;
22

33
import java.util.*;
44
import java.util.regex.Matcher;
@@ -11,7 +11,6 @@
1111
import org.apache.jmeter.samplers.SampleResult;
1212
import org.apache.jmeter.util.JMeterUtils;
1313
import org.apache.jmeter.visualizers.backend.AbstractBackendListenerClient;
14-
import org.apache.jmeter.visualizers.backend.BackendListener;
1514
import org.apache.jmeter.visualizers.backend.BackendListenerContext;
1615
import org.elasticsearch.client.Node;
1716
import org.elasticsearch.client.RestClient;

src/test/java/io/github/delirius325/jmeter/backendlistener/elasticsearch/TestElasticSearchBackendHTTPsConnection.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void onFailure(Node node) {
5252
}
5353

5454
@Test
55-
public void createIndex() throws Exception {
55+
public void createIndex() {
5656
sender.createIndex();
5757
}
5858
}

0 commit comments

Comments
 (0)