Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
171
plugins/inputs/supervisor/supervisor_test.go
Normal file
171
plugins/inputs/supervisor/supervisor_test.go
Normal file
|
@ -0,0 +1,171 @@
|
|||
package supervisor
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/docker/go-connections/nat"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/testcontainers/testcontainers-go/wait"
|
||||
|
||||
"github.com/influxdata/telegraf/testutil"
|
||||
)
|
||||
|
||||
func TestShort_SampleData(t *testing.T) {
|
||||
testCases := []struct {
|
||||
desc string
|
||||
supervisorData supervisorInfo
|
||||
sampleProcInfo []processInfo
|
||||
expProcessFields []map[string]interface{}
|
||||
expProcessTags []map[string]string
|
||||
expInstanceFields map[string]interface{}
|
||||
expInstancesTags map[string]string
|
||||
}{
|
||||
{
|
||||
desc: "Case 1",
|
||||
sampleProcInfo: []processInfo{
|
||||
{
|
||||
Name: "Process0",
|
||||
Group: "ProcessGroup0",
|
||||
Description: "pid 112 uptime 0:12:11",
|
||||
Start: 1615632853,
|
||||
Stop: 0,
|
||||
Now: 1615632853 + 731,
|
||||
State: 20,
|
||||
Statename: "RUNNING",
|
||||
StdoutLogfile: "/var/log/supervisor/process0-stdout.log",
|
||||
StderrLogfile: "/var/log/supervisor/process0-stdout.log",
|
||||
SpawnErr: "",
|
||||
ExitStatus: 0,
|
||||
Pid: 112,
|
||||
},
|
||||
{
|
||||
Name: "Process1",
|
||||
Group: "ProcessGroup1",
|
||||
Description: "pid 113 uptime 0:12:11",
|
||||
Start: 1615632853,
|
||||
Stop: 0,
|
||||
Now: 1615632853 + 731,
|
||||
State: 20,
|
||||
Statename: "RUNNING",
|
||||
StdoutLogfile: "/var/log/supervisor/process1-stdout.log",
|
||||
StderrLogfile: "/var/log/supervisor/process1-stderr.log",
|
||||
SpawnErr: "",
|
||||
ExitStatus: 0,
|
||||
Pid: 113,
|
||||
},
|
||||
},
|
||||
supervisorData: supervisorInfo{
|
||||
StateCode: int8(1),
|
||||
StateName: "RUNNING",
|
||||
Ident: "supervisor",
|
||||
},
|
||||
expProcessFields: []map[string]interface{}{
|
||||
{
|
||||
"uptime": int32(731),
|
||||
"state": int16(20),
|
||||
"pid": int32(112),
|
||||
"exitCode": int8(0),
|
||||
},
|
||||
{
|
||||
"uptime": int32(731),
|
||||
"state": int16(20),
|
||||
"pid": int32(113),
|
||||
"exitCode": int8(0),
|
||||
},
|
||||
},
|
||||
expProcessTags: []map[string]string{
|
||||
{
|
||||
"process": "Process0",
|
||||
"group": "ProcessGroup0",
|
||||
"source": "example.org",
|
||||
"port": "9001",
|
||||
"id": "supervisor",
|
||||
},
|
||||
{
|
||||
"process": "Process1",
|
||||
"group": "ProcessGroup1",
|
||||
"source": "example.org",
|
||||
"port": "9001",
|
||||
"id": "supervisor",
|
||||
},
|
||||
},
|
||||
expInstanceFields: map[string]interface{}{
|
||||
"state": int8(1),
|
||||
},
|
||||
expInstancesTags: map[string]string{
|
||||
"source": "example.org",
|
||||
"port": "9001",
|
||||
"id": "supervisor",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tC := range testCases {
|
||||
t.Run(tC.desc, func(t *testing.T) {
|
||||
s := &Supervisor{
|
||||
Server: "http://example.org:9001/RPC2",
|
||||
}
|
||||
status := supervisorInfo{
|
||||
StateCode: tC.supervisorData.StateCode,
|
||||
StateName: tC.supervisorData.StateName,
|
||||
Ident: tC.supervisorData.Ident,
|
||||
}
|
||||
err := s.Init()
|
||||
if err != nil {
|
||||
t.Errorf("failed to run Init function: %v", err)
|
||||
}
|
||||
for k, v := range tC.sampleProcInfo {
|
||||
processTags, processFields, err := s.parseProcessData(v, status)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tC.expProcessFields[k], processFields)
|
||||
require.Equal(t, tC.expProcessTags[k], processTags)
|
||||
}
|
||||
instanceTags, instanceFields, err := s.parseInstanceData(status)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tC.expInstancesTags, instanceTags)
|
||||
require.Equal(t, tC.expInstanceFields, instanceFields)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntegration_BasicGathering(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
const supervisorPort = "9001"
|
||||
supervisorConfig, err := filepath.Abs("testdata/supervisord.conf")
|
||||
require.NoError(t, err, "Failed to get absolute path of supervisord config")
|
||||
ctr := testutil.Container{
|
||||
Image: "niasar/supervisor:stretch-3.3",
|
||||
ExposedPorts: []string{supervisorPort},
|
||||
Files: map[string]string{
|
||||
"/etc/supervisor/supervisord.conf": supervisorConfig,
|
||||
},
|
||||
WaitingFor: wait.ForAll(
|
||||
wait.ForLog("entered RUNNING state").WithOccurrence(6),
|
||||
wait.ForListeningPort(nat.Port(supervisorPort)),
|
||||
),
|
||||
}
|
||||
err = ctr.Start()
|
||||
require.NoError(t, err, "failed to start container")
|
||||
defer ctr.Terminate()
|
||||
s := &Supervisor{
|
||||
Server: "http://login:pass@" + testutil.GetLocalHost() + ":" + ctr.Ports[supervisorPort] + "/RPC2",
|
||||
}
|
||||
err = s.Init()
|
||||
require.NoError(t, err, "failed to run Init function")
|
||||
var acc testutil.Accumulator
|
||||
err = acc.GatherError(s.Gather)
|
||||
require.NoError(t, err)
|
||||
require.True(t, acc.HasField("supervisor_processes", "uptime"))
|
||||
require.True(t, acc.HasField("supervisor_processes", "state"))
|
||||
require.True(t, acc.HasField("supervisor_processes", "pid"))
|
||||
require.True(t, acc.HasField("supervisor_processes", "exitCode"))
|
||||
require.True(t, acc.HasField("supervisor_instance", "state"))
|
||||
require.True(t, acc.HasTag("supervisor_processes", "id"))
|
||||
require.True(t, acc.HasTag("supervisor_processes", "source"))
|
||||
require.True(t, acc.HasTag("supervisor_processes", "port"))
|
||||
require.True(t, acc.HasTag("supervisor_instance", "id"))
|
||||
require.True(t, acc.HasTag("supervisor_instance", "source"))
|
||||
require.True(t, acc.HasTag("supervisor_instance", "port"))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue