Skip to content

Commit 296df30

Browse files
committed
kubeadm: use t.Run in app/phases
Used T.Run API for kubeadm tests in app/phases/* This should improve testing output and make it more visible which test is doing what. Signed-off-by: Ed Bartosh <[email protected]>
1 parent 9518d52 commit 296df30

File tree

7 files changed

+665
-586
lines changed

7 files changed

+665
-586
lines changed

cmd/kubeadm/app/phases/addons/dns/dns_test.go

Lines changed: 106 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -58,45 +58,47 @@ func TestCreateServiceAccount(t *testing.T) {
5858
}
5959

6060
for _, tc := range tests {
61-
client := clientsetfake.NewSimpleClientset()
62-
if tc.createErr != nil {
63-
client.PrependReactor("create", "serviceaccounts", func(action core.Action) (bool, runtime.Object, error) {
64-
return true, nil, tc.createErr
65-
})
66-
}
67-
68-
err := CreateServiceAccount(client)
69-
if tc.expectErr {
70-
if err == nil {
71-
t.Errorf("CreateServiceAccounts(%s) wanted err, got nil", tc.name)
61+
t.Run(tc.name, func(t *testing.T) {
62+
client := clientsetfake.NewSimpleClientset()
63+
if tc.createErr != nil {
64+
client.PrependReactor("create", "serviceaccounts", func(action core.Action) (bool, runtime.Object, error) {
65+
return true, nil, tc.createErr
66+
})
7267
}
73-
continue
74-
} else if !tc.expectErr && err != nil {
75-
t.Errorf("CreateServiceAccounts(%s) returned unexpected err: %v", tc.name, err)
76-
}
7768

78-
wantResourcesCreated := 1
79-
if len(client.Actions()) != wantResourcesCreated {
80-
t.Errorf("CreateServiceAccounts(%s) should have made %d actions, but made %d", tc.name, wantResourcesCreated, len(client.Actions()))
81-
}
69+
err := CreateServiceAccount(client)
70+
if tc.expectErr {
71+
if err == nil {
72+
t.Errorf("CreateServiceAccounts(%s) wanted err, got nil", tc.name)
73+
}
74+
return
75+
} else if !tc.expectErr && err != nil {
76+
t.Errorf("CreateServiceAccounts(%s) returned unexpected err: %v", tc.name, err)
77+
}
8278

83-
for _, action := range client.Actions() {
84-
if action.GetVerb() != "create" || action.GetResource().Resource != "serviceaccounts" {
85-
t.Errorf("CreateServiceAccounts(%s) called [%v %v], but wanted [create serviceaccounts]",
86-
tc.name, action.GetVerb(), action.GetResource().Resource)
79+
wantResourcesCreated := 1
80+
if len(client.Actions()) != wantResourcesCreated {
81+
t.Errorf("CreateServiceAccounts(%s) should have made %d actions, but made %d", tc.name, wantResourcesCreated, len(client.Actions()))
8782
}
88-
}
8983

84+
for _, action := range client.Actions() {
85+
if action.GetVerb() != "create" || action.GetResource().Resource != "serviceaccounts" {
86+
t.Errorf("CreateServiceAccounts(%s) called [%v %v], but wanted [create serviceaccounts]",
87+
tc.name, action.GetVerb(), action.GetResource().Resource)
88+
}
89+
}
90+
})
9091
}
9192
}
9293

9394
func TestCompileManifests(t *testing.T) {
9495
var tests = []struct {
96+
name string
9597
manifest string
9698
data interface{}
97-
expected bool
9899
}{
99100
{
101+
name: "KubeDNSDeployment manifest",
100102
manifest: KubeDNSDeployment,
101103
data: struct{ DeploymentName, KubeDNSImage, DNSMasqImage, SidecarImage, DNSBindAddr, DNSProbeAddr, DNSDomain, ControlPlaneTaintKey string }{
102104
DeploymentName: "foo",
@@ -108,91 +110,87 @@ func TestCompileManifests(t *testing.T) {
108110
DNSDomain: "foo",
109111
ControlPlaneTaintKey: "foo",
110112
},
111-
expected: true,
112113
},
113114
{
115+
name: "KubeDNSService manifest",
114116
manifest: KubeDNSService,
115117
data: struct{ DNSIP string }{
116118
DNSIP: "foo",
117119
},
118-
expected: true,
119120
},
120121
{
122+
name: "CoreDNSDeployment manifest",
121123
manifest: CoreDNSDeployment,
122124
data: struct{ DeploymentName, Image, ControlPlaneTaintKey string }{
123125
DeploymentName: "foo",
124126
Image: "foo",
125127
ControlPlaneTaintKey: "foo",
126128
},
127-
expected: true,
128-
},
129-
{
130-
manifest: KubeDNSService,
131-
data: struct{ DNSIP string }{
132-
DNSIP: "foo",
133-
},
134-
expected: true,
135129
},
136130
{
131+
name: "CoreDNSConfigMap manifest",
137132
manifest: CoreDNSConfigMap,
138133
data: struct{ DNSDomain, Federation, UpstreamNameserver, StubDomain string }{
139134
DNSDomain: "foo",
140135
Federation: "foo",
141136
UpstreamNameserver: "foo",
142137
StubDomain: "foo",
143138
},
144-
expected: true,
145139
},
146140
}
147141
for _, rt := range tests {
148-
_, actual := kubeadmutil.ParseTemplate(rt.manifest, rt.data)
149-
if (actual == nil) != rt.expected {
150-
t.Errorf(
151-
"failed CompileManifests:\n\texpected: %t\n\t actual: %t",
152-
rt.expected,
153-
(actual == nil),
154-
)
155-
}
142+
t.Run(rt.name, func(t *testing.T) {
143+
_, err := kubeadmutil.ParseTemplate(rt.manifest, rt.data)
144+
if err != nil {
145+
t.Errorf("unexpected ParseTemplate failure: %+v", err)
146+
}
147+
})
156148
}
157149
}
158150

159151
func TestGetDNSIP(t *testing.T) {
160152
var tests = []struct {
161-
svcSubnet, expectedDNSIP string
153+
name, svcSubnet, expectedDNSIP string
162154
}{
163155
{
156+
name: "subnet mask 12",
164157
svcSubnet: "10.96.0.0/12",
165158
expectedDNSIP: "10.96.0.10",
166159
},
167160
{
161+
name: "subnet mask 26",
168162
svcSubnet: "10.87.116.64/26",
169163
expectedDNSIP: "10.87.116.74",
170164
},
171165
}
172166
for _, rt := range tests {
173-
dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet)
174-
if err != nil {
175-
t.Fatalf("couldn't get dnsIP : %v", err)
176-
}
167+
t.Run(rt.name, func(t *testing.T) {
168+
dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet)
169+
if err != nil {
170+
t.Fatalf("couldn't get dnsIP : %v", err)
171+
}
177172

178-
actualDNSIP := dnsIP.String()
179-
if actualDNSIP != rt.expectedDNSIP {
180-
t.Errorf(
181-
"failed GetDNSIP\n\texpected: %s\n\t actual: %s",
182-
rt.expectedDNSIP,
183-
actualDNSIP,
184-
)
185-
}
173+
actualDNSIP := dnsIP.String()
174+
if actualDNSIP != rt.expectedDNSIP {
175+
t.Errorf(
176+
"failed GetDNSIP\n\texpected: %s\n\t actual: %s",
177+
rt.expectedDNSIP,
178+
actualDNSIP,
179+
)
180+
}
181+
})
186182
}
187183
}
188184

189185
func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) {
190186
testCases := []struct {
187+
name string
191188
configMap *v1.ConfigMap
192189
expectOne string
193190
expectTwo string
194191
}{
195192
{
193+
name: "valid call 1",
196194
configMap: &v1.ConfigMap{
197195
ObjectMeta: metav1.ObjectMeta{
198196
Name: "kube-dns",
@@ -234,6 +232,7 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) {
234232
}`,
235233
},
236234
{
235+
name: "empty call",
237236
configMap: &v1.ConfigMap{
238237
ObjectMeta: metav1.ObjectMeta{
239238
Name: "kubedns",
@@ -244,6 +243,7 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) {
244243
expectOne: "",
245244
},
246245
{
246+
name: "valid call 2",
247247
configMap: &v1.ConfigMap{
248248
ObjectMeta: metav1.ObjectMeta{
249249
Name: "kube-dns",
@@ -285,6 +285,7 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) {
285285
}`,
286286
},
287287
{
288+
name: "missing stubDomains",
288289
configMap: &v1.ConfigMap{
289290
ObjectMeta: metav1.ObjectMeta{
290291
Name: "kube-dns",
@@ -299,22 +300,26 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) {
299300
},
300301
}
301302
for _, testCase := range testCases {
302-
out, err := translateStubDomainOfKubeDNSToForwardCoreDNS(kubeDNSStubDomain, testCase.configMap)
303-
if err != nil {
304-
t.Errorf("unexpected error: %v", err)
305-
}
306-
if !strings.Contains(out, testCase.expectOne) && !strings.Contains(out, testCase.expectTwo) {
307-
t.Errorf("expected to find %q or %q in output: %q", testCase.expectOne, testCase.expectTwo, out)
308-
}
303+
t.Run(testCase.name, func(t *testing.T) {
304+
out, err := translateStubDomainOfKubeDNSToForwardCoreDNS(kubeDNSStubDomain, testCase.configMap)
305+
if err != nil {
306+
t.Errorf("unexpected error: %v", err)
307+
}
308+
if !strings.Contains(out, testCase.expectOne) && !strings.Contains(out, testCase.expectTwo) {
309+
t.Errorf("expected to find %q or %q in output: %q", testCase.expectOne, testCase.expectTwo, out)
310+
}
311+
})
309312
}
310313
}
311314

312315
func TestTranslateUpstreamKubeDNSToCoreDNS(t *testing.T) {
313316
testCases := []struct {
317+
name string
314318
configMap *v1.ConfigMap
315319
expect string
316320
}{
317321
{
322+
name: "expect resolv.conf",
318323
configMap: &v1.ConfigMap{
319324
ObjectMeta: metav1.ObjectMeta{
320325
Name: "kube-dns",
@@ -325,6 +330,7 @@ func TestTranslateUpstreamKubeDNSToCoreDNS(t *testing.T) {
325330
expect: "/etc/resolv.conf",
326331
},
327332
{
333+
name: "expect list of Name Server IP addresses",
328334
configMap: &v1.ConfigMap{
329335
ObjectMeta: metav1.ObjectMeta{
330336
Name: "kubedns",
@@ -339,6 +345,7 @@ func TestTranslateUpstreamKubeDNSToCoreDNS(t *testing.T) {
339345
expect: "8.8.8.8 8.8.4.4 4.4.4.4",
340346
},
341347
{
348+
name: "no stubDomains: expect list of Name Server IP addresses",
342349
configMap: &v1.ConfigMap{
343350
ObjectMeta: metav1.ObjectMeta{
344351
Name: "kubedns",
@@ -353,23 +360,27 @@ func TestTranslateUpstreamKubeDNSToCoreDNS(t *testing.T) {
353360
},
354361
}
355362
for _, testCase := range testCases {
356-
out, err := translateUpstreamNameServerOfKubeDNSToUpstreamProxyCoreDNS(kubeDNSUpstreamNameservers, testCase.configMap)
357-
if err != nil {
358-
t.Errorf("unexpected error: %v", err)
359-
}
360-
if !strings.Contains(out, testCase.expect) {
361-
t.Errorf("expected to find %q in output: %q", testCase.expect, out)
362-
}
363+
t.Run(testCase.name, func(t *testing.T) {
364+
out, err := translateUpstreamNameServerOfKubeDNSToUpstreamProxyCoreDNS(kubeDNSUpstreamNameservers, testCase.configMap)
365+
if err != nil {
366+
t.Errorf("unexpected error: %v", err)
367+
}
368+
if !strings.Contains(out, testCase.expect) {
369+
t.Errorf("expected to find %q in output: %q", testCase.expect, out)
370+
}
371+
})
363372
}
364373
}
365374

366375
func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) {
367376
testCases := []struct {
377+
name string
368378
configMap *v1.ConfigMap
369379
expectOne string
370380
expectTwo string
371381
}{
372382
{
383+
name: "valid call",
373384
configMap: &v1.ConfigMap{
374385
ObjectMeta: metav1.ObjectMeta{
375386
Name: "kube-dns",
@@ -394,6 +405,7 @@ func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) {
394405
}`,
395406
},
396407
{
408+
name: "empty data",
397409
configMap: &v1.ConfigMap{
398410
ObjectMeta: metav1.ObjectMeta{
399411
Name: "kubedns",
@@ -404,6 +416,7 @@ func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) {
404416
expectOne: "",
405417
},
406418
{
419+
name: "missing federations data",
407420
configMap: &v1.ConfigMap{
408421
ObjectMeta: metav1.ObjectMeta{
409422
Name: "kube-dns",
@@ -419,22 +432,26 @@ func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) {
419432
},
420433
}
421434
for _, testCase := range testCases {
422-
out, err := translateFederationsofKubeDNSToCoreDNS(kubeDNSFederation, "cluster.local", testCase.configMap)
423-
if err != nil {
424-
t.Errorf("unexpected error: %v", err)
425-
}
426-
if !strings.Contains(out, testCase.expectOne) && !strings.Contains(out, testCase.expectTwo) {
427-
t.Errorf("expected to find %q or %q in output: %q", testCase.expectOne, testCase.expectTwo, out)
428-
}
435+
t.Run(testCase.name, func(t *testing.T) {
436+
out, err := translateFederationsofKubeDNSToCoreDNS(kubeDNSFederation, "cluster.local", testCase.configMap)
437+
if err != nil {
438+
t.Errorf("unexpected error: %v", err)
439+
}
440+
if !strings.Contains(out, testCase.expectOne) && !strings.Contains(out, testCase.expectTwo) {
441+
t.Errorf("expected to find %q or %q in output: %q", testCase.expectOne, testCase.expectTwo, out)
442+
}
443+
})
429444
}
430445
}
431446

432447
func TestDeploymentsHaveSystemClusterCriticalPriorityClassName(t *testing.T) {
433448
testCases := []struct {
449+
name string
434450
manifest string
435451
data interface{}
436452
}{
437453
{
454+
name: "KubeDNSDeployment",
438455
manifest: KubeDNSDeployment,
439456
data: struct{ DeploymentName, KubeDNSImage, DNSMasqImage, SidecarImage, DNSBindAddr, DNSProbeAddr, DNSDomain, ControlPlaneTaintKey string }{
440457
DeploymentName: "foo",
@@ -448,6 +465,7 @@ func TestDeploymentsHaveSystemClusterCriticalPriorityClassName(t *testing.T) {
448465
},
449466
},
450467
{
468+
name: "CoreDNSDeployment",
451469
manifest: CoreDNSDeployment,
452470
data: struct{ DeploymentName, Image, ControlPlaneTaintKey string }{
453471
DeploymentName: "foo",
@@ -457,13 +475,15 @@ func TestDeploymentsHaveSystemClusterCriticalPriorityClassName(t *testing.T) {
457475
},
458476
}
459477
for _, testCase := range testCases {
460-
deploymentBytes, _ := kubeadmutil.ParseTemplate(testCase.manifest, testCase.data)
461-
deployment := &apps.Deployment{}
462-
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), deploymentBytes, deployment); err != nil {
463-
t.Errorf("unexpected error: %v", err)
464-
}
465-
if deployment.Spec.Template.Spec.PriorityClassName != "system-cluster-critical" {
466-
t.Errorf("expected to see system-cluster-critical priority class name. Got %q instead", deployment.Spec.Template.Spec.PriorityClassName)
467-
}
478+
t.Run(testCase.name, func(t *testing.T) {
479+
deploymentBytes, _ := kubeadmutil.ParseTemplate(testCase.manifest, testCase.data)
480+
deployment := &apps.Deployment{}
481+
if err := kuberuntime.DecodeInto(clientsetscheme.Codecs.UniversalDecoder(), deploymentBytes, deployment); err != nil {
482+
t.Errorf("unexpected error: %v", err)
483+
}
484+
if deployment.Spec.Template.Spec.PriorityClassName != "system-cluster-critical" {
485+
t.Errorf("expected to see system-cluster-critical priority class name. Got %q instead", deployment.Spec.Template.Spec.PriorityClassName)
486+
}
487+
})
468488
}
469489
}

0 commit comments

Comments
 (0)