67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package kibana
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"net/http"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/influxdata/telegraf/testutil"
 | |
| )
 | |
| 
 | |
| func defaultTags() map[string]string {
 | |
| 	return map[string]string{
 | |
| 		"name":    "my-kibana",
 | |
| 		"source":  "example.com:5601",
 | |
| 		"version": "6.3.2",
 | |
| 		"status":  "green",
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type transportMock struct {
 | |
| 	statusCode int
 | |
| 	body       string
 | |
| }
 | |
| 
 | |
| func newTransportMock(statusCode int, body string) http.RoundTripper {
 | |
| 	return &transportMock{
 | |
| 		statusCode: statusCode,
 | |
| 		body:       body,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (t *transportMock) RoundTrip(r *http.Request) (*http.Response, error) {
 | |
| 	res := &http.Response{
 | |
| 		Header:     make(http.Header),
 | |
| 		Request:    r,
 | |
| 		StatusCode: t.statusCode,
 | |
| 	}
 | |
| 	res.Header.Set("Content-Type", "application/json")
 | |
| 	res.Body = ioutil.NopCloser(strings.NewReader(t.body))
 | |
| 	return res, nil
 | |
| }
 | |
| 
 | |
| func checkKibanaStatusResult(t *testing.T, acc *testutil.Accumulator) {
 | |
| 	tags := defaultTags()
 | |
| 	acc.AssertContainsTaggedFields(t, "kibana", kibanaStatusExpected, tags)
 | |
| }
 | |
| 
 | |
| func TestGather(t *testing.T) {
 | |
| 	ks := newKibanahWithClient()
 | |
| 	ks.Servers = []string{"http://example.com:5601"}
 | |
| 	ks.client.Transport = newTransportMock(http.StatusOK, kibanaStatusResponse)
 | |
| 
 | |
| 	var acc testutil.Accumulator
 | |
| 	if err := acc.GatherError(ks.Gather); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	checkKibanaStatusResult(t, &acc)
 | |
| }
 | |
| 
 | |
| func newKibanahWithClient() *Kibana {
 | |
| 	ks := NewKibana()
 | |
| 	ks.client = &http.Client{}
 | |
| 	return ks
 | |
| }
 |