Files
node-problem-detector/pkg/util/metrics/system/cmdline_args_test.go
2020-12-07 22:40:22 +00:00

102 lines
2.1 KiB
Go

package system
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestCmdlineStats(t *testing.T) {
testcases := []struct {
name string
fakeCmdlineFilePath string
expectedCmdlineArgs []CmdlineArg
unExpectedCmdlineArgs []CmdlineArg
}{
{
name: "default_cos",
fakeCmdlineFilePath: "testdata/cmdline_args_key_cos.txt",
expectedCmdlineArgs: []CmdlineArg{
{
Key: "console",
Value: "ttyS0",
},
{
Key: "boot",
Value: "local",
},
{
Key: "cros_efi",
},
},
unExpectedCmdlineArgs: []CmdlineArg{
{
Key: "hashstart",
Value: "4077568",
},
{
Key: "vroot",
},
},
},
{
name: "sample",
fakeCmdlineFilePath: "testdata/cmdline_args_sample.txt",
expectedCmdlineArgs: []CmdlineArg{
{
Key: "key1",
Value: "value1",
},
{
Key: "key3",
Value: "value2 value3",
},
{
Key: "key2",
},
},
unExpectedCmdlineArgs: []CmdlineArg{
{
Key: "value2",
Value: "value3",
},
{
Key: "value3",
},
},
},
}
for _, test := range testcases {
t.Run(test.name, func(t *testing.T) {
originalCmdlineFilePath := cmdlineFilePath
defer func() {
cmdlineFilePath = originalCmdlineFilePath
}()
cmdlineFilePath = test.fakeCmdlineFilePath
cmdlineArgs, err := CmdlineArgs()
if err != nil {
t.Errorf("Unexpected error retrieving cmdlineArgs: %v\nCmdlineArgsFilePath: %s\n", err, cmdlineFilePath)
}
for _, expectedCmdlineArg := range test.expectedCmdlineArgs {
assert.Contains(t, cmdlineArgs, expectedCmdlineArg, "Failed to find cmdlineArgs: %v\n", expectedCmdlineArg)
}
for _, unExpectedCmdlineArg := range test.unExpectedCmdlineArgs {
assert.NotContains(t, cmdlineArgs, unExpectedCmdlineArg, "Unpected expected cmdlinearg found: %v\n", unExpectedCmdlineArg)
}
})
}
}
func TestCmdlineStats_String(t *testing.T) {
v := CmdlineArg{
Key: "test",
Value: "test",
}
e := `{"key":"test","value":"test"}`
assert.Equal(t,
e, fmt.Sprintf("%v", v), "CmdlineArg string is invalid: %v", v)
}