Skip to content

Commit cb4c9c8

Browse files
author
Dušan Markovič
committed
replace Long.parseLong+NumberFormatException with custom code for integer detection
1 parent aebdee7 commit cb4c9c8

File tree

3 files changed

+32
-12
lines changed

3 files changed

+32
-12
lines changed

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

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ public class ElasticSearchMetric {
3131
private boolean allReqHeaders;
3232
private boolean allResHeaders;
3333

34-
public ElasticSearchMetric(SampleResult sr, String testMode, String timeStamp, int buildNumber,
35-
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
34+
public ElasticSearchMetric(
35+
SampleResult sr, String testMode, String timeStamp, int buildNumber,
36+
boolean parseReqHeaders, boolean parseResHeaders, Set<String> fields) {
3637
this.sampleResult = sr;
3738
this.esTestMode = testMode.trim();
3839
this.esTimestamp = timeStamp.trim();
@@ -161,12 +162,9 @@ private void addCustomFields(BackendListenerContext context) {
161162

162163
if (!parameterName.startsWith("es.") && context.containsParameter(parameterName)
163164
&& !"".equals(parameter = context.getParameter(parameterName).trim())) {
164-
165-
try {
165+
if (isInteger(parameter)) {
166166
addFilteredJSON(parameterName, Long.parseLong(parameter));
167-
} catch (NumberFormatException e) {
168-
if (logger.isDebugEnabled())
169-
logger.debug("Cannot convert custom field to number [name={}, value={}]]", parameterName, parameter);
167+
} else {
170168
addFilteredJSON(parameterName, parameter);
171169
}
172170
}
@@ -281,4 +279,28 @@ public Date getElapsedTime(boolean forBuildComparison) {
281279
return null;
282280
}
283281
}
282+
283+
private static boolean isInteger(String str) {
284+
if (str == null) {
285+
return false;
286+
}
287+
int length = str.length();
288+
if (length == 0) {
289+
return false;
290+
}
291+
int i = 0;
292+
if (str.charAt(0) == '-') {
293+
if (length == 1) {
294+
return false;
295+
}
296+
i = 1;
297+
}
298+
for (; i < length; i++) {
299+
char c = str.charAt(i);
300+
if (c < '0' || c > '9') {
301+
return false;
302+
}
303+
}
304+
return true;
305+
}
284306
}

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

Lines changed: 2 additions & 4 deletions
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
}

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

Lines changed: 1 addition & 1 deletion
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)