1 package org.wikimedia.search.extra.latency;
2
3 import org.elasticsearch.action.search.SearchRequestBuilder;
4 import org.elasticsearch.index.query.MatchAllQueryBuilder;
5 import org.junit.Test;
6 import org.wikimedia.search.extra.AbstractPluginIntegrationTest;
7
8 public class GetLatencyStatsIntegrationTest extends AbstractPluginIntegrationTest {
9 @Test
10 public void testReportingBuckets() throws Exception {
11 createIndex("test");
12
13 LatencyStatsAction.LatencyStatsNodesResponse statsResponse =
14 client()
15 .execute(LatencyStatsAction.INSTANCE, new LatencyStatsAction.LatencyStatsNodesRequest()).get();
16 statsResponse.getNodes().stream()
17 .map(n -> n.statDetails)
18 .forEach(stat -> assertEquals(0, stat.getLatencies().size()));
19 LatencyStatsAction.StatDetails allNodes = statsResponse.getAllNodes();
20 assertEquals(0, allNodes.getLatencies().size());
21
22
23 SearchRequestBuilder builder = client()
24 .prepareSearch("test")
25 .setQuery(new MatchAllQueryBuilder())
26 .setStats("integration");
27 client().search(builder.request()).get();
28 Thread.sleep(5200);
29
30 statsResponse = client().execute(LatencyStatsAction.INSTANCE, new LatencyStatsAction.LatencyStatsNodesRequest()).get();
31
32 assertEquals(4, statsResponse.getAllNodes().getLatencies().size());
33 statsResponse.getAllNodes().getLatencies()
34 .forEach(stat -> assertEquals("integration", stat.getBucket()));
35
36
37 assertNotEquals(0, statsResponse.getNodes().stream()
38 .map(n -> n.statDetails)
39 .filter(stat -> stat.getLatencies().size() > 0)
40 .count());
41
42
43 statsResponse.getNodes().stream()
44 .flatMap(n -> n.statDetails.getLatencies().stream())
45 .forEach(stat -> assertEquals("integration", stat.getBucket()));
46
47
48
49
50
51
52
53 }
54 }