mirror of https://github.com/containers/podman.git
Separate common used test functions and structs to test/utils
Put common used test functions and structs to a separated package. So we can use them for more testsuites. Signed-off-by: Yiqiao Pu <ypu@redhat.com>
This commit is contained in:
parent
236408bbbc
commit
74bcfc2f96
10
Makefile
10
Makefile
|
@ -31,7 +31,7 @@ BASHINSTALLDIR=${PREFIX}/share/bash-completion/completions
|
||||||
OCIUMOUNTINSTALLDIR=$(PREFIX)/share/oci-umount/oci-umount.d
|
OCIUMOUNTINSTALLDIR=$(PREFIX)/share/oci-umount/oci-umount.d
|
||||||
|
|
||||||
SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo -Z)
|
SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo -Z)
|
||||||
PACKAGES ?= $(shell $(GO) list -tags "${BUILDTAGS}" ./... | grep -v github.com/containers/libpod/vendor | grep -v e2e)
|
PACKAGES ?= $(shell $(GO) list -tags "${BUILDTAGS}" ./... | grep -v github.com/containers/libpod/vendor | grep -v e2e )
|
||||||
|
|
||||||
COMMIT_NO ?= $(shell git rev-parse HEAD 2> /dev/null || true)
|
COMMIT_NO ?= $(shell git rev-parse HEAD 2> /dev/null || true)
|
||||||
GIT_COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}")
|
GIT_COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}")
|
||||||
|
@ -104,6 +104,9 @@ test/copyimg/copyimg: .gopathok $(wildcard test/copyimg/*.go)
|
||||||
test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go)
|
test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go)
|
||||||
$(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp
|
$(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp
|
||||||
|
|
||||||
|
test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go)
|
||||||
|
$(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho
|
||||||
|
|
||||||
podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES)
|
podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES)
|
||||||
$(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
$(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
|
@ -130,6 +133,7 @@ clean:
|
||||||
test/bin2img/bin2img \
|
test/bin2img/bin2img \
|
||||||
test/checkseccomp/checkseccomp \
|
test/checkseccomp/checkseccomp \
|
||||||
test/copyimg/copyimg \
|
test/copyimg/copyimg \
|
||||||
|
test/goecho/goecho \
|
||||||
test/testdata/redis-image \
|
test/testdata/redis-image \
|
||||||
cmd/podman/varlink/iopodman.go \
|
cmd/podman/varlink/iopodman.go \
|
||||||
libpod/container_ffjson.go \
|
libpod/container_ffjson.go \
|
||||||
|
@ -166,7 +170,7 @@ shell: libpodimage
|
||||||
testunit: libpodimage
|
testunit: libpodimage
|
||||||
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make localunit
|
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make localunit
|
||||||
|
|
||||||
localunit: varlink_generate
|
localunit: test/goecho/goecho varlink_generate
|
||||||
$(GO) test -tags "$(BUILDTAGS)" -cover $(PACKAGES)
|
$(GO) test -tags "$(BUILDTAGS)" -cover $(PACKAGES)
|
||||||
|
|
||||||
ginkgo:
|
ginkgo:
|
||||||
|
@ -183,7 +187,7 @@ vagrant-check:
|
||||||
|
|
||||||
binaries: varlink_generate easyjson_generate podman
|
binaries: varlink_generate easyjson_generate podman
|
||||||
|
|
||||||
test-binaries: test/bin2img/bin2img test/copyimg/copyimg test/checkseccomp/checkseccomp
|
test-binaries: test/bin2img/bin2img test/copyimg/copyimg test/checkseccomp/checkseccomp test/goecho/goecho
|
||||||
|
|
||||||
MANPAGES_MD ?= $(wildcard docs/*.md pkg/*/docs/*.md)
|
MANPAGES_MD ?= $(wildcard docs/*.md pkg/*/docs/*.md)
|
||||||
MANPAGES ?= $(MANPAGES_MD:%.md=%)
|
MANPAGES ?= $(MANPAGES_MD:%.md=%)
|
||||||
|
|
|
@ -1,8 +1,33 @@
|
||||||

|

|
||||||
# Integration Tests
|
# Test utils
|
||||||
|
Test utils provide common functions and structs for testing. It includes two structs:
|
||||||
|
* `PodmanTest`: Handle the *podman* command and other global resources like temporary
|
||||||
|
directory. It provides basic methods, like checking podman image and pod status. Test
|
||||||
|
suites should create their owner test *struct* as a composite of `PodmanTest`, and their
|
||||||
|
owner PodmanMakeOptions().
|
||||||
|
|
||||||
Our primary means of performing integration testing for libpod is with the
|
* `PodmanSession`: Store execution session data and related *methods*. Such like get command
|
||||||
[Ginkgo](https://github.com/onsi/ginkgo) BDD testing framework. This allows
|
output and so on. It can be used directly in the test suite, only embed it to your owner
|
||||||
|
session struct if you need expend it.
|
||||||
|
|
||||||
|
## Unittest for test/utils
|
||||||
|
To ensure neither *tests* nor *utils* break, There are unit-tests for each *functions* and
|
||||||
|
*structs* in `test/utils`. When you adding functions or structs to this *package*, please
|
||||||
|
update both unit-tests for it and this documentation.
|
||||||
|
|
||||||
|
### Run unit test for test/utils
|
||||||
|
Run unit test for test/utils.
|
||||||
|
|
||||||
|
```
|
||||||
|
make localunit
|
||||||
|
```
|
||||||
|
|
||||||
|
## Structure of the test utils and test suites
|
||||||
|
The test *utils* package is at the same level of test suites. Each test suites also have their
|
||||||
|
owner common functions and structs stored in `libpod_suite_test.go`.
|
||||||
|
|
||||||
|
# Ginkgo test framework
|
||||||
|
[Ginkgo](https://github.com/onsi/ginkgo) is a BDD testing framework. This allows
|
||||||
us to use native Golang to perform our tests and there is a strong affiliation
|
us to use native Golang to perform our tests and there is a strong affiliation
|
||||||
between Ginkgo and the Go test framework.
|
between Ginkgo and the Go test framework.
|
||||||
|
|
||||||
|
@ -32,8 +57,16 @@ The gomega sources can be simply installed with the command:
|
||||||
GOPATH=~/go go get github.com/onsi/gomega/...
|
GOPATH=~/go go get github.com/onsi/gomega/...
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running the integration tests
|
# Integration Tests
|
||||||
|
Test suite for integration test for podman command line. It has its own structs:
|
||||||
|
* `PodmanTestIntegration`: Integration test *struct* as a composite of `PodmanTest`. It
|
||||||
|
set up the global options for *podman* command to ignore the environment influence from
|
||||||
|
different test system.
|
||||||
|
|
||||||
|
* `PodmanSessionIntegration`: This *struct* has it own *methods* for checking command
|
||||||
|
output with given format JSON by using *structs* defined in inspect package.
|
||||||
|
|
||||||
|
## Running the integration tests
|
||||||
You can run the entire suite of integration tests with the following command:
|
You can run the entire suite of integration tests with the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman attach", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman attach", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/containers/libpod/pkg/criu"
|
"github.com/containers/libpod/pkg/criu"
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman checkpoint", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman checkpoint", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
if !criu.CheckForCriu() {
|
if !criu.CheckForCriu() {
|
||||||
Skip("CRIU is missing or too old.")
|
Skip("CRIU is missing or too old.")
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman commit", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman commit", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman create", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman create", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman diff", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman diff", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman exec", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman exec", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman export", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman export", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman history", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman history", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
"github.com/docker/go-units"
|
"github.com/docker/go-units"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
@ -14,7 +15,7 @@ var _ = Describe("Podman images", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -22,7 +23,7 @@ var _ = Describe("Podman images", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman import", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman import", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman Info", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman Info", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
})
|
})
|
||||||
|
|
||||||
AfterEach(func() {
|
AfterEach(func() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman inspect", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman inspect", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman kill", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman kill", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,18 @@
|
||||||
package integration
|
package integration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/containers/libpod/libpod"
|
"github.com/containers/libpod/libpod"
|
||||||
"github.com/containers/libpod/pkg/inspect"
|
"github.com/containers/libpod/pkg/inspect"
|
||||||
"github.com/containers/storage/pkg/parsers/kernel"
|
. "github.com/containers/libpod/test/utils"
|
||||||
"github.com/containers/storage/pkg/reexec"
|
"github.com/containers/storage/pkg/reexec"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
@ -35,14 +31,9 @@ var (
|
||||||
defaultWaitTimeout = 90
|
defaultWaitTimeout = 90
|
||||||
)
|
)
|
||||||
|
|
||||||
// PodmanSession wrapps the gexec.session so we can extend it
|
// PodmanTestIntegration struct for command line options
|
||||||
type PodmanSession struct {
|
type PodmanTestIntegration struct {
|
||||||
*gexec.Session
|
PodmanTest
|
||||||
}
|
|
||||||
|
|
||||||
// PodmanTest struct for command line options
|
|
||||||
type PodmanTest struct {
|
|
||||||
PodmanBinary string
|
|
||||||
ConmonBinary string
|
ConmonBinary string
|
||||||
CrioRoot string
|
CrioRoot string
|
||||||
CNIConfigDir string
|
CNIConfigDir string
|
||||||
|
@ -50,17 +41,13 @@ type PodmanTest struct {
|
||||||
RunRoot string
|
RunRoot string
|
||||||
StorageOptions string
|
StorageOptions string
|
||||||
SignaturePolicyPath string
|
SignaturePolicyPath string
|
||||||
ArtifactPath string
|
|
||||||
TempDir string
|
|
||||||
CgroupManager string
|
CgroupManager string
|
||||||
Host HostOS
|
Host HostOS
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostOS is a simple struct for the test os
|
// PodmanSessionIntegration sturct for command line session
|
||||||
type HostOS struct {
|
type PodmanSessionIntegration struct {
|
||||||
Distribution string
|
*PodmanSession
|
||||||
Version string
|
|
||||||
Arch string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestLibpod ginkgo master function
|
// TestLibpod ginkgo master function
|
||||||
|
@ -80,7 +67,7 @@ var _ = BeforeSuite(func() {
|
||||||
//Cache images
|
//Cache images
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
INTEGRATION_ROOT = filepath.Join(cwd, "../../")
|
INTEGRATION_ROOT = filepath.Join(cwd, "../../")
|
||||||
podman := PodmanCreate("/tmp")
|
podman := PodmanTestCreate("/tmp")
|
||||||
podman.ArtifactPath = ARTIFACT_DIR
|
podman.ArtifactPath = ARTIFACT_DIR
|
||||||
if _, err := os.Stat(ARTIFACT_DIR); os.IsNotExist(err) {
|
if _, err := os.Stat(ARTIFACT_DIR); os.IsNotExist(err) {
|
||||||
if err = os.Mkdir(ARTIFACT_DIR, 0777); err != nil {
|
if err = os.Mkdir(ARTIFACT_DIR, 0777); err != nil {
|
||||||
|
@ -110,13 +97,8 @@ var _ = BeforeSuite(func() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// CreateTempDirin
|
// PodmanTestCreate creates a PodmanTestIntegration instance for the tests
|
||||||
func CreateTempDirInTempDir() (string, error) {
|
func PodmanTestCreate(tempDir string) *PodmanTestIntegration {
|
||||||
return ioutil.TempDir("", "podman_test")
|
|
||||||
}
|
|
||||||
|
|
||||||
// PodmanCreate creates a PodmanTest instance for the tests
|
|
||||||
func PodmanCreate(tempDir string) PodmanTest {
|
|
||||||
|
|
||||||
host := GetHostDistributionInfo()
|
host := GetHostDistributionInfo()
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
|
@ -157,8 +139,12 @@ func PodmanCreate(tempDir string) PodmanTest {
|
||||||
|
|
||||||
CNIConfigDir := "/etc/cni/net.d"
|
CNIConfigDir := "/etc/cni/net.d"
|
||||||
|
|
||||||
p := PodmanTest{
|
p := &PodmanTestIntegration{
|
||||||
PodmanBinary: podmanBinary,
|
PodmanTest: PodmanTest{
|
||||||
|
PodmanBinary: podmanBinary,
|
||||||
|
ArtifactPath: ARTIFACT_DIR,
|
||||||
|
TempDir: tempDir,
|
||||||
|
},
|
||||||
ConmonBinary: conmonBinary,
|
ConmonBinary: conmonBinary,
|
||||||
CrioRoot: filepath.Join(tempDir, "crio"),
|
CrioRoot: filepath.Join(tempDir, "crio"),
|
||||||
CNIConfigDir: CNIConfigDir,
|
CNIConfigDir: CNIConfigDir,
|
||||||
|
@ -166,73 +152,50 @@ func PodmanCreate(tempDir string) PodmanTest {
|
||||||
RunRoot: filepath.Join(tempDir, "crio-run"),
|
RunRoot: filepath.Join(tempDir, "crio-run"),
|
||||||
StorageOptions: storageOptions,
|
StorageOptions: storageOptions,
|
||||||
SignaturePolicyPath: filepath.Join(INTEGRATION_ROOT, "test/policy.json"),
|
SignaturePolicyPath: filepath.Join(INTEGRATION_ROOT, "test/policy.json"),
|
||||||
ArtifactPath: ARTIFACT_DIR,
|
|
||||||
TempDir: tempDir,
|
|
||||||
CgroupManager: cgroupManager,
|
CgroupManager: cgroupManager,
|
||||||
Host: host,
|
Host: host,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup registries.conf ENV variable
|
// Setup registries.conf ENV variable
|
||||||
p.setDefaultRegistriesConfigEnv()
|
p.setDefaultRegistriesConfigEnv()
|
||||||
|
// Rewrite the PodmanAsUser function
|
||||||
|
p.PodmanMakeOptions = p.makeOptions
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
//MakeOptions assembles all the podman main options
|
//MakeOptions assembles all the podman main options
|
||||||
func (p *PodmanTest) MakeOptions() []string {
|
func (p *PodmanTestIntegration) makeOptions(args []string) []string {
|
||||||
return strings.Split(fmt.Sprintf("--root %s --runroot %s --runtime %s --conmon %s --cni-config-dir %s --cgroup-manager %s",
|
podmanOptions := strings.Split(fmt.Sprintf("--root %s --runroot %s --runtime %s --conmon %s --cni-config-dir %s --cgroup-manager %s",
|
||||||
p.CrioRoot, p.RunRoot, p.RunCBinary, p.ConmonBinary, p.CNIConfigDir, p.CgroupManager), " ")
|
p.CrioRoot, p.RunRoot, p.RunCBinary, p.ConmonBinary, p.CNIConfigDir, p.CgroupManager), " ")
|
||||||
}
|
|
||||||
|
|
||||||
// Podman is the exec call to podman on the filesystem, uid and gid the credentials to use
|
|
||||||
func (p *PodmanTest) PodmanAsUser(args []string, uid, gid uint32, env []string) *PodmanSession {
|
|
||||||
podmanOptions := p.MakeOptions()
|
|
||||||
if os.Getenv("HOOK_OPTION") != "" {
|
if os.Getenv("HOOK_OPTION") != "" {
|
||||||
podmanOptions = append(podmanOptions, os.Getenv("HOOK_OPTION"))
|
podmanOptions = append(podmanOptions, os.Getenv("HOOK_OPTION"))
|
||||||
}
|
}
|
||||||
podmanOptions = append(podmanOptions, strings.Split(p.StorageOptions, " ")...)
|
podmanOptions = append(podmanOptions, strings.Split(p.StorageOptions, " ")...)
|
||||||
podmanOptions = append(podmanOptions, args...)
|
podmanOptions = append(podmanOptions, args...)
|
||||||
if env == nil {
|
return podmanOptions
|
||||||
fmt.Printf("Running: %s %s\n", p.PodmanBinary, strings.Join(podmanOptions, " "))
|
|
||||||
} else {
|
|
||||||
fmt.Printf("Running: (env: %v) %s %s\n", env, p.PodmanBinary, strings.Join(podmanOptions, " "))
|
|
||||||
}
|
|
||||||
var command *exec.Cmd
|
|
||||||
|
|
||||||
if uid != 0 || gid != 0 {
|
|
||||||
nsEnterOpts := append([]string{"--userspec", fmt.Sprintf("%d:%d", uid, gid), "/", p.PodmanBinary}, podmanOptions...)
|
|
||||||
command = exec.Command("chroot", nsEnterOpts...)
|
|
||||||
} else {
|
|
||||||
command = exec.Command(p.PodmanBinary, podmanOptions...)
|
|
||||||
}
|
|
||||||
if env != nil {
|
|
||||||
command.Env = env
|
|
||||||
}
|
|
||||||
|
|
||||||
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
|
|
||||||
if err != nil {
|
|
||||||
Fail(fmt.Sprintf("unable to run podman command: %s\n%v", strings.Join(podmanOptions, " "), err))
|
|
||||||
}
|
|
||||||
return &PodmanSession{session}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Podman is the exec call to podman on the filesystem
|
// Podman is the exec call to podman on the filesystem
|
||||||
func (p *PodmanTest) Podman(args []string) *PodmanSession {
|
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
|
||||||
return p.PodmanAsUser(args, 0, 0, nil)
|
podmanSession := p.PodmanBase(args)
|
||||||
|
return &PodmanSessionIntegration{podmanSession}
|
||||||
}
|
}
|
||||||
|
|
||||||
//WaitForContainer waits on a started container
|
// PodmanPID execs podman and returns its PID
|
||||||
func WaitForContainer(p *PodmanTest) bool {
|
func (p *PodmanTestIntegration) PodmanPID(args []string) (*PodmanSessionIntegration, int) {
|
||||||
for i := 0; i < 10; i++ {
|
podmanOptions := p.MakeOptions(args)
|
||||||
if p.NumberOfRunningContainers() == 1 {
|
fmt.Printf("Running: %s %s\n", p.PodmanBinary, strings.Join(podmanOptions, " "))
|
||||||
return true
|
command := exec.Command(p.PodmanBinary, podmanOptions...)
|
||||||
}
|
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
|
||||||
time.Sleep(1 * time.Second)
|
if err != nil {
|
||||||
|
Fail(fmt.Sprintf("unable to run podman command: %s", strings.Join(podmanOptions, " ")))
|
||||||
}
|
}
|
||||||
return false
|
podmanSession := &PodmanSession{session}
|
||||||
|
return &PodmanSessionIntegration{podmanSession}, command.Process.Pid
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cleanup cleans up the temporary store
|
// Cleanup cleans up the temporary store
|
||||||
func (p *PodmanTest) Cleanup() {
|
func (p *PodmanTestIntegration) Cleanup() {
|
||||||
// Remove all containers
|
// Remove all containers
|
||||||
stopall := p.Podman([]string{"stop", "-a", "--timeout", "0"})
|
stopall := p.Podman([]string{"stop", "-a", "--timeout", "0"})
|
||||||
stopall.WaitWithDefaultTimeout()
|
stopall.WaitWithDefaultTimeout()
|
||||||
|
@ -248,7 +211,7 @@ func (p *PodmanTest) Cleanup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CleanupPod cleans up the temporary store
|
// CleanupPod cleans up the temporary store
|
||||||
func (p *PodmanTest) CleanupPod() {
|
func (p *PodmanTestIntegration) CleanupPod() {
|
||||||
// Remove all containers
|
// Remove all containers
|
||||||
session := p.Podman([]string{"pod", "rm", "-fa"})
|
session := p.Podman([]string{"pod", "rm", "-fa"})
|
||||||
session.Wait(90)
|
session.Wait(90)
|
||||||
|
@ -258,103 +221,26 @@ func (p *PodmanTest) CleanupPod() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GrepString takes session output and behaves like grep. it returns a bool
|
// PullImages pulls multiple images
|
||||||
// if successful and an array of strings on positive matches
|
func (p *PodmanTestIntegration) PullImages(images []string) error {
|
||||||
func (s *PodmanSession) GrepString(term string) (bool, []string) {
|
|
||||||
var (
|
|
||||||
greps []string
|
|
||||||
matches bool
|
|
||||||
)
|
|
||||||
|
|
||||||
for _, line := range strings.Split(s.OutputToString(), "\n") {
|
|
||||||
if strings.Contains(line, term) {
|
|
||||||
matches = true
|
|
||||||
greps = append(greps, line)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return matches, greps
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pull Images pulls multiple images
|
|
||||||
func (p *PodmanTest) PullImages(images []string) error {
|
|
||||||
for _, i := range images {
|
for _, i := range images {
|
||||||
p.PullImage(i)
|
p.PullImage(i)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pull Image a single image
|
// PullImage pulls a single image
|
||||||
// TODO should the timeout be configurable?
|
// TODO should the timeout be configurable?
|
||||||
func (p *PodmanTest) PullImage(image string) error {
|
func (p *PodmanTestIntegration) PullImage(image string) error {
|
||||||
session := p.Podman([]string{"pull", image})
|
session := p.Podman([]string{"pull", image})
|
||||||
session.Wait(60)
|
session.Wait(60)
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// OutputToString formats session output to string
|
|
||||||
func (s *PodmanSession) OutputToString() string {
|
|
||||||
fields := strings.Fields(fmt.Sprintf("%s", s.Out.Contents()))
|
|
||||||
return strings.Join(fields, " ")
|
|
||||||
}
|
|
||||||
|
|
||||||
// OutputToStringArray returns the output as a []string
|
|
||||||
// where each array item is a line split by newline
|
|
||||||
func (s *PodmanSession) OutputToStringArray() []string {
|
|
||||||
var results []string
|
|
||||||
output := fmt.Sprintf("%s", s.Out.Contents())
|
|
||||||
for _, line := range strings.Split(output, "\n") {
|
|
||||||
if line != "" {
|
|
||||||
results = append(results, line)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return results
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrorGrepString takes session stderr output and behaves like grep. it returns a bool
|
|
||||||
// if successful and an array of strings on positive matches
|
|
||||||
func (s *PodmanSession) ErrorGrepString(term string) (bool, []string) {
|
|
||||||
var (
|
|
||||||
greps []string
|
|
||||||
matches bool
|
|
||||||
)
|
|
||||||
|
|
||||||
for _, line := range strings.Split(s.ErrorToString(), "\n") {
|
|
||||||
if strings.Contains(line, term) {
|
|
||||||
matches = true
|
|
||||||
greps = append(greps, line)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return matches, greps
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrorToString formats session stderr to string
|
|
||||||
func (s *PodmanSession) ErrorToString() string {
|
|
||||||
fields := strings.Fields(fmt.Sprintf("%s", s.Err.Contents()))
|
|
||||||
return strings.Join(fields, " ")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrorToStringArray returns the stderr output as a []string
|
|
||||||
// where each array item is a line split by newline
|
|
||||||
func (s *PodmanSession) ErrorToStringArray() []string {
|
|
||||||
output := fmt.Sprintf("%s", s.Err.Contents())
|
|
||||||
return strings.Split(output, "\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsJSONOutputValid attempts to unmarshal 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)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// InspectContainerToJSON takes the session output of an inspect
|
// InspectContainerToJSON takes the session output of an inspect
|
||||||
// container and returns json
|
// container and returns json
|
||||||
func (s *PodmanSession) InspectContainerToJSON() []inspect.ContainerData {
|
func (s *PodmanSessionIntegration) InspectContainerToJSON() []inspect.ContainerData {
|
||||||
var i []inspect.ContainerData
|
var i []inspect.ContainerData
|
||||||
err := json.Unmarshal(s.Out.Contents(), &i)
|
err := json.Unmarshal(s.Out.Contents(), &i)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
@ -362,7 +248,7 @@ func (s *PodmanSession) InspectContainerToJSON() []inspect.ContainerData {
|
||||||
}
|
}
|
||||||
|
|
||||||
// InspectPodToJSON takes the sessions output from a pod inspect and returns json
|
// InspectPodToJSON takes the sessions output from a pod inspect and returns json
|
||||||
func (s *PodmanSession) InspectPodToJSON() libpod.PodInspect {
|
func (s *PodmanSessionIntegration) InspectPodToJSON() libpod.PodInspect {
|
||||||
var i libpod.PodInspect
|
var i libpod.PodInspect
|
||||||
err := json.Unmarshal(s.Out.Contents(), &i)
|
err := json.Unmarshal(s.Out.Contents(), &i)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
@ -371,30 +257,15 @@ func (s *PodmanSession) InspectPodToJSON() libpod.PodInspect {
|
||||||
|
|
||||||
// InspectImageJSON takes the session output of an inspect
|
// InspectImageJSON takes the session output of an inspect
|
||||||
// image and returns json
|
// image and returns json
|
||||||
func (s *PodmanSession) InspectImageJSON() []inspect.ImageData {
|
func (s *PodmanSessionIntegration) InspectImageJSON() []inspect.ImageData {
|
||||||
var i []inspect.ImageData
|
var i []inspect.ImageData
|
||||||
err := json.Unmarshal(s.Out.Contents(), &i)
|
err := json.Unmarshal(s.Out.Contents(), &i)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *PodmanSession) WaitWithDefaultTimeout() {
|
|
||||||
s.Wait(defaultWaitTimeout)
|
|
||||||
fmt.Println("output:", s.OutputToString())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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...)
|
|
||||||
session, err := gexec.Start(c, GinkgoWriter, GinkgoWriter)
|
|
||||||
if err != nil {
|
|
||||||
Fail(fmt.Sprintf("unable to run command: %s %s", command, strings.Join(args, " ")))
|
|
||||||
}
|
|
||||||
return &PodmanSession{session}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateArtifact creates a cached image in the artifact dir
|
// CreateArtifact creates a cached image in the artifact dir
|
||||||
func (p *PodmanTest) CreateArtifact(image string) error {
|
func (p *PodmanTestIntegration) CreateArtifact(image string) error {
|
||||||
if os.Getenv("NO_TEST_CACHE") != "" {
|
if os.Getenv("NO_TEST_CACHE") != "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -415,7 +286,7 @@ func (p *PodmanTest) CreateArtifact(image string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RestoreArtifact puts the cached image into our test store
|
// RestoreArtifact puts the cached image into our test store
|
||||||
func (p *PodmanTest) RestoreArtifact(image string) error {
|
func (p *PodmanTestIntegration) RestoreArtifact(image string) error {
|
||||||
fmt.Printf("Restoring %s...\n", image)
|
fmt.Printf("Restoring %s...\n", image)
|
||||||
dest := strings.Split(image, "/")
|
dest := strings.Split(image, "/")
|
||||||
destName := fmt.Sprintf("/tmp/%s.tar", strings.Replace(strings.Join(strings.Split(dest[len(dest)-1], "/"), ""), ":", "-", -1))
|
destName := fmt.Sprintf("/tmp/%s.tar", strings.Replace(strings.Join(strings.Split(dest[len(dest)-1], "/"), ""), ":", "-", -1))
|
||||||
|
@ -425,7 +296,7 @@ func (p *PodmanTest) RestoreArtifact(image string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RestoreAllArtifacts unpacks all cached images
|
// RestoreAllArtifacts unpacks all cached images
|
||||||
func (p *PodmanTest) RestoreAllArtifacts() error {
|
func (p *PodmanTestIntegration) RestoreAllArtifacts() error {
|
||||||
if os.Getenv("NO_TEST_CACHE") != "" {
|
if os.Getenv("NO_TEST_CACHE") != "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -439,7 +310,7 @@ func (p *PodmanTest) RestoreAllArtifacts() error {
|
||||||
|
|
||||||
// CreatePod creates a pod with no infra container
|
// CreatePod creates a pod with no infra container
|
||||||
// it optionally takes a pod name
|
// it optionally takes a pod name
|
||||||
func (p *PodmanTest) CreatePod(name string) (*PodmanSession, int, string) {
|
func (p *PodmanTestIntegration) CreatePod(name string) (*PodmanSessionIntegration, int, string) {
|
||||||
var podmanArgs = []string{"pod", "create", "--infra=false", "--share", ""}
|
var podmanArgs = []string{"pod", "create", "--infra=false", "--share", ""}
|
||||||
if name != "" {
|
if name != "" {
|
||||||
podmanArgs = append(podmanArgs, "--name", name)
|
podmanArgs = append(podmanArgs, "--name", name)
|
||||||
|
@ -451,7 +322,7 @@ func (p *PodmanTest) CreatePod(name string) (*PodmanSession, int, string) {
|
||||||
|
|
||||||
//RunTopContainer runs a simple container in the background that
|
//RunTopContainer runs a simple container in the background that
|
||||||
// runs top. If the name passed != "", it will have a name
|
// runs top. If the name passed != "", it will have a name
|
||||||
func (p *PodmanTest) RunTopContainer(name string) *PodmanSession {
|
func (p *PodmanTestIntegration) RunTopContainer(name string) *PodmanSessionIntegration {
|
||||||
var podmanArgs = []string{"run"}
|
var podmanArgs = []string{"run"}
|
||||||
if name != "" {
|
if name != "" {
|
||||||
podmanArgs = append(podmanArgs, "--name", name)
|
podmanArgs = append(podmanArgs, "--name", name)
|
||||||
|
@ -460,7 +331,7 @@ func (p *PodmanTest) RunTopContainer(name string) *PodmanSession {
|
||||||
return p.Podman(podmanArgs)
|
return p.Podman(podmanArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PodmanTest) RunTopContainerInPod(name, pod string) *PodmanSession {
|
func (p *PodmanTestIntegration) RunTopContainerInPod(name, pod string) *PodmanSessionIntegration {
|
||||||
var podmanArgs = []string{"run", "--pod", pod}
|
var podmanArgs = []string{"run", "--pod", pod}
|
||||||
if name != "" {
|
if name != "" {
|
||||||
podmanArgs = append(podmanArgs, "--name", name)
|
podmanArgs = append(podmanArgs, "--name", name)
|
||||||
|
@ -471,7 +342,7 @@ func (p *PodmanTest) RunTopContainerInPod(name, pod string) *PodmanSession {
|
||||||
|
|
||||||
//RunLsContainer runs a simple container in the background that
|
//RunLsContainer runs a simple container in the background that
|
||||||
// simply runs ls. If the name passed != "", it will have a name
|
// simply runs ls. If the name passed != "", it will have a name
|
||||||
func (p *PodmanTest) RunLsContainer(name string) (*PodmanSession, int, string) {
|
func (p *PodmanTestIntegration) RunLsContainer(name string) (*PodmanSessionIntegration, int, string) {
|
||||||
var podmanArgs = []string{"run"}
|
var podmanArgs = []string{"run"}
|
||||||
if name != "" {
|
if name != "" {
|
||||||
podmanArgs = append(podmanArgs, "--name", name)
|
podmanArgs = append(podmanArgs, "--name", name)
|
||||||
|
@ -482,7 +353,7 @@ func (p *PodmanTest) RunLsContainer(name string) (*PodmanSession, int, string) {
|
||||||
return session, session.ExitCode(), session.OutputToString()
|
return session, session.ExitCode(), session.OutputToString()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PodmanTest) RunLsContainerInPod(name, pod string) (*PodmanSession, int, string) {
|
func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSessionIntegration, int, string) {
|
||||||
var podmanArgs = []string{"run", "--pod", pod}
|
var podmanArgs = []string{"run", "--pod", pod}
|
||||||
if name != "" {
|
if name != "" {
|
||||||
podmanArgs = append(podmanArgs, "--name", name)
|
podmanArgs = append(podmanArgs, "--name", name)
|
||||||
|
@ -493,147 +364,9 @@ func (p *PodmanTest) RunLsContainerInPod(name, pod string) (*PodmanSession, int,
|
||||||
return session, session.ExitCode(), session.OutputToString()
|
return session, session.ExitCode(), session.OutputToString()
|
||||||
}
|
}
|
||||||
|
|
||||||
//NumberOfContainersRunning returns an int of how many
|
|
||||||
// containers are currently running.
|
|
||||||
func (p *PodmanTest) NumberOfContainersRunning() int {
|
|
||||||
var containers []string
|
|
||||||
ps := p.Podman([]string{"ps", "-q"})
|
|
||||||
ps.WaitWithDefaultTimeout()
|
|
||||||
Expect(ps.ExitCode()).To(Equal(0))
|
|
||||||
for _, i := range ps.OutputToStringArray() {
|
|
||||||
if i != "" {
|
|
||||||
containers = append(containers, i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return len(containers)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NumberOfContainers returns an int of how many
|
|
||||||
// containers are currently defined.
|
|
||||||
func (p *PodmanTest) NumberOfContainers() int {
|
|
||||||
var containers []string
|
|
||||||
ps := p.Podman([]string{"ps", "-aq"})
|
|
||||||
ps.WaitWithDefaultTimeout()
|
|
||||||
Expect(ps.ExitCode()).To(Equal(0))
|
|
||||||
for _, i := range ps.OutputToStringArray() {
|
|
||||||
if i != "" {
|
|
||||||
containers = append(containers, i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return len(containers)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NumberOfPods returns an int of how many
|
|
||||||
// pods are currently defined.
|
|
||||||
func (p *PodmanTest) NumberOfPods() int {
|
|
||||||
var pods []string
|
|
||||||
ps := p.Podman([]string{"pod", "ps", "-q"})
|
|
||||||
ps.WaitWithDefaultTimeout()
|
|
||||||
Expect(ps.ExitCode()).To(Equal(0))
|
|
||||||
for _, i := range ps.OutputToStringArray() {
|
|
||||||
if i != "" {
|
|
||||||
pods = append(pods, i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return len(pods)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NumberOfRunningContainers returns an int of how many containers are currently
|
|
||||||
// running
|
|
||||||
func (p *PodmanTest) NumberOfRunningContainers() int {
|
|
||||||
var containers []string
|
|
||||||
ps := p.Podman([]string{"ps", "-q"})
|
|
||||||
ps.WaitWithDefaultTimeout()
|
|
||||||
Expect(ps.ExitCode()).To(Equal(0))
|
|
||||||
for _, i := range ps.OutputToStringArray() {
|
|
||||||
if i != "" {
|
|
||||||
containers = append(containers, i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return len(containers)
|
|
||||||
}
|
|
||||||
|
|
||||||
// StringInSlice determines if a string is in a string slice, returns bool
|
|
||||||
func StringInSlice(s string, sl []string) bool {
|
|
||||||
for _, i := range sl {
|
|
||||||
if i == s {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
//LineInOutputStartsWith returns true if a line in a
|
|
||||||
// session output starts with the supplied string
|
|
||||||
func (s *PodmanSession) LineInOuputStartsWith(term string) bool {
|
|
||||||
for _, i := range s.OutputToStringArray() {
|
|
||||||
if strings.HasPrefix(i, term) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
//LineInOutputContains returns true if a line in a
|
|
||||||
// session output starts with the supplied string
|
|
||||||
func (s *PodmanSession) LineInOutputContains(term string) bool {
|
|
||||||
for _, i := range s.OutputToStringArray() {
|
|
||||||
if strings.Contains(i, term) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
//tagOutPutToMap parses each string in imagesOutput and returns
|
|
||||||
// a map of repo:tag pairs. Notice, the first array item will
|
|
||||||
// be skipped as it's considered to be the header.
|
|
||||||
func tagOutputToMap(imagesOutput []string) map[string]string {
|
|
||||||
m := make(map[string]string)
|
|
||||||
// iterate over output but skip the header
|
|
||||||
for _, i := range imagesOutput[1:] {
|
|
||||||
tmp := []string{}
|
|
||||||
for _, x := range strings.Split(i, " ") {
|
|
||||||
if x != "" {
|
|
||||||
tmp = append(tmp, x)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// podman-images(1) return a list like output
|
|
||||||
// in the format of "Repository Tag [...]"
|
|
||||||
if len(tmp) < 2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
m[tmp[0]] = tmp[1]
|
|
||||||
}
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
//LineInOutputContainsTag returns true if a line in the
|
|
||||||
// session's output contains the repo-tag pair as returned
|
|
||||||
// by podman-images(1).
|
|
||||||
func (s *PodmanSession) LineInOutputContainsTag(repo, tag string) bool {
|
|
||||||
tagMap := tagOutputToMap(s.OutputToStringArray())
|
|
||||||
for r, t := range tagMap {
|
|
||||||
if repo == r && tag == t {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
//GetContainerStatus returns the containers state.
|
|
||||||
// This function assumes only one container is active.
|
|
||||||
func (p *PodmanTest) GetContainerStatus() string {
|
|
||||||
var podmanArgs = []string{"ps"}
|
|
||||||
podmanArgs = append(podmanArgs, "--all", "--format={{.Status}}")
|
|
||||||
session := p.Podman(podmanArgs)
|
|
||||||
session.WaitWithDefaultTimeout()
|
|
||||||
return session.OutputToString()
|
|
||||||
}
|
|
||||||
|
|
||||||
// BuildImage uses podman build and buildah to build an image
|
// BuildImage uses podman build and buildah to build an image
|
||||||
// called imageName based on a string dockerfile
|
// called imageName based on a string dockerfile
|
||||||
func (p *PodmanTest) BuildImage(dockerfile, imageName string, layers string) {
|
func (p *PodmanTestIntegration) BuildImage(dockerfile, imageName string, layers string) {
|
||||||
dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
|
dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
|
||||||
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
@ -642,34 +375,12 @@ func (p *PodmanTest) BuildImage(dockerfile, imageName string, layers string) {
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetHostDistributionInfo returns a struct with its distribution name and version
|
func (p *PodmanTestIntegration) setDefaultRegistriesConfigEnv() {
|
||||||
func GetHostDistributionInfo() HostOS {
|
|
||||||
f, err := os.Open("/etc/os-release")
|
|
||||||
defer f.Close()
|
|
||||||
if err != nil {
|
|
||||||
return HostOS{}
|
|
||||||
}
|
|
||||||
|
|
||||||
l := bufio.NewScanner(f)
|
|
||||||
host := HostOS{}
|
|
||||||
host.Arch = runtime.GOARCH
|
|
||||||
for l.Scan() {
|
|
||||||
if strings.HasPrefix(l.Text(), "ID=") {
|
|
||||||
host.Distribution = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1)
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(l.Text(), "VERSION_ID=") {
|
|
||||||
host.Version = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return host
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PodmanTest) setDefaultRegistriesConfigEnv() {
|
|
||||||
defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf")
|
defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf")
|
||||||
os.Setenv("REGISTRIES_CONFIG_PATH", defaultFile)
|
os.Setenv("REGISTRIES_CONFIG_PATH", defaultFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PodmanTest) setRegistriesConfigEnv(b []byte) {
|
func (p *PodmanTestIntegration) setRegistriesConfigEnv(b []byte) {
|
||||||
outfile := filepath.Join(p.TempDir, "registries.conf")
|
outfile := filepath.Join(p.TempDir, "registries.conf")
|
||||||
os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
|
os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
|
||||||
ioutil.WriteFile(outfile, b, 0644)
|
ioutil.WriteFile(outfile, b, 0644)
|
||||||
|
@ -678,81 +389,3 @@ func (p *PodmanTest) setRegistriesConfigEnv(b []byte) {
|
||||||
func resetRegistriesConfigEnv() {
|
func resetRegistriesConfigEnv() {
|
||||||
os.Setenv("REGISTRIES_CONFIG_PATH", "")
|
os.Setenv("REGISTRIES_CONFIG_PATH", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsKernelNewThan compares the current kernel version to one provided. If
|
|
||||||
// the kernel is equal to or greater, returns true
|
|
||||||
func IsKernelNewThan(version string) (bool, error) {
|
|
||||||
inputVersion, err := kernel.ParseRelease(version)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
kv, err := kernel.GetKernelVersion()
|
|
||||||
if err == nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
// CompareKernelVersion compares two kernel.VersionInfo structs.
|
|
||||||
// Returns -1 if a < b, 0 if a == b, 1 it a > b
|
|
||||||
result := kernel.CompareKernelVersion(*kv, *inputVersion)
|
|
||||||
if result >= 0 {
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
return false, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//Wait process or service inside container start, and ready to be used.
|
|
||||||
func WaitContainerReady(p *PodmanTest, id string, expStr string, timeout int, step int) bool {
|
|
||||||
startTime := time.Now()
|
|
||||||
s := p.Podman([]string{"logs", id})
|
|
||||||
s.WaitWithDefaultTimeout()
|
|
||||||
fmt.Println(startTime)
|
|
||||||
for {
|
|
||||||
if time.Since(startTime) >= time.Duration(timeout)*time.Second {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if strings.Contains(s.OutputToString(), expStr) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
time.Sleep(time.Duration(step) * time.Second)
|
|
||||||
s = p.Podman([]string{"logs", id})
|
|
||||||
s.WaitWithDefaultTimeout()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//IsCommandAvaible check if command exist
|
|
||||||
func IsCommandAvailable(command string) bool {
|
|
||||||
check := exec.Command("bash", "-c", strings.Join([]string{"command -v", command}, " "))
|
|
||||||
err := check.Run()
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// WriteJsonFile write json format data to a json file
|
|
||||||
func WriteJsonFile(data []byte, filePath string) error {
|
|
||||||
var jsonData map[string]interface{}
|
|
||||||
json.Unmarshal(data, &jsonData)
|
|
||||||
formatJson, _ := json.MarshalIndent(jsonData, "", " ")
|
|
||||||
return ioutil.WriteFile(filePath, formatJson, 0644)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getTestContext() context.Context {
|
|
||||||
return context.Background()
|
|
||||||
}
|
|
||||||
|
|
||||||
func containerized() bool {
|
|
||||||
container := os.Getenv("container")
|
|
||||||
if container != "" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
b, err := ioutil.ReadFile("/proc/1/cgroup")
|
|
||||||
if err != nil {
|
|
||||||
// shrug, if we cannot read that file, return false
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if strings.Index(string(b), "docker") > -1 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman load", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman load", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -55,7 +56,7 @@ var _ = Describe("Podman load", func() {
|
||||||
save.WaitWithDefaultTimeout()
|
save.WaitWithDefaultTimeout()
|
||||||
Expect(save.ExitCode()).To(Equal(0))
|
Expect(save.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
compress := podmanTest.SystemExec("gzip", []string{outfile})
|
compress := SystemExec("gzip", []string{outfile})
|
||||||
compress.WaitWithDefaultTimeout()
|
compress.WaitWithDefaultTimeout()
|
||||||
outfile = outfile + ".gz"
|
outfile = outfile + ".gz"
|
||||||
|
|
||||||
|
@ -253,7 +254,7 @@ var _ = Describe("Podman load", func() {
|
||||||
save := podmanTest.Podman([]string{"save", "-o", outfile, BB})
|
save := podmanTest.Podman([]string{"save", "-o", outfile, BB})
|
||||||
save.WaitWithDefaultTimeout()
|
save.WaitWithDefaultTimeout()
|
||||||
Expect(save.ExitCode()).To(Equal(0))
|
Expect(save.ExitCode()).To(Equal(0))
|
||||||
session := podmanTest.SystemExec("xz", []string{outfile})
|
session := SystemExec("xz", []string{outfile})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman logs", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman logs", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman mount", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman mount", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman namespaces", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman namespaces", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pause", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
pausedState := "Paused"
|
pausedState := "Paused"
|
||||||
|
@ -23,7 +24,7 @@ var _ = Describe("Podman pause", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
podmanTest.RestoreArtifact(infra)
|
podmanTest.RestoreArtifact(infra)
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod inspect", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod inspect", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod kill", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod kill", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod pause", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
pausedState := "Paused"
|
pausedState := "Paused"
|
||||||
|
@ -22,7 +23,7 @@ var _ = Describe("Podman pod pause", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod create", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
podmanTest.RestoreArtifact(infra)
|
podmanTest.RestoreArtifact(infra)
|
||||||
})
|
})
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman ps", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman ps", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod restart", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod restart", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod rm", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod rm", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod start", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod start", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod stats", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod stats", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman pod stop", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman pod stop", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman top", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman top", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman port", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman port", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
"github.com/docker/go-units"
|
"github.com/docker/go-units"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
@ -15,7 +16,7 @@ var _ = Describe("Podman ps", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -23,7 +24,7 @@ var _ = Describe("Podman ps", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman pull", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman pull", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -101,7 +102,7 @@ var _ = Describe("Podman pull", func() {
|
||||||
session = podmanTest.Podman([]string{"rmi", "alpine"})
|
session = podmanTest.Podman([]string{"rmi", "alpine"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/alp.tar"})
|
clean := SystemExec("rm", []string{"/tmp/alp.tar"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -119,12 +120,12 @@ var _ = Describe("Podman pull", func() {
|
||||||
session = podmanTest.Podman([]string{"rmi", "alpine"})
|
session = podmanTest.Podman([]string{"rmi", "alpine"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/oci-alp.tar"})
|
clean := SystemExec("rm", []string{"/tmp/oci-alp.tar"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman pull from local directory", func() {
|
It("podman pull from local directory", func() {
|
||||||
setup := podmanTest.SystemExec("mkdir", []string{"-p", "/tmp/podmantestdir"})
|
setup := SystemExec("mkdir", []string{"-p", "/tmp/podmantestdir"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
session := podmanTest.Podman([]string{"push", "alpine", "dir:/tmp/podmantestdir"})
|
session := podmanTest.Podman([]string{"push", "alpine", "dir:/tmp/podmantestdir"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
|
@ -139,7 +140,7 @@ var _ = Describe("Podman pull", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
clean := podmanTest.SystemExec("rm", []string{"-fr", "/tmp/podmantestdir"})
|
clean := SystemExec("rm", []string{"-fr", "/tmp/podmantestdir"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -14,7 +15,7 @@ var _ = Describe("Podman push", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -22,7 +23,7 @@ var _ = Describe("Podman push", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -52,7 +53,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
clean := podmanTest.SystemExec("rm", []string{"-fr", "/tmp/busybox"})
|
clean := SystemExec("rm", []string{"-fr", "/tmp/busybox"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -66,7 +67,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,20 +83,20 @@ var _ = Describe("Podman push", func() {
|
||||||
authPath := filepath.Join(podmanTest.TempDir, "auth")
|
authPath := filepath.Join(podmanTest.TempDir, "auth")
|
||||||
os.Mkdir(authPath, os.ModePerm)
|
os.Mkdir(authPath, os.ModePerm)
|
||||||
os.MkdirAll("/etc/containers/certs.d/localhost:5000", os.ModePerm)
|
os.MkdirAll("/etc/containers/certs.d/localhost:5000", os.ModePerm)
|
||||||
debug := podmanTest.SystemExec("ls", []string{"-l", podmanTest.TempDir})
|
debug := SystemExec("ls", []string{"-l", podmanTest.TempDir})
|
||||||
debug.WaitWithDefaultTimeout()
|
debug.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
certPath := filepath.Join(cwd, "../", "certs")
|
certPath := filepath.Join(cwd, "../", "certs")
|
||||||
|
|
||||||
if IsCommandAvailable("getenforce") {
|
if IsCommandAvailable("getenforce") {
|
||||||
ge := podmanTest.SystemExec("getenforce", []string{})
|
ge := SystemExec("getenforce", []string{})
|
||||||
ge.WaitWithDefaultTimeout()
|
ge.WaitWithDefaultTimeout()
|
||||||
if ge.OutputToString() == "Enforcing" {
|
if ge.OutputToString() == "Enforcing" {
|
||||||
se := podmanTest.SystemExec("setenforce", []string{"0"})
|
se := SystemExec("setenforce", []string{"0"})
|
||||||
se.WaitWithDefaultTimeout()
|
se.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
defer podmanTest.SystemExec("setenforce", []string{"1"})
|
defer SystemExec("setenforce", []string{"1"})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
podmanTest.RestoreArtifact(registry)
|
podmanTest.RestoreArtifact(registry)
|
||||||
|
@ -108,7 +109,7 @@ var _ = Describe("Podman push", func() {
|
||||||
|
|
||||||
f.WriteString(session.OutputToString())
|
f.WriteString(session.OutputToString())
|
||||||
f.Sync()
|
f.Sync()
|
||||||
debug = podmanTest.SystemExec("cat", []string{filepath.Join(authPath, "htpasswd")})
|
debug = SystemExec("cat", []string{filepath.Join(authPath, "htpasswd")})
|
||||||
debug.WaitWithDefaultTimeout()
|
debug.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
session = podmanTest.Podman([]string{"run", "-d", "-p", "5000:5000", "--name", "registry", "-v",
|
session = podmanTest.Podman([]string{"run", "-d", "-p", "5000:5000", "--name", "registry", "-v",
|
||||||
|
@ -119,7 +120,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +135,7 @@ var _ = Describe("Podman push", func() {
|
||||||
push.WaitWithDefaultTimeout()
|
push.WaitWithDefaultTimeout()
|
||||||
Expect(push.ExitCode()).To(Equal(0))
|
Expect(push.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
setup := podmanTest.SystemExec("cp", []string{filepath.Join(certPath, "domain.crt"), "/etc/containers/certs.d/localhost:5000/ca.crt"})
|
setup := SystemExec("cp", []string{filepath.Join(certPath, "domain.crt"), "/etc/containers/certs.d/localhost:5000/ca.crt"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
defer os.RemoveAll("/etc/containers/certs.d/localhost:5000")
|
defer os.RemoveAll("/etc/containers/certs.d/localhost:5000")
|
||||||
|
|
||||||
|
@ -155,20 +156,20 @@ var _ = Describe("Podman push", func() {
|
||||||
session := podmanTest.Podman([]string{"push", ALPINE, "docker-archive:/tmp/alp:latest"})
|
session := podmanTest.Podman([]string{"push", ALPINE, "docker-archive:/tmp/alp:latest"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/alp"})
|
clean := SystemExec("rm", []string{"/tmp/alp"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman push to docker daemon", func() {
|
It("podman push to docker daemon", func() {
|
||||||
setup := podmanTest.SystemExec("bash", []string{"-c", "systemctl status docker 2>&1"})
|
setup := SystemExec("bash", []string{"-c", "systemctl status docker 2>&1"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
if setup.LineInOutputContains("Active: inactive") {
|
if setup.LineInOutputContains("Active: inactive") {
|
||||||
setup = podmanTest.SystemExec("systemctl", []string{"start", "docker"})
|
setup = SystemExec("systemctl", []string{"start", "docker"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
defer podmanTest.SystemExec("systemctl", []string{"stop", "docker"})
|
defer SystemExec("systemctl", []string{"stop", "docker"})
|
||||||
} else if setup.ExitCode() != 0 {
|
} else if setup.ExitCode() != 0 {
|
||||||
Skip("Docker is not available")
|
Skip("Docker is not available")
|
||||||
}
|
}
|
||||||
|
@ -177,12 +178,12 @@ var _ = Describe("Podman push", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
check := podmanTest.SystemExec("docker", []string{"images", "--format", "{{.Repository}}:{{.Tag}}"})
|
check := SystemExec("docker", []string{"images", "--format", "{{.Repository}}:{{.Tag}}"})
|
||||||
check.WaitWithDefaultTimeout()
|
check.WaitWithDefaultTimeout()
|
||||||
Expect(check.ExitCode()).To(Equal(0))
|
Expect(check.ExitCode()).To(Equal(0))
|
||||||
Expect(check.OutputToString()).To(ContainSubstring("alpine:podmantest"))
|
Expect(check.OutputToString()).To(ContainSubstring("alpine:podmantest"))
|
||||||
|
|
||||||
clean := podmanTest.SystemExec("docker", []string{"rmi", "alpine:podmantest"})
|
clean := SystemExec("docker", []string{"rmi", "alpine:podmantest"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -191,7 +192,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session := podmanTest.Podman([]string{"push", ALPINE, "oci-archive:/tmp/alp.tar:latest"})
|
session := podmanTest.Podman([]string{"push", ALPINE, "oci-archive:/tmp/alp.tar:latest"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/alp.tar"})
|
clean := SystemExec("rm", []string{"/tmp/alp.tar"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -204,14 +205,14 @@ var _ = Describe("Podman push", func() {
|
||||||
ostreePath := filepath.Join(podmanTest.TempDir, "ostree/repo")
|
ostreePath := filepath.Join(podmanTest.TempDir, "ostree/repo")
|
||||||
os.MkdirAll(ostreePath, os.ModePerm)
|
os.MkdirAll(ostreePath, os.ModePerm)
|
||||||
|
|
||||||
setup := podmanTest.SystemExec("ostree", []string{strings.Join([]string{"--repo=", ostreePath}, ""), "init"})
|
setup := SystemExec("ostree", []string{strings.Join([]string{"--repo=", ostreePath}, ""), "init"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
session := podmanTest.Podman([]string{"push", ALPINE, strings.Join([]string{"ostree:alp@", ostreePath}, "")})
|
session := podmanTest.Podman([]string{"push", ALPINE, strings.Join([]string{"ostree:alp@", ostreePath}, "")})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
clean := podmanTest.SystemExec("rm", []string{"-rf", ostreePath})
|
clean := SystemExec("rm", []string{"-rf", ostreePath})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -220,7 +221,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session := podmanTest.Podman([]string{"push", ALPINE, "docker-archive:/tmp/alp"})
|
session := podmanTest.Podman([]string{"push", ALPINE, "docker-archive:/tmp/alp"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/alp"})
|
clean := SystemExec("rm", []string{"/tmp/alp"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
@ -229,7 +230,7 @@ var _ = Describe("Podman push", func() {
|
||||||
session := podmanTest.Podman([]string{"push", ALPINE, "oci-archive:/tmp/alp-oci"})
|
session := podmanTest.Podman([]string{"push", ALPINE, "oci-archive:/tmp/alp-oci"})
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
clean := podmanTest.SystemExec("rm", []string{"/tmp/alp-oci"})
|
clean := SystemExec("rm", []string{"/tmp/alp-oci"})
|
||||||
clean.WaitWithDefaultTimeout()
|
clean.WaitWithDefaultTimeout()
|
||||||
Expect(clean.ExitCode()).To(Equal(0))
|
Expect(clean.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman refresh", func() {
|
||||||
var (
|
var (
|
||||||
tmpdir string
|
tmpdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman refresh", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tmpdir)
|
podmanTest = PodmanTestCreate(tmpdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -43,13 +44,13 @@ var _ = Describe("Podman refresh", func() {
|
||||||
createSession.WaitWithDefaultTimeout()
|
createSession.WaitWithDefaultTimeout()
|
||||||
Expect(createSession.ExitCode()).To(Equal(0))
|
Expect(createSession.ExitCode()).To(Equal(0))
|
||||||
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
||||||
Expect(podmanTest.NumberOfRunningContainers()).To(Equal(0))
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
||||||
|
|
||||||
refreshSession := podmanTest.Podman([]string{"container", "refresh"})
|
refreshSession := podmanTest.Podman([]string{"container", "refresh"})
|
||||||
refreshSession.WaitWithDefaultTimeout()
|
refreshSession.WaitWithDefaultTimeout()
|
||||||
Expect(refreshSession.ExitCode()).To(Equal(0))
|
Expect(refreshSession.ExitCode()).To(Equal(0))
|
||||||
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
||||||
Expect(podmanTest.NumberOfRunningContainers()).To(Equal(0))
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
Specify("Refresh with running container restarts container", func() {
|
Specify("Refresh with running container restarts container", func() {
|
||||||
|
@ -57,7 +58,7 @@ var _ = Describe("Podman refresh", func() {
|
||||||
createSession.WaitWithDefaultTimeout()
|
createSession.WaitWithDefaultTimeout()
|
||||||
Expect(createSession.ExitCode()).To(Equal(0))
|
Expect(createSession.ExitCode()).To(Equal(0))
|
||||||
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
||||||
Expect(podmanTest.NumberOfRunningContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
|
||||||
|
|
||||||
// HACK: ensure container starts before we move on
|
// HACK: ensure container starts before we move on
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
@ -66,6 +67,6 @@ var _ = Describe("Podman refresh", func() {
|
||||||
refreshSession.WaitWithDefaultTimeout()
|
refreshSession.WaitWithDefaultTimeout()
|
||||||
Expect(refreshSession.ExitCode()).To(Equal(0))
|
Expect(refreshSession.ExitCode()).To(Equal(0))
|
||||||
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
|
||||||
Expect(podmanTest.NumberOfRunningContainers()).To(Equal(1))
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman restart", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman restart", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -74,7 +75,7 @@ var _ = Describe("Podman restart", func() {
|
||||||
|
|
||||||
It("Podman restart running container", func() {
|
It("Podman restart running container", func() {
|
||||||
_ = podmanTest.RunTopContainer("test1")
|
_ = podmanTest.RunTopContainer("test1")
|
||||||
ok := WaitForContainer(&podmanTest)
|
ok := WaitForContainer(podmanTest)
|
||||||
Expect(ok).To(BeTrue())
|
Expect(ok).To(BeTrue())
|
||||||
startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"})
|
startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"})
|
||||||
startTime.WaitWithDefaultTimeout()
|
startTime.WaitWithDefaultTimeout()
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman rm", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman rm", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman rmi", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman rmi", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -30,7 +31,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -38,7 +39,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.CgroupManager = "cgroupfs"
|
podmanTest.CgroupManager = "cgroupfs"
|
||||||
podmanTest.StorageOptions = ROOTLESS_STORAGE_OPTIONS
|
podmanTest.StorageOptions = ROOTLESS_STORAGE_OPTIONS
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
|
@ -68,7 +69,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
return os.Lchown(p, 1000, 1000)
|
return os.Lchown(p, 1000, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
type rootlessCB func(test PodmanTest, xdgRuntimeDir string, home string, mountPath string)
|
type rootlessCB func(test *PodmanTestIntegration, xdgRuntimeDir string, home string, mountPath string)
|
||||||
|
|
||||||
runInRootlessContext := func(cb rootlessCB) {
|
runInRootlessContext := func(cb rootlessCB) {
|
||||||
// Check if we can create an user namespace
|
// Check if we can create an user namespace
|
||||||
|
@ -91,7 +92,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
|
|
||||||
tempdir, err := CreateTempDirInTempDir()
|
tempdir, err := CreateTempDirInTempDir()
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
rootlessTest := PodmanCreate(tempdir)
|
rootlessTest := PodmanTestCreate(tempdir)
|
||||||
rootlessTest.CgroupManager = "cgroupfs"
|
rootlessTest.CgroupManager = "cgroupfs"
|
||||||
rootlessTest.StorageOptions = ROOTLESS_STORAGE_OPTIONS
|
rootlessTest.StorageOptions = ROOTLESS_STORAGE_OPTIONS
|
||||||
err = filepath.Walk(tempdir, chownFunc)
|
err = filepath.Walk(tempdir, chownFunc)
|
||||||
|
@ -116,7 +117,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
}
|
}
|
||||||
|
|
||||||
It("podman rootless pod", func() {
|
It("podman rootless pod", func() {
|
||||||
f := func(rootlessTest PodmanTest, xdgRuntimeDir string, home string, mountPath string) {
|
f := func(rootlessTest *PodmanTestIntegration, xdgRuntimeDir string, home string, mountPath string) {
|
||||||
env := os.Environ()
|
env := os.Environ()
|
||||||
env = append(env, fmt.Sprintf("XDG_RUNTIME_DIR=%s", xdgRuntimeDir))
|
env = append(env, fmt.Sprintf("XDG_RUNTIME_DIR=%s", xdgRuntimeDir))
|
||||||
env = append(env, fmt.Sprintf("HOME=%s", home))
|
env = append(env, fmt.Sprintf("HOME=%s", home))
|
||||||
|
@ -157,7 +158,7 @@ var _ = Describe("Podman rootless", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
runRootlessHelper := func(args []string) {
|
runRootlessHelper := func(args []string) {
|
||||||
f := func(rootlessTest PodmanTest, xdgRuntimeDir string, home string, mountPath string) {
|
f := func(rootlessTest *PodmanTestIntegration, xdgRuntimeDir string, home string, mountPath string) {
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
defer runtime.UnlockOSThread()
|
defer runtime.UnlockOSThread()
|
||||||
env := os.Environ()
|
env := os.Environ()
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreArtifact(fedoraMinimal)
|
podmanTest.RestoreArtifact(fedoraMinimal)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -32,7 +33,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
Specify("valid --cgroup-parent using cgroupfs", func() {
|
Specify("valid --cgroup-parent using cgroupfs", func() {
|
||||||
if !containerized() {
|
if !Containerized() {
|
||||||
Skip("Must be containerized to run this test.")
|
Skip("Must be containerized to run this test.")
|
||||||
}
|
}
|
||||||
cgroup := "/zzz"
|
cgroup := "/zzz"
|
||||||
|
@ -45,7 +46,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
|
||||||
|
|
||||||
Specify("no --cgroup-parent", func() {
|
Specify("no --cgroup-parent", func() {
|
||||||
cgroup := "/libpod_parent"
|
cgroup := "/libpod_parent"
|
||||||
if !containerized() && podmanTest.CgroupManager != "cgroupfs" {
|
if !Containerized() && podmanTest.CgroupManager != "cgroupfs" {
|
||||||
cgroup = "/machine.slice"
|
cgroup = "/machine.slice"
|
||||||
}
|
}
|
||||||
run := podmanTest.Podman([]string{"run", fedoraMinimal, "cat", "/proc/self/cgroup"})
|
run := podmanTest.Podman([]string{"run", fedoraMinimal, "cat", "/proc/self/cgroup"})
|
||||||
|
@ -56,7 +57,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
Specify("valid --cgroup-parent using slice", func() {
|
Specify("valid --cgroup-parent using slice", func() {
|
||||||
if containerized() || podmanTest.CgroupManager == "cgroupfs" {
|
if Containerized() || podmanTest.CgroupManager == "cgroupfs" {
|
||||||
Skip("Requires Systemd cgroup manager support")
|
Skip("Requires Systemd cgroup manager support")
|
||||||
}
|
}
|
||||||
cgroup := "aaaa.slice"
|
cgroup := "aaaa.slice"
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run exit", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run exit", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -32,14 +33,14 @@ var _ = Describe("Podman run exit", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman run -d mount cleanup test", func() {
|
It("podman run -d mount cleanup test", func() {
|
||||||
mount := podmanTest.SystemExec("mount", nil)
|
mount := SystemExec("mount", nil)
|
||||||
mount.WaitWithDefaultTimeout()
|
mount.WaitWithDefaultTimeout()
|
||||||
out1 := mount.OutputToString()
|
out1 := mount.OutputToString()
|
||||||
result := podmanTest.Podman([]string{"create", "-dt", ALPINE, "echo", "hello"})
|
result := podmanTest.Podman([]string{"create", "-dt", ALPINE, "echo", "hello"})
|
||||||
result.WaitWithDefaultTimeout()
|
result.WaitWithDefaultTimeout()
|
||||||
Expect(result.ExitCode()).To(Equal(0))
|
Expect(result.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
mount = podmanTest.SystemExec("mount", nil)
|
mount = SystemExec("mount", nil)
|
||||||
mount.WaitWithDefaultTimeout()
|
mount.WaitWithDefaultTimeout()
|
||||||
out2 := mount.OutputToString()
|
out2 := mount.OutputToString()
|
||||||
Expect(out1).To(Equal(out2))
|
Expect(out1).To(Equal(out2))
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run cpu", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run cpu", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run device", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run device", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run dns", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run dns", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run entrypoint", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run entrypoint", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreArtifact(ALPINE)
|
podmanTest.RestoreArtifact(ALPINE)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run exit", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run exit", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run memory", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run memory", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman rmi", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
hostname, _ = os.Hostname()
|
hostname, _ = os.Hostname()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman rmi", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -54,7 +55,7 @@ var _ = Describe("Podman rmi", func() {
|
||||||
session := podmanTest.Podman([]string{"run", "-dt", "--expose", "222-223", "-P", ALPINE, "/bin/sh"})
|
session := podmanTest.Podman([]string{"run", "-dt", "--expose", "222-223", "-P", ALPINE, "/bin/sh"})
|
||||||
session.Wait(30)
|
session.Wait(30)
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
results := podmanTest.SystemExec("iptables", []string{"-t", "nat", "-L"})
|
results := SystemExec("iptables", []string{"-t", "nat", "-L"})
|
||||||
results.Wait(30)
|
results.Wait(30)
|
||||||
Expect(results.ExitCode()).To(Equal(0))
|
Expect(results.ExitCode()).To(Equal(0))
|
||||||
Expect(results.OutputToString()).To(ContainSubstring("222"))
|
Expect(results.OutputToString()).To(ContainSubstring("222"))
|
||||||
|
@ -65,12 +66,12 @@ var _ = Describe("Podman rmi", func() {
|
||||||
session := podmanTest.Podman([]string{"run", "-dt", "-p", "80:8000", ALPINE, "/bin/sh"})
|
session := podmanTest.Podman([]string{"run", "-dt", "-p", "80:8000", ALPINE, "/bin/sh"})
|
||||||
session.Wait(30)
|
session.Wait(30)
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
results := podmanTest.SystemExec("iptables", []string{"-t", "nat", "-L"})
|
results := SystemExec("iptables", []string{"-t", "nat", "-L"})
|
||||||
results.Wait(30)
|
results.Wait(30)
|
||||||
Expect(results.ExitCode()).To(Equal(0))
|
Expect(results.ExitCode()).To(Equal(0))
|
||||||
Expect(results.OutputToString()).To(ContainSubstring("8000"))
|
Expect(results.OutputToString()).To(ContainSubstring("8000"))
|
||||||
|
|
||||||
ncBusy := podmanTest.SystemExec("nc", []string{"-l", "-p", "80"})
|
ncBusy := SystemExec("nc", []string{"-l", "-p", "80"})
|
||||||
ncBusy.Wait(10)
|
ncBusy.Wait(10)
|
||||||
Expect(ncBusy.ExitCode()).ToNot(Equal(0))
|
Expect(ncBusy.ExitCode()).ToNot(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman run ns", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman run ns", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreArtifact(fedoraMinimal)
|
podmanTest.RestoreArtifact(fedoraMinimal)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -49,7 +50,7 @@ var _ = Describe("Podman run ns", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman run ipcns test", func() {
|
It("podman run ipcns test", func() {
|
||||||
setup := podmanTest.SystemExec("ls", []string{"--inode", "-d", "/dev/shm"})
|
setup := SystemExec("ls", []string{"--inode", "-d", "/dev/shm"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
Expect(setup.ExitCode()).To(Equal(0))
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
hostShm := setup.OutputToString()
|
hostShm := setup.OutputToString()
|
||||||
|
@ -61,7 +62,7 @@ var _ = Describe("Podman run ns", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman run ipcns ipcmk host test", func() {
|
It("podman run ipcns ipcmk host test", func() {
|
||||||
setup := podmanTest.SystemExec("ipcmk", []string{"-M", "1024"})
|
setup := SystemExec("ipcmk", []string{"-M", "1024"})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
Expect(setup.ExitCode()).To(Equal(0))
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
output := strings.Split(setup.OutputToString(), " ")
|
output := strings.Split(setup.OutputToString(), " ")
|
||||||
|
@ -70,7 +71,7 @@ var _ = Describe("Podman run ns", func() {
|
||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
setup = podmanTest.SystemExec("ipcrm", []string{"-m", ipc})
|
setup = SystemExec("ipcrm", []string{"-m", ipc})
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
Expect(setup.ExitCode()).To(Equal(0))
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run passwd", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run passwd", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman privileged container tests", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman privileged container tests", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ var _ = Describe("Podman privileged container tests", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman privileged CapEff", func() {
|
It("podman privileged CapEff", func() {
|
||||||
cap := podmanTest.SystemExec("grep", []string{"CapEff", "/proc/self/status"})
|
cap := SystemExec("grep", []string{"CapEff", "/proc/self/status"})
|
||||||
cap.WaitWithDefaultTimeout()
|
cap.WaitWithDefaultTimeout()
|
||||||
Expect(cap.ExitCode()).To(Equal(0))
|
Expect(cap.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@ var _ = Describe("Podman privileged container tests", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman cap-add CapEff", func() {
|
It("podman cap-add CapEff", func() {
|
||||||
cap := podmanTest.SystemExec("grep", []string{"CapEff", "/proc/self/status"})
|
cap := SystemExec("grep", []string{"CapEff", "/proc/self/status"})
|
||||||
cap.WaitWithDefaultTimeout()
|
cap.WaitWithDefaultTimeout()
|
||||||
Expect(cap.ExitCode()).To(Equal(0))
|
Expect(cap.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
@ -87,13 +88,13 @@ var _ = Describe("Podman privileged container tests", func() {
|
||||||
|
|
||||||
It("run no-new-privileges test", func() {
|
It("run no-new-privileges test", func() {
|
||||||
// Check if our kernel is new enough
|
// Check if our kernel is new enough
|
||||||
k, err := IsKernelNewThan("4.14")
|
k, err := IsKernelNewerThan("4.14")
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
if !k {
|
if !k {
|
||||||
Skip("Kernel is not new enough to test this feature")
|
Skip("Kernel is not new enough to test this feature")
|
||||||
}
|
}
|
||||||
|
|
||||||
cap := podmanTest.SystemExec("grep", []string{"NoNewPrivs", "/proc/self/status"})
|
cap := SystemExec("grep", []string{"NoNewPrivs", "/proc/self/status"})
|
||||||
cap.WaitWithDefaultTimeout()
|
cap.WaitWithDefaultTimeout()
|
||||||
if cap.ExitCode() != 0 {
|
if cap.ExitCode() != 0 {
|
||||||
Skip("Can't determine NoNewPrivs")
|
Skip("Can't determine NoNewPrivs")
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run restart containers", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run restart containers", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -43,7 +44,7 @@ var _ = Describe("Podman run restart containers", func() {
|
||||||
|
|
||||||
It("Podman start after signal kill", func() {
|
It("Podman start after signal kill", func() {
|
||||||
_ = podmanTest.RunTopContainer("test1")
|
_ = podmanTest.RunTopContainer("test1")
|
||||||
ok := WaitForContainer(&podmanTest)
|
ok := WaitForContainer(podmanTest)
|
||||||
Expect(ok).To(BeTrue())
|
Expect(ok).To(BeTrue())
|
||||||
|
|
||||||
killSession := podmanTest.Podman([]string{"kill", "-s", "9", "test1"})
|
killSession := podmanTest.Podman([]string{"kill", "-s", "9", "test1"})
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
"github.com/opencontainers/selinux/go-selinux"
|
"github.com/opencontainers/selinux/go-selinux"
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman run", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman run", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
if !selinux.GetEnabled() {
|
if !selinux.GetEnabled() {
|
||||||
Skip("SELinux not enabled")
|
Skip("SELinux not enabled")
|
||||||
|
|
|
@ -4,39 +4,24 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
"github.com/onsi/gomega/gexec"
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PodmanPID execs podman and returns its PID
|
|
||||||
func (p *PodmanTest) PodmanPID(args []string) (*PodmanSession, int) {
|
|
||||||
podmanOptions := p.MakeOptions()
|
|
||||||
podmanOptions = append(podmanOptions, strings.Split(p.StorageOptions, " ")...)
|
|
||||||
podmanOptions = append(podmanOptions, args...)
|
|
||||||
fmt.Printf("Running: %s %s\n", p.PodmanBinary, strings.Join(podmanOptions, " "))
|
|
||||||
command := exec.Command(p.PodmanBinary, podmanOptions...)
|
|
||||||
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
|
|
||||||
if err != nil {
|
|
||||||
Fail(fmt.Sprintf("unable to run podman command: %s", strings.Join(podmanOptions, " ")))
|
|
||||||
}
|
|
||||||
return &PodmanSession{session}, command.Process.Pid
|
|
||||||
}
|
|
||||||
|
|
||||||
const sigCatch = "trap \"echo FOO >> /h/fifo \" 8; echo READY >> /h/fifo; while :; do sleep 0.25; done"
|
const sigCatch = "trap \"echo FOO >> /h/fifo \" 8; echo READY >> /h/fifo; while :; do sleep 0.25; done"
|
||||||
|
|
||||||
var _ = Describe("Podman run with --sig-proxy", func() {
|
var _ = Describe("Podman run with --sig-proxy", func() {
|
||||||
var (
|
var (
|
||||||
tmpdir string
|
tmpdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -44,7 +29,7 @@ var _ = Describe("Podman run with --sig-proxy", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tmpdir)
|
podmanTest = PodmanTestCreate(tmpdir)
|
||||||
podmanTest.RestoreArtifact(fedoraMinimal)
|
podmanTest.RestoreArtifact(fedoraMinimal)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -122,7 +107,7 @@ var _ = Describe("Podman run with --sig-proxy", func() {
|
||||||
signal := syscall.SIGPOLL
|
signal := syscall.SIGPOLL
|
||||||
session, pid := podmanTest.PodmanPID([]string{"run", "--name", "test2", "--sig-proxy=false", fedoraMinimal, "bash", "-c", sigCatch})
|
session, pid := podmanTest.PodmanPID([]string{"run", "--name", "test2", "--sig-proxy=false", fedoraMinimal, "bash", "-c", sigCatch})
|
||||||
|
|
||||||
ok := WaitForContainer(&podmanTest)
|
ok := WaitForContainer(podmanTest)
|
||||||
Expect(ok).To(BeTrue())
|
Expect(ok).To(BeTrue())
|
||||||
|
|
||||||
// Kill with given signal
|
// Kill with given signal
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman run with --ip flag", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman run with --ip flag", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
"github.com/mrunalp/fileutils"
|
"github.com/mrunalp/fileutils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
@ -16,7 +17,7 @@ var _ = Describe("Podman run", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -24,7 +25,7 @@ var _ = Describe("Podman run", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -355,7 +356,7 @@ var _ = Describe("Podman run", func() {
|
||||||
keyFile := filepath.Join(targetDir, "key.pem")
|
keyFile := filepath.Join(targetDir, "key.pem")
|
||||||
err = ioutil.WriteFile(keyFile, []byte(mountString), 0755)
|
err = ioutil.WriteFile(keyFile, []byte(mountString), 0755)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
execSession := podmanTest.SystemExec("ln", []string{"-s", targetDir, filepath.Join(secretsDir, "mysymlink")})
|
execSession := SystemExec("ln", []string{"-s", targetDir, filepath.Join(secretsDir, "mysymlink")})
|
||||||
execSession.WaitWithDefaultTimeout()
|
execSession.WaitWithDefaultTimeout()
|
||||||
Expect(execSession.ExitCode()).To(Equal(0))
|
Expect(execSession.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman UserNS support", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman UserNS support", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("podman container runlabel", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -28,7 +29,7 @@ var _ = Describe("podman container runlabel", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman save", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -21,7 +22,7 @@ var _ = Describe("Podman save", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -13,7 +14,7 @@ var _ = Describe("Podman search", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
const regFileContents = `
|
const regFileContents = `
|
||||||
[registries.search]
|
[registries.search]
|
||||||
|
@ -40,7 +41,7 @@ var _ = Describe("Podman search", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -136,7 +137,7 @@ var _ = Describe("Podman search", func() {
|
||||||
fakereg.WaitWithDefaultTimeout()
|
fakereg.WaitWithDefaultTimeout()
|
||||||
Expect(fakereg.ExitCode()).To(Equal(0))
|
Expect(fakereg.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +160,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registry.WaitWithDefaultTimeout()
|
registry.WaitWithDefaultTimeout()
|
||||||
Expect(registry.ExitCode()).To(Equal(0))
|
Expect(registry.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry3", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry3", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +183,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registry.WaitWithDefaultTimeout()
|
registry.WaitWithDefaultTimeout()
|
||||||
Expect(registry.ExitCode()).To(Equal(0))
|
Expect(registry.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry4", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry4", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +215,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registry.WaitWithDefaultTimeout()
|
registry.WaitWithDefaultTimeout()
|
||||||
Expect(registry.ExitCode()).To(Equal(0))
|
Expect(registry.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry5", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry5", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"})
|
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"})
|
||||||
|
@ -245,7 +246,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registry.WaitWithDefaultTimeout()
|
registry.WaitWithDefaultTimeout()
|
||||||
Expect(registry.ExitCode()).To(Equal(0))
|
Expect(registry.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry6", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry6", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"})
|
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"})
|
||||||
|
@ -276,7 +277,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registryLocal.WaitWithDefaultTimeout()
|
registryLocal.WaitWithDefaultTimeout()
|
||||||
Expect(registryLocal.ExitCode()).To(Equal(0))
|
Expect(registryLocal.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry7", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry7", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +285,7 @@ var _ = Describe("Podman search", func() {
|
||||||
registryLocal.WaitWithDefaultTimeout()
|
registryLocal.WaitWithDefaultTimeout()
|
||||||
Expect(registryLocal.ExitCode()).To(Equal(0))
|
Expect(registryLocal.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
if !WaitContainerReady(&podmanTest, "registry8", "listening on", 20, 1) {
|
if !WaitContainerReady(podmanTest, "registry8", "listening on", 20, 1) {
|
||||||
Skip("Can not start docker registry.")
|
Skip("Can not start docker registry.")
|
||||||
}
|
}
|
||||||
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:6000/my-alpine"})
|
push := podmanTest.Podman([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:6000/my-alpine"})
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman start", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman start", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman stats", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman stats", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman stop", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman stop", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman tag", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman tag", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman top", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman top", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman version", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman version", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
})
|
})
|
||||||
|
|
||||||
AfterEach(func() {
|
AfterEach(func() {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +13,7 @@ var _ = Describe("Podman wait", func() {
|
||||||
var (
|
var (
|
||||||
tempdir string
|
tempdir string
|
||||||
err error
|
err error
|
||||||
podmanTest PodmanTest
|
podmanTest *PodmanTestIntegration
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
|
@ -20,7 +21,7 @@ var _ = Describe("Podman wait", func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
podmanTest = PodmanCreate(tempdir)
|
podmanTest = PodmanTestCreate(tempdir)
|
||||||
podmanTest.RestoreAllArtifacts()
|
podmanTest.RestoreAllArtifacts()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
args := os.Args[1:]
|
||||||
|
exitCode := 0
|
||||||
|
|
||||||
|
for i := 0; i < len(args); i++ {
|
||||||
|
fmt.Fprintln(os.Stdout, args[i])
|
||||||
|
fmt.Fprintln(os.Stderr, args[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(args) > 1 {
|
||||||
|
num, _ := strconv.Atoi(args[1])
|
||||||
|
if args[0] == "exitcode" {
|
||||||
|
exitCode = num
|
||||||
|
}
|
||||||
|
if args[0] == "sleep" {
|
||||||
|
time.Sleep(time.Duration(num) * time.Second)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.Exit(exitCode)
|
||||||
|
}
|
|
@ -0,0 +1,150 @@
|
||||||
|
package utils_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/ginkgo/extensions/table"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("Common functions test", func() {
|
||||||
|
var defaultOSPath string
|
||||||
|
var defaultCgroupPath string
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
defaultOSPath = OSReleasePath
|
||||||
|
defaultCgroupPath = ProcessOneCgroupPath
|
||||||
|
})
|
||||||
|
|
||||||
|
AfterEach(func() {
|
||||||
|
OSReleasePath = defaultOSPath
|
||||||
|
ProcessOneCgroupPath = defaultCgroupPath
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test CreateTempDirInTempDir", func() {
|
||||||
|
tmpDir, _ := CreateTempDirInTempDir()
|
||||||
|
_, err := os.Stat(tmpDir)
|
||||||
|
Expect(os.IsNotExist(err)).ShouldNot(BeTrue(), "Directory is not created as expect")
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test SystemExec", func() {
|
||||||
|
session := SystemExec(GoechoPath, []string{})
|
||||||
|
Expect(session.Command.Process).ShouldNot(BeNil(), "SystemExec can not start a process")
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test StringInSlice", func() {
|
||||||
|
testSlice := []string{"apple", "peach", "pear"}
|
||||||
|
Expect(StringInSlice("apple", testSlice)).To(BeTrue(), "apple should in ['apple', 'peach', 'pear']")
|
||||||
|
Expect(StringInSlice("banana", testSlice)).ShouldNot(BeTrue(), "banana should not in ['apple', 'peach', 'pear']")
|
||||||
|
Expect(StringInSlice("anything", []string{})).ShouldNot(BeTrue(), "anything should not in empty slice")
|
||||||
|
})
|
||||||
|
|
||||||
|
DescribeTable("Test GetHostDistributionInfo",
|
||||||
|
func(path, id, ver string, empty bool) {
|
||||||
|
txt := fmt.Sprintf("ID=%s\nVERSION_ID=%s", id, ver)
|
||||||
|
if !empty {
|
||||||
|
f, _ := os.Create(path)
|
||||||
|
f.WriteString(txt)
|
||||||
|
f.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
OSReleasePath = path
|
||||||
|
host := GetHostDistributionInfo()
|
||||||
|
if empty {
|
||||||
|
Expect(host).To(Equal(HostOS{}), "HostOs should be empty.")
|
||||||
|
} else {
|
||||||
|
Expect(host.Distribution).To(Equal(strings.Trim(id, "\"")))
|
||||||
|
Expect(host.Version).To(Equal(strings.Trim(ver, "\"")))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Entry("Configure file is not exist.", "/tmp/notexist", "", "", true),
|
||||||
|
Entry("Item value with and without \"", "/tmp/os-release.test", "fedora", "\"28\"", false),
|
||||||
|
Entry("Item empty with and without \"", "/tmp/os-release.test", "", "\"\"", false),
|
||||||
|
)
|
||||||
|
|
||||||
|
DescribeTable("Test IsKernelNewerThan",
|
||||||
|
func(kv string, expect, isNil bool) {
|
||||||
|
newer, err := IsKernelNewerThan(kv)
|
||||||
|
Expect(newer).To(Equal(expect), "Version compare results is not as expect.")
|
||||||
|
Expect(err == nil).To(Equal(isNil), "Error is not as expect.")
|
||||||
|
},
|
||||||
|
Entry("Invlid kernel version: 0", "0", false, false),
|
||||||
|
Entry("Older kernel version:0.0", "0.0", true, true),
|
||||||
|
Entry("Newer kernel version: 100.17.14", "100.17.14", false, true),
|
||||||
|
Entry("Invlid kernel version: I am not a kernel version", "I am not a kernel version", false, false),
|
||||||
|
)
|
||||||
|
|
||||||
|
DescribeTable("Test TestIsCommandAvailable",
|
||||||
|
func(cmd string, expect bool) {
|
||||||
|
cmdExist := IsCommandAvailable(cmd)
|
||||||
|
Expect(cmdExist).To(Equal(expect))
|
||||||
|
},
|
||||||
|
Entry("Command exist", GoechoPath, true),
|
||||||
|
Entry("Command exist", "Fakecmd", false),
|
||||||
|
)
|
||||||
|
|
||||||
|
It("Test WriteJsonFile", func() {
|
||||||
|
type testJson struct {
|
||||||
|
Item1 int
|
||||||
|
Item2 []string
|
||||||
|
}
|
||||||
|
compareData := &testJson{}
|
||||||
|
|
||||||
|
testData := &testJson{
|
||||||
|
Item1: 5,
|
||||||
|
Item2: []string{"test"},
|
||||||
|
}
|
||||||
|
|
||||||
|
testByte, _ := json.Marshal(testData)
|
||||||
|
err := WriteJsonFile(testByte, "/tmp/testJson")
|
||||||
|
|
||||||
|
Expect(err).To(BeNil(), "Failed to write JSON to file.")
|
||||||
|
|
||||||
|
read, err := os.Open("/tmp/testJson")
|
||||||
|
defer read.Close()
|
||||||
|
|
||||||
|
Expect(err).To(BeNil(), "Can not find the JSON file after we write it.")
|
||||||
|
|
||||||
|
bytes, _ := ioutil.ReadAll(read)
|
||||||
|
json.Unmarshal(bytes, compareData)
|
||||||
|
|
||||||
|
Expect(reflect.DeepEqual(testData, compareData)).To(BeTrue(), "Data chaned after we store it to file.")
|
||||||
|
})
|
||||||
|
|
||||||
|
DescribeTable("Test Containerized",
|
||||||
|
func(path string, setEnv, createFile, expect bool) {
|
||||||
|
if setEnv && (os.Getenv("container") == "") {
|
||||||
|
os.Setenv("container", "test")
|
||||||
|
defer os.Setenv("container", "")
|
||||||
|
}
|
||||||
|
if !setEnv && (os.Getenv("container") != "") {
|
||||||
|
containerized := os.Getenv("container")
|
||||||
|
os.Setenv("container", "")
|
||||||
|
defer os.Setenv("container", containerized)
|
||||||
|
}
|
||||||
|
txt := "1:test:/"
|
||||||
|
if expect {
|
||||||
|
txt = "2:docker:/"
|
||||||
|
}
|
||||||
|
if createFile {
|
||||||
|
f, _ := os.Create(path)
|
||||||
|
f.WriteString(txt)
|
||||||
|
f.Close()
|
||||||
|
}
|
||||||
|
ProcessOneCgroupPath = path
|
||||||
|
Expect(Containerized()).To(Equal(expect))
|
||||||
|
},
|
||||||
|
Entry("Set container in env", "", true, false, true),
|
||||||
|
Entry("Can not read from file", "/tmp/notexist", false, false, false),
|
||||||
|
Entry("Docker in cgroup file", "/tmp/cgroup.test", false, true, true),
|
||||||
|
Entry("Docker not in cgroup file", "/tmp/cgroup.test", false, true, false),
|
||||||
|
)
|
||||||
|
|
||||||
|
})
|
|
@ -0,0 +1,90 @@
|
||||||
|
package utils_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("PodmanSession test", func() {
|
||||||
|
var session *PodmanSession
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
session = StartFakeCmdSession([]string{"PodmanSession", "test", "Podman Session"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test OutputToString", func() {
|
||||||
|
Expect(session.OutputToString()).To(Equal("PodmanSession test Podman Session"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test OutputToStringArray", func() {
|
||||||
|
Expect(session.OutputToStringArray()).To(Equal([]string{"PodmanSession", "test", "Podman Session"}))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test ErrorToString", func() {
|
||||||
|
Expect(session.ErrorToString()).To(Equal("PodmanSession test Podman Session"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test ErrorToStringArray", func() {
|
||||||
|
Expect(session.ErrorToStringArray()).To(Equal([]string{"PodmanSession", "test", "Podman Session", ""}))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test GrepString", func() {
|
||||||
|
match, backStr := session.GrepString("Session")
|
||||||
|
Expect(match).To(BeTrue())
|
||||||
|
Expect(backStr).To(Equal([]string{"PodmanSession", "Podman Session"}))
|
||||||
|
|
||||||
|
match, backStr = session.GrepString("I am not here")
|
||||||
|
Expect(match).To(Not(BeTrue()))
|
||||||
|
Expect(backStr).To(BeNil())
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test ErrorGrepString", func() {
|
||||||
|
match, backStr := session.ErrorGrepString("Session")
|
||||||
|
Expect(match).To(BeTrue())
|
||||||
|
Expect(backStr).To(Equal([]string{"PodmanSession", "Podman Session"}))
|
||||||
|
|
||||||
|
match, backStr = session.ErrorGrepString("I am not here")
|
||||||
|
Expect(match).To(Not(BeTrue()))
|
||||||
|
Expect(backStr).To(BeNil())
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test LineInOutputStartsWith", func() {
|
||||||
|
Expect(session.LineInOuputStartsWith("Podman")).To(BeTrue())
|
||||||
|
Expect(session.LineInOuputStartsWith("Session")).To(Not(BeTrue()))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test LineInOutputContains", func() {
|
||||||
|
Expect(session.LineInOutputContains("Podman")).To(BeTrue())
|
||||||
|
Expect(session.LineInOutputContains("Session")).To(BeTrue())
|
||||||
|
Expect(session.LineInOutputContains("I am not here")).To(Not(BeTrue()))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test LineInOutputContainsTag", func() {
|
||||||
|
session = StartFakeCmdSession([]string{"HEAD LINE", "docker.io/library/busybox latest e1ddd7948a1c 5 weeks ago 1.38MB"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.LineInOutputContainsTag("docker.io/library/busybox", "latest")).To(BeTrue())
|
||||||
|
Expect(session.LineInOutputContainsTag("busybox", "latest")).To(Not(BeTrue()))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test IsJSONOutputValid", func() {
|
||||||
|
session = StartFakeCmdSession([]string{`{"page":1,"fruits":["apple","peach","pear"]}`})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.IsJSONOutputValid()).To(BeTrue())
|
||||||
|
|
||||||
|
session = StartFakeCmdSession([]string{"I am not JSON"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.IsJSONOutputValid()).To(Not(BeTrue()))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test WaitWithDefaultTimeout", func() {
|
||||||
|
session = StartFakeCmdSession([]string{"sleep", "2"})
|
||||||
|
Expect(session.ExitCode()).Should(Equal(-1))
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).Should(Equal(0))
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
|
@ -0,0 +1,74 @@
|
||||||
|
package utils_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("PodmanTest test", func() {
|
||||||
|
var podmanTest *FakePodmanTest
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
podmanTest = FakePodmanTestCreate()
|
||||||
|
})
|
||||||
|
|
||||||
|
AfterEach(func() {
|
||||||
|
FakeOutputs = make(map[string][]string)
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test PodmanAsUser", func() {
|
||||||
|
FakeOutputs["check"] = []string{"check"}
|
||||||
|
os.Setenv("HOOK_OPTION", "hook_option")
|
||||||
|
env := os.Environ()
|
||||||
|
session := podmanTest.PodmanAsUser([]string{"check"}, 1000, 1000, env)
|
||||||
|
os.Unsetenv("HOOK_OPTION")
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.Command.Process).ShouldNot(BeNil())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test NumberOfContainersRunning", func() {
|
||||||
|
FakeOutputs["ps -q"] = []string{"one", "two"}
|
||||||
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test NumberOfContainers", func() {
|
||||||
|
FakeOutputs["ps -aq"] = []string{"one", "two"}
|
||||||
|
Expect(podmanTest.NumberOfContainers()).To(Equal(2))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test NumberOfPods", func() {
|
||||||
|
FakeOutputs["pod ps -q"] = []string{"one", "two"}
|
||||||
|
Expect(podmanTest.NumberOfPods()).To(Equal(2))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test WaitForContainer", func() {
|
||||||
|
FakeOutputs["ps -q"] = []string{"one", "two"}
|
||||||
|
Expect(WaitForContainer(podmanTest)).To(BeTrue())
|
||||||
|
|
||||||
|
FakeOutputs["ps -q"] = []string{"one"}
|
||||||
|
Expect(WaitForContainer(podmanTest)).To(BeTrue())
|
||||||
|
|
||||||
|
FakeOutputs["ps -q"] = []string{""}
|
||||||
|
Expect(WaitForContainer(podmanTest)).To(Not(BeTrue()))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test GetContainerStatus", func() {
|
||||||
|
FakeOutputs["ps --all --format={{.Status}}"] = []string{"Need func update"}
|
||||||
|
Expect(podmanTest.GetContainerStatus()).To(Equal("Need func update"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Test WaitContainerReady", func() {
|
||||||
|
FakeOutputs["logs testimage"] = []string{""}
|
||||||
|
Expect(WaitContainerReady(podmanTest, "testimage", "ready", 2, 1)).To(Not(BeTrue()))
|
||||||
|
|
||||||
|
FakeOutputs["logs testimage"] = []string{"I am ready"}
|
||||||
|
Expect(WaitContainerReady(podmanTest, "testimage", "am ready", 2, 1)).To(BeTrue())
|
||||||
|
|
||||||
|
FakeOutputs["logs testimage"] = []string{"I am ready"}
|
||||||
|
Expect(WaitContainerReady(podmanTest, "testimage", "", 2, 1)).To(BeTrue())
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
|
@ -0,0 +1,431 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/containers/storage/pkg/parsers/kernel"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"github.com/onsi/gomega/gexec"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
defaultWaitTimeout = 90
|
||||||
|
OSReleasePath = "/etc/os-release"
|
||||||
|
ProcessOneCgroupPath = "/proc/1/cgroup"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PodmanTestCommon contains common functions will be updated later in
|
||||||
|
// the inheritance structs
|
||||||
|
type PodmanTestCommon interface {
|
||||||
|
MakeOptions(args []string) []string
|
||||||
|
WaitForContainer() bool
|
||||||
|
WaitContainerReady(id string, expStr string, timeout int, step int) bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodmanTest struct for command line options
|
||||||
|
type PodmanTest struct {
|
||||||
|
PodmanMakeOptions func(args []string) []string
|
||||||
|
PodmanBinary string
|
||||||
|
ArtifactPath string
|
||||||
|
TempDir string
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodmanSession wraps the gexec.session so we can extend it
|
||||||
|
type PodmanSession struct {
|
||||||
|
*gexec.Session
|
||||||
|
}
|
||||||
|
|
||||||
|
// HostOS is a simple struct for the test os
|
||||||
|
type HostOS struct {
|
||||||
|
Distribution string
|
||||||
|
Version string
|
||||||
|
Arch string
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeOptions assembles all podman options
|
||||||
|
func (p *PodmanTest) MakeOptions(args []string) []string {
|
||||||
|
return p.PodmanMakeOptions(args)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodmanAsUser exec podman as user. uid and gid is set for credentials useage. env is used
|
||||||
|
// to record the env for debugging
|
||||||
|
func (p *PodmanTest) PodmanAsUser(args []string, uid, gid uint32, env []string) *PodmanSession {
|
||||||
|
var command *exec.Cmd
|
||||||
|
podmanOptions := p.MakeOptions(args)
|
||||||
|
|
||||||
|
if env == nil {
|
||||||
|
fmt.Printf("Running: %s %s\n", p.PodmanBinary, strings.Join(podmanOptions, " "))
|
||||||
|
} else {
|
||||||
|
fmt.Printf("Running: (env: %v) %s %s\n", env, p.PodmanBinary, strings.Join(podmanOptions, " "))
|
||||||
|
}
|
||||||
|
if uid != 0 || gid != 0 {
|
||||||
|
nsEnterOpts := append([]string{"--userspec", fmt.Sprintf("%d:%d", uid, gid), "/", p.PodmanBinary}, podmanOptions...)
|
||||||
|
command = exec.Command("chroot", nsEnterOpts...)
|
||||||
|
} else {
|
||||||
|
command = exec.Command(p.PodmanBinary, podmanOptions...)
|
||||||
|
}
|
||||||
|
if env != nil {
|
||||||
|
command.Env = env
|
||||||
|
}
|
||||||
|
|
||||||
|
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
|
||||||
|
if err != nil {
|
||||||
|
Fail(fmt.Sprintf("unable to run podman command: %s\n%v", strings.Join(podmanOptions, " "), err))
|
||||||
|
}
|
||||||
|
return &PodmanSession{session}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodmanBase exec podman with default env.
|
||||||
|
func (p *PodmanTest) PodmanBase(args []string) *PodmanSession {
|
||||||
|
return p.PodmanAsUser(args, 0, 0, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitForContainer waits on a started container
|
||||||
|
func (p *PodmanTest) WaitForContainer() bool {
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
if p.NumberOfContainersRunning() > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// NumberOfContainersRunning returns an int of how many
|
||||||
|
// containers are currently running.
|
||||||
|
func (p *PodmanTest) NumberOfContainersRunning() int {
|
||||||
|
var containers []string
|
||||||
|
ps := p.PodmanBase([]string{"ps", "-q"})
|
||||||
|
ps.WaitWithDefaultTimeout()
|
||||||
|
Expect(ps.ExitCode()).To(Equal(0))
|
||||||
|
for _, i := range ps.OutputToStringArray() {
|
||||||
|
if i != "" {
|
||||||
|
containers = append(containers, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return len(containers)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NumberOfContainers returns an int of how many
|
||||||
|
// containers are currently defined.
|
||||||
|
func (p *PodmanTest) NumberOfContainers() int {
|
||||||
|
var containers []string
|
||||||
|
ps := p.PodmanBase([]string{"ps", "-aq"})
|
||||||
|
ps.WaitWithDefaultTimeout()
|
||||||
|
Expect(ps.ExitCode()).To(Equal(0))
|
||||||
|
for _, i := range ps.OutputToStringArray() {
|
||||||
|
if i != "" {
|
||||||
|
containers = append(containers, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return len(containers)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NumberOfPods returns an int of how many
|
||||||
|
// pods are currently defined.
|
||||||
|
func (p *PodmanTest) NumberOfPods() int {
|
||||||
|
var pods []string
|
||||||
|
ps := p.PodmanBase([]string{"pod", "ps", "-q"})
|
||||||
|
ps.WaitWithDefaultTimeout()
|
||||||
|
Expect(ps.ExitCode()).To(Equal(0))
|
||||||
|
for _, i := range ps.OutputToStringArray() {
|
||||||
|
if i != "" {
|
||||||
|
pods = append(pods, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return len(pods)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetContainerStatus returns the containers state.
|
||||||
|
// This function assumes only one container is active.
|
||||||
|
func (p *PodmanTest) GetContainerStatus() string {
|
||||||
|
var podmanArgs = []string{"ps"}
|
||||||
|
podmanArgs = append(podmanArgs, "--all", "--format={{.Status}}")
|
||||||
|
session := p.PodmanBase(podmanArgs)
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
return session.OutputToString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitContainerReady waits process or service inside container start, and ready to be used.
|
||||||
|
func (p *PodmanTest) WaitContainerReady(id string, expStr string, timeout int, step int) bool {
|
||||||
|
startTime := time.Now()
|
||||||
|
s := p.PodmanBase([]string{"logs", id})
|
||||||
|
s.WaitWithDefaultTimeout()
|
||||||
|
|
||||||
|
for {
|
||||||
|
if time.Since(startTime) >= time.Duration(timeout)*time.Second {
|
||||||
|
fmt.Printf("Container %s is not ready in %ds", id, timeout)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(s.OutputToString(), expStr) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
time.Sleep(time.Duration(step) * time.Second)
|
||||||
|
s = p.PodmanBase([]string{"logs", id})
|
||||||
|
s.WaitWithDefaultTimeout()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitForContainer is a wrapper function for accept inheritance PodmanTest struct.
|
||||||
|
func WaitForContainer(p PodmanTestCommon) bool {
|
||||||
|
return p.WaitForContainer()
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitForContainerReady is a wrapper function for accept inheritance PodmanTest struct.
|
||||||
|
func WaitContainerReady(p PodmanTestCommon, id string, expStr string, timeout int, step int) bool {
|
||||||
|
return p.WaitContainerReady(id, expStr, timeout, step)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OutputToString formats session output to string
|
||||||
|
func (s *PodmanSession) OutputToString() string {
|
||||||
|
fields := strings.Fields(fmt.Sprintf("%s", s.Out.Contents()))
|
||||||
|
return strings.Join(fields, " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// OutputToStringArray returns the output as a []string
|
||||||
|
// where each array item is a line split by newline
|
||||||
|
func (s *PodmanSession) OutputToStringArray() []string {
|
||||||
|
var results []string
|
||||||
|
output := fmt.Sprintf("%s", s.Out.Contents())
|
||||||
|
for _, line := range strings.Split(output, "\n") {
|
||||||
|
if line != "" {
|
||||||
|
results = append(results, line)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorToString formats session stderr to string
|
||||||
|
func (s *PodmanSession) ErrorToString() string {
|
||||||
|
fields := strings.Fields(fmt.Sprintf("%s", s.Err.Contents()))
|
||||||
|
return strings.Join(fields, " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorToStringArray returns the stderr output as a []string
|
||||||
|
// where each array item is a line split by newline
|
||||||
|
func (s *PodmanSession) ErrorToStringArray() []string {
|
||||||
|
output := fmt.Sprintf("%s", s.Err.Contents())
|
||||||
|
return strings.Split(output, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
// GrepString takes session output and behaves like grep. it returns a bool
|
||||||
|
// if successful and an array of strings on positive matches
|
||||||
|
func (s *PodmanSession) GrepString(term string) (bool, []string) {
|
||||||
|
var (
|
||||||
|
greps []string
|
||||||
|
matches bool
|
||||||
|
)
|
||||||
|
|
||||||
|
for _, line := range s.OutputToStringArray() {
|
||||||
|
if strings.Contains(line, term) {
|
||||||
|
matches = true
|
||||||
|
greps = append(greps, line)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return matches, greps
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorGrepString takes session stderr output and behaves like grep. it returns a bool
|
||||||
|
// if successful and an array of strings on positive matches
|
||||||
|
func (s *PodmanSession) ErrorGrepString(term string) (bool, []string) {
|
||||||
|
var (
|
||||||
|
greps []string
|
||||||
|
matches bool
|
||||||
|
)
|
||||||
|
|
||||||
|
for _, line := range s.ErrorToStringArray() {
|
||||||
|
if strings.Contains(line, term) {
|
||||||
|
matches = true
|
||||||
|
greps = append(greps, line)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return matches, greps
|
||||||
|
}
|
||||||
|
|
||||||
|
//LineInOutputStartsWith returns true if a line in a
|
||||||
|
// session output starts with the supplied string
|
||||||
|
func (s *PodmanSession) LineInOuputStartsWith(term string) bool {
|
||||||
|
for _, i := range s.OutputToStringArray() {
|
||||||
|
if strings.HasPrefix(i, term) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//LineInOutputContains returns true if a line in a
|
||||||
|
// session output starts with the supplied string
|
||||||
|
func (s *PodmanSession) LineInOutputContains(term string) bool {
|
||||||
|
for _, i := range s.OutputToStringArray() {
|
||||||
|
if strings.Contains(i, term) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//LineInOutputContainsTag returns true if a line in the
|
||||||
|
// session's output contains the repo-tag pair as returned
|
||||||
|
// by podman-images(1).
|
||||||
|
func (s *PodmanSession) LineInOutputContainsTag(repo, tag string) bool {
|
||||||
|
tagMap := tagOutputToMap(s.OutputToStringArray())
|
||||||
|
for r, t := range tagMap {
|
||||||
|
if repo == r && tag == t {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsJSONOutputValid attempts to unmarshal 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)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitWithDefaultTimeout waits for process finished with defaultWaitTimeout
|
||||||
|
func (s *PodmanSession) WaitWithDefaultTimeout() {
|
||||||
|
s.Wait(defaultWaitTimeout)
|
||||||
|
fmt.Println("output:", s.OutputToString())
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateTempDirinTempDir create a temp dir with prefix podman_test
|
||||||
|
func CreateTempDirInTempDir() (string, error) {
|
||||||
|
return ioutil.TempDir("", "podman_test")
|
||||||
|
}
|
||||||
|
|
||||||
|
// SystemExec is used to exec a system command to check its exit code or output
|
||||||
|
func SystemExec(command string, args []string) *PodmanSession {
|
||||||
|
c := exec.Command(command, args...)
|
||||||
|
session, err := gexec.Start(c, GinkgoWriter, GinkgoWriter)
|
||||||
|
if err != nil {
|
||||||
|
Fail(fmt.Sprintf("unable to run command: %s %s", command, strings.Join(args, " ")))
|
||||||
|
}
|
||||||
|
return &PodmanSession{session}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringInSlice determines if a string is in a string slice, returns bool
|
||||||
|
func StringInSlice(s string, sl []string) bool {
|
||||||
|
for _, i := range sl {
|
||||||
|
if i == s {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//tagOutPutToMap parses each string in imagesOutput and returns
|
||||||
|
// a map of repo:tag pairs. Notice, the first array item will
|
||||||
|
// be skipped as it's considered to be the header.
|
||||||
|
func tagOutputToMap(imagesOutput []string) map[string]string {
|
||||||
|
m := make(map[string]string)
|
||||||
|
// iterate over output but skip the header
|
||||||
|
for _, i := range imagesOutput[1:] {
|
||||||
|
tmp := []string{}
|
||||||
|
for _, x := range strings.Split(i, " ") {
|
||||||
|
if x != "" {
|
||||||
|
tmp = append(tmp, x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// podman-images(1) return a list like output
|
||||||
|
// in the format of "Repository Tag [...]"
|
||||||
|
if len(tmp) < 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
m[tmp[0]] = tmp[1]
|
||||||
|
}
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
//GetHostDistributionInfo returns a struct with its distribution name and version
|
||||||
|
func GetHostDistributionInfo() HostOS {
|
||||||
|
f, err := os.Open(OSReleasePath)
|
||||||
|
defer f.Close()
|
||||||
|
if err != nil {
|
||||||
|
return HostOS{}
|
||||||
|
}
|
||||||
|
|
||||||
|
l := bufio.NewScanner(f)
|
||||||
|
host := HostOS{}
|
||||||
|
host.Arch = runtime.GOARCH
|
||||||
|
for l.Scan() {
|
||||||
|
if strings.HasPrefix(l.Text(), "ID=") {
|
||||||
|
host.Distribution = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1)
|
||||||
|
}
|
||||||
|
if strings.HasPrefix(l.Text(), "VERSION_ID=") {
|
||||||
|
host.Version = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsKernelNewerThan compares the current kernel version to one provided. If
|
||||||
|
// the kernel is equal to or greater, returns true
|
||||||
|
func IsKernelNewerThan(version string) (bool, error) {
|
||||||
|
inputVersion, err := kernel.ParseRelease(version)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
kv, err := kernel.GetKernelVersion()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CompareKernelVersion compares two kernel.VersionInfo structs.
|
||||||
|
// Returns -1 if a < b, 0 if a == b, 1 it a > b
|
||||||
|
result := kernel.CompareKernelVersion(*kv, *inputVersion)
|
||||||
|
if result >= 0 {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//IsCommandAvaible check if command exist
|
||||||
|
func IsCommandAvailable(command string) bool {
|
||||||
|
check := exec.Command("bash", "-c", strings.Join([]string{"command -v", command}, " "))
|
||||||
|
err := check.Run()
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteJsonFile write json format data to a json file
|
||||||
|
func WriteJsonFile(data []byte, filePath string) error {
|
||||||
|
var jsonData map[string]interface{}
|
||||||
|
json.Unmarshal(data, &jsonData)
|
||||||
|
formatJson, _ := json.MarshalIndent(jsonData, "", " ")
|
||||||
|
return ioutil.WriteFile(filePath, formatJson, 0644)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Containerized check the podman command run inside container
|
||||||
|
func Containerized() bool {
|
||||||
|
container := os.Getenv("container")
|
||||||
|
if container != "" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
b, err := ioutil.ReadFile(ProcessOneCgroupPath)
|
||||||
|
if err != nil {
|
||||||
|
// shrug, if we cannot read that file, return false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if strings.Index(string(b), "docker") > -1 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package utils_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
. "github.com/containers/libpod/test/utils"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"github.com/onsi/gomega/gexec"
|
||||||
|
)
|
||||||
|
|
||||||
|
var FakeOutputs map[string][]string
|
||||||
|
var GoechoPath = "../goecho/goecho"
|
||||||
|
|
||||||
|
type FakePodmanTest struct {
|
||||||
|
PodmanTest
|
||||||
|
}
|
||||||
|
|
||||||
|
func FakePodmanTestCreate() *FakePodmanTest {
|
||||||
|
FakeOutputs = make(map[string][]string)
|
||||||
|
p := &FakePodmanTest{
|
||||||
|
PodmanTest: PodmanTest{
|
||||||
|
PodmanBinary: GoechoPath,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
p.PodmanMakeOptions = p.makeOptions
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *FakePodmanTest) makeOptions(args []string) []string {
|
||||||
|
return FakeOutputs[strings.Join(args, " ")]
|
||||||
|
}
|
||||||
|
|
||||||
|
func StartFakeCmdSession(args []string) *PodmanSession {
|
||||||
|
var outWriter, errWriter io.Writer
|
||||||
|
command := exec.Command(GoechoPath, args...)
|
||||||
|
session, err := gexec.Start(command, outWriter, errWriter)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
return &PodmanSession{session}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUtils(t *testing.T) {
|
||||||
|
RegisterFailHandler(Fail)
|
||||||
|
RunSpecs(t, "Unit test for test utils package")
|
||||||
|
}
|
Loading…
Reference in New Issue