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)
 | |
| }
 |