Blame


1 730f973b 2022-01-11 o package icinga
2 730f973b 2022-01-11 o
3 730f973b 2022-01-11 o import (
4 730f973b 2022-01-11 o "crypto/tls"
5 730f973b 2022-01-11 o "errors"
6 730f973b 2022-01-11 o "math/rand"
7 730f973b 2022-01-11 o "net/http"
8 730f973b 2022-01-11 o "sort"
9 730f973b 2022-01-11 o "testing"
10 730f973b 2022-01-11 o )
11 730f973b 2022-01-11 o
12 730f973b 2022-01-11 o func randomHostname() string {
13 730f973b 2022-01-11 o var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
14 730f973b 2022-01-11 o b := make([]rune, 8)
15 730f973b 2022-01-11 o for i := range b {
16 730f973b 2022-01-11 o b[i] = letters[rand.Intn(len(letters))]
17 730f973b 2022-01-11 o }
18 730f973b 2022-01-11 o return string(b) + ".example.org"
19 730f973b 2022-01-11 o }
20 730f973b 2022-01-11 o
21 730f973b 2022-01-11 o func compareStringSlice(a, b []string) bool {
22 730f973b 2022-01-11 o if len(a) != len(b) {
23 730f973b 2022-01-11 o return false
24 730f973b 2022-01-11 o }
25 730f973b 2022-01-11 o for i, v := range a {
26 730f973b 2022-01-11 o if v != b[i] {
27 730f973b 2022-01-11 o return false
28 730f973b 2022-01-11 o }
29 730f973b 2022-01-11 o }
30 730f973b 2022-01-11 o return true
31 730f973b 2022-01-11 o }
32 730f973b 2022-01-11 o
33 730f973b 2022-01-11 o func TestFilter(t *testing.T) {
34 730f973b 2022-01-11 o tp := http.DefaultTransport.(*http.Transport)
35 730f973b 2022-01-11 o tp.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
36 730f973b 2022-01-11 o c := http.DefaultClient
37 730f973b 2022-01-11 o c.Transport = tp
38 730f973b 2022-01-11 o client, err := Dial("127.0.0.1:5665", "root", "8eec5ede1673b757", c)
39 730f973b 2022-01-11 o if err != nil {
40 730f973b 2022-01-11 o t.Skipf("no local test icinga? got: %v", err)
41 730f973b 2022-01-11 o }
42 730f973b 2022-01-11 o
43 730f973b 2022-01-11 o var want, got []string
44 730f973b 2022-01-11 o for i := 0; i < 5; i++ {
45 730f973b 2022-01-11 o h := Host{Name: randomHostname(), CheckCommand: "hostalive"}
46 730f973b 2022-01-11 o want = append(want, h.Name)
47 730f973b 2022-01-11 o if err := client.CreateHost(h); err != nil {
48 730f973b 2022-01-11 o if !errors.Is(err, ErrExist) {
49 730f973b 2022-01-11 o t.Error(err)
50 730f973b 2022-01-11 o }
51 730f973b 2022-01-11 o continue
52 730f973b 2022-01-11 o }
53 730f973b 2022-01-11 o t.Logf("created host %s", h.Name)
54 730f973b 2022-01-11 o }
55 730f973b 2022-01-11 o hosts, err := client.FilterHosts("match(\"*example.org\", host.name)")
56 730f973b 2022-01-11 o if err != nil {
57 730f973b 2022-01-11 o t.Fatal(err)
58 730f973b 2022-01-11 o }
59 730f973b 2022-01-11 o for _, h := range hosts {
60 730f973b 2022-01-11 o got = append(got, h.Name)
61 730f973b 2022-01-11 o }
62 730f973b 2022-01-11 o sort.Strings(want)
63 730f973b 2022-01-11 o sort.Strings(got)
64 730f973b 2022-01-11 o if !compareStringSlice(want, got) {
65 730f973b 2022-01-11 o t.Fail()
66 730f973b 2022-01-11 o }
67 730f973b 2022-01-11 o t.Logf("want %+v got %+v", want, got)
68 730f973b 2022-01-11 o }