telegraf/plugins/inputs/uwsgi/uwsgi_test.go

186 lines
3.1 KiB
Go

package uwsgi_test
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/influxdata/telegraf/plugins/inputs/uwsgi"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/require"
)
func TestBasic(t *testing.T) {
js := `
{
"version":"2.0.12",
"listen_queue":0,
"listen_queue_errors":0,
"signal_queue":0,
"load":0,
"pid":28372,
"uid":1000,
"gid":1000,
"cwd":"/opt/uwsgi",
"locks":[
{
"user 0":0
},
{
"signal":0
},
{
"filemon":0
},
{
"timer":0
},
{
"rbtimer":0
},
{
"cron":0
},
{
"rpc":0
},
{
"snmp":0
}
],
"sockets":[
{
"name":"127.0.0.1:47430",
"proto":"uwsgi",
"queue":0,
"max_queue":100,
"shared":0,
"can_offload":0
}
],
"workers":[
{
"id":1,
"pid":28375,
"accepting":1,
"requests":0,
"delta_requests":0,
"exceptions":0,
"harakiri_count":0,
"signals":0,
"signal_queue":0,
"status":"idle",
"rss":0,
"vsz":0,
"running_time":0,
"last_spawn":1459942782,
"respawn_count":1,
"tx":0,
"avg_rt":0,
"apps":[
{
"id":0,
"modifier1":0,
"mountpoint":"",
"startup_time":0,
"requests":0,
"exceptions":0,
"chdir":""
}
],
"cores":[
{
"id":0,
"requests":0,
"static_requests":0,
"routed_requests":0,
"offloaded_requests":0,
"write_errors":0,
"read_errors":0,
"in_request":0,
"vars":[
]
}
]
}
]
}
`
fakeServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
_, _ = w.Write([]byte(js))
} else {
w.WriteHeader(http.StatusNotFound)
}
}))
defer fakeServer.Close()
plugin := &uwsgi.Uwsgi{
Servers: []string{fakeServer.URL + "/"},
}
var acc testutil.Accumulator
plugin.Gather(&acc)
require.Equal(t, 0, len(acc.Errors))
}
func TestInvalidJSON(t *testing.T) {
js := `
{
"version":"2.0.12",
"listen_queue":0,
"listen_queue_errors":0,
"signal_queue":0,
"load":0,
"pid:28372
"uid":10
}
`
fakeServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
_, _ = w.Write([]byte(js))
} else {
w.WriteHeader(http.StatusNotFound)
}
}))
defer fakeServer.Close()
plugin := &uwsgi.Uwsgi{
Servers: []string{fakeServer.URL + "/"},
}
var acc testutil.Accumulator
plugin.Gather(&acc)
require.Equal(t, 1, len(acc.Errors))
}
func TestHttpError(t *testing.T) {
plugin := &uwsgi.Uwsgi{
Servers: []string{"http://novalidurladress/"},
}
var acc testutil.Accumulator
plugin.Gather(&acc)
require.Equal(t, 1, len(acc.Errors))
}
func TestTcpError(t *testing.T) {
plugin := &uwsgi.Uwsgi{
Servers: []string{"tcp://novalidtcpadress/"},
}
var acc testutil.Accumulator
plugin.Gather(&acc)
require.Equal(t, 1, len(acc.Errors))
}
func TestUnixSocketError(t *testing.T) {
plugin := &uwsgi.Uwsgi{
Servers: []string{"unix:///novalidunixsocket"},
}
var acc testutil.Accumulator
plugin.Gather(&acc)
require.Equal(t, 1, len(acc.Errors))
}