Skip to content

Commit

Permalink
curb flakes in integration tests
Browse files Browse the repository at this point in the history
instead of searching the fedora registry which is error prone, we instead search a local registry for the empty set search.

when running two containers with the same IP, i suspect the first container has not fully gotten its ip information back from cni when the second container fires.  rework this test such that we use nginx to make sure the container is up and running before continues which should pace the subsequent test.

Signed-off-by: Brent Baude <[email protected]>
  • Loading branch information
baude authored and snj33v committed May 31, 2020
1 parent f95a0c4 commit 6365ca3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 21 deletions.
16 changes: 15 additions & 1 deletion test/e2e/run_staticip_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
package integration

import (
"fmt"
"net/http"
"os"
"time"

. "github.com/containers/libpod/test/utils"
. "github.com/onsi/ginkgo"
Expand Down Expand Up @@ -65,9 +68,20 @@ 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", "-d", "--ip", ip, ALPINE, "sleep", "999"})
result := podmanTest.Podman([]string{"run", "-dt", "--ip", ip, nginx})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
for i := 0; i < 10; i++ {
fmt.Println("Waiting for nginx", err)
time.Sleep(1 * time.Second)
response, err := http.Get(fmt.Sprintf("http://%s", ip))
if err != nil {
continue
}
if response.StatusCode == http.StatusOK {
break
}
}
result = podmanTest.Podman([]string{"run", "-ti", "--ip", ip, ALPINE, "ip", "addr"})
result.WaitWithDefaultTimeout()
Expect(result).To(ExitWithError())
Expand Down
31 changes: 11 additions & 20 deletions test/e2e/search_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@ package integration
import (
"bytes"
"fmt"
. "github.com/containers/libpod/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"io/ioutil"
"os"
"strconv"
"text/template"
"time"

. "github.com/containers/libpod/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

type endpoint struct {
Expand Down Expand Up @@ -165,21 +163,6 @@ registries = ['{{.Host}}:{{.Port}}']`
}
})

It("podman search v2 registry with empty query", func() {
var search *PodmanSessionIntegration
for i := 0; i < 5; i++ {
search = podmanTest.Podman([]string{"search", "registry.fedoraproject.org/"})
search.WaitWithDefaultTimeout()
if search.ExitCode() == 0 {
break
}
fmt.Println("Search failed; sleeping & retrying...")
time.Sleep(2 * time.Second)
}
Expect(search.ExitCode()).To(Equal(0))
Expect(len(search.OutputToStringArray())).To(BeNumerically(">=", 1))
})

It("podman search attempts HTTP if tls-verify flag is set false", func() {
if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le")
Expand Down Expand Up @@ -234,6 +217,14 @@ registries = ['{{.Host}}:{{.Port}}']`

Expect(search.ExitCode()).To(Equal(0))
Expect(search.OutputToString()).ShouldNot(BeEmpty())

// podman search v2 registry with empty query
searchEmpty := podmanTest.PodmanNoCache([]string{"search", fmt.Sprintf("%s/", registryEndpoints[3].Address()), "--tls-verify=false"})
searchEmpty.WaitWithDefaultTimeout()
Expect(searchEmpty.ExitCode()).To(BeZero())
Expect(len(searchEmpty.OutputToStringArray())).To(BeNumerically(">=", 1))
match, _ := search.GrepString("my-alpine")
Expect(match).Should(BeTrue())
})

It("podman search attempts HTTP if registry is in registries.insecure and force secure is false", func() {
Expand Down

0 comments on commit 6365ca3

Please sign in to comment.