1414import org .apache .jmeter .samplers .SampleResult ;
1515import org .apache .jmeter .util .JMeterUtils ;
1616import org .apache .jmeter .visualizers .backend .AbstractBackendListenerClient ;
17+ import org .apache .jmeter .visualizers .backend .BackendListener ;
1718import org .apache .jmeter .visualizers .backend .BackendListenerContext ;
1819import org .elasticsearch .client .Node ;
1920import org .elasticsearch .client .RestClient ;
@@ -78,6 +79,24 @@ public class ElasticsearchBackendClient extends AbstractBackendListenerClient {
7879 private static final Logger logger = LoggerFactory .getLogger (ElasticsearchBackendClient .class );
7980
8081 private static final AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain ();
82+ private static final Map <String , String > DEFAULT_ARGS = new LinkedHashMap <>();
83+ static {
84+ DEFAULT_ARGS .put (ES_SCHEME , "http" );
85+ DEFAULT_ARGS .put (ES_HOST , null );
86+ DEFAULT_ARGS .put (ES_PORT , "9200" );
87+ DEFAULT_ARGS .put (ES_INDEX , null );
88+ DEFAULT_ARGS .put (ES_TIMESTAMP , "yyyy-MM-dd'T'HH:mm:ss.SSSZZ" );
89+ DEFAULT_ARGS .put (ES_BULK_SIZE , "100" );
90+ DEFAULT_ARGS .put (ES_TIMEOUT_MS , Long .toString (DEFAULT_TIMEOUT_MS ));
91+ DEFAULT_ARGS .put (ES_SAMPLE_FILTER , null );
92+ DEFAULT_ARGS .put (ES_TEST_MODE , "info" );
93+ DEFAULT_ARGS .put (ES_AUTH_USER , "" );
94+ DEFAULT_ARGS .put (ES_AUTH_PWD , "" );
95+ DEFAULT_ARGS .put (ES_PARSE_REQ_HEADERS , "false" );
96+ DEFAULT_ARGS .put (ES_PARSE_RES_HEADERS , "false" );
97+ DEFAULT_ARGS .put (ES_AWS_ENDPOINT , "" );
98+ DEFAULT_ARGS .put (ES_AWS_REGION , "" );
99+ }
81100
82101 private ElasticSearchMetricSender sender ;
83102
@@ -93,30 +112,15 @@ public class ElasticsearchBackendClient extends AbstractBackendListenerClient {
93112
94113 private long timeoutMs ;
95114
115+ public ElasticsearchBackendClient () {
116+ super ();
117+ }
118+
96119 @ Override
97120 public Arguments getDefaultParameters () {
98- Arguments parameters = new Arguments ();
99- parameters .addArgument (ES_SCHEME , "http" );
100- parameters .addArgument (ES_HOST , null );
101- parameters .addArgument (ES_PORT , "9200" );
102- parameters .addArgument (ES_INDEX , null );
103- parameters .addArgument (ES_FIELDS , "" );
104- parameters .addArgument (ES_TIMESTAMP , "yyyy-MM-dd'T'HH:mm:ss.SSSZZ" );
105- parameters .addArgument (ES_BULK_SIZE , "100" );
106- parameters .addArgument (ES_TIMEOUT_MS , Long .toString (DEFAULT_TIMEOUT_MS ));
107- parameters .addArgument (ES_SAMPLE_FILTER , null );
108- parameters .addArgument (ES_TEST_MODE , "info" );
109- parameters .addArgument (ES_AUTH_USER , "" );
110- parameters .addArgument (ES_AUTH_PWD , "" );
111- parameters .addArgument (ES_PARSE_REQ_HEADERS , "false" );
112- parameters .addArgument (ES_PARSE_RES_HEADERS , "false" );
113- parameters .addArgument (ES_AWS_ENDPOINT , "" );
114- parameters .addArgument (ES_AWS_REGION , "" );
115- parameters .addArgument (SSL_TRUSTSTORE_PATH , "" );
116- parameters .addArgument (SSL_TRUSTSTORE_PW , "" );
117- parameters .addArgument (SSL_KEYSTORE_PATH , "" );
118- parameters .addArgument (SSL_KEYSTORE_PW , "" );
119- return parameters ;
121+ Arguments arguments = new Arguments ();
122+ DEFAULT_ARGS .forEach (arguments ::addArgument );
123+ return arguments ;
120124 }
121125
122126 @ Override
@@ -146,7 +150,6 @@ public void onFailure(Node node) {
146150 }
147151 }).setMaxRetryTimeoutMillis (60000 ).build ();
148152 } else {
149-
150153 AWS4Signer signer = new AWS4Signer ();
151154 signer .setServiceName (SERVICE_NAME );
152155 signer .setRegionName (context .getParameter (ES_AWS_REGION ));
@@ -166,6 +169,13 @@ public void onFailure(Node node) {
166169
167170 checkTestMode (context .getParameter (ES_TEST_MODE ));
168171
172+ String [] filterArray = (context .getParameter (ES_SAMPLE_FILTER ).contains (";" )) ? context .getParameter (ES_SAMPLE_FILTER ).split (";" ) : new String [] {context .getParameter (ES_SAMPLE_FILTER )};
173+ if (filterArray .length > 0 && !filterArray [0 ].trim ().equals ("" )) {
174+ for (String filter : filterArray ) {
175+ this .filters .add (filter .toLowerCase ().trim ());
176+ logger .info ("Added filter: " + filter .toLowerCase ().trim ());
177+ }
178+ }
169179 super .setupTest (context );
170180 } catch (Exception e ) {
171181 throw new IllegalStateException ("Unable to connect to the ElasticSearch engine" , e );
0 commit comments