From 629db20e5a10eed791039d6ccb46e0bdcd31d1ff Mon Sep 17 00:00:00 2001 From: gran Date: Thu, 11 Nov 2021 13:09:23 +0800 Subject: [PATCH] Enable traceflow e2e test on Windows Signed-off-by: gran --- test/e2e/fixtures.go | 18 ++++++++++++++--- test/e2e/traceflow_test.go | 41 +++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/test/e2e/fixtures.go b/test/e2e/fixtures.go index 6bba915f4fb..3ef58d1c0f3 100644 --- a/test/e2e/fixtures.go +++ b/test/e2e/fixtures.go @@ -415,6 +415,18 @@ func deletePodWrapper(tb testing.TB, data *TestData, namespace, name string) { // created Pods. Pods are created in parallel to reduce the time required to run the tests. func createTestBusyboxPods(tb testing.TB, data *TestData, num int, ns string, nodeName string) ( podNames []string, podIPs []*PodIPs, cleanupFn func(), +) { + return createTestPods(tb, data, num, ns, nodeName, data.createBusyboxPodOnNode) +} + +func createTestAgnhostPods(tb testing.TB, data *TestData, num int, ns string, nodeName string) ( + podNames []string, podIPs []*PodIPs, cleanupFn func(), +) { + return createTestPods(tb, data, num, ns, nodeName, data.createAgnhostPodOnNode) +} + +func createTestPods(tb testing.TB, data *TestData, num int, ns string, nodeName string, createFunc func(string, string, string, bool) error) ( + podNames []string, podIPs []*PodIPs, cleanupFn func(), ) { cleanupFn = func() { var wg sync.WaitGroup @@ -436,9 +448,9 @@ func createTestBusyboxPods(tb testing.TB, data *TestData, num int, ns string, no createPodAndGetIP := func() (string, *PodIPs, error) { podName := randName("test-pod-") - tb.Logf("Creating a busybox test Pod '%s' and waiting for IP", podName) - if err := data.createBusyboxPodOnNode(podName, ns, nodeName, false); err != nil { - tb.Errorf("Error when creating busybox test Pod '%s': %v", podName, err) + tb.Logf("Creating a test Pod '%s' and waiting for IP", podName) + if err := createFunc(podName, ns, nodeName, false); err != nil { + tb.Errorf("Error when creating test Pod '%s': %v", podName, err) return "", nil, err } podIP, err := data.podWaitForIPs(defaultTimeout, podName, ns) diff --git a/test/e2e/traceflow_test.go b/test/e2e/traceflow_test.go index f7037582829..ee27adb1567 100644 --- a/test/e2e/traceflow_test.go +++ b/test/e2e/traceflow_test.go @@ -53,7 +53,6 @@ type testcase struct { // TestTraceflow is the top-level test which contains all subtests for // Traceflow related test cases so they can share setup, teardown. func TestTraceflow(t *testing.T) { - skipIfHasWindowsNodes(t) skipIfTraceflowDisabled(t) data, err := setupTest(t) @@ -97,8 +96,12 @@ func testTraceflowIntraNodeANP(t *testing.T, data *TestData) { k8sUtils, err = NewKubernetesUtils(data) failOnError(err, t) - node1 := nodeName(0) - node1Pods, _, node1CleanupFn := createTestBusyboxPods(t, data, 3, testNamespace, node1) + nodeIdx := 0 + if len(clusterInfo.windowsNodes) != 0 { + nodeIdx = clusterInfo.windowsNodes[0] + } + node1 := nodeName(nodeIdx) + node1Pods, _, node1CleanupFn := createTestAgnhostPods(t, data, 3, testNamespace, node1) defer node1CleanupFn() var denyIngress *v1alpha1.NetworkPolicy @@ -282,10 +285,14 @@ func testTraceflowIntraNodeANP(t *testing.T, data *TestData) { // testTraceflowIntraNode verifies if traceflow can trace intra node traffic with some NetworkPolicies set. func testTraceflowIntraNode(t *testing.T, data *TestData) { - node1 := nodeName(0) + nodeIdx := 0 + if len(clusterInfo.windowsNodes) != 0 { + nodeIdx = clusterInfo.windowsNodes[0] + } + node1 := nodeName(nodeIdx) agentPod, _ := data.getAntreaPodOnNode(node1) - node1Pods, node1IPs, node1CleanupFn := createTestBusyboxPods(t, data, 3, testNamespace, node1) + node1Pods, node1IPs, node1CleanupFn := createTestAgnhostPods(t, data, 3, testNamespace, node1) defer node1CleanupFn() var pod0IPv4Str, pod1IPv4Str, dstPodIPv4Str, dstPodIPv6Str string if node1IPs[0].ipv4 != nil { @@ -1097,11 +1104,17 @@ func testTraceflowInterNode(t *testing.T, data *TestData) { skipIfProviderIs(t, "kind", "Skipping inter-Node Traceflow test for Kind because of #897") } - node1 := nodeName(0) - node2 := nodeName(1) + nodeIdx0 := 0 + nodeIdx1 := 1 + if len(clusterInfo.windowsNodes) != 0 { + nodeIdx0 = clusterInfo.windowsNodes[0] + nodeIdx1 = clusterInfo.windowsNodes[1] + } + node1 := nodeName(nodeIdx0) + node2 := nodeName(nodeIdx1) - node1Pods, _, node1CleanupFn := createTestBusyboxPods(t, data, 1, testNamespace, node1) - node2Pods, node2IPs, node2CleanupFn := createTestBusyboxPods(t, data, 2, testNamespace, node2) + node1Pods, _, node1CleanupFn := createTestAgnhostPods(t, data, 1, testNamespace, node1) + node2Pods, node2IPs, node2CleanupFn := createTestAgnhostPods(t, data, 2, testNamespace, node2) defer node1CleanupFn() defer node2CleanupFn() var dstPodIPv4Str, dstPodIPv6Str string @@ -1943,9 +1956,13 @@ func testTraceflowInterNode(t *testing.T, data *TestData) { } func testTraceflowExternalIP(t *testing.T, data *TestData) { - node := nodeName(0) - nodeIP := nodeIP(0) - podNames, _, cleanupFn := createTestBusyboxPods(t, data, 1, testNamespace, node) + nodeIdx := 0 + if len(clusterInfo.windowsNodes) != 0 { + nodeIdx = clusterInfo.windowsNodes[0] + } + node := nodeName(nodeIdx) + nodeIP := nodeIP(nodeIdx) + podNames, _, cleanupFn := createTestAgnhostPods(t, data, 1, testNamespace, node) defer cleanupFn() testcase := testcase{