diff options
author | Chris Evich <cevich@redhat.com> | 2021-10-14 14:32:20 -0400 |
---|---|---|
committer | Chris Evich <cevich@redhat.com> | 2021-10-14 15:47:45 -0400 |
commit | c1497cf44f466d3093c8ab29e7c0c48ad3c2f9e4 (patch) | |
tree | 99b888322c5dab6d67f5e6f3819d2ee2c88d6e06 | |
parent | 8d44c548c085c65cae33398b322eabadb6b237f7 (diff) | |
download | podman-c1497cf44f466d3093c8ab29e7c0c48ad3c2f9e4.tar.gz podman-c1497cf44f466d3093c8ab29e7c0c48ad3c2f9e4.tar.bz2 podman-c1497cf44f466d3093c8ab29e7c0c48ad3c2f9e4.zip |
Test-hang fix: Wait for ready + timeout on connect.
It was observed during initial F35 testing, this test can cause Ginkgo
to "hang" by attempting to connect before the redis is up/listening.
Fix this by confirming the ready-state before attempting to connect.
Also, force IPv4 and timeout on any connection fault - to allow other
tests to run.
Thanks to Adrian Reber for help on this and related fixes.
Signed-off-by: Chris Evich <cevich@redhat.com>
-rw-r--r-- | test/e2e/checkpoint_test.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/test/e2e/checkpoint_test.go b/test/e2e/checkpoint_test.go index 73ca5e1a6..db8029878 100644 --- a/test/e2e/checkpoint_test.go +++ b/test/e2e/checkpoint_test.go @@ -6,6 +6,7 @@ import ( "os" "os/exec" "strings" + "time" "github.com/containers/podman/v3/pkg/checkpoint/crutils" "github.com/containers/podman/v3/pkg/criu" @@ -247,16 +248,19 @@ var _ = Describe("Podman checkpoint", func() { session := podmanTest.Podman(localRunString) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) + cid := session.OutputToString() + if !WaitContainerReady(podmanTest, cid, "Ready to accept connections", 20, 1) { + Fail("Container failed to get ready") + } IP := podmanTest.Podman([]string{"inspect", "-l", "--format={{.NetworkSettings.IPAddress}}"}) IP.WaitWithDefaultTimeout() Expect(IP).Should(Exit(0)) // Open a network connection to the redis server - conn, err := net.Dial("tcp", IP.OutputToString()+":6379") - if err != nil { - os.Exit(1) - } + conn, err := net.DialTimeout("tcp4", IP.OutputToString()+":6379", time.Duration(3)*time.Second) + Expect(err).To(BeNil()) + // This should fail as the container has established TCP connections result := podmanTest.Podman([]string{"container", "checkpoint", "-l"}) result.WaitWithDefaultTimeout() |