80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
package phpfpm
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/influxdb/telegraf/testutil"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
)
|
|
|
|
func TestPhpFpmGeneratesMetrics(t *testing.T) {
|
|
//We create a fake server to return test data
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprint(w, outputSample)
|
|
}))
|
|
defer ts.Close()
|
|
|
|
//Now we tested again above server, with our authentication data
|
|
r := &phpfpm{
|
|
Urls: []string{ts.URL},
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
|
|
err := r.Gather(&acc)
|
|
require.NoError(t, err)
|
|
|
|
tags := map[string]string{
|
|
"url": ts.Listener.Addr().String(),
|
|
"pool": "www",
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
"accepted_conn": int64(3),
|
|
"listen_queue": int64(1),
|
|
"max_listen_queue": int64(0),
|
|
"listen_queue_len": int64(0),
|
|
"idle_processes": int64(1),
|
|
"active_processes": int64(1),
|
|
"total_processes": int64(2),
|
|
"max_active_processes": int64(1),
|
|
"max_children_reached": int64(2),
|
|
"slow_requests": int64(1),
|
|
}
|
|
|
|
acc.AssertContainsTaggedFields(t, "phpfpm", fields, tags)
|
|
}
|
|
|
|
//When not passing server config, we default to localhost
|
|
//We just want to make sure we did request stat from localhost
|
|
func TestHaproxyDefaultGetFromLocalhost(t *testing.T) {
|
|
r := &phpfpm{}
|
|
|
|
var acc testutil.Accumulator
|
|
|
|
err := r.Gather(&acc)
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "127.0.0.1/status")
|
|
}
|
|
|
|
const outputSample = `
|
|
pool: www
|
|
process manager: dynamic
|
|
start time: 11/Oct/2015:23:38:51 +0000
|
|
start since: 1991
|
|
accepted conn: 3
|
|
listen queue: 1
|
|
max listen queue: 0
|
|
listen queue len: 0
|
|
idle processes: 1
|
|
active processes: 1
|
|
total processes: 2
|
|
max active processes: 1
|
|
max children reached: 2
|
|
slow requests: 1
|
|
`
|