Skip to content

Commit 7b40b34

Browse files
authored
Merge pull request kubernetes#94595 from claudiubelu/tests/agnhost-usage-refactor-5
tests: Refactor agnhost image pod usage - network
2 parents 5fc8069 + d37cbeb commit 7b40b34

File tree

7 files changed

+74
-239
lines changed

7 files changed

+74
-239
lines changed

test/e2e/network/conntrack.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ var _ = SIGDescribe("Conntrack", func() {
134134

135135
// Create a pod in one node to create the UDP traffic against the NodePort service every 5 seconds
136136
ginkgo.By("creating a client pod for probing the service " + serviceName)
137-
clientPod := newAgnhostPod(podClient, "")
137+
clientPod := e2epod.NewAgnhostPod(ns, podClient, nil, nil, nil)
138138
clientPod.Spec.NodeName = clientNodeInfo.name
139139
cmd := fmt.Sprintf(`date; for i in $(seq 1 3000); do echo "$(date) Try: ${i}"; echo hostname | nc -u -w 5 -p %d %s %d; echo; done`, srcPort, serverNodeInfo.nodeIP, udpService.Spec.Ports[0].NodePort)
140140
clientPod.Spec.Containers[0].Command = []string{"/bin/sh", "-c", cmd}
@@ -148,7 +148,7 @@ var _ = SIGDescribe("Conntrack", func() {
148148

149149
// Add a backend pod to the service in the other node
150150
ginkgo.By("creating a backend pod " + podBackend1 + " for the service " + serviceName)
151-
serverPod1 := newAgnhostPod(podBackend1, "netexec", fmt.Sprintf("--udp-port=%d", 80))
151+
serverPod1 := e2epod.NewAgnhostPod(ns, podBackend1, nil, nil, nil, "netexec", fmt.Sprintf("--udp-port=%d", 80))
152152
serverPod1.Labels = udpJig.Labels
153153
serverPod1.Spec.NodeName = serverNodeInfo.name
154154
fr.PodClient().CreateSync(serverPod1)
@@ -172,7 +172,7 @@ var _ = SIGDescribe("Conntrack", func() {
172172

173173
// Create a second pod
174174
ginkgo.By("creating a second backend pod " + podBackend2 + " for the service " + serviceName)
175-
serverPod2 := newAgnhostPod(podBackend2, "netexec", fmt.Sprintf("--udp-port=%d", 80))
175+
serverPod2 := e2epod.NewAgnhostPod(ns, podBackend2, nil, nil, nil, "netexec", fmt.Sprintf("--udp-port=%d", 80))
176176
serverPod2.Labels = udpJig.Labels
177177
serverPod2.Spec.NodeName = serverNodeInfo.name
178178
fr.PodClient().CreateSync(serverPod2)
@@ -214,7 +214,7 @@ var _ = SIGDescribe("Conntrack", func() {
214214

215215
// Create a pod in one node to create the UDP traffic against the ClusterIP service every 5 seconds
216216
ginkgo.By("creating a client pod for probing the service " + serviceName)
217-
clientPod := newAgnhostPod(podClient, "")
217+
clientPod := e2epod.NewAgnhostPod(ns, podClient, nil, nil, nil)
218218
clientPod.Spec.NodeName = clientNodeInfo.name
219219
cmd := fmt.Sprintf(`date; for i in $(seq 1 3000); do echo "$(date) Try: ${i}"; echo hostname | nc -u -w 5 -p %d %s %d; echo; done`, srcPort, udpService.Spec.ClusterIP, udpService.Spec.Ports[0].Port)
220220
clientPod.Spec.Containers[0].Command = []string{"/bin/sh", "-c", cmd}
@@ -228,7 +228,7 @@ var _ = SIGDescribe("Conntrack", func() {
228228

229229
// Add a backend pod to the service in the other node
230230
ginkgo.By("creating a backend pod " + podBackend1 + " for the service " + serviceName)
231-
serverPod1 := newAgnhostPod(podBackend1, "netexec", fmt.Sprintf("--udp-port=%d", 80))
231+
serverPod1 := e2epod.NewAgnhostPod(ns, podBackend1, nil, nil, nil, "netexec", fmt.Sprintf("--udp-port=%d", 80))
232232
serverPod1.Labels = udpJig.Labels
233233
serverPod1.Spec.NodeName = serverNodeInfo.name
234234
fr.PodClient().CreateSync(serverPod1)
@@ -252,7 +252,7 @@ var _ = SIGDescribe("Conntrack", func() {
252252

253253
// Create a second pod
254254
ginkgo.By("creating a second backend pod " + podBackend2 + " for the service " + serviceName)
255-
serverPod2 := newAgnhostPod(podBackend2, "netexec", fmt.Sprintf("--udp-port=%d", 80))
255+
serverPod2 := e2epod.NewAgnhostPod(ns, podBackend2, nil, nil, nil, "netexec", fmt.Sprintf("--udp-port=%d", 80))
256256
serverPod2.Labels = udpJig.Labels
257257
serverPod2.Spec.NodeName = serverNodeInfo.name
258258
fr.PodClient().CreateSync(serverPod2)

test/e2e/network/dns.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ var _ = SIGDescribe("DNS", func() {
409409
ginkgo.By("Creating a pod with dnsPolicy=None and customized dnsConfig...")
410410
testServerIP := "1.1.1.1"
411411
testSearchPath := "resolv.conf.local"
412-
testAgnhostPod := newAgnhostPod(f.Namespace.Name, "pause")
412+
testAgnhostPod := e2epod.NewAgnhostPod(f.Namespace.Name, "test-dns-nameservers", nil, nil, nil)
413413
testAgnhostPod.Spec.DNSPolicy = v1.DNSNone
414414
testAgnhostPod.Spec.DNSConfig = &v1.PodDNSConfig{
415415
Nameservers: []string{testServerIP},
@@ -433,7 +433,7 @@ var _ = SIGDescribe("DNS", func() {
433433
Command: cmd,
434434
Namespace: f.Namespace.Name,
435435
PodName: testAgnhostPod.Name,
436-
ContainerName: "agnhost",
436+
ContainerName: testAgnhostPod.Spec.Containers[0].Name,
437437
CaptureStdout: true,
438438
CaptureStderr: true,
439439
})
@@ -493,7 +493,7 @@ var _ = SIGDescribe("DNS", func() {
493493
framework.Logf("testServerIP is %s", testServerIP)
494494

495495
ginkgo.By("Creating a pod with dnsPolicy=None and customized dnsConfig...")
496-
testUtilsPod := generateDNSUtilsPod()
496+
testUtilsPod := e2epod.NewAgnhostPod(f.Namespace.Name, "e2e-dns-utils", nil, nil, nil)
497497
testUtilsPod.Spec.DNSPolicy = v1.DNSNone
498498
testNdotsValue := "2"
499499
testUtilsPod.Spec.DNSConfig = &v1.PodDNSConfig{
@@ -525,7 +525,7 @@ var _ = SIGDescribe("DNS", func() {
525525
Command: cmd,
526526
Namespace: f.Namespace.Name,
527527
PodName: testUtilsPod.Name,
528-
ContainerName: "util",
528+
ContainerName: testUtilsPod.Spec.Containers[0].Name,
529529
CaptureStdout: true,
530530
CaptureStderr: true,
531531
})
@@ -545,7 +545,7 @@ var _ = SIGDescribe("DNS", func() {
545545
Command: cmd,
546546
Namespace: f.Namespace.Name,
547547
PodName: testUtilsPod.Name,
548-
ContainerName: "util",
548+
ContainerName: testUtilsPod.Spec.Containers[0].Name,
549549
CaptureStdout: true,
550550
CaptureStderr: true,
551551
})

test/e2e/network/dns_common.go

Lines changed: 50 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -191,29 +191,9 @@ func (t *dnsTestCommon) restoreDNSConfigMap(configMapData map[string]string) {
191191
func (t *dnsTestCommon) createUtilPodLabel(baseName string) {
192192
// Actual port # doesn't matter, just needs to exist.
193193
const servicePort = 10101
194-
195-
t.utilPod = &v1.Pod{
196-
TypeMeta: metav1.TypeMeta{
197-
Kind: "Pod",
198-
},
199-
ObjectMeta: metav1.ObjectMeta{
200-
Namespace: t.f.Namespace.Name,
201-
Labels: map[string]string{"app": baseName},
202-
GenerateName: baseName + "-",
203-
},
204-
Spec: v1.PodSpec{
205-
Containers: []v1.Container{
206-
{
207-
Name: "util",
208-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
209-
Command: []string{"sleep", "10000"},
210-
Ports: []v1.ContainerPort{
211-
{ContainerPort: servicePort, Protocol: v1.ProtocolTCP},
212-
},
213-
},
214-
},
215-
},
216-
}
194+
podName := fmt.Sprintf("%s-%s", baseName, string(uuid.NewUUID()))
195+
ports := []v1.ContainerPort{{ContainerPort: servicePort, Protocol: v1.ProtocolTCP}}
196+
t.utilPod = e2epod.NewAgnhostPod(t.f.Namespace.Name, podName, nil, nil, ports)
217197

218198
var err error
219199
t.utilPod, err = t.c.CoreV1().Pods(t.f.Namespace.Name).Create(context.TODO(), t.utilPod, metav1.CreateOptions{})
@@ -272,46 +252,31 @@ func (t *dnsTestCommon) deleteCoreDNSPods() {
272252
}
273253

274254
func generateCoreDNSServerPod(corednsConfig *v1.ConfigMap) *v1.Pod {
275-
return &v1.Pod{
276-
TypeMeta: metav1.TypeMeta{
277-
Kind: "Pod",
278-
},
279-
ObjectMeta: metav1.ObjectMeta{
280-
GenerateName: "e2e-dns-configmap-dns-server-",
281-
},
282-
Spec: v1.PodSpec{
283-
Volumes: []v1.Volume{
284-
{
285-
Name: "coredns-config",
286-
VolumeSource: v1.VolumeSource{
287-
ConfigMap: &v1.ConfigMapVolumeSource{
288-
LocalObjectReference: v1.LocalObjectReference{
289-
Name: corednsConfig.Name,
290-
},
291-
},
292-
},
293-
},
294-
},
295-
Containers: []v1.Container{
296-
{
297-
Name: "dns",
298-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
299-
Command: []string{
300-
"/coredns",
301-
"-conf", "/etc/coredns/Corefile",
302-
},
303-
VolumeMounts: []v1.VolumeMount{
304-
{
305-
Name: "coredns-config",
306-
MountPath: "/etc/coredns",
307-
ReadOnly: true,
308-
},
255+
podName := fmt.Sprintf("e2e-configmap-dns-server-%s", string(uuid.NewUUID()))
256+
volumes := []v1.Volume{
257+
{
258+
Name: "coredns-config",
259+
VolumeSource: v1.VolumeSource{
260+
ConfigMap: &v1.ConfigMapVolumeSource{
261+
LocalObjectReference: v1.LocalObjectReference{
262+
Name: corednsConfig.Name,
309263
},
310264
},
311265
},
312-
DNSPolicy: "Default",
313266
},
314267
}
268+
mounts := []v1.VolumeMount{
269+
{
270+
Name: "coredns-config",
271+
MountPath: "/etc/coredns",
272+
ReadOnly: true,
273+
},
274+
}
275+
276+
pod := e2epod.NewAgnhostPod("", podName, volumes, mounts, nil, "-conf", "/etc/coredns/Corefile")
277+
pod.Spec.Containers[0].Command = []string{"/coredns"}
278+
pod.Spec.DNSPolicy = "Default"
279+
return pod
315280
}
316281

317282
func generateCoreDNSConfigmap(namespaceName string, aRecords map[string]string) *v1.ConfigMap {
@@ -382,69 +347,37 @@ func (t *dnsTestCommon) deleteDNSServerPod() {
382347
}
383348

384349
func createDNSPod(namespace, wheezyProbeCmd, jessieProbeCmd, podHostName, serviceName string) *v1.Pod {
385-
dnsPod := &v1.Pod{
386-
TypeMeta: metav1.TypeMeta{
387-
Kind: "Pod",
388-
APIVersion: "v1",
389-
},
390-
ObjectMeta: metav1.ObjectMeta{
391-
Name: "dns-test-" + string(uuid.NewUUID()),
392-
Namespace: namespace,
393-
},
394-
Spec: v1.PodSpec{
395-
Volumes: []v1.Volume{
396-
{
397-
Name: "results",
398-
VolumeSource: v1.VolumeSource{
399-
EmptyDir: &v1.EmptyDirVolumeSource{},
400-
},
401-
},
402-
},
403-
Containers: []v1.Container{
404-
// TODO: Consider scraping logs instead of running a webserver.
405-
{
406-
Name: "webserver",
407-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
408-
Args: []string{"test-webserver"},
409-
Ports: []v1.ContainerPort{
410-
{
411-
Name: "http",
412-
ContainerPort: 80,
413-
},
414-
},
415-
VolumeMounts: []v1.VolumeMount{
416-
{
417-
Name: "results",
418-
MountPath: "/results",
419-
},
420-
},
421-
},
422-
{
423-
Name: "querier",
424-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
425-
Command: []string{"sh", "-c", wheezyProbeCmd},
426-
VolumeMounts: []v1.VolumeMount{
427-
{
428-
Name: "results",
429-
MountPath: "/results",
430-
},
431-
},
432-
},
433-
{
434-
Name: "jessie-querier",
435-
Image: imageutils.GetE2EImage(imageutils.JessieDnsutils),
436-
Command: []string{"sh", "-c", jessieProbeCmd},
437-
VolumeMounts: []v1.VolumeMount{
438-
{
439-
Name: "results",
440-
MountPath: "/results",
441-
},
442-
},
443-
},
350+
podName := "dns-test-" + string(uuid.NewUUID())
351+
volumes := []v1.Volume{
352+
{
353+
Name: "results",
354+
VolumeSource: v1.VolumeSource{
355+
EmptyDir: &v1.EmptyDirVolumeSource{},
444356
},
445357
},
446358
}
359+
mounts := []v1.VolumeMount{
360+
{
361+
Name: "results",
362+
MountPath: "/results",
363+
},
364+
}
365+
366+
// TODO: Consider scraping logs instead of running a webserver.
367+
dnsPod := e2epod.NewAgnhostPod(namespace, podName, volumes, mounts, nil, "test-webserver")
368+
dnsPod.Spec.Containers[0].Name = "webserver"
447369

370+
querier := e2epod.NewAgnhostContainer("querier", mounts, nil, wheezyProbeCmd)
371+
querier.Command = []string{"sh", "-c"}
372+
373+
jessieQuerier := v1.Container{
374+
Name: "jessie-querier",
375+
Image: imageutils.GetE2EImage(imageutils.JessieDnsutils),
376+
Command: []string{"sh", "-c", jessieProbeCmd},
377+
VolumeMounts: mounts,
378+
}
379+
380+
dnsPod.Spec.Containers = append(dnsPod.Spec.Containers, querier, jessieQuerier)
448381
dnsPod.Spec.Hostname = podHostName
449382
dnsPod.Spec.Subdomain = serviceName
450383

@@ -617,23 +550,3 @@ func validateTargetedProbeOutput(f *framework.Framework, pod *v1.Pod, fileNames
617550

618551
framework.Logf("DNS probes using %s succeeded\n", pod.Name)
619552
}
620-
621-
func generateDNSUtilsPod() *v1.Pod {
622-
return &v1.Pod{
623-
TypeMeta: metav1.TypeMeta{
624-
Kind: "Pod",
625-
},
626-
ObjectMeta: metav1.ObjectMeta{
627-
GenerateName: "e2e-dns-utils-",
628-
},
629-
Spec: v1.PodSpec{
630-
Containers: []v1.Container{
631-
{
632-
Name: "util",
633-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
634-
Command: []string{"sleep", "10000"},
635-
},
636-
},
637-
},
638-
}
639-
}

test/e2e/network/firewall.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ var _ = SIGDescribe("Firewall rule", func() {
147147
podName := fmt.Sprintf("netexec%v", i)
148148

149149
framework.Logf("Creating netexec pod %q on node %v in namespace %q", podName, nodeName, ns)
150-
pod := newAgnhostPod(podName,
150+
pod := e2epod.NewAgnhostPod(ns, podName, nil, nil, nil,
151151
"netexec",
152152
fmt.Sprintf("--http-port=%d", firewallTestHTTPPort),
153153
fmt.Sprintf("--udp-port=%d", firewallTestUDPPort))

test/e2e/network/networking.go

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ import (
4242
//
4343
// An empty nodeName will use the schedule to choose where the pod is executed.
4444
func checkConnectivityToHost(f *framework.Framework, nodeName, podName, host string, port, timeout int) error {
45-
contName := fmt.Sprintf("%s-container", podName)
46-
4745
command := []string{
4846
"nc",
4947
"-vz",
@@ -52,22 +50,11 @@ func checkConnectivityToHost(f *framework.Framework, nodeName, podName, host str
5250
strconv.Itoa(port),
5351
}
5452

55-
pod := &v1.Pod{
56-
ObjectMeta: metav1.ObjectMeta{
57-
Name: podName,
58-
},
59-
Spec: v1.PodSpec{
60-
Containers: []v1.Container{
61-
{
62-
Name: contName,
63-
Image: agnHostImage,
64-
Command: command,
65-
},
66-
},
67-
NodeName: nodeName,
68-
RestartPolicy: v1.RestartPolicyNever,
69-
},
70-
}
53+
pod := e2epod.NewAgnhostPod(f.Namespace.Name, podName, nil, nil, nil)
54+
pod.Spec.Containers[0].Command = command
55+
pod.Spec.NodeName = nodeName
56+
pod.Spec.RestartPolicy = v1.RestartPolicyNever
57+
7158
podClient := f.ClientSet.CoreV1().Pods(f.Namespace.Name)
7259
_, err := podClient.Create(context.TODO(), pod, metav1.CreateOptions{})
7360
if err != nil {
@@ -76,7 +63,7 @@ func checkConnectivityToHost(f *framework.Framework, nodeName, podName, host str
7663
err = e2epod.WaitForPodSuccessInNamespace(f.ClientSet, podName, f.Namespace.Name)
7764

7865
if err != nil {
79-
logs, logErr := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, pod.Name, contName)
66+
logs, logErr := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, pod.Name, pod.Spec.Containers[0].Name)
8067
if logErr != nil {
8168
framework.Logf("Warning: Failed to get logs from pod %q: %v", pod.Name, logErr)
8269
} else {

0 commit comments

Comments
 (0)