186 lines
3.1 KiB
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))
|
|
}
|