Skip to content

Commit bd4f5fe

Browse files
authored
ShardSearchStatsTests - add missing metrics and methods (#129311)
ShardSearchStatsTests - add missing metrics and methods - complete coverage
1 parent f715f63 commit bd4f5fe

File tree

1 file changed

+88
-2
lines changed

1 file changed

+88
-2
lines changed

server/src/test/java/org/elasticsearch/search/stats/ShardSearchStatsTests.java

Lines changed: 88 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,27 @@
2222
import org.elasticsearch.index.search.stats.SearchStats;
2323
import org.elasticsearch.index.search.stats.SearchStatsSettings;
2424
import org.elasticsearch.index.search.stats.ShardSearchStats;
25+
import org.elasticsearch.index.shard.IndexShard;
26+
import org.elasticsearch.index.shard.IndexShardTestCase;
2527
import org.elasticsearch.index.shard.ShardId;
2628
import org.elasticsearch.search.builder.SearchSourceBuilder;
2729
import org.elasticsearch.search.internal.AliasFilter;
30+
import org.elasticsearch.search.internal.ReaderContext;
2831
import org.elasticsearch.search.internal.SearchContext;
32+
import org.elasticsearch.search.internal.ShardSearchContextId;
2933
import org.elasticsearch.search.internal.ShardSearchRequest;
3034
import org.elasticsearch.search.suggest.SuggestBuilder;
31-
import org.elasticsearch.test.ESTestCase;
3235
import org.elasticsearch.test.TestSearchContext;
3336
import org.junit.Before;
3437

38+
import java.io.IOException;
3539
import java.util.Arrays;
3640
import java.util.Collections;
3741
import java.util.List;
3842
import java.util.Objects;
3943
import java.util.concurrent.TimeUnit;
4044

41-
public class ShardSearchStatsTests extends ESTestCase {
45+
public class ShardSearchStatsTests extends IndexShardTestCase {
4246

4347
private static final long TEN_MILLIS = 10;
4448

@@ -57,6 +61,9 @@ public void testQueryPhase() {
5761
shardSearchStatsListener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS));
5862

5963
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
64+
assertEquals(0, stats.getQueryCurrent());
65+
assertEquals(1, stats.getQueryCount());
66+
assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis());
6067
assertTrue(stats.getSearchLoadRate() > 0.0);
6168
}
6269
}
@@ -67,6 +74,12 @@ public void testQueryPhase_SuggestOnly() {
6774
shardSearchStatsListener.onQueryPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS));
6875

6976
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
77+
assertEquals(0, stats.getSuggestCurrent());
78+
assertEquals(1, stats.getSuggestCount());
79+
assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis());
80+
assertEquals(0, stats.getQueryCurrent());
81+
assertEquals(0, stats.getQueryCount());
82+
assertEquals(0, stats.getQueryTimeInMillis());
7083
assertTrue(stats.getSearchLoadRate() > 0.0);
7184
}
7285
}
@@ -78,9 +91,15 @@ public void testQueryPhase_withGroup() {
7891

7992
SearchStats searchStats = shardSearchStatsListener.stats("_all");
8093
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
94+
assertEquals(0, stats.getQueryCurrent());
95+
assertEquals(1, stats.getQueryCount());
96+
assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis());
8197
assertTrue(stats.getSearchLoadRate() > 0.0);
8298

8399
stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1");
100+
assertEquals(0, stats.getQueryCurrent());
101+
assertEquals(1, stats.getQueryCount());
102+
assertEquals(TEN_MILLIS, stats.getQueryTimeInMillis());
84103
assertTrue(stats.getSearchLoadRate() > 0.0);
85104
}
86105
}
@@ -93,9 +112,21 @@ public void testQueryPhase_withGroup_SuggestOnly() {
93112

94113
SearchStats searchStats = shardSearchStatsListener.stats("_all");
95114
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
115+
assertEquals(0, stats.getSuggestCurrent());
116+
assertEquals(1, stats.getSuggestCount());
117+
assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis());
118+
assertEquals(0, stats.getQueryCurrent());
119+
assertEquals(0, stats.getQueryCount());
120+
assertEquals(0, stats.getQueryTimeInMillis());
96121
assertTrue(stats.getSearchLoadRate() > 0.0);
97122

