Files
telegraf/plugins/inputs/nats/nats_test.go
Daniel Nelson 1b0a4e49cd Do not build nats input on freebsd
This plugin can work on freebsd, but will only build with cgo
enabled.  For now, disable this plugin to avoid this requirement.
2018-01-30 12:04:21 -08:00

115 lines
2.4 KiB
Go

// +build !freebsd
package nats
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/require"
)
var sampleVarz = `
{
"server_id": "n2afhLHLl64Gcaj7S7jaNa",
"version": "1.0.0",
"go": "go1.8",
"host": "0.0.0.0",
"auth_required": false,
"ssl_required": false,
"tls_required": false,
"tls_verify": false,
"addr": "0.0.0.0",
"max_connections": 65536,
"ping_interval": 120000000000,
"ping_max": 2,
"http_host": "0.0.0.0",
"http_port": 1337,
"https_port": 0,
"auth_timeout": 1,
"max_control_line": 1024,
"cluster": {
"addr": "0.0.0.0",
"cluster_port": 0,
"auth_timeout": 1
},
"tls_timeout": 0.5,
"port": 4222,
"max_payload": 1048576,
"start": "1861-04-12T10:15:26.841483489-05:00",
"now": "2011-10-05T15:24:23.722084098-07:00",
"uptime": "150y5md237h8m57s",
"mem": 15581184,
"cores": 48,
"cpu": 9,
"connections": 5,
"total_connections": 109,
"routes": 1,
"remotes": 2,
"in_msgs": 74148556,
"out_msgs": 68863261,
"in_bytes": 946267004717,
"out_bytes": 948110960598,
"slow_consumers": 2,
"subscriptions": 4,
"http_req_stats": {
"/": 1,
"/connz": 100847,
"/routez": 0,
"/subsz": 1,
"/varz": 205785
},
"config_load_time": "2017-07-24T10:15:26.841483489-05:00"
}
`
func TestMetricsCorrect(t *testing.T) {
var acc testutil.Accumulator
srv := newTestNatsServer()
defer srv.Close()
n := &Nats{Server: srv.URL}
err := n.Gather(&acc)
require.NoError(t, err)
fields := map[string]interface{}{
"in_msgs": int64(74148556),
"out_msgs": int64(68863261),
"in_bytes": int64(946267004717),
"out_bytes": int64(948110960598),
"uptime": int64(4748742536880600609),
"cores": 48,
"cpu": float64(9),
"mem": int64(15581184),
"connections": int(5),
"total_connections": uint64(109),
"subscriptions": uint32(4),
"slow_consumers": int64(2),
"routes": int(1),
"remotes": int(2),
}
tags := map[string]string{
"server": srv.URL,
}
acc.AssertContainsTaggedFields(t, "nats", fields, tags)
}
func newTestNatsServer() *httptest.Server {
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var rsp string
switch r.URL.Path {
case "/varz":
rsp = sampleVarz
default:
panic("Cannot handle request")
}
fmt.Fprintln(w, rsp)
}))
}