171 lines
3.2 KiB
Go
171 lines
3.2 KiB
Go
|
//go:build linux
|
||
|
|
||
|
package kernel
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/influxdata/telegraf"
|
||
|
"github.com/influxdata/telegraf/metric"
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
func TestPSIEnabledWrongDir(t *testing.T) {
|
||
|
k := Kernel{
|
||
|
psiDir: "testdata/this_directory_does_not_exist/stub",
|
||
|
ConfigCollect: []string{"psi"},
|
||
|
}
|
||
|
|
||
|
require.ErrorContains(t, k.Init(), "failed to initialize procfs on ")
|
||
|
}
|
||
|
|
||
|
func TestPSIStats(t *testing.T) {
|
||
|
k := Kernel{
|
||
|
psiDir: "testdata/pressure",
|
||
|
ConfigCollect: []string{"psi"},
|
||
|
}
|
||
|
require.NoError(t, k.Init())
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
require.NoError(t, k.gatherPressure(&acc))
|
||
|
|
||
|
expected := []telegraf.Metric{
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "cpu",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"avg10": float64(10),
|
||
|
"avg60": float64(60),
|
||
|
"avg300": float64(300),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Gauge,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "cpu",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"total": uint64(114514),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Counter,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "memory",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"avg10": float64(10),
|
||
|
"avg60": float64(60),
|
||
|
"avg300": float64(300),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Gauge,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "memory",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"total": uint64(114514),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Counter,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "io",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"avg10": float64(10),
|
||
|
"avg60": float64(60),
|
||
|
"avg300": float64(300),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Gauge,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "io",
|
||
|
"type": "some",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"total": uint64(114514),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Counter,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "memory",
|
||
|
"type": "full",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"avg10": float64(1),
|
||
|
"avg60": float64(6),
|
||
|
"avg300": float64(30),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Gauge,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "memory",
|
||
|
"type": "full",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"total": uint64(11451),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Counter,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "io",
|
||
|
"type": "full",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"avg10": float64(1),
|
||
|
"avg60": float64(6),
|
||
|
"avg300": float64(30),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Gauge,
|
||
|
),
|
||
|
metric.New(
|
||
|
"pressure",
|
||
|
map[string]string{
|
||
|
"resource": "io",
|
||
|
"type": "full",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"total": uint64(11451),
|
||
|
},
|
||
|
time.Unix(0, 0),
|
||
|
telegraf.Counter,
|
||
|
),
|
||
|
}
|
||
|
|
||
|
actual := acc.GetTelegrafMetrics()
|
||
|
testutil.RequireMetricsEqual(t, expected, actual, testutil.IgnoreTime(), testutil.SortMetrics())
|
||
|
}
|