Skip to content

Commit 46807c4

Browse files
committed
IPsec E2E: Add pod to node traffic test
Signed-off-by: Periyasamy Palanisamy <pepalani@redhat.com>
1 parent c86e3cd commit 46807c4

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

test/extended/networking/ipsec.go

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
336336
return nil
337337
}
338338

339-
setupTestPods := func(config *testConfig, isHostNetwork bool) error {
339+
setupTestPods := func(config *testConfig, isSrcPingPodInHostNetwork, isDstPingPodInHostNetwork bool) error {
340340
tcpdumpImage, err := exutil.DetermineImageFromRelease(context.TODO(), oc, "network-tools")
341341
o.Expect(err).NotTo(o.HaveOccurred())
342342
createSync := errgroup.Group{}
@@ -348,7 +348,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
348348
}
349349
srcPingPod := e2epod.CreateExecPodOrFail(context.TODO(), f.ClientSet, f.Namespace.Name, "ipsec-test-srcpod-", func(p *corev1.Pod) {
350350
p.Spec.NodeName = config.srcNodeConfig.nodeName
351-
p.Spec.HostNetwork = isHostNetwork
351+
p.Spec.HostNetwork = isSrcPingPodInHostNetwork
352352
})
353353
config.srcNodeConfig.pingPod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Get(context.TODO(), srcPingPod.Name, metav1.GetOptions{})
354354
return err
@@ -361,7 +361,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
361361
}
362362
dstPingPod := e2epod.CreateExecPodOrFail(context.TODO(), f.ClientSet, f.Namespace.Name, "ipsec-test-dstpod-", func(p *corev1.Pod) {
363363
p.Spec.NodeName = config.dstNodeConfig.nodeName
364-
p.Spec.HostNetwork = isHostNetwork
364+
p.Spec.HostNetwork = isDstPingPodInHostNetwork
365365
})
366366
config.dstNodeConfig.pingPod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Get(context.TODO(), dstPingPod.Name, metav1.GetOptions{})
367367
return err
@@ -388,7 +388,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
388388

389389
checkForGeneveOnlyPodTraffic := func(config *testConfig) {
390390
g.GinkgoHelper()
391-
err := setupTestPods(config, false)
391+
err := setupTestPods(config, false, false)
392392
o.Expect(err).NotTo(o.HaveOccurred())
393393
defer func() {
394394
// Don't cleanup test pods in error scenario.
@@ -410,7 +410,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
410410

411411
checkForESPOnlyPodTraffic := func(config *testConfig) {
412412
g.GinkgoHelper()
413-
err := setupTestPods(config, false)
413+
err := setupTestPods(config, false, false)
414414
o.Expect(err).NotTo(o.HaveOccurred())
415415
defer func() {
416416
// Don't cleanup test pods in error scenario.
@@ -430,7 +430,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
430430

431431
checkForNATTOnlyPodTraffic := func(config *testConfig) {
432432
g.GinkgoHelper()
433-
err := setupTestPods(config, false)
433+
err := setupTestPods(config, false, false)
434434
o.Expect(err).NotTo(o.HaveOccurred())
435435
defer func() {
436436
// Don't cleanup test pods in error scenario.
@@ -461,7 +461,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
461461

462462
checkNodeTraffic := func(mode v1.IPsecMode) {
463463
g.GinkgoHelper()
464-
err := setupTestPods(config, true)
464+
err := setupTestPods(config, true, true)
465465
o.Expect(err).NotTo(o.HaveOccurred())
466466
defer func() {
467467
// Don't cleanup test pods in error scenario.
@@ -483,6 +483,30 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
483483
}
484484
}
485485

486+
checkPodToNodeTraffic := func(mode v1.IPsecMode) {
487+
g.GinkgoHelper()
488+
err := setupTestPods(config, false, true)
489+
o.Expect(err).NotTo(o.HaveOccurred())
490+
defer func() {
491+
// Don't cleanup test pods in error scenario.
492+
if err != nil && !framework.TestContext.DeleteNamespaceOnFailure {
493+
return
494+
}
495+
cleanupTestPods(config)
496+
}()
497+
if mode == v1.IPsecModeExternal {
498+
err = pingAndCheckNodeTraffic(config.srcNodeConfig, config.dstNodeConfig, esp)
499+
o.Expect(err).NotTo(o.HaveOccurred())
500+
err = pingAndCheckNodeTraffic(config.srcNodeConfig, config.dstNodeConfig, icmp)
501+
o.Expect(err).To(o.HaveOccurred())
502+
err = nil
503+
return
504+
} else {
505+
err = pingAndCheckNodeTraffic(config.srcNodeConfig, config.dstNodeConfig, icmp)
506+
o.Expect(err).NotTo(o.HaveOccurred())
507+
}
508+
}
509+
486510
g.BeforeAll(func() {
487511
// Set up the config object with existing IPsecConfig, setup testing config on
488512
// the selected nodes.
@@ -617,8 +641,10 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
617641

618642
g.By("validate traffic before changing IPsec configuration")
619643
checkPodTraffic(config.ipsecCfg)
620-
// N/S ipsec config is not in effect yet, so node traffic behaves as it were disabled
644+
// N/S ipsec config is not in effect yet, so node to node and pod to node traffic behave
645+
// as it were disabled
621646
checkNodeTraffic(v1.IPsecModeDisabled)
647+
checkPodToNodeTraffic(v1.IPsecModeDisabled)
622648

623649
// TODO: remove this block when https://issues.redhat.com/browse/RHEL-67307 is fixed.
624650
if config.ipsecCfg.mode == v1.IPsecModeFull {
@@ -653,6 +679,7 @@ var _ = g.Describe("[sig-network][Feature:IPsec]", g.Ordered, func() {
653679
checkPodTraffic(&ipsecConfig{mode: v1.IPsecModeFull,
654680
encap: v1.Encapsulation(v1.EncapsulationAuto)})
655681
checkNodeTraffic(v1.IPsecModeExternal)
682+
checkPodToNodeTraffic(v1.IPsecModeExternal)
656683
})
657684
})
658685
})

0 commit comments

Comments
 (0)