github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/orbiter/kinds/clusters/kubernetes/initialize_test.go (about) 1 package kubernetes 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/caos/orbos/mntr" 8 v1 "k8s.io/api/core/v1" 9 ) 10 11 func Test_reconcileTaints(t *testing.T) { 12 type args struct { 13 node v1.Node 14 pool Pool 15 } 16 someTaintKey := "someKey" 17 someTaintEffect := v1.TaintEffectNoSchedule 18 someDesiredTaint := Taint{ 19 Key: someTaintKey, 20 Effect: someTaintEffect, 21 } 22 someNodeTaint := v1.Taint{ 23 Key: someTaintKey, 24 Effect: someTaintEffect, 25 } 26 27 node := func(taint ...v1.Taint) v1.Node { 28 return v1.Node{Spec: v1.NodeSpec{Taints: append([]v1.Taint{}, taint...)}} 29 } 30 pool := func(taint ...Taint) Pool { 31 taints := Taints(append([]Taint{}, taint...)) 32 return Pool{Taints: &taints} 33 } 34 35 nodePtr := func(node v1.Node) *v1.Node { 36 return &node 37 } 38 39 tests := []struct { 40 name string 41 args args 42 want *v1.Node 43 }{ 44 { 45 name: "It should add configured taints", 46 args: args{ 47 node: v1.Node{}, 48 pool: pool(someDesiredTaint), 49 }, want: nodePtr(node(someNodeTaint)), 50 }, 51 { 52 name: "It should leave the taints as they are if the taints property is nil", 53 args: args{ 54 node: node(someNodeTaint), 55 pool: Pool{}, 56 }, want: nil, 57 }, 58 { 59 name: "It should remove existing taints if the empty slice is passed", 60 args: args{ 61 node: node(someNodeTaint), 62 pool: pool(), 63 }, want: nodePtr(node()), 64 }, 65 } 66 for _, tt := range tests { 67 t.Run(tt.name, func(t *testing.T) { 68 got := reconcileTaints(tt.args.node, tt.args.pool, mntr.Monitor{}) 69 if !reflect.DeepEqual(got, tt.want) { 70 t.Errorf("reconcileTaints() got = %v, want %v", got, tt.want) 71 } 72 }) 73 } 74 }