Skip to content

Commit 78cd6c7

Browse files
pliurhopenshift-cherrypick-robot
authored and
openshift-cherrypick-robot
committed
Add L2 UDN route advertisements tests
Signed-off-by: Peng Liu <[email protected]>
1 parent 15c4ee6 commit 78cd6c7

File tree

3 files changed

+63
-19
lines changed

3 files changed

+63
-19
lines changed

test/extended/networking/route_advertisements.go

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
209209

210210
numberOfRequestsToSend := 10
211211
g.By(fmt.Sprintf("Sending requests from prober and making sure that %d requests with search string and PodIP %v were seen", numberOfRequestsToSend, v4PodIPSet))
212-
212+
svcUrl := fmt.Sprintf("%s-0-service.%s.svc.cluster.local:%d", targetNamespace, targetNamespace, serverPort)
213213
if clusterIPFamily == DualStack || clusterIPFamily == IPv4 {
214214
g.By("sending to IPv4 external host")
215215
spawnProberSendEgressIPTrafficCheckLogs(oc, snifferNamespace, probePodName, svcUrl, targetProtocol, v4ExternalIP, serverPort, numberOfRequestsToSend, numberOfRequestsToSend, packetSnifferDaemonSet, v4PodIPSet)
@@ -242,12 +242,29 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
242242
})
243243
})
244244

245-
g.Context("[PodNetwork] Advertising a cluster user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]", func() {
245+
verifyUdnRaFunc := func(udnTopology string) {
246246
var cleanup func()
247247
g.BeforeEach(func() {
248248
var err error
249+
var snifferPodsNodes []string
250+
// Check if the cluster is in local gateway mode
251+
network, err := oc.AdminOperatorClient().OperatorV1().Networks().Get(context.TODO(), "cluster", metav1.GetOptions{})
252+
o.Expect(err).NotTo(o.HaveOccurred())
253+
if network.Spec.DefaultNetwork.OVNKubernetesConfig.GatewayConfig != nil && network.Spec.DefaultNetwork.OVNKubernetesConfig.GatewayConfig.RoutingViaHost && udnTopology == "layer2" {
254+
skipper.Skipf("Skipping Layer2 UDN advertisements test for local gateway mode")
255+
}
256+
if udnTopology == "layer2" {
257+
// Running the packet sniffer on all nodes in the cluster for Layer2 UDN
258+
nodes, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
259+
o.Expect(err).NotTo(o.HaveOccurred())
260+
for _, node := range nodes.Items {
261+
snifferPodsNodes = append(snifferPodsNodes, node.Name)
262+
}
263+
} else {
264+
snifferPodsNodes = advertisedPodsNodes
265+
}
249266
g.By("Setup packet sniffer at nodes")
250-
packetSnifferDaemonSet, err = setupPacketSniffer(oc, clientset, snifferNamespace, advertisedPodsNodes, networkPlugin)
267+
packetSnifferDaemonSet, err = setupPacketSniffer(oc, clientset, snifferNamespace, snifferPodsNodes, networkPlugin)
251268
o.Expect(err).NotTo(o.HaveOccurred())
252269

253270
g.By("Create a namespace with UDPN")
@@ -261,12 +278,12 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
261278
targetNamespace = ns.Name
262279
f.Namespace = ns
263280
// use a long cudn (longer than 15 characters) name to work around OCPBUGS-54659
264-
cudnName = "clusteruserdefinenetwork" + ns.Name
281+
cudnName = "clusteruserdefinenetwork-" + ns.Name
265282

266283
g.By("Creating a cluster user defined network")
267284
nc := &networkAttachmentConfigParams{
268285
name: cudnName,
269-
topology: "layer3",
286+
topology: udnTopology,
270287
role: "primary",
271288
namespace: targetNamespace,
272289
}
@@ -356,6 +373,14 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
356373
}
357374
}
358375
})
376+
}
377+
378+
g.Context("[PodNetwork] Advertising a Layer 3 cluster user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]", func() {
379+
verifyUdnRaFunc("layer3")
380+
})
381+
382+
g.Context("[PodNetwork] Advertising a Layer 2 cluster user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]", func() {
383+
verifyUdnRaFunc("layer2")
359384
})
360385