98123
stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1");
124+
assertEquals(0, stats.getSuggestCurrent());
125+
assertEquals(1, stats.getSuggestCount());
126+
assertEquals(TEN_MILLIS, stats.getSuggestTimeInMillis());
127+
assertEquals(0, stats.getQueryCurrent());
128+
assertEquals(0, stats.getQueryCount());
129+
assertEquals(0, stats.getQueryTimeInMillis());
99130
assertTrue(stats.getSearchLoadRate() > 0.0);
100131
}
101132
}
@@ -106,6 +137,11 @@ public void testQueryPhase_SuggestOnly_Failure() {
106137
shardSearchStatsListener.onFailedQueryPhase(sc);
107138

108139
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
140+
assertEquals(0, stats.getSuggestCurrent());
141+
assertEquals(0, stats.getSuggestCount());
142+
assertEquals(0, stats.getQueryCurrent());
143+
assertEquals(0, stats.getQueryCount());
144+
assertEquals(0, stats.getQueryFailure());
109145
assertEquals(0.0, stats.getSearchLoadRate(), 0);
110146
}
111147
}
@@ -116,6 +152,9 @@ public void testQueryPhase_Failure() {
116152
shardSearchStatsListener.onFailedQueryPhase(sc);
117153

118154
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
155+
assertEquals(0, stats.getQueryCurrent());
156+
assertEquals(0, stats.getQueryCount());
157+
assertEquals(1, stats.getQueryFailure());
119158
assertEquals(0.0, stats.getSearchLoadRate(), 0);
120159
}
121160
}
@@ -126,6 +165,9 @@ public void testFetchPhase() {
126165
shardSearchStatsListener.onFetchPhase(sc, TimeUnit.MILLISECONDS.toNanos(TEN_MILLIS));
127166

128167
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
168+
assertEquals(0, stats.getFetchCurrent());
169+
assertEquals(1, stats.getFetchCount());
170+
assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis());
129171
assertTrue(stats.getSearchLoadRate() > 0.0);
130172
}
131173
}
@@ -137,9 +179,15 @@ public void testFetchPhase_withGroup() {
137179

138180
SearchStats searchStats = shardSearchStatsListener.stats("_all");
139181
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
182+
assertEquals(0, stats.getFetchCurrent());
183+
assertEquals(1, stats.getFetchCount());
184+
assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis());
140185
assertTrue(stats.getSearchLoadRate() > 0.0);
141186

142187
stats = Objects.requireNonNull(searchStats.getGroupStats()).get("group1");
188+
assertEquals(0, stats.getFetchCurrent());
189+
assertEquals(1, stats.getFetchCount());
190+
assertEquals(TEN_MILLIS, stats.getFetchTimeInMillis());
143191
assertTrue(stats.getSearchLoadRate() > 0.0);
144192
}
145193
}
@@ -150,10 +198,48 @@ public void testFetchPhase_Failure() {
150198
shardSearchStatsListener.onFailedFetchPhase(sc);
151199

152200
SearchStats.Stats stats = shardSearchStatsListener.stats().getTotal();
201+
assertEquals(0, stats.getFetchCurrent());
202+
assertEquals(0, stats.getFetchCount());
203+
assertEquals(1, stats.getFetchFailure());
153204
assertEquals(0.0, stats.getSearchLoadRate(), 0);
154205
}
155206
}
156207

208+
public void testReaderContext() throws IOException {
209+
IndexShard indexShard = newShard(true);
210+
try (ReaderContext rc = createReaderContext(indexShard)) {
211+
shardSearchStatsListener.onNewReaderContext(rc);
212+
SearchStats stats = shardSearchStatsListener.stats();
213+
assertEquals(1, stats.getOpenContexts());
214+
215+
shardSearchStatsListener.onFreeReaderContext(rc);
216+
stats = shardSearchStatsListener.stats();
217+
assertEquals(0, stats.getOpenContexts());
218+
} finally {
219+
closeShards(indexShard);
220+
}
221+
}
222+
223+
public void testScrollContext() throws IOException {
224+
IndexShard indexShard = newShard(true);
225+
try (ReaderContext rc = createReaderContext(indexShard)) {
226+
shardSearchStatsListener.onNewScrollContext(rc);
227+
SearchStats stats = shardSearchStatsListener.stats();
228+
assertEquals(1, stats.getTotal().getScrollCurrent());
229+
230+
shardSearchStatsListener.onFreeScrollContext(rc);
231+
stats = shardSearchStatsListener.stats();
232+
assertEquals(0, stats.getTotal().getScrollCurrent());
233+
assertEquals(1, stats.getTotal().getScrollCount());
234+
} finally {
235+
closeShards(indexShard);
236+
}
237+
}
238+
239+
private static ReaderContext createReaderContext(IndexShard indexShard) {
240+
return new ReaderContext(new ShardSearchContextId("test", 1L), null, indexShard, null, 0L, false);
241+
}
242+
157243
private static SearchContext createSearchContext(boolean suggested) {
158244
IndexSettings indexSettings = new IndexSettings(
159245
IndexMetadata.builder("index")

0 commit comments

Comments
 (0)