summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/e2e/libpod_suite_test.go53
-rw-r--r--test/e2e/start_test.go78
-rw-r--r--test/e2e/stats_test.go89
-rw-r--r--test/e2e/stop_test.go88
-rw-r--r--test/podman_start.bats50
-rw-r--r--test/podman_stats.bats60
-rw-r--r--test/podman_stop.bats92
7 files changed, 296 insertions, 214 deletions
diff --git a/test/e2e/libpod_suite_test.go b/test/e2e/libpod_suite_test.go
index 2f541244c..c83105325 100644
--- a/test/e2e/libpod_suite_test.go
+++ b/test/e2e/libpod_suite_test.go
@@ -9,6 +9,7 @@ import (
"strings"
"testing"
+ "encoding/json"
"github.com/containers/image/copy"
"github.com/containers/image/signature"
"github.com/containers/image/storage"
@@ -30,17 +31,18 @@ import (
//TODO whats the best way to clean up after a test
var (
- PODMAN_BINARY string
- CONMON_BINARY string
- CNI_CONFIG_DIR string
- RUNC_BINARY string
- INTEGRATION_ROOT string
- STORAGE_OPTIONS = "--storage-driver vfs"
- ARTIFACT_DIR = "/tmp/.artifacts"
- IMAGES = []string{"alpine", "busybox"}
- ALPINE = "docker.io/library/alpine:latest"
- BB_GLIBC = "docker.io/library/busybox:glibc"
- fedoraMinimal = "registry.fedoraproject.org/fedora-minimal:latest"
+ PODMAN_BINARY string
+ CONMON_BINARY string
+ CNI_CONFIG_DIR string
+ RUNC_BINARY string
+ INTEGRATION_ROOT string
+ STORAGE_OPTIONS = "--storage-driver vfs"
+ ARTIFACT_DIR = "/tmp/.artifacts"
+ IMAGES = []string{"alpine", "busybox"}
+ ALPINE = "docker.io/library/alpine:latest"
+ BB_GLIBC = "docker.io/library/busybox:glibc"
+ fedoraMinimal = "registry.fedoraproject.org/fedora-minimal:latest"
+ defaultWaitTimeout = 90
)
// PodmanSession wrapps the gexec.session so we can extend it
@@ -156,7 +158,7 @@ func (p *PodmanTest) Podman(args []string) *PodmanSession {
func (p *PodmanTest) Cleanup() {
// Remove all containers
session := p.Podman([]string{"rm", "-fa"})
- session.Wait()
+ session.Wait(60)
// Nuke tempdir
if err := os.RemoveAll(p.TempDir); err != nil {
fmt.Printf("%q\n", err)
@@ -203,6 +205,22 @@ func (s *PodmanSession) OutputToString() string {
return strings.Join(fields, " ")
}
+// IsJSONOutputValid attempts to unmarshall the session buffer
+// and if successful, returns true, else false
+func (s *PodmanSession) IsJSONOutputValid() bool {
+ var i interface{}
+ if err := json.Unmarshal(s.Out.Contents(), &i); err != nil {
+ fmt.Println(err)
+ fmt.Println(s.OutputToString())
+ return false
+ }
+ return true
+}
+
+func (s *PodmanSession) WaitWithDefaultTimeout() {
+ s.Wait(defaultWaitTimeout)
+}
+
// SystemExec is used to exec a system command to check its exit code or output
func (p *PodmanTest) SystemExec(command string, args []string) *PodmanSession {
c := exec.Command(command, args...)
@@ -306,3 +324,14 @@ func (p *PodmanTest) RestoreAllArtifacts() error {
}
return nil
}
+
+//RunSleepContainer runs a simple container in the background that
+// sleeps. If the name passed != "", it will have a name
+func (p *PodmanTest) RunSleepContainer(name string) *PodmanSession {
+ var podmanArgs = []string{"run"}
+ if name != "" {
+ podmanArgs = append(podmanArgs, "--name", name)
+ }
+ podmanArgs = append(podmanArgs, "-d", ALPINE, "sleep", "90")
+ return p.Podman(podmanArgs)
+}
diff --git a/test/e2e/start_test.go b/test/e2e/start_test.go
new file mode 100644
index 000000000..66f993bc7
--- /dev/null
+++ b/test/e2e/start_test.go
@@ -0,0 +1,78 @@
+package integration
+
+import (
+ "os"
+
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Podman start", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest PodmanTest
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanCreate(tempdir)
+ podmanTest.RestoreAllArtifacts()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ })
+
+ It("podman start bogus container", func() {
+ session := podmanTest.Podman([]string{"start", "123"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(125))
+ })
+
+ It("podman start single container by id", func() {
+ session := podmanTest.Podman([]string{"create", "-d", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid := session.OutputToString()
+ session = podmanTest.Podman([]string{"start", cid})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman start single container by name", func() {
+ session := podmanTest.Podman([]string{"create", "-d", "--name", "foobar99", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"start", "foobar99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman start multiple containers", func() {
+ session := podmanTest.Podman([]string{"create", "-d", "--name", "foobar99", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ cid1 := session.OutputToString()
+ session2 := podmanTest.Podman([]string{"create", "-d", "--name", "foobar99", ALPINE, "ls"})
+ session2.WaitWithDefaultTimeout()
+ cid2 := session2.OutputToString()
+ session = podmanTest.Podman([]string{"start", cid1, cid2})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman multiple containers -- attach should fail", func() {
+ session := podmanTest.Podman([]string{"create", "--name", "foobar1", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"create", "--name", "foobar2", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"start", "-a", "foobar1", "foobar2"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(125))
+ })
+})
diff --git a/test/e2e/stats_test.go b/test/e2e/stats_test.go
new file mode 100644
index 000000000..f1d374f60
--- /dev/null
+++ b/test/e2e/stats_test.go
@@ -0,0 +1,89 @@
+package integration
+
+import (
+ "os"
+
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Podman stats", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest PodmanTest
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanCreate(tempdir)
+ podmanTest.RestoreAllArtifacts()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ })
+
+ It("podman stats should run with no containers", func() {
+ session := podmanTest.Podman([]string{"stats", "--no-stream"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stats with bogus container", func() {
+ session := podmanTest.Podman([]string{"stats", "--no-stream", "123"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(125))
+ })
+
+ It("podman on a running container", func() {
+ session := podmanTest.Podman([]string{"run", "-d", "-t", ALPINE, "sleep", "99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid := session.OutputToString()
+ session = podmanTest.Podman([]string{"stats", "--no-stream", cid})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman on a running container no id", func() {
+ session := podmanTest.Podman([]string{"run", "-d", "-t", ALPINE, "sleep", "99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stats", "--no-stream"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stats on all containers", func() {
+ session := podmanTest.Podman([]string{"run", "-d", "-t", ALPINE, "sleep", "99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stats", "--no-stream", "-a"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stats only output cids", func() {
+ session := podmanTest.Podman([]string{"run", "-d", "-t", ALPINE, "sleep", "99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stats", "--no-stream", "--format", "\"{{.Container}}\""})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stats with json output", func() {
+ session := podmanTest.Podman([]string{"run", "-d", "-t", ALPINE, "sleep", "99"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stats", "--no-stream", "--format", "json"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.IsJSONOutputValid()).To(BeTrue())
+ })
+
+})
diff --git a/test/e2e/stop_test.go b/test/e2e/stop_test.go
new file mode 100644
index 000000000..882834f0c
--- /dev/null
+++ b/test/e2e/stop_test.go
@@ -0,0 +1,88 @@
+package integration
+
+import (
+ "os"
+
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Podman stop", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest PodmanTest
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanCreate(tempdir)
+ podmanTest.RestoreAllArtifacts()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ })
+
+ It("podman stop bogus container", func() {
+ session := podmanTest.Podman([]string{"stop", "foobar"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(125))
+ })
+
+ It("podman stop container by id", func() {
+ session := podmanTest.RunSleepContainer("")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid := session.OutputToString()
+ session = podmanTest.Podman([]string{"stop", cid})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stop container by name", func() {
+ session := podmanTest.RunSleepContainer("test1")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stop", "test1"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stop all containers", func() {
+ session := podmanTest.RunSleepContainer("test1")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid1 := session.OutputToString()
+
+ session = podmanTest.RunSleepContainer("test2")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid2 := session.OutputToString()
+
+ session = podmanTest.RunSleepContainer("test3")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ cid3 := session.OutputToString()
+
+ session = podmanTest.Podman([]string{"stop", "-a", "-t", "1"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ output := session.OutputToString()
+ Expect(output).To(ContainSubstring(cid1))
+ Expect(output).To(ContainSubstring(cid2))
+ Expect(output).To(ContainSubstring(cid3))
+ })
+
+ It("podman stop latest containers", func() {
+ session := podmanTest.RunSleepContainer("test1")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stop", "-l", "-t", "1"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+})
diff --git a/test/podman_start.bats b/test/podman_start.bats
deleted file mode 100644
index 71afc83ff..000000000
--- a/test/podman_start.bats
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bats
-
-load helpers
-
-function setup() {
- copy_images
-}
-
-function teardown() {
- cleanup_test
-}
-
-@test "start bogus container" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} start 1234
- echo "$output"
- [ "$status" -eq 125 ]
-}
-
-@test "start single container by id" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} create -d ${ALPINE} ls
- ctr_id=${output}
- run bash -c ${PODMAN_BINARY} ${PODMAN_OPTIONS} start $ctr_id
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "start single container by name" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} create -d --name foobar99 ${ALPINE} ls
- run bash -c ${PODMAN_BINARY} ${PODMAN_OPTIONS} start foobar
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "start multiple containers" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} create -d ${ALPINE} ls
- ctr1_id=${output}
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} create -d ${ALPINE} ls
- ctr1_id2=${output}
- run bash -c ${PODMAN_BINARY} ${PODMAN_OPTIONS} start $ctr1_id $ctr2_id
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "start multiple containers -- attach should fail" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} create --name foobar1 -d ${ALPINE} ls
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} create --name foobar2 -d ${ALPINE} ls
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} start -a foobar1 foobar2
- echo "$output"
- [ "$status" -eq 125 ]
-}
diff --git a/test/podman_stats.bats b/test/podman_stats.bats
deleted file mode 100644
index 7bdd0ee63..000000000
--- a/test/podman_stats.bats
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env bats
-
-load helpers
-
-function teardown() {
- cleanup_test
-}
-
-function setup() {
- copy_images
-}
-
-@test "stats should run with no containers" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "stats with bogus container id" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream 123
- echo "$output"
- [ "$status" -eq 125 ]
-}
-
-@test "stats on a running container" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d -t ${ALPINE} sleep 99
- ctr_id="$output"
- echo "$output"
- run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream $ctr_id"
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "stats on a running container no id" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d -t ${ALPINE} sleep 99
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "stats on all containers" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d -t ${ALPINE} ls
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream -a
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "stats only output IDs" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d -t ${ALPINE} sleep 99
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream --format "{{.Container}}"
- echo "$output"
- [ "$status" -eq 0 ]
-}
-
-@test "stats json output" {
- ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d -t ${ALPINE} ls
- run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} stats --no-stream -a --format json | python -m json.tool"
- echo "$output"
- [ "$status" -eq 0 ]
-}
diff --git a/test/podman_stop.bats b/test/podman_stop.bats
deleted file mode 100644
index 2809a2b33..000000000
--- a/test/podman_stop.bats
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env bats
-
-load helpers
-
-function teardown() {
- cleanup_test
-}
-
-function setup() {
- copy_images
-}
-
-@test "stop a bogus container" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stop foobar
- echo "$output"
- [ "$status" -eq 125 ]
-}
-
-@test "stop a running container by id" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run -d ${ALPINE} sleep 9999
- echo "$output"
- [ "$status" -eq 0 ]
- ctr_id="$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps --no-trunc
- echo "$output"
- [ "$status" -eq 0 ]
- [[ "$output" == *"$ctr_id"* ]]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stop $ctr_id
- echo "$output"
- [ "$status" -eq 0 ]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps --no-trunc
- echo "$output"
- [ "$status" -eq 0 ]
- [[ "$output" != *"$ctr_id"* ]]
-}
-
-@test "stop a running container by name" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test1 -d ${ALPINE} sleep 9999
- echo "$output"
- [ "$status" -eq 0 ]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [ "$status" -eq 0 ]
- [[ "$output" == *"test1"* ]]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stop test1
- echo "$output"
- [ "$status" -eq 0 ]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [ "$status" -eq 0 ]
- [[ "$output" != *"test1"* ]]
-}
-
-@test "stop all containers" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test1 -d ${ALPINE} sleep 9999
- echo "$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test2 -d ${ALPINE} sleep 9999
- echo "$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test3 -d ${ALPINE} sleep 9999
- echo "$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [[ "$output" == *"test1"* ]]
- [[ "$output" == *"test2"* ]]
- [[ "$output" == *"test3"* ]]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stop -a -t 1
- echo "$output"
- [ "$status" -eq 0 ]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [[ "$output" != *"test1"* ]]
- [[ "$output" != *"test2"* ]]
- [[ "$output" != *"test3"* ]]
-}
-
-@test "stop a container with latest" {
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test1 -d ${ALPINE} sleep 9999
- echo "$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --name test2 -d ${ALPINE} sleep 9999
- echo "$output"
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [[ "$output" == *"test1"* ]]
- [[ "$output" == *"test2"* ]]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} stop -t 1 -l
- echo "$output"
- [ "$status" -eq 0 ]
- run ${PODMAN_BINARY} ${PODMAN_OPTIONS} ps
- echo "$output"
- [[ "$output" == *"test1"* ]]
- [[ "$output" != *"test2"* ]]
-}