1
0
Fork 0
telegraf/plugins/inputs/intel_powerstat/metrics_test.go

152 lines
3.2 KiB
Go
Raw Permalink Normal View History

//go:build linux && amd64
package intel_powerstat
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestCoreMetric_String(t *testing.T) {
testCases := []struct {
name string
metricName string
}{
{
name: "CPUFrequency",
metricName: "cpu_frequency",
},
{
name: "CPUTemperature",
metricName: "cpu_temperature",
},
{
name: "CPUC0StateResidency",
metricName: "cpu_c0_state_residency",
},
{
name: "CPUC1StateResidency",
metricName: "cpu_c1_state_residency",
},
{
name: "CPUC3StateResidency",
metricName: "cpu_c3_state_residency",
},
{
name: "CPUC6StateResidency",
metricName: "cpu_c6_state_residency",
},
{
name: "CPUC7StateResidency",
metricName: "cpu_c7_state_residency",
},
{
name: "CPUBusyCycles",
metricName: "cpu_busy_cycles",
},
{
name: "CPUBusyFrequency",
metricName: "cpu_busy_frequency",
},
{
name: "CPUC0SubstateC01Percent",
metricName: "cpu_c0_substate_c01",
},
{
name: "CPUC0SubstateC02Percent",
metricName: "cpu_c0_substate_c02",
},
{
name: "CPUC0SubstateC0WaitPercent",
metricName: "cpu_c0_substate_c0_wait",
},
{
name: "Invalid",
metricName: "",
},
}
for i, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
metric := cpuMetricType(i)
require.Equal(t, tc.metricName, metric.String())
})
}
}
func TestPackageMetric_String(t *testing.T) {
testCases := []struct {
name string
metricName string
}{
{
name: "PackageCurrentPowerConsumption",
metricName: "current_power_consumption",
},
{
name: "PackageCurrentDramPowerConsumption",
metricName: "current_dram_power_consumption",
},
{
name: "PackageThermalDesignPower",
metricName: "thermal_design_power",
},
{
name: "PackageCPUBaseFrequency",
metricName: "cpu_base_frequency",
},
{
name: "PackageUncoreFrequency",
metricName: "uncore_frequency",
},
{
name: "PackageTurboLimit",
metricName: "max_turbo_frequency",
},
{
name: "Invalid",
metricName: "",
},
}
for i, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
metric := packageMetricType(i)
require.Equal(t, tc.metricName, metric.String())
})
}
}
func TestCPUMetricTypeFromString(t *testing.T) {
t.Run("Valid", func(t *testing.T) {
for m := cpuMetricType(0); m < cpuC0SubstateC0WaitPercent+1; m++ {
val, err := cpuMetricTypeFromString(m.String())
require.NoError(t, err)
require.Equal(t, m, val)
}
})
t.Run("Invalid", func(t *testing.T) {
val, err := cpuMetricTypeFromString("invalid")
require.Error(t, err)
require.Equal(t, cpuMetricType(-1), val)
})
}
func TestPackageMetricTypeFromString(t *testing.T) {
t.Run("Valid", func(t *testing.T) {
for m := packageMetricType(0); m < packageTurboLimit+1; m++ {
val, err := packageMetricTypeFromString(m.String())
require.NoError(t, err)
require.Equal(t, m, val)
}
})
t.Run("Invalid", func(t *testing.T) {
val, err := packageMetricTypeFromString("invalid")
require.Error(t, err)
require.Equal(t, packageMetricType(-1), val)
})
}