Skip to content

Multiple bugs #78

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ JMeter ElasticSearch Backend Listener is a JMeter plugin enabling you to send te
* Bulk requests
* By making bulk requests, there are practically no impacts on the performance of the tests themselves.
* Filters
* 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``.
* 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``.
* Specific fields ```field1;field2;field3`
* Specify fields that you want to send to ElasticSearch (possible fields below)
* AllThreads
Expand Down Expand Up @@ -56,7 +56,7 @@ JMeter ElasticSearch Backend Listener is a JMeter plugin enabling you to send te
<dependency>
<groupId>io.github.delirius325</groupId>
<artifactId>jmeter.backendlistener.elasticsearch</artifactId>
<version>2.6.10</version>
<version>2.6.10-SNAPSHOT</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.delirius325</groupId>
<artifactId>jmeter.backendlistener.elasticsearch</artifactId>
<version>2.6.10</version>
<version>2.6.10-SNAPSHOT</version>
<packaging>jar</packaging>

<name>jmeter.backendlistener.elasticsearch</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static org.apache.commons.lang.math.NumberUtils.isNumber;

public class ElasticSearchMetric {
private static final Logger logger = LoggerFactory.getLogger(ElasticSearchMetric.class);
private SampleResult sampleResult;
Expand All @@ -31,8 +33,9 @@ public class ElasticSearchMetric {
private boolean allReqHeaders;
private boolean allResHeaders;

public ElasticSearchMetric(SampleResult sr, String testMode, String timeStamp, int buildNumber,
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
public ElasticSearchMetric(
SampleResult sr, String testMode, String timeStamp, int buildNumber,
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
this.sampleResult = sr;
this.esTestMode = testMode.trim();
this.esTimestamp = timeStamp.trim();
Expand Down Expand Up @@ -155,18 +158,16 @@ private void addElapsedTime() {
*/
private void addCustomFields(BackendListenerContext context) {
Iterator<String> pluginParameters = context.getParameterNamesIterator();
String parameter;
while (pluginParameters.hasNext()) {
String parameterName = pluginParameters.next();

if (!parameterName.startsWith("es.") && !context.getParameter(parameterName).trim().equals("")) {
String parameter = context.getParameter(parameterName).trim();

try {
if (!parameterName.startsWith("es.") && context.containsParameter(parameterName)
&& !"".equals(parameter = context.getParameter(parameterName).trim())) {
if (isNumber(parameter)) {
addFilteredJSON(parameterName, Long.parseLong(parameter));
} catch (Exception e) {
if (logger.isDebugEnabled())
logger.debug("Cannot convert custom field to number");
addFilteredJSON(parameterName, context.getParameter(parameterName).trim());
} else {
addFilteredJSON(parameterName, parameter);
}
}
}
Expand Down Expand Up @@ -217,7 +218,7 @@ private void parseHeadersAsJsonProps(boolean allReqHeaders, boolean allResHeader

// if not all res/req headers and header contains special X-tag
if (!allReqHeaders && !allResHeaders && header.length > 1) {
if (header[0].startsWith("X-es-backend")) {
if (header[0].startsWith("X-es-backend-")) {
this.json.put(header[0].replaceAll("X-es-backend-", "").trim(), header[1].trim());
}
}
Expand Down Expand Up @@ -280,4 +281,5 @@ public Date getElapsedTime(boolean forBuildComparison) {
return null;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,11 @@ private Request setAuthorizationHeader(Request request) {

/**
* This method creates the ElasticSearch index.
*
* @throws IOException
*/
public void createIndex() throws IOException {
public void createIndex() {
try {
this.client.performRequest(setAuthorizationHeader(new Request("PUT", "/" + this.esIndex)));
} catch (Exception e) {
} catch (IOException e) {
logger.info("Index already exists!");
}
}
Expand All @@ -104,7 +102,8 @@ public int getElasticSearchVersion() {
try {
Response response = this.client.performRequest(setAuthorizationHeader(request));
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK && logger.isErrorEnabled()) {
logger.error("Unable to perform request to ElasticSearch engine", this.esIndex);
logger.error("Unable to perform request to ElasticSearch engine for index {}. Response status: {}",
this.esIndex, response.getStatusLine().toString());
}else {
String responseBody = EntityUtils.toString(response.getEntity());
JSONObject elasticSearchConfig = new JSONObject(responseBody);
Expand Down Expand Up @@ -152,8 +151,14 @@ public void sendRequest(int elasticSearchVersionPrefix) {

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

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK && logger.isErrorEnabled()) {
logger.error("ElasticSearch Backend Listener failed to write results for index {}", this.esIndex);
if (logger.isErrorEnabled()) {
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
logger.error("ElasticSearch Backend Listener failed to write results for index {}. Response status: {}",
this.esIndex, response.getStatusLine().toString());
} else {
logger.debug("ElasticSearch Backend Listener has successfully written to ES instance [{}] _bulk request {}",
client.getNodes().iterator().next().getHost().toHostString(), request.toString());
}
}
} catch (Exception e) {
if (logger.isErrorEnabled()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.delirius325.jmeter.backendlistener.elasticsearch;
package io.github.delirius325.jmeter.backendlistener.elasticsearch;

import java.util.*;
import java.util.regex.Matcher;
Expand All @@ -11,7 +11,6 @@
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.visualizers.backend.AbstractBackendListenerClient;
import org.apache.jmeter.visualizers.backend.BackendListener;
import org.apache.jmeter.visualizers.backend.BackendListenerContext;
import org.elasticsearch.client.Node;
import org.elasticsearch.client.RestClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void onFailure(Node node) {
}

@Test
public void createIndex() throws Exception {
public void createIndex() {
sender.createIndex();
}
}