diff --git a/automation/test.sh b/automation/test.sh index 3500d92aa..6b3a10a8c 100755 --- a/automation/test.sh +++ b/automation/test.sh @@ -16,4 +16,13 @@ trap teardown EXIT SIGINT SIGTERM SIGSTOP make cluster-down make cluster-up make cluster-sync -make E2E_TEST_EXTRA_ARGS="-ginkgo.noColor" test/e2e +test_args="-ginkgo.v -ginkgo.noColor -test.timeout 20m" +skip_tests="" + +# FIXME: Delete it when we migrate to okd4 provider, since os-3.11.0 is not +# working alright I we don't want to debug not supported providers. +if [[ $KUBEVIRT_PROVIDER =~ os- ]]; then + skip_tests="move.*default.*IP" +fi + +make E2E_TEST_EXTRA_ARGS="$test_args" E2E_TEST_SKIP="$skip_tests" test/e2e diff --git a/hack/install-kubevirtci.sh b/hack/install-kubevirtci.sh index ca4e7fd20..3f00afa1e 100755 --- a/hack/install-kubevirtci.sh +++ b/hack/install-kubevirtci.sh @@ -1,7 +1,7 @@ #!/bin/bash -e organization=kubevirt -commit="1c2922cd9ebaabf7006dc68aa8df70ad84d96d4b" +commit="db8c24bf830bb927f01829e6c9f083627fe6b832" script_dir=$(dirname "$(readlink -f "$0")") kubevirtci_dir=kubevirtci diff --git a/test/e2e/default_bridged_network_test.go b/test/e2e/default_bridged_network_test.go index 8cd5f25d0..79eb7440d 100644 --- a/test/e2e/default_bridged_network_test.go +++ b/test/e2e/default_bridged_network_test.go @@ -46,22 +46,21 @@ var _ = Describe("NodeNetworkConfigurationPolicy default bridged network", func( type: linux-bridge state: absent `) - // FIXME: This is a pending spec since we have to discover why the - // cluster never goes back at kubevirtci provider - XContext("when there is a default interface with dynamic address", func() { + Context("when there is a default interface with dynamic address", func() { addressByNode := map[string]string{} BeforeEach(func() { By("Check eth0 is the default route interface and has dynamic address") for _, node := range nodes { - Expect(defaultRouteNextHopInterface(node)).To(Equal("eth0")) - Expect(dhcpFlag(node, "eth0")).To(BeTrue()) + defaultRouteNextHopInterface(node).Should(Equal("eth0")) + Expect(dhcpFlag(node, "eth0")).Should(BeTrue()) } By("Fetching current IP address") for _, node := range nodes { address := "" Eventually(func() string { - return ipv4Address(node, "eth0") + address = ipv4Address(node, "eth0") + return address }, 15*time.Second, 1*time.Second).ShouldNot(BeEmpty(), "Interface eth0 has no ipv4 address") addressByNode[node] = address } @@ -70,6 +69,9 @@ var _ = Describe("NodeNetworkConfigurationPolicy default bridged network", func( By("Removing bridge and configuring eth0 with dhcp") setDesiredStateWithPolicy("default-network", resetDefaultInterface) + By("Waiting until the node becomes ready again") + waitForNodesReady() + By("Check eth0 has the default ip address") for _, node := range nodes { Eventually(func() string { @@ -79,14 +81,9 @@ var _ = Describe("NodeNetworkConfigurationPolicy default bridged network", func( By("Check eth0 is back as the default route interface") for _, node := range nodes { - Eventually(func() string { - return defaultRouteNextHopInterface(node) - }, 30*time.Second, 1*time.Second).Should(Equal("eth0")) + defaultRouteNextHopInterface(node).Should(Equal("eth0")) } - By("Waiting until the node becomes ready again") - waitForNodesReady() - By("Remove the policy") deletePolicy("default-network") }) @@ -107,13 +104,11 @@ var _ = Describe("NodeNetworkConfigurationPolicy default bridged network", func( By("Verify that next-hop-interface for default route is brext") for _, node := range nodes { - Eventually(func() string { - return defaultRouteNextHopInterface(node) - }, 30*time.Second, 1*time.Second).Should(Equal("brext")) + defaultRouteNextHopInterface(node).Should(Equal("brext")) By("Verify that VLAN configuration is done properly") hasVlans(node, "eth0", 2, 4094).Should(Succeed()) - hasVlans(node, "brext", 1, 1).Should(Succeed()) + vlansCardinality(node, "brext").Should(Equal(0)) } }) }) @@ -132,9 +127,11 @@ func ipv4Address(node string, name string) string { return gjson.ParseBytes(currentStateJSON(node)).Get(path).String() } -func defaultRouteNextHopInterface(node string) string { - path := "routes.running.#(destination==\"0.0.0.0/0\").next-hop-interface" - return gjson.ParseBytes(currentStateJSON(node)).Get(path).String() +func defaultRouteNextHopInterface(node string) AsyncAssertion { + return Eventually(func() string { + path := "routes.running.#(destination==\"0.0.0.0/0\").next-hop-interface" + return gjson.ParseBytes(currentStateJSON(node)).Get(path).String() + }, 15*time.Second, 1*time.Second) } func dhcpFlag(node string, name string) bool { @@ -158,9 +155,10 @@ func nodeReadyConditionStatus(nodeName string) (corev1.ConditionStatus, error) { } func waitForNodesReady() { + time.Sleep(5 * time.Second) for _, node := range nodes { Eventually(func() (corev1.ConditionStatus, error) { return nodeReadyConditionStatus(node) - }, 15*time.Second, 1*time.Second).Should(Equal(corev1.ConditionTrue)) + }, 60*time.Second, 1*time.Second).Should(Equal(corev1.ConditionTrue)) } } diff --git a/test/e2e/utils.go b/test/e2e/utils.go index cac80aa47..20ac45309 100644 --- a/test/e2e/utils.go +++ b/test/e2e/utils.go @@ -29,7 +29,7 @@ import ( nmstatev1alpha1 "github.com/nmstate/kubernetes-nmstate/pkg/apis/nmstate/v1alpha1" ) -const ReadTimeout = 15 * time.Second +const ReadTimeout = 120 * time.Second const ReadInterval = 1 * time.Second func writePodsLogs(namespace string, sinceTime time.Time, writer io.Writer) error {