freeleaps-ops/3rd/load-watcher/pkg/watcher/internal/metricsprovider/signalfx_test.go

100 lines
2.1 KiB
Go
Raw Normal View History

package metricsprovider
import (
"github.com/paypal/load-watcher/pkg/watcher"
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestNewSignalFxClient(t *testing.T) {
opts := watcher.MetricsProviderOpts{
Name: watcher.SignalFxClientName,
Address: "",
AuthToken: "Test",
}
_, err := NewSignalFxClient(opts)
assert.Nil(t, err)
opts.Name = "invalid"
_, err = NewSignalFxClient(opts)
assert.NotNil(t, err)
}
func TestFetchAllHostMetrics(t *testing.T) {
metricData := `{
"data": {
"Ehql_bxBgAc": [
[
1600213380000,
84.64246793530153
]
],
"EuXgJm7BkAA": [
[
1614634260000,
5.450946379084264
]
]
},
"errors": []
}`
metaData := `{
"count":2,
"partialCount":false,
"results":[
{
"active":true,
"created":1614534848000,
"creator":null,
"dimensions":{
"host":"test1.dev.com",
"sf_metric":null
},
"id":"Ehql_bxBgAc",
"lastUpdated":0,
"lastUpdatedBy":null,
"metric":"cpu.utilization"
},
{
"active":true,
"created":1614534848000,
"creator":null,
"dimensions":{
"host":"test2.dev.com",
"sf_metric":null
},
"id":"EuXgJm7BkAA",
"lastUpdated":0,
"lastUpdatedBy":null,
"metric":"cpu.utilization"
}
]
}`
server := httptest.NewServer(http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
if strings.Contains(req.URL.Path, signalFxMetdataAPI) {
resp.Write([]byte(metaData))
} else {
resp.Write([]byte(metricData))
}
}))
opts := watcher.MetricsProviderOpts{
Name: watcher.SignalFxClientName,
Address: server.URL,
AuthToken: "PWNED",
}
client, err := NewSignalFxClient(opts)
assert.Nil(t, err)
metrics, err := client.FetchAllHostsMetrics(watcher.CurrentFifteenMinuteWindow())
assert.Nil(t, err)
assert.NotNil(t, metrics)
assert.NotNil(t, metrics["test1"])
assert.NotNil(t, metrics["test2"])
defer server.Close()
}