Skip to content

Commit

Permalink
Add REST tests for avg/min/max/sum metric aggs (#26225)
Browse files Browse the repository at this point in the history
Adds some REST tests for avg/min/max/sum metric aggregations

Related to #26220
  • Loading branch information
polyfractal committed Aug 16, 2017
1 parent f35754c commit 9ece56b
Show file tree
Hide file tree
Showing 4 changed files with 697 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
setup:
- do:
indices.create:
index: test_1
body:
settings:
number_of_replicas: 0
mappings:
test:
properties:
int_field:
type : integer
double_field:
type : double
string_field:
type: keyword

- do:
bulk:
refresh: true
body:
- index:
_index: test_1
_type: test
_id: 1
- int_field: 1
double_field: 1.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 2
- int_field: 51
double_field: 51.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 3
- int_field: 101
double_field: 101.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 4
- int_field: 151
double_field: 151.0
string_field: foo

---
"Basic test":

- do:
search:
body:
aggs:
the_int_avg:
avg:
field: int_field
the_double_avg:
avg:
field: double_field

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_int_avg.value: 76.0 }
- match: { aggregations.the_double_avg.value: 76.0 }

---
"Only aggs test":

- do:
search:
body:
size: 0
aggs:
the_int_avg:
avg:
field: int_field
the_double_avg:
avg:
field: double_field

- match: { hits.total: 4 }
- length: { hits.hits: 0 }
- match: { aggregations.the_int_avg.value: 76.0 }
- match: { aggregations.the_double_avg.value: 76.0 }

---
"Filtered test":

- do:
search:
body:
query:
constant_score:
filter:
range:
int_field:
gte: 50
aggs:
the_int_avg:
avg:
field: int_field
the_double_avg:
avg:
field: double_field

- match: { hits.total: 3 }
- length: { hits.hits: 3 }
- match: { aggregations.the_int_avg.value: 101.0 }
- match: { aggregations.the_double_avg.value: 101.0 }


---
"Missing field with missing param":

- do:
search:
body:
aggs:
the_missing_avg:
avg:
field: foo
missing: 1

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_missing_avg.value: 1 }

---
"Missing field without missing param":

- do:
search:
body:
aggs:
the_missing_avg:
avg:
field: foo

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- is_false: aggregations.the_missing_avg.value

---
"Metadata test":

- do:
search:
body:
aggs:
the_int_avg:
meta:
foo: bar
avg:
field: int_field

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_int_avg.value: 76.0 }
- match: { aggregations.the_int_avg.meta.foo: "bar" }

---
"Aggregating wrong datatype test":

- do:
catch: request
search:
body:
aggs:
the_string_avg:
avg:
field: string_field

Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
setup:
- do:
indices.create:
index: test_1
body:
settings:
number_of_replicas: 0
mappings:
test:
properties:
int_field:
type : integer
double_field:
type : double
string_field:
type: keyword
- do:
bulk:
refresh: true
body:
- index:
_index: test_1
_type: test
_id: 1
- int_field: 1
double_field: 1.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 2
- int_field: 51
double_field: 51.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 3
- int_field: 101
double_field: 101.0
string_field: foo
- index:
_index: test_1
_type: test
_id: 4
- int_field: 151
double_field: 151.0
string_field: foo
---
"Basic test":

- do:
search:
body:
aggs:
the_int_max:
max:
field: int_field
the_double_max:
max:
field: double_field

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_int_max.value: 151.0 }
- match: { aggregations.the_double_max.value: 151.0 }

---
"Only aggs test":

- do:
search:
body:
size: 0
aggs:
the_int_max:
max:
field: int_field
the_double_max:
max:
field: double_field

- match: { hits.total: 4 }
- length: { hits.hits: 0 }
- match: { aggregations.the_int_max.value: 151.0 }
- match: { aggregations.the_double_max.value: 151.0 }

---
"Filtered test":

- do:
search:
body:
query:
constant_score:
filter:
range:
int_field:
lte: 60
aggs:
the_int_max:
max:
field: int_field
the_double_max:
max:
field: double_field

- match: { hits.total: 2 }
- length: { hits.hits: 2 }
- match: { aggregations.the_int_max.value: 51.0 }
- match: { aggregations.the_double_max.value: 51.0 }


---
"Missing field with missing param":

- do:
search:
body:
aggs:
the_missing_max:
max:
field: foo
missing: 1

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_missing_max.value: 1 }

---
"Missing field without missing param":

- do:
search:
body:
aggs:
the_missing_max:
max:
field: foo

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- is_false: aggregations.the_missing_max.value

---
"Metadata test":

- do:
search:
body:
aggs:
the_int_max:
meta:
foo: bar
max:
field: int_field

- match: { hits.total: 4 }
- length: { hits.hits: 4 }
- match: { aggregations.the_int_max.value: 151.0 }
- match: { aggregations.the_int_max.meta.foo: "bar" }

---
"Aggregating wrong datatype test":

- do:
catch: request
search:
body:
aggs:
the_string_avg:
avg:
field: string_field
Loading

0 comments on commit 9ece56b

Please sign in to comment.