|
31 | 31 | import java.util.Arrays;
|
32 | 32 | import java.util.Collection;
|
33 | 33 | import java.util.List;
|
| 34 | +import java.util.Map; |
34 | 35 |
|
35 | 36 | import static org.elasticsearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;
|
36 | 37 | import static org.elasticsearch.index.query.QueryBuilders.simpleQueryStringQuery;
|
37 | 38 | import static org.elasticsearch.rest.action.search.SearchResponseMetrics.RESPONSE_COUNT_TOTAL_COUNTER_NAME;
|
38 | 39 | import static org.elasticsearch.rest.action.search.SearchResponseMetrics.RESPONSE_COUNT_TOTAL_STATUS_ATTRIBUTE_NAME;
|
| 40 | +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures; |
39 | 41 | import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertScrollResponsesAndHitCount;
|
| 42 | +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchHits; |
40 | 43 | import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchHitsWithoutFailures;
|
41 | 44 | import static org.hamcrest.Matchers.containsString;
|
42 | 45 | import static org.hamcrest.Matchers.equalTo;
|
@@ -239,4 +242,48 @@ public void testScrollWithAllShardsFail() throws Exception {
|
239 | 242 | );
|
240 | 243 | });
|
241 | 244 | }
|
| 245 | + |
| 246 | + public void testAdditionalSearchAttributes() { |
| 247 | + // target index attribute contains the system index name |
| 248 | + createIndex(".kibana"); |
| 249 | + { |
| 250 | + SearchResponse searchResponse = client().prepareSearch(".kibana").setQuery(simpleQueryStringQuery("foo")).get(); |
| 251 | + try { |
| 252 | + assertNoFailures(searchResponse); |
| 253 | + assertSearchHits(searchResponse); |
| 254 | + } finally { |
| 255 | + searchResponse.decRef(); |
| 256 | + } |
| 257 | + List<Measurement> measurements = getTestTelemetryPlugin().getLongCounterMeasurement(RESPONSE_COUNT_TOTAL_COUNTER_NAME); |
| 258 | + assertEquals(1, measurements.size()); |
| 259 | + Measurement measurement = measurements.getFirst(); |
| 260 | + assertEquals(1, measurement.getLong()); |
| 261 | + Map<String, Object> attributes = measurement.attributes(); |
| 262 | + assertEquals(4, attributes.size()); |
| 263 | + assertEquals(".kibana", attributes.get("target")); |
| 264 | + assertEquals("hits_only", attributes.get("query_type")); |
| 265 | + assertEquals("_score", attributes.get("sort")); |
| 266 | + assertEquals("success", attributes.get(RESPONSE_COUNT_TOTAL_STATUS_ATTRIBUTE_NAME)); |
| 267 | + } |
| 268 | + // target index attribute should be "user" |
| 269 | + createIndex("custom-index"); |
| 270 | + { |
| 271 | + SearchResponse searchResponse = client().prepareSearch("custom*").setQuery(simpleQueryStringQuery("foo")).get(); |
| 272 | + try { |
| 273 | + assertNoFailures(searchResponse); |
| 274 | + assertSearchHits(searchResponse); |
| 275 | + } finally { |
| 276 | + searchResponse.decRef(); |
| 277 | + } |
| 278 | + List<Measurement> measurements = getTestTelemetryPlugin().getLongCounterMeasurement(RESPONSE_COUNT_TOTAL_COUNTER_NAME); |
| 279 | + assertEquals(2, measurements.size()); |
| 280 | + Measurement measurement = measurements.getLast(); |
| 281 | + Map<String, Object> attributes = measurement.attributes(); |
| 282 | + assertEquals(4, attributes.size()); |
| 283 | + assertEquals("user", attributes.get("target")); |
| 284 | + assertEquals("hits_only", attributes.get("query_type")); |
| 285 | + assertEquals("_score", attributes.get("sort")); |
| 286 | + assertEquals("success", attributes.get(RESPONSE_COUNT_TOTAL_STATUS_ATTRIBUTE_NAME)); |
| 287 | + } |
| 288 | + } |
242 | 289 | }
|
0 commit comments