151 lines
3.2 KiB
Go
151 lines
3.2 KiB
Go
//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)
|
|
})
|
|
}
|