summaryrefslogtreecommitdiff
path: root/test/e2e/run_staticip_test.go
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2022-04-06 08:17:42 -0600
committerEd Santiago <santiago@redhat.com>2022-04-25 14:25:10 -0600
commitee9d755c5b86ef996a7896f09e6e91ee5e488af7 (patch)
tree718919a8183f4d3c1be5fb977ff764e965e70272 /test/e2e/run_staticip_test.go
parent181c9d3ee3ad4820b9ae91f1f02faf7b9e65fc87 (diff)
downloadpodman-ee9d755c5b86ef996a7896f09e6e91ee5e488af7.tar.gz
podman-ee9d755c5b86ef996a7896f09e6e91ee5e488af7.tar.bz2
podman-ee9d755c5b86ef996a7896f09e6e91ee5e488af7.zip
Robustify nginx tests
[skip ci] While chasing a flake, I discovered that our alpine_nginx image is broken: it returns 404 on all requests. We never caught this because--surprise!--curl exits 0 even when server returns 4xx/5xx status. Let's be strict: add -f (--fail) option to all invocations of curl. And, although I couldn't identify the root cause of the flake (in "run two containers with the same IP" test), I can at least fix the broken wait-for-nginx loop, bump up the number of retries, and improve diagnostics on failure. And add a strict error-message check. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test/e2e/run_staticip_test.go')
-rw-r--r--test/e2e/run_staticip_test.go29
1 files changed, 20 insertions, 9 deletions
diff --git a/test/e2e/run_staticip_test.go b/test/e2e/run_staticip_test.go
index b78a37495..7e61e7c5e 100644
--- a/test/e2e/run_staticip_test.go
+++ b/test/e2e/run_staticip_test.go
@@ -102,22 +102,33 @@ var _ = Describe("Podman run with --ip flag", func() {
It("Podman run two containers with the same IP", func() {
ip := GetRandomIPAddress()
- result := podmanTest.Podman([]string{"run", "-dt", "--ip", ip, nginx})
+ result := podmanTest.Podman([]string{"run", "-d", "--name", "nginx", "--ip", ip, nginx})
result.WaitWithDefaultTimeout()
Expect(result).Should(Exit(0))
- for i := 0; i < 10; i++ {
- fmt.Println("Waiting for nginx", err)
- time.Sleep(1 * time.Second)
+
+ for retries := 20; retries > 0; retries-- {
response, err := http.Get(fmt.Sprintf("http://%s", ip))
- if err != nil {
- continue
- }
- if response.StatusCode == http.StatusOK {
+ if err == nil && response.StatusCode == http.StatusOK {
break
}
+ if retries == 1 {
+ logps := podmanTest.Podman([]string{"ps", "-a"})
+ logps.WaitWithDefaultTimeout()
+ logps = podmanTest.Podman([]string{"logs", "nginx"})
+ logps.WaitWithDefaultTimeout()
+ Fail("Timed out waiting for nginx container, see ps & log above.")
+ }
+
+ if err != nil {
+ fmt.Printf("nginx not ready yet; error=%v; %d retries left...\n", err, retries)
+ } else {
+ fmt.Printf("nginx not ready yet; response=%v; %d retries left...\n", response.StatusCode, retries)
+ }
+ time.Sleep(1 * time.Second)
}
- result = podmanTest.Podman([]string{"run", "-ti", "--ip", ip, ALPINE, "ip", "addr"})
+ result = podmanTest.Podman([]string{"run", "--ip", ip, ALPINE, "ip", "addr"})
result.WaitWithDefaultTimeout()
Expect(result).To(ExitWithError())
+ Expect(result.ErrorToString()).To(ContainSubstring(" address %s ", ip))
})
})