Skip to content

Commit d7f769b

Browse files
committed
Update kubeadm test TestMarkControlPlane
- Use a dummy nodename instead of OS hostname - Inline toString() function - Use backticks to wrap expected patch - Remove redundant test name from error logs
1 parent 7ba332a commit d7f769b

File tree

2 files changed

+50
-60
lines changed

2 files changed

+50
-60
lines changed

cmd/kubeadm/app/phases/markcontrolplane/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ go_test(
1212
embed = [":go_default_library"],
1313
deps = [
1414
"//cmd/kubeadm/app/constants:go_default_library",
15-
"//cmd/kubeadm/app/util:go_default_library",
1615
"//staging/src/k8s.io/api/core/v1:go_default_library",
1716
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1817
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",

cmd/kubeadm/app/phases/markcontrolplane/markcontrolplane_test.go

Lines changed: 50 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,15 @@ package markcontrolplane
1919
import (
2020
"bytes"
2121
"encoding/json"
22-
"io"
2322
"net/http"
2423
"net/http/httptest"
2524
"testing"
2625

27-
"k8s.io/api/core/v1"
26+
v1 "k8s.io/api/core/v1"
2827
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2928
clientset "k8s.io/client-go/kubernetes"
3029
restclient "k8s.io/client-go/rest"
3130
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
32-
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
3331
)
3432

3533
func TestMarkControlPlane(t *testing.T) {
@@ -46,77 +44,74 @@ func TestMarkControlPlane(t *testing.T) {
4644
expectedPatch string
4745
}{
4846
{
49-
"control-plane label and taint missing",
50-
"",
51-
nil,
52-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
53-
"{\"metadata\":{\"labels\":{\"node-role.kubernetes.io/master\":\"\"}},\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\"}]}}",
47+
name: "control-plane label and taint missing",
48+
existingLabel: "",
49+
existingTaints: nil,
50+
newTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
51+
expectedPatch: `{"metadata":{"labels":{"node-role.kubernetes.io/master":""}},"spec":{"taints":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master"}]}}`,
5452
},
5553
{
56-
"control-plane label and taint missing but taint not wanted",
57-
"",
58-
nil,
59-
nil,
60-
"{\"metadata\":{\"labels\":{\"node-role.kubernetes.io/master\":\"\"}}}",
54+
name: "control-plane label and taint missing but taint not wanted",
55+
existingLabel: "",
56+
existingTaints: nil,
57+
newTaints: nil,
58+
expectedPatch: `{"metadata":{"labels":{"node-role.kubernetes.io/master":""}}}`,
6159
},
6260
{
63-
"control-plane label missing",
64-
"",
65-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
66-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
67-
"{\"metadata\":{\"labels\":{\"node-role.kubernetes.io/master\":\"\"}}}",
61+
name: "control-plane label missing",
62+
existingLabel: "",
63+
existingTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
64+
newTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
65+
expectedPatch: `{"metadata":{"labels":{"node-role.kubernetes.io/master":""}}}`,
6866
},
6967
{
70-
"control-plane taint missing",
71-
kubeadmconstants.LabelNodeRoleMaster,
72-
nil,
73-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
74-
"{\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\"}]}}",
68+
name: "control-plane taint missing",
69+
existingLabel: kubeadmconstants.LabelNodeRoleMaster,
70+
existingTaints: nil,
71+
newTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
72+
expectedPatch: `{"spec":{"taints":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master"}]}}`,
7573
},
7674
{
77-
"nothing missing",
78-
kubeadmconstants.LabelNodeRoleMaster,
79-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
80-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
81-
"{}",
75+
name: "nothing missing",
76+
existingLabel: kubeadmconstants.LabelNodeRoleMaster,
77+
existingTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
78+
newTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
79+
expectedPatch: `{}`,
8280
},
8381
{
84-
"has taint and no new taints wanted",
85-
kubeadmconstants.LabelNodeRoleMaster,
86-
[]v1.Taint{
82+
name: "has taint and no new taints wanted",
83+
existingLabel: kubeadmconstants.LabelNodeRoleMaster,
84+
existingTaints: []v1.Taint{
8785
{
8886
Key: "node.cloudprovider.kubernetes.io/uninitialized",
8987
Effect: v1.TaintEffectNoSchedule,
9088
},
9189
},
92-
nil,
93-
"{}",
90+
newTaints: nil,
91+
expectedPatch: `{}`,
9492
},
9593
{
96-
"has taint and should merge with wanted taint",
97-
kubeadmconstants.LabelNodeRoleMaster,
98-
[]v1.Taint{
94+
name: "has taint and should merge with wanted taint",
95+
existingLabel: kubeadmconstants.LabelNodeRoleMaster,
96+
existingTaints: []v1.Taint{
9997
{
10098
Key: "node.cloudprovider.kubernetes.io/uninitialized",
10199
Effect: v1.TaintEffectNoSchedule,
102100
},
103101
},
104-
[]v1.Taint{kubeadmconstants.ControlPlaneTaint},
105-
"{\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\"},{\"effect\":\"NoSchedule\",\"key\":\"node.cloudprovider.kubernetes.io/uninitialized\"}]}}",
102+
newTaints: []v1.Taint{kubeadmconstants.ControlPlaneTaint},
103+
expectedPatch: `{"spec":{"taints":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master"},{"effect":"NoSchedule","key":"node.cloudprovider.kubernetes.io/uninitialized"}]}}`,
106104
},
107105
}
108106

109107
for _, tc := range tests {
110108
t.Run(tc.name, func(t *testing.T) {
111-
hostname, err := kubeadmutil.GetHostname("")
112-
if err != nil {
113-
t.Fatalf("MarkControlPlane(%s): unexpected error: %v", tc.name, err)
114-
}
109+
nodename := "node01"
115110
controlPlaneNode := &v1.Node{
116111
ObjectMeta: metav1.ObjectMeta{
117-
Name: hostname,
112+
Name: nodename,
118113
Labels: map[string]string{
119-
v1.LabelHostname: hostname,
114+
v1.LabelHostname: nodename,
120115
},
121116
},
122117
}
@@ -131,25 +126,27 @@ func TestMarkControlPlane(t *testing.T) {
131126

132127
jsonNode, err := json.Marshal(controlPlaneNode)
133128
if err != nil {
134-
t.Fatalf("MarkControlPlane(%s): unexpected encoding error: %v", tc.name, err)
129+
t.Fatalf("unexpected encoding error: %v", err)
135130
}
136131

137132
var patchRequest string
138133
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
139134
w.Header().Set("Content-Type", "application/json")
140135

141-
if req.URL.Path != "/api/v1/nodes/"+hostname {
142-
t.Errorf("MarkControlPlane(%s): request for unexpected HTTP resource: %v", tc.name, req.URL.Path)
136+
if req.URL.Path != "/api/v1/nodes/"+nodename {
137+
t.Errorf("request for unexpected HTTP resource: %v", req.URL.Path)
143138
http.Error(w, "", http.StatusNotFound)
144139
return
145140
}
146141

147142
switch req.Method {
148143
case "GET":
149144
case "PATCH":
150-
patchRequest = toString(req.Body)
145+
buf := new(bytes.Buffer)
146+
buf.ReadFrom(req.Body)
147+
patchRequest = buf.String()
151148
default:
152-
t.Errorf("MarkControlPlane(%s): request for unexpected HTTP verb: %v", tc.name, req.Method)
149+
t.Errorf("request for unexpected HTTP verb: %v", req.Method)
153150
http.Error(w, "", http.StatusNotFound)
154151
return
155152
}
@@ -161,22 +158,16 @@ func TestMarkControlPlane(t *testing.T) {
161158

162159
cs, err := clientset.NewForConfig(&restclient.Config{Host: s.URL})
163160
if err != nil {
164-
t.Fatalf("MarkControlPlane(%s): unexpected error building clientset: %v", tc.name, err)
161+
t.Fatalf("unexpected error building clientset: %v", err)
165162
}
166163

167-
if err := MarkControlPlane(cs, hostname, tc.newTaints); err != nil {
168-
t.Errorf("MarkControlPlane(%s) returned unexpected error: %v", tc.name, err)
164+
if err := MarkControlPlane(cs, nodename, tc.newTaints); err != nil {
165+
t.Errorf("unexpected error: %v", err)
169166
}
170167

171168
if tc.expectedPatch != patchRequest {
172-
t.Errorf("MarkControlPlane(%s) wanted patch %v, got %v", tc.name, tc.expectedPatch, patchRequest)
169+
t.Errorf("unexpected error: wanted patch %v, got %v", tc.expectedPatch, patchRequest)
173170
}
174171
})
175172
}
176173
}
177-
178-
func toString(r io.Reader) string {
179-
buf := new(bytes.Buffer)
180-
buf.ReadFrom(r)
181-
return buf.String()
182-
}

0 commit comments

Comments
 (0)