Skip to content

Commit d37cbeb

Browse files
committed
tests: Refactors agnhost image pod usage - network
A previous commit created a few agnhost related functions that creates agnhost pods / containers for general purposes. Refactors tests to use those functions.
1 parent 131f42d commit d37cbeb

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
@@ -199,29 +199,9 @@ func (t *dnsTestCommon) deleteConfigMap() {
199199
func (t *dnsTestCommon) createUtilPodLabel(baseName string) {
200200
// Actual port # doesn't matter, just needs to exist.
201201
const servicePort = 10101
202-
203-
t.utilPod = &v1.Pod{
204-
TypeMeta: metav1.TypeMeta{
205-
Kind: "Pod",
206-
},
207-
ObjectMeta: metav1.ObjectMeta{
208-
Namespace: t.f.Namespace.Name,
209-
Labels: map[string]string{"app": baseName},
210-
GenerateName: baseName + "-",
211-
},
212-
Spec: v1.PodSpec{
213-
Containers: []v1.Container{
214-
{
215-
Name: "util",
216-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
217-
Command: []string{"sleep", "10000"},
218-
Ports: []v1.ContainerPort{
219-
{ContainerPort: servicePort, Protocol: v1.ProtocolTCP},
220-
},
221-
},
222-
},
223-
},
224-
}
202+
podName := fmt.Sprintf("%s-%s", baseName, string(uuid.NewUUID()))
203+
ports := []v1.ContainerPort{{ContainerPort: servicePort, Protocol: v1.ProtocolTCP}}
204+
t.utilPod = e2epod.NewAgnhostPod(t.f.Namespace.Name, podName, nil, nil, ports)
225205

226206
var err error
227207
t.utilPod, err = t.c.CoreV1().Pods(t.f.Namespace.Name).Create(context.TODO(), t.utilPod, metav1.CreateOptions{})
@@ -280,46 +260,31 @@ func (t *dnsTestCommon) deleteCoreDNSPods() {
280260
}
281261

282262
func generateCoreDNSServerPod(corednsConfig *v1.ConfigMap) *v1.Pod {
283-
return &v1.Pod{
284-
TypeMeta: metav1.TypeMeta{
285-
Kind: "Pod",
286-
},
287-
ObjectMeta: metav1.ObjectMeta{
288-
GenerateName: "e2e-dns-configmap-dns-server-",
289-
},
290-
Spec: v1.PodSpec{
291-
Volumes: []v1.Volume{
292-
{
293-
Name: "coredns-config",
294-
VolumeSource: v1.VolumeSource{
295-
ConfigMap: &v1.ConfigMapVolumeSource{
296-
LocalObjectReference: v1.LocalObjectReference{
297-
Name: corednsConfig.Name,
298-
},
299-
},
300-
},
301-
},
302-
},
303-
Containers: []v1.Container{
304-
{
305-
Name: "dns",
306-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
307-
Command: []string{
308-
"/coredns",
309-
"-conf", "/etc/coredns/Corefile",
310-
},
311-
VolumeMounts: []v1.VolumeMount{
312-
{
313-
Name: "coredns-config",
314-
MountPath: "/etc/coredns",
315-
ReadOnly: true,
316-
},
263+
podName := fmt.Sprintf("e2e-configmap-dns-server-%s", string(uuid.NewUUID()))
264+
volumes := []v1.Volume{
265+
{
266+
Name: "coredns-config",
267+
VolumeSource: v1.VolumeSource{
268+
ConfigMap: &v1.ConfigMapVolumeSource{
269+
LocalObjectReference: v1.LocalObjectReference{
270+
Name: corednsConfig.Name,
317271
},
318272
},
319273
},
320-
DNSPolicy: "Default",
321274
},
322275
}
276+
mounts := []v1.VolumeMount{
277+
{
278+
Name: "coredns-config",
279+
MountPath: "/etc/coredns",
280+
ReadOnly: true,
281+
},
282+
}
283+
284+
pod := e2epod.NewAgnhostPod("", podName, volumes, mounts, nil, "-conf", "/etc/coredns/Corefile")
285+
pod.Spec.Containers[0].Command = []string{"/coredns"}
286+
pod.Spec.DNSPolicy = "Default"
287+
return pod
323288
}
324289

325290
func generateCoreDNSConfigmap(namespaceName string, aRecords map[string]string) *v1.ConfigMap {
@@ -390,69 +355,37 @@ func (t *dnsTestCommon) deleteDNSServerPod() {
390355
}
391356

392357
func createDNSPod(namespace, wheezyProbeCmd, jessieProbeCmd, podHostName, serviceName string) *v1.Pod {
393-
dnsPod := &v1.Pod{
394-
TypeMeta: metav1.TypeMeta{
395-
Kind: "Pod",
396-
APIVersion: "v1",
397-
},
398-
ObjectMeta: metav1.ObjectMeta{
399-
Name: "dns-test-" + string(uuid.NewUUID()),
400-
Namespace: namespace,
401-
},
402-
Spec: v1.PodSpec{
403-
Volumes: []v1.Volume{
404-
{
405-
Name: "results",
406-
VolumeSource: v1.VolumeSource{
407-
EmptyDir: &v1.EmptyDirVolumeSource{},
408-
},
409-
},
410-
},
411-
Containers: []v1.Container{
412-
// TODO: Consider scraping logs instead of running a webserver.
413-
{
414-
Name: "webserver",
415-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
416-
Args: []string{"test-webserver"},
417-
Ports: []v1.ContainerPort{
418-
{
419-
Name: "http",
420-
ContainerPort: 80,
421-
},
422-
},
423-
VolumeMounts: []v1.VolumeMount{
424-
{
425-
Name: "results",
426-
MountPath: "/results",
427-
},
428-
},
429-
},
430-
{
431-
Name: "querier",
432-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
433-
Command: []string{"sh", "-c", wheezyProbeCmd},
434-
VolumeMounts: []v1.VolumeMount{
435-
{
436-
Name: "results",
437-
MountPath: "/results",
438-
},
439-
},
440-
},
441-
{
442-
Name: "jessie-querier",
443-
Image: imageutils.GetE2EImage(imageutils.JessieDnsutils),
444-
Command: []string{"sh", "-c", jessieProbeCmd},
445-
VolumeMounts: []v1.VolumeMount{
446-
{
447-
Name: "results",
448-
MountPath: "/results",
449-
},
450-
},
451-
},
358+
podName := "dns-test-" + string(uuid.NewUUID())
359+
volumes := []v1.Volume{
360+
{
361+
Name: "results",
362+
VolumeSource: v1.VolumeSource{
363+
EmptyDir: &v1.EmptyDirVolumeSource{},
452364
},
453365
},
454366
}
367+
mounts := []v1.VolumeMount{
368+
{
369+
Name: "results",
370+
MountPath: "/results",
371+
},
372+
}
373+
374+
// TODO: Consider scraping logs instead of running a webserver.
375+
dnsPod := e2epod.NewAgnhostPod(namespace, podName, volumes, mounts, nil, "test-webserver")
376+
dnsPod.Spec.Containers[0].Name = "webserver"
455377

378+
querier := e2epod.NewAgnhostContainer("querier", mounts, nil, wheezyProbeCmd)
379+
querier.Command = []string{"sh", "-c"}
380+
381+
jessieQuerier := v1.Container{
382+
Name: "jessie-querier",
383+
Image: imageutils.GetE2EImage(imageutils.JessieDnsutils),
384+
Command: []string{"sh", "-c", jessieProbeCmd},
385+
VolumeMounts: mounts,
386+
}
387+
388+
dnsPod.Spec.Containers = append(dnsPod.Spec.Containers, querier, jessieQuerier)
456389
dnsPod.Spec.Hostname = podHostName
457390
dnsPod.Spec.Subdomain = serviceName
458391

@@ -625,23 +558,3 @@ func validateTargetedProbeOutput(f *framework.Framework, pod *v1.Pod, fileNames
625558

626559
framework.Logf("DNS probes using %s succeeded\n", pod.Name)
627560
}
628-
629-
func generateDNSUtilsPod() *v1.Pod {
630-
return &v1.Pod{
631-
TypeMeta: metav1.TypeMeta{
632-
Kind: "Pod",
633-
},
634-
ObjectMeta: metav1.ObjectMeta{
635-
GenerateName: "e2e-dns-utils-",
636-
},
637-
Spec: v1.PodSpec{
638-
Containers: []v1.Container{
639-
{
640-
Name: "util",
641-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
642-
Command: []string{"sleep", "10000"},
643-
},
644-
},
645-
},
646-
}
647-
}

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)