2018-01-30 20:03:16 +00:00
|
|
|
// +build !freebsd
|
|
|
|
|
2018-01-26 23:14:54 +00:00
|
|
|
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)
|
|
|
|
}))
|
|
|
|
}
|