-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmixed_benchmark_test.go
122 lines (114 loc) · 2.42 KB
/
mixed_benchmark_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package tests_test
import (
"testing"
"github.com/Trendyol/es-query-builder/benchmarks/tests/marshal"
"github.com/Trendyol/es-query-builder/es"
"github.com/Trendyol/es-query-builder/test/assert"
)
func createMixedQuery() map[string]any {
query := es.NewQuery(
es.Bool().
Must(
es.Term("author", "George Orwell"),
).
MustNot(
es.Terms("genre", "Fantasy", "Science Fiction"),
es.Exists("out_of_print"),
).
Should(
es.Terms("title", "1984", "Animal Farm"),
),
).Aggs("genres_count",
es.AggTerms().
Field("genre"),
).Aggs("authors_and_genres",
es.AggTerms().
Field("author").
Aggs("genres",
es.AggTerms().
Field("genre"),
),
)
return query
}
func createMixedQueryVanilla() map[string]any {
query := map[string]interface{}{
"query": map[string]interface{}{
"bool": map[string]interface{}{
"must": []map[string]interface{}{
{
"term": map[string]interface{}{
"author": map[string]interface{}{
"value": "George Orwell",
},
},
},
},
"must_not": []map[string]interface{}{
{
"terms": map[string]interface{}{
"genre": []string{
"Fantasy",
"Science Fiction",
},
},
},
{
"exists": map[string]interface{}{
"field": "out_of_print",
},
},
},
"should": []map[string]interface{}{
{
"terms": map[string]interface{}{
"title": []string{
"1984",
"Animal Farm",
},
},
},
},
},
},
"aggs": map[string]interface{}{
"genres_count": map[string]interface{}{
"terms": map[string]interface{}{
"field": "genre",
},
},
"authors_and_genres": map[string]interface{}{
"terms": map[string]interface{}{
"field": "author",
},
"aggs": map[string]interface{}{
"genres": map[string]interface{}{
"terms": map[string]interface{}{
"field": "genre",
},
},
},
},
},
}
return query
}
func Benchmark_Mixed_Builder(b *testing.B) {
createMixedQuery()
b.ResetTimer()
for i := 0; i < b.N; i++ {
createMixedQuery()
}
}
func Benchmark_Mixed_Vanilla(b *testing.B) {
createMixedQueryVanilla()
b.ResetTimer()
for i := 0; i < b.N; i++ {
createMixedQueryVanilla()
}
}
func Test_Mixed_Queries_are_equal(t *testing.T) {
build := marshal.String(t, createMixedQuery())
vanilla := marshal.String(t, createMixedQueryVanilla())
assert.Equal(t, vanilla, build)
}