telegraf/plugins/inputs/kernel/kernel_test.go

89 lines
2.0 KiB
Go
Raw Normal View History

//go:build linux
package kernel
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
)
func TestFullProcFile(t *testing.T) {
k := Kernel{
statFile: "testdata/stat_file_full",
entropyStatFile: "testdata/entropy_stat_file_full",
}
acc := testutil.Accumulator{}
require.NoError(t, k.Gather(&acc))
fields := map[string]interface{}{
"boot_time": int64(1457505775),
"context_switches": int64(2626618),
"disk_pages_in": int64(5741),
"disk_pages_out": int64(1808),
"interrupts": int64(1472736),
"processes_forked": int64(10673),
"entropy_avail": int64(1024),
}
acc.AssertContainsFields(t, "kernel", fields)
}
func TestPartialProcFile(t *testing.T) {
k := Kernel{
statFile: "testdata/stat_file_partial",
entropyStatFile: "testdata/entropy_stat_file_partial",
}
acc := testutil.Accumulator{}
require.NoError(t, k.Gather(&acc))
fields := map[string]interface{}{
"boot_time": int64(1457505775),
"context_switches": int64(2626618),
"disk_pages_in": int64(5741),
"disk_pages_out": int64(1808),
"interrupts": int64(1472736),
"entropy_avail": int64(1024),
}
acc.AssertContainsFields(t, "kernel", fields)
}
func TestInvalidProcFile1(t *testing.T) {
// missing btime measurement
k := Kernel{
statFile: "testdata/stat_file_invalid",
entropyStatFile: "testdata/entropy_stat_file_invalid",
}
acc := testutil.Accumulator{}
err := k.Gather(&acc)
require.Error(t, err)
require.Contains(t, err.Error(), "invalid syntax")
}
func TestInvalidProcFile2(t *testing.T) {
// missing second page measurement
k := Kernel{
statFile: "testdata/stat_file_invalid2",
}
acc := testutil.Accumulator{}
err := k.Gather(&acc)
require.Error(t, err)
require.Contains(t, err.Error(), "no such file")
}
func TestNoProcFile(t *testing.T) {
k := Kernel{
statFile: "testdata/this_file_does_not_exist",
}
acc := testutil.Accumulator{}
err := k.Gather(&acc)
require.Error(t, err)
require.Contains(t, err.Error(), "does not exist")
}