From fee647cd455c79679c24a959dc42bbab17c8b077 Mon Sep 17 00:00:00 2001 From: Chin-Ya Huang Date: Thu, 23 Mar 2023 11:14:29 +0800 Subject: [PATCH] test(types): UnmarshalTolerations Signed-off-by: Chin-Ya Huang --- types/types_test.go | 102 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 types/types_test.go diff --git a/types/types_test.go b/types/types_test.go new file mode 100644 index 0000000000..82899ffbbe --- /dev/null +++ b/types/types_test.go @@ -0,0 +1,102 @@ +package types + +import ( + "fmt" + "reflect" + "testing" + + corev1 "k8s.io/api/core/v1" +) + +func TestParseToleration(t *testing.T) { + type testCase struct { + input string + + expectedToleration []corev1.Toleration + expectError bool + } + testCases := map[string]testCase{ + "valid empty setting": { + input: "", + expectedToleration: []corev1.Toleration{}, + expectError: false, + }, + "valid key:NoSchedule": { + input: "key:NoSchedule", + expectedToleration: []corev1.Toleration{ + { + Key: "key", + Value: "", + Operator: corev1.TolerationOpExists, + Effect: corev1.TaintEffectNoSchedule, + }, + }, + expectError: false, + }, + "valid key=value:NoExecute": { + input: "key=value:NoExecute", + expectedToleration: []corev1.Toleration{ + { + Key: "key", + Value: "value", + Operator: corev1.TolerationOpEqual, + Effect: corev1.TaintEffectNoExecute, + }, + }, + expectError: false, + }, + "valid key=value:PreferNoSchedule": { + input: "key=value:PreferNoSchedule", + expectedToleration: []corev1.Toleration{ + { + Key: "key", + Value: "value", + Operator: corev1.TolerationOpEqual, + Effect: corev1.TaintEffectPreferNoSchedule, + }, + }, + expectError: false, + }, + "valid key0:NoSchedule;key1=value:NoExecute": { + input: "key0:NoSchedule;key1=value:NoExecute", + expectedToleration: []corev1.Toleration{ + { + Key: "key0", + Value: "", + Operator: corev1.TolerationOpExists, + Effect: corev1.TaintEffectNoSchedule, + }, + { + Key: "key1", + Value: "value", + Operator: corev1.TolerationOpEqual, + Effect: corev1.TaintEffectNoExecute, + }, + }, + expectError: false, + }, + "invalid key:InvalidEffect": { + input: "key:InvalidEffect", + expectedToleration: nil, + expectError: true, + }, + "invalid key=value=NoSchedule": { + input: "key=value=NoSchedule", + expectedToleration: nil, + expectError: true, + }, + } + + for name, test := range testCases { + fmt.Printf("testing %v\n", name) + + toleration, err := UnmarshalTolerations(test.input) + if !reflect.DeepEqual(toleration, test.expectedToleration) { + t.Errorf("unexpected toleration:\nGot: %v\nWant: %v", toleration, test.expectedToleration) + } + + if test.expectError && err == nil { + t.Errorf("unexpected error: %v", err) + } + } +}