/
autoquery_test.go
105 lines (98 loc) · 2.98 KB
/
autoquery_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
package main
import (
"github.com/amundi/escheck/config"
"github.com/amundi/escheck/eslog"
"github.com/stretchr/testify/assert"
"gopkg.in/olivere/elastic.v2"
"testing"
)
func TestAutoQuery_SetQueryConfig(t *testing.T) {
eslog.InitSilent()
query := new(autoQuery)
query.name = "test"
c := config.ManualQueryList{}
config.G_Config.Config = &config.Config{
QueryList: map[string]config.Query{
"test": config.Query{
Query: config.QueryInfo{
Index: "test*",
Limit: 50,
},
Actions: config.Actions{
List: []string{"email"},
Email: config.Email{
To: []string{"tester1@test.com", "maurice@email.org"},
Title: "Es gibt ein Problem",
Text: "Huge problem in your cluster",
},
},
},
"badtest": config.Query{},
},
}
err := query.SetQueryConfig(c)
assert.Equal(t, false, err)
assert.Equal(t, 50, query.limit)
assert.Equal(t, []string{"tester1@test.com", "maurice@email.org"}, query.mail.AlertMail.GetRecipients())
assert.Equal(t, []string{"tester1@test.com", "maurice@email.org"}, query.mail.EndAlertMail.GetRecipients())
assert.Equal(t, "Alert Elastic: Es gibt ein Problem", query.mail.AlertMail.GetSubject())
assert.Equal(t, "Huge problem in your cluster", query.mail.body)
assert.NotNil(t, query.queryInfo)
//case of query without actions
query.name = "badtest"
err = query.SetQueryConfig(c)
assert.Equal(t, false, err)
query.name = ""
err = query.SetQueryConfig(c)
assert.Equal(t, true, err)
}
func TestAutoQuery_BuildQuery(t *testing.T) {
eslog.Init()
test := new(autoQuery)
test.queryInfo = &config.QueryInfo{
Type: "boolfilter",
Clauses: map[string]interface{}{
"must": []interface{}{
map[interface{}]interface{}{"term": []interface{}{"Value", 146.5}},
map[interface{}]interface{}{"term": []interface{}{"othervalue", "testTest"}},
map[interface{}]interface{}{"range": []interface{}{"Timestamp", "lt", "now-1h"}},
},
"must_not": []interface{}{
map[interface{}]interface{}{"term": []interface{}{"status", "OK"}},
},
},
}
realQuery := elastic.NewBoolFilter().Must(
elastic.NewTermFilter("Value", 146.5),
elastic.NewTermFilter("othervalue", "testTest"),
elastic.NewRangeFilter("Timestamp").Lt("now-1h"),
).MustNot(
elastic.NewTermFilter("status", "OK"),
)
myQuery, err := test.BuildQuery()
assert.Equal(t, nil, err)
assert.Equal(t, realQuery, myQuery)
test.queryInfo = &config.QueryInfo{
Type: "boolfilter",
Clauses: map[string]interface{}{
"muts": []interface{}{
map[interface{}]interface{}{"term": []interface{}{"Value", 146.5}},
map[interface{}]interface{}{"term": []interface{}{"othervalue", "testTest"}},
},
},
}
myQuery, err = test.BuildQuery()
assert.NotNil(t, err)
}
func TestAutoQuery_CheckCondition(t *testing.T) {
test := new(autoQuery)
test.limit = 10
search := &elastic.SearchResult{
Hits: &elastic.SearchHits{
TotalHits: 100,
},
}
assert.Equal(t, true, test.CheckCondition(search))
test.limit = 400
assert.Equal(t, false, test.CheckCondition(search))
}