Skip to content

Commit

Permalink
NetPol E2E: Fix flake on the shared network test
Browse files Browse the repository at this point in the history
This commit modifies the test to use random network and
nad name to avoid race between tests.

Signed-off-by: Periyasamy Palanisamy <[email protected]>
  • Loading branch information
pperiyasamy committed Sep 19, 2024
1 parent b47b37d commit e29cb3e
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions test/e2e/network_segmentation_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
v1 "k8s.io/api/core/v1"
knet "k8s.io/api/networking/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/rand"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/test/e2e/framework"
)
Expand All @@ -30,6 +31,7 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {
workerTwoNodeName = "ovn-worker2"
port = 9000
netPrefixLengthPerNode = 24
randomStringLength = 5
)

var (
Expand Down Expand Up @@ -126,7 +128,7 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {
networkAttachmentConfigParams{
name: nadName,
topology: "layer2",
cidr: fmt.Sprintf("%s,%s", userDefinedNetworkIPv4Subnet, userDefinedNetworkIPv6Subnet),
cidr: correctCIDRFamily(userDefinedNetworkIPv4Subnet, userDefinedNetworkIPv6Subnet),
role: "primary",
},
*podConfig(
Expand All @@ -146,7 +148,7 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {
networkAttachmentConfigParams{
name: nadName,
topology: "layer3",
cidr: fmt.Sprintf("%s,%s", userDefinedNetworkIPv4Subnet, userDefinedNetworkIPv6Subnet),
cidr: correctCIDRFamily(userDefinedNetworkIPv4Subnet, userDefinedNetworkIPv6Subnet),
role: "primary",
},
*podConfig(
Expand Down Expand Up @@ -180,9 +182,10 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {

nad := networkAttachmentConfigParams{
topology: topology,
cidr: userDefinedNetworkIPv4Subnet,
cidr: correctCIDRFamily(userDefinedNetworkIPv4Subnet, userDefinedNetworkIPv6Subnet),
// Both yellow and blue namespaces are going to served by green network.
networkName: "green",
// Use random suffix for the network name to avoid race between tests.
networkName: fmt.Sprintf("%s-%s", "green", rand.String(randomStringLength)),
role: "primary",
}
for _, namespace := range []string{namespaceYellow, namespaceBlue} {
Expand All @@ -202,8 +205,9 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {
}()
}

netConfNamespaceMap := map[string]string{namespaceYellow: yellow, namespaceBlue: blue}
for namespace, netConfName := range netConfNamespaceMap {
// Use random suffix in net conf name to avoid race between tests.
netConfName := fmt.Sprintf("sharednet-%s", rand.String(randomStringLength))
for _, namespace := range []string{namespaceYellow, namespaceBlue} {
ginkgo.By("creating the attachment configuration for " + netConfName + " in namespace " + namespace)
netConfig := newNetworkAttachmentConfig(nad)
netConfig.namespace = namespace
Expand All @@ -226,15 +230,19 @@ var _ = ginkgo.Describe("Network Segmentation: Network Policies", func() {
runUDNPod(cs, namespaceBlue, clientPodConfig, nil)

ginkgo.By("asserting the server pods have an IP from the configured range")
allowServerPodIP, err := podIPsForUserDefinedPrimaryNetwork(cs, namespaceYellow, allowServerPodConfig.name, namespacedName(namespaceYellow, yellow), 0)
allowServerPodIP, err := podIPsForUserDefinedPrimaryNetwork(cs, namespaceYellow, allowServerPodConfig.name,
namespacedName(namespaceYellow, netConfName), 0)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
ginkgo.By(fmt.Sprintf("asserting the allow server pod IP %v is from the configured range %v/%v", allowServerPodIP, userDefinedNetworkIPv4Subnet, netPrefixLengthPerNode))
ginkgo.By(fmt.Sprintf("asserting the allow server pod IP %v is from the configured range %v/%v", allowServerPodIP,
userDefinedNetworkIPv4Subnet, netPrefixLengthPerNode))
subnet, err := getNetCIDRSubnet(userDefinedNetworkIPv4Subnet)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
gomega.Expect(inRange(subnet, allowServerPodIP)).To(gomega.Succeed())
denyServerPodIP, err := podIPsForUserDefinedPrimaryNetwork(cs, namespaceYellow, denyServerPodConfig.name, namespacedName(namespaceYellow, yellow), 0)
denyServerPodIP, err := podIPsForUserDefinedPrimaryNetwork(cs, namespaceYellow, denyServerPodConfig.name,
namespacedName(namespaceYellow, netConfName), 0)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
ginkgo.By(fmt.Sprintf("asserting the deny server pod IP %v is from the configured range %v/%v", denyServerPodIP, userDefinedNetworkIPv4Subnet, netPrefixLengthPerNode))
ginkgo.By(fmt.Sprintf("asserting the deny server pod IP %v is from the configured range %v/%v", denyServerPodIP,
userDefinedNetworkIPv4Subnet, netPrefixLengthPerNode))
gomega.Expect(err).NotTo(gomega.HaveOccurred())
gomega.Expect(inRange(subnet, denyServerPodIP)).To(gomega.Succeed())

Expand Down

0 comments on commit e29cb3e

Please sign in to comment.