commit - ae81184d0c6aa8be7d10adac10e675d9096a3a3b
commit + 730f973b47017c91cc9487391554c7ecc861dfc8
blob - /dev/null
blob + c306c079c0887aeabf9a9a65c029f758d2555e5c (mode 644)
--- /dev/null
+++ host_test.go
+package icinga
+
+import (
+ "crypto/tls"
+ "errors"
+ "math/rand"
+ "net/http"
+ "sort"
+ "testing"
+)
+
+func randomHostname() string {
+ var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
+ b := make([]rune, 8)
+ for i := range b {
+ b[i] = letters[rand.Intn(len(letters))]
+ }
+ return string(b) + ".example.org"
+}
+
+func compareStringSlice(a, b []string) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i, v := range a {
+ if v != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+func TestFilter(t *testing.T) {
+ tp := http.DefaultTransport.(*http.Transport)
+ tp.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
+ c := http.DefaultClient
+ c.Transport = tp
+ client, err := Dial("127.0.0.1:5665", "root", "8eec5ede1673b757", c)
+ if err != nil {
+ t.Skipf("no local test icinga? got: %v", err)
+ }
+
+ var want, got []string
+ for i := 0; i < 5; i++ {
+ h := Host{Name: randomHostname(), CheckCommand: "hostalive"}
+ want = append(want, h.Name)
+ if err := client.CreateHost(h); err != nil {
+ if !errors.Is(err, ErrExist) {
+ t.Error(err)
+ }
+ continue
+ }
+ t.Logf("created host %s", h.Name)
+ }
+ hosts, err := client.FilterHosts("match(\"*example.org\", host.name)")
+ if err != nil {
+ t.Fatal(err)
+ }
+ for _, h := range hosts {
+ got = append(got, h.Name)
+ }
+ sort.Strings(want)
+ sort.Strings(got)
+ if !compareStringSlice(want, got) {
+ t.Fail()
+ }
+ t.Logf("want %+v got %+v", want, got)
+}