10 func randomHostname() string {
11 var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
14 b[i] = letters[rand.Intn(len(letters))]
16 return string(b) + ".example.org"
19 func compareStringSlice(a, b []string) bool {
31 func TestFilter(t *testing.T) {
32 client, err := newTestClient()
34 t.Skipf("no local test icinga? got: %v", err)
37 hostgroup := HostGroup{Name: "examples", DisplayName: "Test Group"}
38 if err := client.CreateHostGroup(hostgroup); err != nil {
41 hostgroup, err = client.LookupHostGroup(hostgroup.Name)
45 defer client.DeleteHostGroup(hostgroup.Name)
47 var want, got []string
48 for i := 0; i < 5; i++ {
50 Name: randomHostname(),
51 CheckCommand: "hostalive",
52 Groups: []string{hostgroup.Name},
54 want = append(want, h.Name)
55 if err := client.CreateHost(h); err != nil {
56 if !errors.Is(err, ErrExist) {
61 t.Logf("created host %s", h.Name)
64 for _, name := range want {
65 if err := client.DeleteHost(name); err != nil {
70 hosts, err := client.Hosts("match(\"*example.org\", host.name)")
74 for _, h := range hosts {
75 got = append(got, h.Name)
79 if !compareStringSlice(want, got) {
82 t.Logf("want %+v got %+v", want, got)