...
1
16
17 package drain
18
19 import (
20 "context"
21 "fmt"
22 "testing"
23
24 corev1 "k8s.io/api/core/v1"
25 "k8s.io/client-go/kubernetes/fake"
26 )
27
28 func TestRunCordonOrUncordon(t *testing.T) {
29 nilContextError := fmt.Errorf("RunCordonOrUncordon error: drainer.Ctx can't be nil")
30 nilClientError := fmt.Errorf("RunCordonOrUncordon error: drainer.Client can't be nil")
31 tests := []struct {
32 description string
33 drainer *Helper
34 node *corev1.Node
35 desired bool
36 expectedError *error
37 }{
38 {
39 description: "nil context object",
40 drainer: &Helper{
41 Client: fake.NewSimpleClientset(),
42 },
43 desired: true,
44 expectedError: &nilContextError,
45 },
46 {
47 description: "nil client object",
48 drainer: &Helper{
49 Ctx: context.TODO(),
50 },
51 desired: true,
52 expectedError: &nilClientError,
53 },
54 }
55
56 for _, test := range tests {
57 test := test
58 t.Run(test.description, func(t *testing.T) {
59 err := RunCordonOrUncordon(test.drainer, test.node, test.desired)
60 if test.expectedError == nil {
61 if err != nil {
62 t.Fatalf("%s: did not expect error, got err=%s", test.description, err.Error())
63 }
64 } else if err.Error() != (*test.expectedError).Error() {
65 t.Fatalf("%s: the error does not match expected error, got err=%s, expected err=%s", test.description, err, *test.expectedError)
66 }
67 })
68 }
69 }
70
View as plain text