1
0
Fork 0
telegraf/plugins/inputs/cgroup/cgroupv2_test.go
Daniel Baumann 4978089aab
Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-24 07:26:29 +02:00

328 lines
14 KiB
Go

//go:build linux
package cgroup
import (
"math"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric"
"github.com/influxdata/telegraf/testutil"
)
func TestCgroupV2Cpu(t *testing.T) {
var acc testutil.Accumulator
var cg = &CGroup{
Paths: []string{"testdata/v2"},
Files: []string{"cpu.*"},
logged: make(map[string]bool),
}
expected := []telegraf.Metric{
metric.New(
"cgroup",
map[string]string{"path": `testdata/v2`},
map[string]interface{}{
"cpu.idle": int64(0),
"cpu.max.0": int64(4800000),
"cpu.max.1": int64(100000),
"cpu.max.burst": int64(0),
"cpu.pressure.full.avg10": float64(0),
"cpu.pressure.full.avg300": float64(0.05),
"cpu.pressure.full.avg60": float64(0.08),
"cpu.pressure.full.total": int64(277111656),
"cpu.pressure.some.avg10": float64(0),
"cpu.pressure.some.avg300": float64(0.06),
"cpu.pressure.some.avg60": float64(0.08),
"cpu.pressure.some.total": int64(293391454),
"cpu.stat.burst_usec": int64(0),
"cpu.stat.core_sched.force_idle_usec": int64(0),
"cpu.stat.nr_bursts": int64(0),
"cpu.stat.nr_periods": int64(3936904),
"cpu.stat.nr_throttled": int64(6004),
"cpu.stat.system_usec": int64(37345608977),
"cpu.stat.throttled_usec": int64(19175137007),
"cpu.stat.usage_usec": int64(98701325189),
"cpu.stat.user_usec": int64(61355716211),
"cpu.weight": int64(79),
"cpu.weight.nice": int64(1),
},
time.Unix(0, 0),
),
}
require.NoError(t, acc.GatherError(cg.Gather))
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
}
func TestCgroupV2Memory(t *testing.T) {
var acc testutil.Accumulator
var cg = &CGroup{
Paths: []string{"testdata/v2"},
Files: []string{"memory.*"},
logged: make(map[string]bool),
}
expected := []telegraf.Metric{
metric.New(
"cgroup",
map[string]string{"path": `testdata/v2`},
map[string]interface{}{
"memory.current": int64(13071106048),
"memory.events.high": int64(0),
"memory.events.local.high": int64(0),
"memory.events.local.low": int64(0),
"memory.events.local.max": int64(0),
"memory.events.local.oom": int64(0),
"memory.events.local.oom_group_kill": int64(0),
"memory.events.local.oom_kill": int64(0),
"memory.events.low": int64(0),
"memory.events.max": int64(0),
"memory.events.oom": int64(0),
"memory.events.oom_group_kill": int64(0),
"memory.events.oom_kill": int64(0),
"memory.high": int64(math.MaxInt64),
"memory.low": int64(0),
"memory.max": int64(103079215104),
"memory.min": int64(0),
"memory.numa_stat.active_anon.N0": int64(81920),
"memory.numa_stat.active_anon.N1": int64(98304),
"memory.numa_stat.active_file.N0": int64(2946760704),
"memory.numa_stat.active_file.N1": int64(2650640384),
"memory.numa_stat.anon.N0": int64(1330585600),
"memory.numa_stat.anon.N1": int64(1141161984),
"memory.numa_stat.anon_thp.N0": int64(0),
"memory.numa_stat.anon_thp.N1": int64(2097152),
"memory.numa_stat.file.N0": int64(4531773440),
"memory.numa_stat.file.N1": int64(4001075200),
"memory.numa_stat.file_dirty.N0": int64(258048),
"memory.numa_stat.file_dirty.N1": int64(45056),
"memory.numa_stat.file_mapped.N0": int64(10272768),
"memory.numa_stat.file_mapped.N1": int64(3940352),
"memory.numa_stat.file_thp.N0": int64(0),
"memory.numa_stat.file_thp.N1": int64(0),
"memory.numa_stat.file_writeback.N0": int64(0),
"memory.numa_stat.file_writeback.N1": int64(0),
"memory.numa_stat.inactive_anon.N0": int64(1330479104),
"memory.numa_stat.inactive_anon.N1": int64(1141067776),
"memory.numa_stat.inactive_file.N0": int64(1584979968),
"memory.numa_stat.inactive_file.N1": int64(1350430720),
"memory.numa_stat.kernel_stack.N0": int64(4161536),
"memory.numa_stat.kernel_stack.N1": int64(5537792),
"memory.numa_stat.pagetables.N0": int64(7839744),
"memory.numa_stat.pagetables.N1": int64(8462336),
"memory.numa_stat.sec_pagetables.N0": int64(0),
"memory.numa_stat.sec_pagetables.N1": int64(0),
"memory.numa_stat.shmem.N0": int64(0),
"memory.numa_stat.shmem.N1": int64(4096),
"memory.numa_stat.shmem_thp.N0": int64(0),
"memory.numa_stat.shmem_thp.N1": int64(0),
"memory.numa_stat.slab_reclaimable.N0": int64(950447920),
"memory.numa_stat.slab_reclaimable.N1": int64(1081869088),
"memory.numa_stat.slab_unreclaimable.N0": int64(2654816),
"memory.numa_stat.slab_unreclaimable.N1": int64(2661512),
"memory.numa_stat.swapcached.N0": int64(0),
"memory.numa_stat.swapcached.N1": int64(0),
"memory.numa_stat.unevictable.N0": int64(0),
"memory.numa_stat.unevictable.N1": int64(0),
"memory.numa_stat.workingset_activate_anon.N0": int64(0),
"memory.numa_stat.workingset_activate_anon.N1": int64(0),
"memory.numa_stat.workingset_activate_file.N0": int64(40145),
"memory.numa_stat.workingset_activate_file.N1": int64(65541),
"memory.numa_stat.workingset_nodereclaim.N0": int64(0),
"memory.numa_stat.workingset_nodereclaim.N1": int64(0),
"memory.numa_stat.workingset_refault_anon.N0": int64(0),
"memory.numa_stat.workingset_refault_anon.N1": int64(0),
"memory.numa_stat.workingset_refault_file.N0": int64(346752),
"memory.numa_stat.workingset_refault_file.N1": int64(282604),
"memory.numa_stat.workingset_restore_anon.N0": int64(0),
"memory.numa_stat.workingset_restore_anon.N1": int64(0),
"memory.numa_stat.workingset_restore_file.N0": int64(19386),
"memory.numa_stat.workingset_restore_file.N1": int64(10010),
"memory.oom.group": int64(1),
"memory.peak": int64(87302021120),
"memory.pressure.full.avg10": float64(0),
"memory.pressure.full.avg300": float64(0),
"memory.pressure.full.avg60": float64(0),
"memory.pressure.full.total": int64(250662),
"memory.pressure.some.avg10": float64(0),
"memory.pressure.some.avg300": float64(0),
"memory.pressure.some.avg60": float64(0),
"memory.pressure.some.total": int64(250773),
"memory.stat.active_anon": int64(180224),
"memory.stat.active_file": int64(5597401088),
"memory.stat.anon": int64(2471755776),
"memory.stat.anon_thp": int64(2097152),
"memory.stat.file": int64(8532865024),
"memory.stat.file_dirty": int64(319488),
"memory.stat.file_mapped": int64(14213120),
"memory.stat.file_thp": int64(0),
"memory.stat.file_writeback": int64(0),
"memory.stat.inactive_anon": int64(2471559168),
"memory.stat.inactive_file": int64(2935459840),
"memory.stat.kernel": int64(2065149952),
"memory.stat.kernel_stack": int64(9699328),
"memory.stat.pagetables": int64(16302080),
"memory.stat.percpu": int64(3528),
"memory.stat.pgactivate": int64(13516655),
"memory.stat.pgdeactivate": int64(9151751),
"memory.stat.pgfault": int64(1973187551),
"memory.stat.pglazyfree": int64(5549),
"memory.stat.pglazyfreed": int64(1),
"memory.stat.pgmajfault": int64(8497),
"memory.stat.pgrefill": int64(9153617),
"memory.stat.pgscan": int64(12149209),
"memory.stat.pgscan_direct": int64(4436521),
"memory.stat.pgscan_kswapd": int64(7712688),
"memory.stat.pgsteal": int64(12139915),
"memory.stat.pgsteal_direct": int64(4429690),
"memory.stat.pgsteal_kswapd": int64(7710225),
"memory.stat.sec_pagetables": int64(0),
"memory.stat.shmem": int64(4096),
"memory.stat.shmem_thp": int64(0),
"memory.stat.slab": int64(2037641160),
"memory.stat.slab_reclaimable": int64(2032322192),
"memory.stat.slab_unreclaimable": int64(5318968),
"memory.stat.sock": int64(0),
"memory.stat.swapcached": int64(0),
"memory.stat.thp_collapse_alloc": int64(3),
"memory.stat.thp_fault_alloc": int64(13),
"memory.stat.unevictable": int64(0),
"memory.stat.vmalloc": int64(0),
"memory.stat.workingset_activate_anon": int64(0),
"memory.stat.workingset_activate_file": int64(105686),
"memory.stat.workingset_nodereclaim": int64(0),
"memory.stat.workingset_refault_anon": int64(0),
"memory.stat.workingset_refault_file": int64(629356),
"memory.stat.workingset_restore_anon": int64(0),
"memory.stat.workingset_restore_file": int64(29396),
"memory.swap.current": int64(0),
"memory.swap.events.fail": int64(0),
"memory.swap.events.high": int64(0),
"memory.swap.events.max": int64(0),
"memory.swap.high": int64(math.MaxInt64),
"memory.swap.max": int64(0),
},
time.Unix(0, 0),
),
}
require.NoError(t, acc.GatherError(cg.Gather))
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
}
func TestCgroupV2Io(t *testing.T) {
var acc testutil.Accumulator
var cg = &CGroup{
Paths: []string{"testdata/v2"},
Files: []string{"io.*"},
logged: make(map[string]bool),
}
expected := []telegraf.Metric{
metric.New(
"cgroup",
map[string]string{"path": `testdata/v2`},
map[string]interface{}{
"io.bfq.weight.default": int64(100),
"io.pressure.full.avg10": float64(0),
"io.pressure.full.avg300": float64(0),
"io.pressure.full.avg60": float64(0),
"io.pressure.full.total": 184607952,
"io.pressure.some.avg10": float64(0),
"io.pressure.some.avg300": float64(0),
"io.pressure.some.avg60": float64(0),
"io.pressure.some.total": 185162400,
"io.stat.259:8.dbytes": int64(0),
"io.stat.259:8.dios": int64(0),
"io.stat.259:8.rbytes": int64(74526720),
"io.stat.259:8.rios": int64(2936),
"io.stat.259:8.wbytes": int64(3789381632),
"io.stat.259:8.wios": int64(181928),
},
time.Unix(0, 0),
),
}
require.NoError(t, acc.GatherError(cg.Gather))
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
}
func TestCgroupV2Hugetlb(t *testing.T) {
var acc testutil.Accumulator
var cg = &CGroup{
Paths: []string{"testdata/v2"},
Files: []string{"hugetlb.*"},
logged: make(map[string]bool),
}
expected := []telegraf.Metric{
metric.New(
"cgroup",
map[string]string{"path": `testdata/v2`},
map[string]interface{}{
"hugetlb.1GB.current": int64(0),
"hugetlb.1GB.events.0": int64(math.MaxInt64),
"hugetlb.1GB.events.1": int64(0),
"hugetlb.1GB.events.local.0": int64(math.MaxInt64),
"hugetlb.1GB.events.local.1": int64(0),
"hugetlb.1GB.max": int64(math.MaxInt64),
"hugetlb.1GB.numa_stat.N0": int64(0),
"hugetlb.1GB.numa_stat.N1": int64(0),
"hugetlb.1GB.numa_stat.total": int64(0),
"hugetlb.1GB.rsvd.current": int64(0),
"hugetlb.1GB.rsvd.max": int64(math.MaxInt64),
"hugetlb.2MB.current": int64(0),
"hugetlb.2MB.events.0": int64(math.MaxInt64),
"hugetlb.2MB.events.1": int64(0),
"hugetlb.2MB.events.local.0": int64(math.MaxInt64),
"hugetlb.2MB.events.local.1": int64(0),
"hugetlb.2MB.max": int64(math.MaxInt64),
"hugetlb.2MB.numa_stat.N0": int64(0),
"hugetlb.2MB.numa_stat.N1": int64(0),
"hugetlb.2MB.numa_stat.total": int64(0),
"hugetlb.2MB.rsvd.current": int64(0),
"hugetlb.2MB.rsvd.max": int64(math.MaxInt64),
},
time.Unix(0, 0),
),
}
require.NoError(t, acc.GatherError(cg.Gather))
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
}
func TestCgroupV2Pids(t *testing.T) {
var acc testutil.Accumulator
var cg = &CGroup{
Paths: []string{"testdata/v2"},
Files: []string{"pids.*"},
logged: make(map[string]bool),
}
expected := []telegraf.Metric{
metric.New(
"cgroup",
map[string]string{"path": `testdata/v2`},
map[string]interface{}{
"pids.current": int64(592),
"pids.events.0": int64(math.MaxInt64),
"pids.events.1": int64(0),
"pids.max": int64(629145),
"pids.peak": int64(2438),
},
time.Unix(0, 0),
),
}
require.NoError(t, acc.GatherError(cg.Gather))
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
}