1
16
17 package core
18
19 import "testing"
20
21 func TestMatchToleration(t *testing.T) {
22
23 tolerationSeconds := int64(5)
24 tolerationToMatchSeconds := int64(3)
25 testCases := []struct {
26 description string
27 toleration *Toleration
28 tolerationToMatch *Toleration
29 expectMatch bool
30 }{
31 {
32 description: "two taints with the same key,operator,value,effect should match",
33 toleration: &Toleration{
34 Key: "foo",
35 Operator: "Exists",
36 Value: "bar",
37 Effect: TaintEffectNoSchedule,
38 },
39 tolerationToMatch: &Toleration{
40 Key: "foo",
41 Operator: "Exists",
42 Value: "bar",
43 Effect: TaintEffectNoSchedule,
44 },
45 expectMatch: true,
46 },
47 {
48 description: "two taints with the different key cannot match",
49 toleration: &Toleration{
50 Key: "foo",
51 Operator: "Exists",
52 Value: "bar",
53 Effect: TaintEffectNoSchedule,
54 },
55 tolerationToMatch: &Toleration{
56 Key: "different-key",
57 Operator: "Exists",
58 Value: "bar",
59 Effect: TaintEffectNoSchedule,
60 },
61 expectMatch: false,
62 },
63 {
64 description: "two taints with the different operator cannot match",
65 toleration: &Toleration{
66 Key: "foo",
67 Operator: "Exists",
68 Value: "bar",
69 Effect: TaintEffectNoSchedule,
70 },
71 tolerationToMatch: &Toleration{
72 Key: "foo",
73 Operator: "different-operator",
74 Value: "bar",
75 Effect: TaintEffectNoSchedule,
76 },
77 expectMatch: false,
78 },
79 {
80 description: "two taints with the different value cannot match",
81 toleration: &Toleration{
82 Key: "foo",
83 Operator: "Exists",
84 Value: "bar",
85 Effect: TaintEffectNoSchedule,
86 },
87 tolerationToMatch: &Toleration{
88 Key: "foo",
89 Operator: "Exists",
90 Value: "different-value",
91 Effect: TaintEffectNoSchedule,
92 },
93 expectMatch: false,
94 },
95 {
96 description: "two taints with the different effect cannot match",
97 toleration: &Toleration{
98 Key: "foo",
99 Operator: "Exists",
100 Value: "bar",
101 Effect: TaintEffectNoSchedule,
102 },
103 tolerationToMatch: &Toleration{
104 Key: "foo",
105 Operator: "Exists",
106 Value: "bar",
107 Effect: TaintEffectPreferNoSchedule,
108 },
109 expectMatch: false,
110 },
111 {
112 description: "two taints with the different tolerationSeconds should match",
113 toleration: &Toleration{
114 Key: "foo",
115 Operator: "Exists",
116 Value: "bar",
117 Effect: TaintEffectNoSchedule,
118 TolerationSeconds: &tolerationSeconds,
119 },
120 tolerationToMatch: &Toleration{
121 Key: "foo",
122 Operator: "Exists",
123 Value: "bar",
124 Effect: TaintEffectNoSchedule,
125 TolerationSeconds: &tolerationToMatchSeconds,
126 },
127 expectMatch: true,
128 },
129 }
130
131 for _, tc := range testCases {
132 if actual := tc.toleration.MatchToleration(tc.tolerationToMatch); actual != tc.expectMatch {
133 t.Errorf("[%s] expect: %v , got: %v", tc.description, tc.expectMatch, !tc.expectMatch)
134 }
135 }
136 }
137
View as plain text