summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/e2e/common_test.go27
-rw-r--r--test/e2e/cp_test.go21
-rw-r--r--test/e2e/logs_test.go17
-rw-r--r--test/e2e/port_test.go30
-rw-r--r--test/e2e/runlabel_test.go1
-rw-r--r--test/system/030-run.bats4
-rw-r--r--test/utils/utils.go2
7 files changed, 90 insertions, 12 deletions
diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go
index 9529346b4..8b6eab892 100644
--- a/test/e2e/common_test.go
+++ b/test/e2e/common_test.go
@@ -10,6 +10,7 @@ import (
"sort"
"strings"
"testing"
+ "time"
"github.com/containers/libpod/cmd/podman/shared"
"github.com/containers/libpod/libpod"
@@ -22,6 +23,7 @@ import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/onsi/gomega/gexec"
+ "github.com/pkg/errors"
)
var (
@@ -367,6 +369,18 @@ func (p *PodmanTestIntegration) RunLsContainer(name string) (*PodmanSessionInteg
return session, session.ExitCode(), session.OutputToString()
}
+// RunNginxWithHealthCheck runs the alpine nginx container with an optional name and adds a healthcheck into it
+func (p *PodmanTestIntegration) RunNginxWithHealthCheck(name string) (*PodmanSessionIntegration, string) {
+ var podmanArgs = []string{"run"}
+ if name != "" {
+ podmanArgs = append(podmanArgs, "--name", name)
+ }
+ podmanArgs = append(podmanArgs, "-dt", "-P", "--healthcheck-command", "CMD-SHELL curl http://localhost/", nginx)
+ session := p.Podman(podmanArgs)
+ session.WaitWithDefaultTimeout()
+ return session, session.OutputToString()
+}
+
func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSessionIntegration, int, string) {
var podmanArgs = []string{"run", "--pod", pod}
if name != "" {
@@ -508,3 +522,16 @@ func (p *PodmanTestIntegration) ImageExistsInMainStore(idOrName string) bool {
results.WaitWithDefaultTimeout()
return Expect(results.ExitCode()).To(Equal(0))
}
+
+func (p *PodmanTestIntegration) RunHealthCheck(cid string) error {
+ for i := 0; i < 10; i++ {
+ hc := p.Podman([]string{"healthcheck", "run", cid})
+ hc.WaitWithDefaultTimeout()
+ if hc.ExitCode() == 0 {
+ return nil
+ }
+ fmt.Printf("Waiting for %s to pass healthcheck\n", cid)
+ time.Sleep(1 * time.Second)
+ }
+ return errors.Errorf("unable to detect %s as running", cid)
+}
diff --git a/test/e2e/cp_test.go b/test/e2e/cp_test.go
index 597d0aef7..f7596d77d 100644
--- a/test/e2e/cp_test.go
+++ b/test/e2e/cp_test.go
@@ -184,4 +184,25 @@ var _ = Describe("Podman cp", func() {
_, err = os.Stat("/tmp/cp_test.txt")
Expect(err).To(Not(BeNil()))
})
+ It("podman cp volume", func() {
+ session := podmanTest.Podman([]string{"volume", "create", "data"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session = podmanTest.Podman([]string{"create", "-v", "data:/data", "--name", "container1", ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ err = ioutil.WriteFile("cp_vol", []byte("copy to the volume"), 0644)
+ if err != nil {
+ os.Exit(1)
+ }
+ session = podmanTest.Podman([]string{"cp", "cp_vol", "container1" + ":/data/cp_vol1"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session = podmanTest.Podman([]string{"cp", "container1" + ":/data/cp_vol1", "cp_vol2"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
})
diff --git a/test/e2e/logs_test.go b/test/e2e/logs_test.go
index cc50c4d95..d17f60a5d 100644
--- a/test/e2e/logs_test.go
+++ b/test/e2e/logs_test.go
@@ -218,4 +218,21 @@ var _ = Describe("Podman logs", func() {
Expect(results.ExitCode()).To(Equal(0))
Expect(len(results.OutputToStringArray())).To(Equal(3))
})
+
+ It("podman logs -f two lines", func() {
+ containerName := "logs-f-rm"
+
+ logc := podmanTest.Podman([]string{"run", "--rm", "--name", containerName, "-dt", ALPINE, "sh", "-c", "echo podman; sleep 1; echo podman"})
+ logc.WaitWithDefaultTimeout()
+ Expect(logc.ExitCode()).To(Equal(0))
+
+ results := podmanTest.Podman([]string{"logs", "-f", containerName})
+ results.WaitWithDefaultTimeout()
+ Expect(results.ExitCode()).To(Equal(0))
+
+ // Verify that the cleanup process worked correctly and we can recreate a container with the same name
+ logc = podmanTest.Podman([]string{"run", "--rm", "--name", containerName, "-dt", ALPINE, "true"})
+ logc.WaitWithDefaultTimeout()
+ Expect(logc.ExitCode()).To(Equal(0))
+ })
})
diff --git a/test/e2e/port_test.go b/test/e2e/port_test.go
index e45118361..26c5fd7d0 100644
--- a/test/e2e/port_test.go
+++ b/test/e2e/port_test.go
@@ -48,11 +48,14 @@ var _ = Describe("Podman port", func() {
Expect(result.ExitCode()).ToNot(Equal(0))
})
- It("podman port -l nginx", func() {
- session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx})
- session.WaitWithDefaultTimeout()
+ It("podman port -l nginx", func() {
+ session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
+ if err := podmanTest.RunHealthCheck(cid); err != nil {
+ Fail(err.Error())
+ }
+
result := podmanTest.Podman([]string{"port", "-l"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
@@ -61,10 +64,13 @@ var _ = Describe("Podman port", func() {
})
It("podman container port -l nginx", func() {
- session := podmanTest.Podman([]string{"container", "run", "-dt", "-P", nginx})
- session.WaitWithDefaultTimeout()
+ session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
+ if err := podmanTest.RunHealthCheck(cid); err != nil {
+ Fail(err.Error())
+ }
+
result := podmanTest.Podman([]string{"container", "port", "-l"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
@@ -73,10 +79,13 @@ var _ = Describe("Podman port", func() {
})
It("podman port -l port nginx", func() {
- session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx})
- session.WaitWithDefaultTimeout()
+ session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
+ if err := podmanTest.RunHealthCheck(cid); err != nil {
+ Fail(err.Error())
+ }
+
result := podmanTest.Podman([]string{"port", "-l", "80"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
@@ -85,10 +94,13 @@ var _ = Describe("Podman port", func() {
})
It("podman port -a nginx", func() {
- session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx})
- session.WaitWithDefaultTimeout()
+ session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
+ if err := podmanTest.RunHealthCheck(cid); err != nil {
+ Fail(err.Error())
+ }
+
result := podmanTest.Podman([]string{"port", "-a"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
diff --git a/test/e2e/runlabel_test.go b/test/e2e/runlabel_test.go
index 5ef68603e..4e2cb501e 100644
--- a/test/e2e/runlabel_test.go
+++ b/test/e2e/runlabel_test.go
@@ -85,6 +85,7 @@ var _ = Describe("podman container runlabel", func() {
})
It("podman container runlabel global options", func() {
+ Skip("Test nonfunctional for podman-in-podman testing")
image := "podman-global-test:ls"
podmanTest.BuildImage(GlobalDockerfile, image, "false")
result := podmanTest.Podman([]string{"--syslog", "--log-level", "debug", "container", "runlabel", "RUN", image})
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index a29b1adc3..cefff0e2c 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -9,8 +9,8 @@ true | 0 |
false | 1 |
sh -c 'exit 32' | 32 |
echo $rand | 0 | $rand
-/no/such/command | 127 | Error: container create failed:.*exec:.* no such file or dir
-/etc | 126 | Error: container create failed:.*exec:.* permission denied
+/no/such/command | 127 | Error: .*: starting container process caused .*exec:.*stat /no/such/command: no such file or directory
+/etc | 126 | Error: .*: starting container process caused .*exec:.* permission denied
"
while read cmd expected_rc expected_output; do
diff --git a/test/utils/utils.go b/test/utils/utils.go
index 98031385d..43819350c 100644
--- a/test/utils/utils.go
+++ b/test/utils/utils.go
@@ -63,7 +63,7 @@ func (p *PodmanTest) MakeOptions(args []string) []string {
return p.PodmanMakeOptions(args)
}
-// PodmanAsUserBase exec podman as user. uid and gid is set for credentials useage. env is used
+// PodmanAsUserBase exec podman as user. uid and gid is set for credentials usage. env is used
// to record the env for debugging
func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, cwd string, env []string, nocache bool) *PodmanSession {
var command *exec.Cmd