115 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			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)
 | |
| 	}))
 | |
| }
 |