361386
g.Context("[EgressIP][apigroup:user.openshift.io][apigroup:security.openshift.io]", func() {
@@ -500,7 +525,7 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
500525
)
501526
})
502527

503-
g.Context("Advertising egressIP for user defined network", func() {
528+
verifyEIPForUDN := func(udnTopology string) {
504529
var cleanup func()
505530
g.BeforeEach(func() {
506531
g.By("Create a namespace with UDPN")
@@ -519,7 +544,7 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
519544
g.By("Creating a cluster user defined network")
520545
nc := &networkAttachmentConfigParams{
521546
name: cudnName,
522-
topology: "layer3",
547+
topology: udnTopology,
523548
role: "primary",
524549
namespace: targetNamespace,
525550
}
@@ -628,7 +653,13 @@ var _ = g.Describe("[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:Ro
628653
g.Entry("IPv4", IPv4, v4ExternalIP),
629654
g.Entry("IPv6", IPv6, v6ExternalIP),
630655
)
656+
}
657+
658+
g.Context("Advertising egressIP for layer 3 user defined network", func() {
659+
verifyEIPForUDN("layer3")
631660
})
661+
662+
// [TODO] Add test for layer 2 UDN once OCPBUGS-55157 is fixed.
632663
})
633664
})
634665
})
@@ -999,6 +1030,7 @@ func checkExternalResponse(oc *exutil.CLI, proberPod *corev1.Pod, podIP, Externa
9991030
lastErr = fmt.Errorf("no responses received")
10001031
return false
10011032
}
1033+
framework.Logf("resp: %s prober IP: %s", resp.Responses[0], ExternalIP)
10021034

10031035
if !strings.Contains(resp.Responses[0], ExternalIP) {
10041036
lastErr = fmt.Errorf("response does not contain external IP %s", ExternalIP)

test/extended/util/annotate/generated/zz_generated.annotations.go

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zz_generated.manifests/test-reporting.yaml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -586,21 +586,29 @@ spec:
586586
IPv6'
587587
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
588588
when using openshift ovn-kubernetes [EgressIP][apigroup:user.openshift.io][apigroup:security.openshift.io]
589-
Advertising egressIP for user defined network UDN pods should have the assigned
590-
EgressIPs and EgressIPs can be created, updated and deleted [apigroup:route.openshift.io]
589+
Advertising egressIP for layer 3 user defined network UDN pods should have
590+
the assigned EgressIPs and EgressIPs can be created, updated and deleted [apigroup:route.openshift.io]
591591
IPv4'
592592
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
593593
when using openshift ovn-kubernetes [EgressIP][apigroup:user.openshift.io][apigroup:security.openshift.io]
594-
Advertising egressIP for user defined network UDN pods should have the assigned
595-
EgressIPs and EgressIPs can be created, updated and deleted [apigroup:route.openshift.io]
594+
Advertising egressIP for layer 3 user defined network UDN pods should have
595+
the assigned EgressIPs and EgressIPs can be created, updated and deleted [apigroup:route.openshift.io]
596596
IPv6'
597597
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
598-
when using openshift ovn-kubernetes [PodNetwork] Advertising a cluster user
599-
defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
598+
when using openshift ovn-kubernetes [PodNetwork] Advertising a Layer 2 cluster
599+
user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
600600
External host should be able to query route advertised pods by the pod IP'
601601
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
602-
when using openshift ovn-kubernetes [PodNetwork] Advertising a cluster user
603-
defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
602+
when using openshift ovn-kubernetes [PodNetwork] Advertising a Layer 2 cluster
603+
user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
604+
pods should communicate with external host without being SNATed'
605+
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
606+
when using openshift ovn-kubernetes [PodNetwork] Advertising a Layer 3 cluster
607+
user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
608+
External host should be able to query route advertised pods by the pod IP'
609+
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
610+
when using openshift ovn-kubernetes [PodNetwork] Advertising a Layer 3 cluster
611+
user defined network [apigroup:user.openshift.io][apigroup:security.openshift.io]
604612
pods should communicate with external host without being SNATed'
605613
- testName: '[sig-network][OCPFeatureGate:RouteAdvertisements][Feature:RouteAdvertisements][apigroup:operator.openshift.io]
606614
when using openshift ovn-kubernetes [PodNetwork] Advertising the default network

0 commit comments

Comments
 (0)