92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
|
package icinga2
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
func TestGatherServicesStatus(t *testing.T) {
|
||
|
|
||
|
s := `{"results":[
|
||
|
{
|
||
|
"attrs": {
|
||
|
"check_command": "check-bgp-juniper-netconf",
|
||
|
"display_name": "eq-par.dc2.fr",
|
||
|
"name": "ef017af8-c684-4f3f-bb20-0dfe9fcd3dbe",
|
||
|
"state": 0
|
||
|
},
|
||
|
"joins": {},
|
||
|
"meta": {},
|
||
|
"name": "eq-par.dc2.fr!ef017af8-c684-4f3f-bb20-0dfe9fcd3dbe",
|
||
|
"type": "Service"
|
||
|
}
|
||
|
]}`
|
||
|
|
||
|
checks := Result{}
|
||
|
json.Unmarshal([]byte(s), &checks)
|
||
|
fields := map[string]interface{}{
|
||
|
"name": "ef017af8-c684-4f3f-bb20-0dfe9fcd3dbe",
|
||
|
"state_code": 0,
|
||
|
}
|
||
|
tags := map[string]string{
|
||
|
"display_name": "eq-par.dc2.fr",
|
||
|
"check_command": "check-bgp-juniper-netconf",
|
||
|
"state": "ok",
|
||
|
"source": "localhost",
|
||
|
"port": "5665",
|
||
|
"scheme": "https",
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
|
||
|
icinga2 := new(Icinga2)
|
||
|
icinga2.ObjectType = "services"
|
||
|
icinga2.Server = "https://localhost:5665"
|
||
|
icinga2.GatherStatus(&acc, checks.Results)
|
||
|
acc.AssertContainsTaggedFields(t, "icinga2_services", fields, tags)
|
||
|
}
|
||
|
|
||
|
func TestGatherHostsStatus(t *testing.T) {
|
||
|
|
||
|
s := `{"results":[
|
||
|
{
|
||
|
"attrs": {
|
||
|
"name": "webserver",
|
||
|
"address": "192.168.1.1",
|
||
|
"check_command": "ping",
|
||
|
"display_name": "apache",
|
||
|
"state": 2
|
||
|
},
|
||
|
"joins": {},
|
||
|
"meta": {},
|
||
|
"name": "webserver",
|
||
|
"type": "Host"
|
||
|
}
|
||
|
]}`
|
||
|
|
||
|
checks := Result{}
|
||
|
json.Unmarshal([]byte(s), &checks)
|
||
|
fields := map[string]interface{}{
|
||
|
"name": "webserver",
|
||
|
"state_code": 2,
|
||
|
}
|
||
|
tags := map[string]string{
|
||
|
"display_name": "apache",
|
||
|
"check_command": "ping",
|
||
|
"state": "critical",
|
||
|
"source": "localhost",
|
||
|
"port": "5665",
|
||
|
"scheme": "https",
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
|
||
|
icinga2 := new(Icinga2)
|
||
|
icinga2.ObjectType = "hosts"
|
||
|
icinga2.Server = "https://localhost:5665"
|
||
|
icinga2.GatherStatus(&acc, checks.Results)
|
||
|
acc.AssertContainsTaggedFields(t, "icinga2_hosts", fields, tags)
|
||
|
}
|