Skip to content

Commit 7c422b1

Browse files
committed
Add REST tests for percentiles agg (#26266)
There's a separate test for each TDigest and HDR Histo, to keep things clean. Related to #26220
1 parent f5a0f3c commit 7c422b1

File tree

2 files changed

+822
-0
lines changed

2 files changed

+822
-0
lines changed
Lines changed: 375 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,375 @@
1+
setup:
2+
- do:
3+
indices.create:
4+
index: test_1
5+
body:
6+
settings:
7+
number_of_replicas: 0
8+
mappings:
9+
doc:
10+
properties:
11+
int_field:
12+
type : integer
13+
double_field:
14+
type : double
15+
string_field:
16+
type: keyword
17+
18+
- do:
19+
bulk:
20+
refresh: true
21+
body:
22+
- index:
23+
_index: test_1
24+
_type: doc
25+
_id: 1
26+
- int_field: 1
27+
double_field: 1.0
28+
string_field: foo
29+
- index:
30+
_index: test_1
31+
_type: doc
32+
_id: 2
33+
- int_field: 51
34+
double_field: 51.0
35+
string_field: foo
36+
- index:
37+
_index: test_1
38+
_type: doc
39+
_id: 3
40+
- int_field: 101
41+
double_field: 101.0
42+
string_field: foo
43+
- index:
44+
_index: test_1
45+
_type: doc
46+
_id: 4
47+
- int_field: 151
48+
double_field: 151.0
49+
string_field: foo
50+
51+
---
52+
"Basic test":
53+
54+
- do:
55+
search:
56+
body:
57+
aggs:
58+
percentiles_int:
59+
percentiles:
60+
field: int_field
61+
percentiles_double:
62+
percentiles:
63+
field: double_field
64+
65+
66+
- match: { hits.total: 4 }
67+
- length: { hits.hits: 4 }
68+
- match:
69+
aggregations.percentiles_int.values:
70+
1.0: 2.5
71+
5.0: 8.500000000000002
72+
25.0: 38.5
73+
50.0: 76.0
74+
75.0: 113.5
75+
95.0: 143.49999999999997
76+
99.0: 149.5
77+
- match:
78+
aggregations.percentiles_double.values:
79+
1.0: 2.5
80+
5.0: 8.500000000000002
81+
25.0: 38.5
82+
50.0: 76.0
83+
75.0: 113.5
84+
95.0: 143.49999999999997
85+
99.0: 149.5
86+
87+
- do:
88+
search:
89+
body:
90+
aggs:
91+
percentiles_int:
92+
percentiles:
93+
field: int_field
94+
tdigest:
95+
compression: 200
96+
percentiles_double:
97+
percentiles:
98+
field: double_field
99+
tdigest:
100+
compression: 200
101+
102+
103+
- match: { hits.total: 4 }
104+
- length: { hits.hits: 4 }
105+
- match:
106+
aggregations.percentiles_int.values:
107+
1.0: 2.5
108+
5.0: 8.500000000000002
109+
25.0: 38.5
110+
50.0: 76.0
111+
75.0: 113.5
112+
95.0: 143.49999999999997
113+
99.0: 149.5
114+
- match:
115+
aggregations.percentiles_double.values:
116+
1.0: 2.5
117+
5.0: 8.500000000000002
118+
25.0: 38.5
119+
50.0: 76.0
120+
75.0: 113.5
121+
95.0: 143.49999999999997
122+
99.0: 149.5
123+
124+
---
125+
"Only aggs test":
126+
127+
- do:
128+
search:
129+
body:
130+
size: 0
131+
aggs:
132+
percentiles_int:
133+
percentiles:
134+
field: int_field
135+
percentiles_double:
136+
percentiles:
137+
field: double_field
138+
139+
- match: { hits.total: 4 }
140+
- length: { hits.hits: 0 }
141+
- match:
142+
aggregations.percentiles_int.values:
143+
1.0: 2.5
144+
5.0: 8.500000000000002
145+
25.0: 38.5
146+
50.0: 76.0
147+
75.0: 113.5
148+
95.0: 143.49999999999997
149+
99.0: 149.5
150+
- match:
151+
aggregations.percentiles_double.values:
152+
1.0: 2.5
153+
5.0: 8.500000000000002
154+
25.0: 38.5
155+
50.0: 76.0
156+
75.0: 113.5
157+
95.0: 143.49999999999997
158+
99.0: 149.5
159+
160+
---
161+
"Filtered test":
162+
163+
- do:
164+
search:
165+
body:
166+
query:
167+
constant_score:
168+
filter:
169+
range:
170+
int_field:
171+
gte: 50
172+
aggs:
173+
percentiles_int:
174+
percentiles:
175+
field: int_field
176+
percentiles_double:
177+
percentiles:
178+
field: double_field
179+
180+
- match: { hits.total: 3 }
181+
- length: { hits.hits: 3 }
182+
- match:
183+
aggregations.percentiles_int.values:
184+
1.0: 52.0
185+
5.0: 56.0
186+
25.0: 76.0
187+
50.0: 101.0
188+
75.0: 126.0
189+
95.0: 146.0
190+
99.0: 150.0
191+
- match:
192+
aggregations.percentiles_double.values:
193+
1.0: 52.0
194+
5.0: 56.0
195+
25.0: 76.0
196+
50.0: 101.0
197+
75.0: 126.0
198+
95.0: 146.0
199+
99.0: 150.0
200+
201+
---
202+
"Missing field with missing param":
203+
204+
- do:
205+
search:
206+
body:
207+
aggs:
208+
percentiles_missing:
209+
percentiles:
210+
field: missing_field
211+
missing: 1.0
212+
213+
- match: { hits.total: 4 }
214+
- length: { hits.hits: 4 }
215+
- match:
216+
aggregations.percentiles_missing.values:
217+
1.0: 1.0
218+
5.0: 1.0
219+
25.0: 1.0
220+
50.0: 1.0
221+
75.0: 1.0
222+
95.0: 1.0
223+
99.0: 1.0
224+
225+
---
226+
"Missing field without missing param":
227+
228+
- do:
229+
search:
230+
body:
231+
aggs:
232+
percentiles_missing:
233+
percentiles:
234+
field: missing_field
235+
236+
- match: { hits.total: 4 }
237+
- length: { hits.hits: 4 }
238+
- is_false: aggregations.percentiles_missing.value
239+
240+
---
241+
"Metadata test":
242+
243+
- do:
244+
search:
245+
body:
246+
aggs:
247+
percentiles_int:
248+
meta:
249+
foo: bar
250+
percentiles:
251+
field: int_field
252+
253+
- match: { hits.total: 4 }
254+
- length: { hits.hits: 4 }
255+
- match: { aggregations.percentiles_int.meta.foo: "bar" }
256+
- match:
257+
aggregations.percentiles_int.values:
258+
1.0: 2.5
259+
5.0: 8.500000000000002
260+
25.0: 38.5
261+
50.0: 76.0
262+
75.0: 113.5
263+
95.0: 143.49999999999997
264+
99.0: 149.5
265+
266+
---
267+
"Invalid params test":
268+
269+
- do:
270+
catch: /\[compression\] must be greater than or equal to 0. Found \[-1.0\] in \[percentiles_int\]/
271+
search:
272+
body:
273+
aggs:
274+
percentiles_int:
275+
percentiles:
276+
field: int_field
277+
tdigest:
278+
compression: -1
279+
280+
- do:
281+
catch: /\[percents\] must not be empty/
282+
search:
283+
body:
284+
aggs:
285+
percentiles_int:
286+
percentiles:
287+
field: int_field
288+
percents: []
289+
290+
- do:
291+
catch: request
292+
search:
293+
body:
294+
aggs:
295+
percentiles_int:
296+
percentiles:
297+
field: int_field
298+
percents: null
299+
300+
- do:
301+
catch: request
302+
search:
303+
body:
304+
aggs:
305+
percentiles_int:
306+
percentiles:
307+
field: int_field
308+
percents: ["foo"]
309+
310+
- do:
311+
catch: request
312+
search:
313+
body:
314+
aggs:
315+
percentiles_string:
316+
percentiles:
317+
field: string_field
318+
319+
---
320+
"Explicit Percents test":
321+
322+
- do:
323+
search:
324+
body:
325+
aggs:
326+
percentiles_int:
327+
percentiles:
328+
field: int_field
329+
percents: [5.0, 25.0, 50.0]
330+
percentiles_double:
331+
percentiles:
332+
field: double_field
333+
percents: [5.0, 25.0, 50.0]
334+
335+
336+
- match: { hits.total: 4 }
337+
- length: { hits.hits: 4 }
338+
- match:
339+
aggregations.percentiles_int.values:
340+
5.0: 8.500000000000002
341+
25.0: 38.5
342+
50.0: 76.0
343+
- match:
344+
aggregations.percentiles_double.values:
345+
5.0: 8.500000000000002
346+
25.0: 38.5
347+
50.0: 76.0
348+
349+
---
350+
"Non-keyed test":
351+
352+
- do:
353+
search:
354+
body:
355+
aggs:
356+
percentiles_int:
357+
percentiles:
358+
field: int_field
359+
percents: [5.0, 25.0, 50.0]
360+
keyed: false
361+
362+
363+
- match: { hits.total: 4 }
364+
- length: { hits.hits: 4 }
365+
- match:
366+
aggregations.percentiles_int.values:
367+
- key: 5.0
368+
value: 8.500000000000002
369+
- key: 25.0
370+
value: 38.5
371+
- key: 50.0
372+
value: 76.0
373+
374+
375+

0 commit comments

Comments
 (0)