aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/README.md2
-rw-r--r--test/bin2img/bin2img.go229
-rw-r--r--test/copyimg/copyimg.go204
-rw-r--r--test/e2e/cp_test.go115
-rw-r--r--test/e2e/create_test.go8
-rw-r--r--test/e2e/e2e.coverprofile11
-rw-r--r--test/e2e/libpod_suite_test.go4
-rw-r--r--test/e2e/load_test.go6
-rw-r--r--test/e2e/pod_infra_container_test.go51
-rw-r--r--test/e2e/pod_start_test.go1
-rw-r--r--test/e2e/pod_stats_test.go23
-rw-r--r--test/e2e/pod_stop_test.go1
-rw-r--r--test/e2e/pull_test.go16
-rw-r--r--test/e2e/restart_test.go2
-rw-r--r--test/e2e/rm_test.go5
-rw-r--r--test/e2e/rmi_test.go2
-rw-r--r--test/e2e/rootless_test.go45
-rw-r--r--test/e2e/run_networking_test.go39
-rw-r--r--test/e2e/run_test.go2
-rw-r--r--test/e2e/save_test.go2
-rw-r--r--test/e2e/search_test.go4
-rw-r--r--test/e2e/volume_create_test.go2
-rw-r--r--test/e2e/volume_inspect_test.go2
-rw-r--r--test/e2e/volume_ls_test.go2
-rw-r--r--test/e2e/volume_rm_test.go3
-rw-r--r--test/trust_set_test.json8
-rw-r--r--test/utils/podmantest_test.go2
-rw-r--r--test/utils/utils.go14
28 files changed, 312 insertions, 493 deletions
diff --git a/test/README.md b/test/README.md
index 90dcdfe3d..ef3bfbcf9 100644
--- a/test/README.md
+++ b/test/README.md
@@ -66,7 +66,7 @@ switch is optional.
You can run a single file of integration tests using the go test command:
```
-GOPATH=~/go go test -v test/e2e/libpod_suite_test.go test/e2e/config.go test/e2e/config_amd64.go test/e2e/your_test.go
+GOPATH=~/go go test -v test/e2e/libpod_suite_test.go test/e2e/common_test.go test/e2e/config.go test/e2e/config_amd64.go test/e2e/your_test.go
```
#### Run all tests like PAPR
diff --git a/test/bin2img/bin2img.go b/test/bin2img/bin2img.go
deleted file mode 100644
index ed493dcc1..000000000
--- a/test/bin2img/bin2img.go
+++ /dev/null
@@ -1,229 +0,0 @@
-package main
-
-import (
- "archive/tar"
- "bytes"
- "context"
- "encoding/json"
- "io"
- "os"
- "runtime"
-
- "github.com/containers/image/pkg/blobinfocache"
- "github.com/containers/image/storage"
- "github.com/containers/image/types"
- sstorage "github.com/containers/storage"
- "github.com/containers/storage/pkg/reexec"
- digest "github.com/opencontainers/go-digest"
- specs "github.com/opencontainers/image-spec/specs-go"
- "github.com/opencontainers/image-spec/specs-go/v1"
- "github.com/sirupsen/logrus"
- "github.com/urfave/cli"
-)
-
-func main() {
- if reexec.Init() {
- return
- }
-
- app := cli.NewApp()
- app.Name = "bin2img"
- app.Usage = "barebones image builder"
- app.Version = "0.0.1"
-
- app.Flags = []cli.Flag{
- cli.BoolFlag{
- Name: "debug",
- Usage: "turn on debug logging",
- },
- cli.StringFlag{
- Name: "root",
- Usage: "graph root directory",
- },
- cli.StringFlag{
- Name: "runroot",
- Usage: "run root directory",
- },
- cli.StringFlag{
- Name: "storage-driver",
- Usage: "storage driver",
- },
- cli.StringSliceFlag{
- Name: "storage-opt",
- Usage: "storage option",
- },
- cli.StringFlag{
- Name: "image-name",
- Usage: "set image name",
- Value: "kubernetes/pause",
- },
- cli.StringFlag{
- Name: "source-binary",
- Usage: "source binary",
- Value: "../../pause/pause",
- },
- cli.StringFlag{
- Name: "image-binary",
- Usage: "image binary",
- Value: "/pause",
- },
- }
-
- app.Action = func(c *cli.Context) error {
- debug := c.GlobalBool("debug")
- rootDir := c.GlobalString("root")
- runrootDir := c.GlobalString("runroot")
- storageDriver := c.GlobalString("storage-driver")
- storageOptions := c.GlobalStringSlice("storage-opt")
- imageName := c.GlobalString("image-name")
- sourceBinary := c.GlobalString("source-binary")
- imageBinary := c.GlobalString("image-binary")
-
- if debug {
- logrus.SetLevel(logrus.DebugLevel)
- } else {
- logrus.SetLevel(logrus.ErrorLevel)
- }
- if rootDir == "" && runrootDir != "" {
- logrus.Errorf("must set --root and --runroot, or neither")
- os.Exit(1)
- }
- if rootDir != "" && runrootDir == "" {
- logrus.Errorf("must set --root and --runroot, or neither")
- os.Exit(1)
- }
- storeOptions := sstorage.DefaultStoreOptions
- if rootDir != "" && runrootDir != "" {
- storeOptions.GraphDriverName = storageDriver
- storeOptions.GraphDriverOptions = storageOptions
- storeOptions.GraphRoot = rootDir
- storeOptions.RunRoot = runrootDir
- }
- store, err := sstorage.GetStore(storeOptions)
- if err != nil {
- logrus.Errorf("error opening storage: %v", err)
- os.Exit(1)
- }
- defer func() {
- _, _ = store.Shutdown(false)
- }()
-
- layerBuffer := &bytes.Buffer{}
- binary, err := os.Open(sourceBinary)
- if err != nil {
- logrus.Errorf("error opening image binary: %v", err)
- os.Exit(1)
- }
- binInfo, err := binary.Stat()
- if err != nil {
- logrus.Errorf("error statting image binary: %v", err)
- os.Exit(1)
- }
- archive := tar.NewWriter(layerBuffer)
- err = archive.WriteHeader(&tar.Header{
- Name: imageBinary,
- Size: binInfo.Size(),
- Mode: 0555,
- ModTime: binInfo.ModTime(),
- Typeflag: tar.TypeReg,
- Uname: "root",
- Gname: "root",
- })
- if err != nil {
- logrus.Errorf("error writing archive header: %v", err)
- os.Exit(1)
- }
- _, err = io.Copy(archive, binary)
- if err != nil {
- logrus.Errorf("error archiving image binary: %v", err)
- os.Exit(1)
- }
- archive.Close()
- binary.Close()
- layerInfo := types.BlobInfo{
- Digest: digest.Canonical.FromBytes(layerBuffer.Bytes()),
- Size: int64(layerBuffer.Len()),
- }
-
- ref, err := storage.Transport.ParseStoreReference(store, imageName)
- if err != nil {
- logrus.Errorf("error parsing image name: %v", err)
- os.Exit(1)
- }
- ctx := context.TODO()
- img, err := ref.NewImageDestination(ctx, nil)
- if err != nil {
- logrus.Errorf("error preparing to write image: %v", err)
- os.Exit(1)
- }
- defer img.Close()
- layer, err := img.PutBlob(ctx, layerBuffer, layerInfo, blobinfocache.NewMemoryCache(), false)
- if err != nil {
- logrus.Errorf("error preparing to write image: %v", err)
- os.Exit(1)
- }
- config := &v1.Image{
- Architecture: runtime.GOARCH,
- OS: runtime.GOOS,
- Config: v1.ImageConfig{
- User: "root",
- Entrypoint: []string{imageBinary},
- },
- RootFS: v1.RootFS{
- Type: "layers",
- DiffIDs: []digest.Digest{
- layer.Digest,
- },
- },
- }
- cbytes, err := json.Marshal(config)
- if err != nil {
- logrus.Errorf("error encoding configuration: %v", err)
- os.Exit(1)
- }
- configInfo := types.BlobInfo{
- Digest: digest.Canonical.FromBytes(cbytes),
- Size: int64(len(cbytes)),
- }
- configInfo, err = img.PutBlob(ctx, bytes.NewBuffer(cbytes), configInfo, blobinfocache.NewMemoryCache(), false)
- if err != nil {
- logrus.Errorf("error saving configuration: %v", err)
- os.Exit(1)
- }
- manifest := &v1.Manifest{
- Versioned: specs.Versioned{
- SchemaVersion: 2,
- },
- Config: v1.Descriptor{
- MediaType: v1.MediaTypeImageConfig,
- Digest: configInfo.Digest,
- Size: int64(len(cbytes)),
- },
- Layers: []v1.Descriptor{{
- MediaType: v1.MediaTypeImageLayer,
- Digest: layer.Digest,
- Size: layer.Size,
- }},
- }
- mbytes, err := json.Marshal(manifest)
- if err != nil {
- logrus.Errorf("error encoding manifest: %v", err)
- os.Exit(1)
- }
- err = img.PutManifest(ctx, mbytes)
- if err != nil {
- logrus.Errorf("error saving manifest: %v", err)
- os.Exit(1)
- }
- err = img.Commit(ctx)
- if err != nil {
- logrus.Errorf("error committing image: %v", err)
- os.Exit(1)
- }
- return nil
- }
-
- if err := app.Run(os.Args); err != nil {
- logrus.Fatal(err)
- }
-}
diff --git a/test/copyimg/copyimg.go b/test/copyimg/copyimg.go
deleted file mode 100644
index da00964fa..000000000
--- a/test/copyimg/copyimg.go
+++ /dev/null
@@ -1,204 +0,0 @@
-package main
-
-import (
- "context"
- "os"
-
- "github.com/containers/image/copy"
- "github.com/containers/image/signature"
- "github.com/containers/image/storage"
- "github.com/containers/image/transports/alltransports"
- "github.com/containers/image/types"
- sstorage "github.com/containers/storage"
- "github.com/containers/storage/pkg/reexec"
- "github.com/sirupsen/logrus"
- "github.com/urfave/cli"
-)
-
-func main() {
- if reexec.Init() {
- return
- }
-
- app := cli.NewApp()
- app.Name = "copyimg"
- app.Usage = "barebones image copier"
- app.Version = "0.0.1"
-
- app.Flags = []cli.Flag{
- cli.BoolFlag{
- Name: "debug",
- Usage: "turn on debug logging",
- },
- cli.StringFlag{
- Name: "root",
- Usage: "graph root directory",
- },
- cli.StringFlag{
- Name: "runroot",
- Usage: "run root directory",
- },
- cli.StringFlag{
- Name: "storage-driver",
- Usage: "storage driver",
- },
- cli.StringSliceFlag{
- Name: "storage-opt",
- Usage: "storage option",
- },
- cli.StringFlag{
- Name: "signature-policy",
- Usage: "signature policy",
- },
- cli.StringFlag{
- Name: "image-name",
- Usage: "set image name",
- },
- cli.StringFlag{
- Name: "add-name",
- Usage: "name to add to image",
- },
- cli.StringFlag{
- Name: "import-from",
- Usage: "import source",
- },
- cli.StringFlag{
- Name: "export-to",
- Usage: "export target",
- },
- }
-
- app.Action = func(c *cli.Context) error {
- var store sstorage.Store
- var ref, importRef, exportRef types.ImageReference
- var err error
-
- debug := c.GlobalBool("debug")
- rootDir := c.GlobalString("root")
- runrootDir := c.GlobalString("runroot")
- storageDriver := c.GlobalString("storage-driver")
- storageOptions := c.GlobalStringSlice("storage-opt")
- signaturePolicy := c.GlobalString("signature-policy")
- imageName := c.GlobalString("image-name")
- addName := c.GlobalString("add-name")
- importFrom := c.GlobalString("import-from")
- exportTo := c.GlobalString("export-to")
-
- if debug {
- logrus.SetLevel(logrus.DebugLevel)
- } else {
- logrus.SetLevel(logrus.ErrorLevel)
- }
-
- if imageName != "" {
- if rootDir == "" && runrootDir != "" {
- logrus.Errorf("must set --root and --runroot, or neither")
- os.Exit(1)
- }
- if rootDir != "" && runrootDir == "" {
- logrus.Errorf("must set --root and --runroot, or neither")
- os.Exit(1)
- }
- storeOptions := sstorage.DefaultStoreOptions
- if rootDir != "" && runrootDir != "" {
- storeOptions.GraphDriverName = storageDriver
- storeOptions.GraphDriverOptions = storageOptions
- storeOptions.GraphRoot = rootDir
- storeOptions.RunRoot = runrootDir
- }
- store, err = sstorage.GetStore(storeOptions)
- if err != nil {
- logrus.Errorf("error opening storage: %v", err)
- os.Exit(1)
- }
- defer func() {
- _, _ = store.Shutdown(false)
- }()
-
- storage.Transport.SetStore(store)
- ref, err = storage.Transport.ParseStoreReference(store, imageName)
- if err != nil {
- logrus.Errorf("error parsing image name: %v", err)
- os.Exit(1)
- }
- }
-
- systemContext := types.SystemContext{
- SignaturePolicyPath: signaturePolicy,
- }
- policy, err := signature.DefaultPolicy(&systemContext)
- if err != nil {
- logrus.Errorf("error loading signature policy: %v", err)
- os.Exit(1)
- }
- policyContext, err := signature.NewPolicyContext(policy)
- if err != nil {
- logrus.Errorf("error loading signature policy: %v", err)
- os.Exit(1)
- }
- defer func() {
- _ = policyContext.Destroy()
- }()
- options := &copy.Options{}
-
- if importFrom != "" {
- importRef, err = alltransports.ParseImageName(importFrom)
- if err != nil {
- logrus.Errorf("error parsing image name %v: %v", importFrom, err)
- os.Exit(1)
- }
- }
-
- if exportTo != "" {
- exportRef, err = alltransports.ParseImageName(exportTo)
- if err != nil {
- logrus.Errorf("error parsing image name %v: %v", exportTo, err)
- os.Exit(1)
- }
- }
-
- ctx := context.TODO()
- if imageName != "" {
- if importFrom != "" {
- _, err = copy.Image(ctx, policyContext, ref, importRef, options)
- if err != nil {
- logrus.Errorf("error importing %s: %v", importFrom, err)
- os.Exit(1)
- }
- }
- if addName != "" {
- destImage, err1 := storage.Transport.GetStoreImage(store, ref)
- if err1 != nil {
- logrus.Errorf("error finding image: %v", err1)
- os.Exit(1)
- }
- names := append(destImage.Names, imageName, addName)
- err = store.SetNames(destImage.ID, names)
- if err != nil {
- logrus.Errorf("error adding name to %s: %v", imageName, err)
- os.Exit(1)
- }
- }
- if exportTo != "" {
- _, err = copy.Image(ctx, policyContext, exportRef, ref, options)
- if err != nil {
- logrus.Errorf("error exporting %s: %v", exportTo, err)
- os.Exit(1)
- }
- }
- } else {
- if importFrom != "" && exportTo != "" {
- _, err = copy.Image(ctx, policyContext, exportRef, importRef, options)
- if err != nil {
- logrus.Errorf("error copying %s to %s: %v", importFrom, exportTo, err)
- os.Exit(1)
- }
- }
- }
- return nil
- }
-
- if err := app.Run(os.Args); err != nil {
- logrus.Fatal(err)
- }
-}
diff --git a/test/e2e/cp_test.go b/test/e2e/cp_test.go
new file mode 100644
index 000000000..e1e760ee0
--- /dev/null
+++ b/test/e2e/cp_test.go
@@ -0,0 +1,115 @@
+// +build !remoteclient
+
+package integration
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "path/filepath"
+
+ . "github.com/containers/libpod/test/utils"
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Podman cp", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest *PodmanTestIntegration
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanTestCreate(tempdir)
+ podmanTest.RestoreAllArtifacts()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ f := CurrentGinkgoTestDescription()
+ timedResult := fmt.Sprintf("Test: %s completed in %f seconds", f.TestText, f.Duration.Seconds())
+ GinkgoWriter.Write([]byte(timedResult))
+ })
+
+ It("podman cp file", func() {
+ path, err := os.Getwd()
+ if err != nil {
+ os.Exit(1)
+ }
+ filePath := filepath.Join(path, "cp_test.txt")
+ fromHostToContainer := []byte("copy from host to container")
+ err = ioutil.WriteFile(filePath, fromHostToContainer, 0644)
+ if err != nil {
+ os.Exit(1)
+ }
+
+ session := podmanTest.Podman([]string{"create", ALPINE, "cat", "foo"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ name := session.OutputToString()
+
+ session = podmanTest.Podman([]string{"cp", filepath.Join(path, "cp_test.txt"), name + ":foo"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session = podmanTest.Podman([]string{"start", "-a", name})
+ session.WaitWithDefaultTimeout()
+
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("copy from host to container"))
+
+ session = podmanTest.Podman([]string{"cp", name + ":foo", filepath.Join(path, "cp_from_container")})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ c := exec.Command("cat", filepath.Join(path, "cp_from_container"))
+ output, err := c.Output()
+ if err != nil {
+ os.Exit(1)
+ }
+ Expect(string(output)).To(Equal("copy from host to container"))
+ })
+
+ It("podman cp file to dir", func() {
+ path, err := os.Getwd()
+ if err != nil {
+ os.Exit(1)
+ }
+ filePath := filepath.Join(path, "cp_test.txt")
+ fromHostToContainer := []byte("copy from host to container directory")
+ err = ioutil.WriteFile(filePath, fromHostToContainer, 0644)
+ if err != nil {
+ os.Exit(1)
+ }
+ session := podmanTest.Podman([]string{"create", ALPINE, "ls", "foodir/"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"ps", "-a", "-q"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ name := session.OutputToString()
+
+ session = podmanTest.Podman([]string{"cp", filepath.Join(path, "cp_test.txt"), name + ":foodir/"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"start", "-a", name})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("cp_test.txt"))
+
+ session = podmanTest.Podman([]string{"cp", name + ":foodir/cp_test.txt", path + "/receive/"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ c := exec.Command("cat", filepath.Join(path, "receive", "cp_test.txt"))
+ output, err := c.Output()
+ if err != nil {
+ os.Exit(1)
+ }
+ Expect(string(output)).To(Equal("copy from host to container directory"))
+ })
+})
diff --git a/test/e2e/create_test.go b/test/e2e/create_test.go
index b28a0c428..9a526b778 100644
--- a/test/e2e/create_test.go
+++ b/test/e2e/create_test.go
@@ -142,7 +142,7 @@ var _ = Describe("Podman create", func() {
}
mountPath := filepath.Join(podmanTest.TempDir, "secrets")
os.Mkdir(mountPath, 0755)
- session := podmanTest.Podman([]string{"create", "--name", "test", "--rm", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
+ session := podmanTest.Podman([]string{"create", "--name", "test", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"start", "test"})
@@ -153,7 +153,7 @@ var _ = Describe("Podman create", func() {
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring("/create/test rw"))
- session = podmanTest.Podman([]string{"create", "--name", "test_ro", "--rm", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test,ro", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
+ session = podmanTest.Podman([]string{"create", "--name", "test_ro", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test,ro", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"start", "test_ro"})
@@ -164,7 +164,7 @@ var _ = Describe("Podman create", func() {
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring("/create/test ro"))
- session = podmanTest.Podman([]string{"create", "--name", "test_shared", "--rm", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test,shared", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
+ session = podmanTest.Podman([]string{"create", "--name", "test_shared", "--mount", fmt.Sprintf("type=bind,src=%s,target=/create/test,shared", mountPath), ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"start", "test_shared"})
@@ -180,7 +180,7 @@ var _ = Describe("Podman create", func() {
mountPath = filepath.Join(podmanTest.TempDir, "scratchpad")
os.Mkdir(mountPath, 0755)
- session = podmanTest.Podman([]string{"create", "--name", "test_tmpfs", "--rm", "--mount", "type=tmpfs,target=/create/test", ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
+ session = podmanTest.Podman([]string{"create", "--name", "test_tmpfs", "--mount", "type=tmpfs,target=/create/test", ALPINE, "grep", "/create/test", "/proc/self/mountinfo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"start", "test_tmpfs"})
diff --git a/test/e2e/e2e.coverprofile b/test/e2e/e2e.coverprofile
new file mode 100644
index 000000000..b5382604f
--- /dev/null
+++ b/test/e2e/e2e.coverprofile
@@ -0,0 +1,11 @@
+mode: atomic
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:14.46,21.20 2 1
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:31.2,31.19 1 1
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:38.2,38.53 1 1
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:65.2,65.52 1 1
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:21.20,23.17 2 2
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:26.3,28.36 3 2
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:23.17,25.4 1 0
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:31.19,36.3 4 2
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:38.53,63.3 20 1
+github.com/containers/libpod/test/e2e/pod_pod_namespaces.go:65.52,90.3 20 1
diff --git a/test/e2e/libpod_suite_test.go b/test/e2e/libpod_suite_test.go
index 4b4baa93c..33e05b872 100644
--- a/test/e2e/libpod_suite_test.go
+++ b/test/e2e/libpod_suite_test.go
@@ -28,8 +28,8 @@ func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration
}
// PodmanAsUser is the exec call to podman on the filesystem with the specified uid/gid and environment
-func (p *PodmanTestIntegration) PodmanAsUser(args []string, uid, gid uint32, env []string) *PodmanSessionIntegration {
- podmanSession := p.PodmanAsUserBase(args, uid, gid, env)
+func (p *PodmanTestIntegration) PodmanAsUser(args []string, uid, gid uint32, cwd string, env []string) *PodmanSessionIntegration {
+ podmanSession := p.PodmanAsUserBase(args, uid, gid, cwd, env)
return &PodmanSessionIntegration{podmanSession}
}
diff --git a/test/e2e/load_test.go b/test/e2e/load_test.go
index 423f99ac8..c85810454 100644
--- a/test/e2e/load_test.go
+++ b/test/e2e/load_test.go
@@ -199,11 +199,9 @@ var _ = Describe("Podman load", func() {
It("podman load localhost registry from scratch and :latest", func() {
outfile := filepath.Join(podmanTest.TempDir, "load_test.tar.gz")
- setup := podmanTest.Podman([]string{"pull", fedoraMinimal})
- setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ podmanTest.RestoreArtifact("fedora-minimal:latest")
- setup = podmanTest.Podman([]string{"tag", "fedora-minimal", "hello"})
+ setup := podmanTest.Podman([]string{"tag", "fedora-minimal", "hello"})
setup.WaitWithDefaultTimeout()
Expect(setup.ExitCode()).To(Equal(0))
diff --git a/test/e2e/pod_infra_container_test.go b/test/e2e/pod_infra_container_test.go
index 161bf7f9c..ed5002ca7 100644
--- a/test/e2e/pod_infra_container_test.go
+++ b/test/e2e/pod_infra_container_test.go
@@ -309,4 +309,55 @@ var _ = Describe("Podman pod create", func() {
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
})
+
+ It("podman run in pod starts infra", func() {
+ session := podmanTest.Podman([]string{"pod", "create"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ podID := session.OutputToString()
+
+ result := podmanTest.Podman([]string{"ps", "-aq"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ infraID := result.OutputToString()
+
+ result = podmanTest.Podman([]string{"run", "--pod", podID, "-d", ALPINE, "top"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+
+ result = podmanTest.Podman([]string{"ps", "-aq"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0))
+
+ Expect(result.OutputToString()).To(ContainSubstring(infraID))
+ })
+
+ It("podman start in pod starts infra", func() {
+ session := podmanTest.Podman([]string{"pod", "create"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ podID := session.OutputToString()
+
+ result := podmanTest.Podman([]string{"ps", "-aq"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ infraID := result.OutputToString()
+
+ result = podmanTest.Podman([]string{"create", "--pod", podID, ALPINE, "ls"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ ctrID := result.OutputToString()
+
+ result = podmanTest.Podman([]string{"start", ctrID})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+
+ result = podmanTest.Podman([]string{"ps", "-aq"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0))
+
+ Expect(result.OutputToString()).To(ContainSubstring(infraID))
+ })
})
diff --git a/test/e2e/pod_start_test.go b/test/e2e/pod_start_test.go
index 77e8b586d..ce693012d 100644
--- a/test/e2e/pod_start_test.go
+++ b/test/e2e/pod_start_test.go
@@ -136,6 +136,5 @@ var _ = Describe("Podman pod start", func() {
session = podmanTest.Podman([]string{"pod", "start", podid, "doesnotexist"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(125))
- Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
})
})
diff --git a/test/e2e/pod_stats_test.go b/test/e2e/pod_stats_test.go
index 43d089a24..e330c3a39 100644
--- a/test/e2e/pod_stats_test.go
+++ b/test/e2e/pod_stats_test.go
@@ -147,5 +147,28 @@ var _ = Describe("Podman pod stats", func() {
Expect(stats.ExitCode()).To(Equal(0))
Expect(stats.IsJSONOutputValid()).To(BeTrue())
})
+ It("podman stats with GO template", func() {
+ _, ec, podid := podmanTest.CreatePod("")
+ Expect(ec).To(Equal(0))
+
+ session := podmanTest.RunTopContainerInPod("", podid)
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.CID}} {{.Pod}} {{.Mem}} {{.MemUsage}} {{.CPU}} {{.NetIO}} {{.BlockIO}} {{.PIDS}} {{.Pod}}\""})
+ stats.WaitWithDefaultTimeout()
+ Expect(stats.ExitCode()).To(Equal(0))
+ })
+
+ It("podman stats with invalid GO template", func() {
+ _, ec, podid := podmanTest.CreatePod("")
+ Expect(ec).To(Equal(0))
+
+ session := podmanTest.RunTopContainerInPod("", podid)
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.ID}} \""})
+ stats.WaitWithDefaultTimeout()
+ Expect(stats.ExitCode()).ToNot(Equal(0))
+ })
})
diff --git a/test/e2e/pod_stop_test.go b/test/e2e/pod_stop_test.go
index b3d7df252..38f118964 100644
--- a/test/e2e/pod_stop_test.go
+++ b/test/e2e/pod_stop_test.go
@@ -137,6 +137,5 @@ var _ = Describe("Podman pod stop", func() {
session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(125))
- Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
})
})
diff --git a/test/e2e/pull_test.go b/test/e2e/pull_test.go
index bfae15152..faad8202e 100644
--- a/test/e2e/pull_test.go
+++ b/test/e2e/pull_test.go
@@ -163,4 +163,20 @@ var _ = Describe("Podman pull", func() {
Expect(pull.OutputToString()).To(ContainSubstring(shortImageId))
})
+
+ It("podman pull check all tags", func() {
+ session := podmanTest.Podman([]string{"pull", "--all-tags", "alpine"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.LineInOuputStartsWith("Pulled Images:")).To(BeTrue())
+
+ session = podmanTest.Podman([]string{"images"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 4))
+
+ rmi := podmanTest.Podman([]string{"rmi", "-a", "-f"})
+ rmi.WaitWithDefaultTimeout()
+ Expect(rmi.ExitCode()).To(Equal(0))
+ })
})
diff --git a/test/e2e/restart_test.go b/test/e2e/restart_test.go
index 3c77444d8..5c914a367 100644
--- a/test/e2e/restart_test.go
+++ b/test/e2e/restart_test.go
@@ -151,7 +151,7 @@ var _ = Describe("Podman restart", func() {
startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"})
startTime.WaitWithDefaultTimeout()
- session := podmanTest.Podman([]string{"restart", "-all"})
+ session := podmanTest.Podman([]string{"restart", "--all"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"})
diff --git a/test/e2e/rm_test.go b/test/e2e/rm_test.go
index bc1431bce..71dacfa80 100644
--- a/test/e2e/rm_test.go
+++ b/test/e2e/rm_test.go
@@ -128,4 +128,9 @@ var _ = Describe("Podman rm", func() {
Expect(podmanTest.NumberOfContainers()).To(Equal(1))
})
+ It("podman rm bogus container", func() {
+ session := podmanTest.Podman([]string{"rm", "bogus"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(1))
+ })
})
diff --git a/test/e2e/rmi_test.go b/test/e2e/rmi_test.go
index c160e1bc5..dcbda2df4 100644
--- a/test/e2e/rmi_test.go
+++ b/test/e2e/rmi_test.go
@@ -36,7 +36,7 @@ var _ = Describe("Podman rmi", func() {
It("podman rmi bogus image", func() {
session := podmanTest.Podman([]string{"rmi", "debian:6.0.10"})
session.WaitWithDefaultTimeout()
- Expect(session.ExitCode()).To(Equal(125))
+ Expect(session.ExitCode()).To(Equal(1))
})
diff --git a/test/e2e/rootless_test.go b/test/e2e/rootless_test.go
index 2b84d34c9..aa8ed6faa 100644
--- a/test/e2e/rootless_test.go
+++ b/test/e2e/rootless_test.go
@@ -60,7 +60,7 @@ var _ = Describe("Podman rootless", func() {
for _, v := range commands {
env := os.Environ()
env = append(env, "USER=foo")
- cmd := podmanTest.PodmanAsUser([]string{v}, 1000, 1000, env)
+ cmd := podmanTest.PodmanAsUser([]string{v}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
}
@@ -128,13 +128,13 @@ var _ = Describe("Podman rootless", func() {
env = append(env, "PODMAN_ALLOW_SINGLE_ID_MAPPING_IN_USERNS=1")
env = append(env, "USER=foo")
- cmd := rootlessTest.PodmanAsUser([]string{"pod", "create", "--infra=false"}, 1000, 1000, env)
+ cmd := rootlessTest.PodmanAsUser([]string{"pod", "create", "--infra=false"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
podId := cmd.OutputToString()
args := []string{"run", "--pod", podId, "--rootfs", mountPath, "echo", "hello"}
- cmd = rootlessTest.PodmanAsUser(args, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser(args, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
Expect(cmd.LineInOutputContains("hello")).To(BeTrue())
@@ -158,7 +158,7 @@ var _ = Describe("Podman rootless", func() {
env = append(env, fmt.Sprintf("XDG_RUNTIME_DIR=%s", xdgRuntimeDir))
env = append(env, fmt.Sprintf("HOME=%s", home))
env = append(env, "USER=foo")
- cmd := podmanTest.PodmanAsUser([]string{"search", "docker.io/busybox"}, 1000, 1000, env)
+ cmd := podmanTest.PodmanAsUser([]string{"search", "docker.io/busybox"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
})
@@ -175,65 +175,65 @@ var _ = Describe("Podman rootless", func() {
allArgs := append([]string{"run"}, args...)
allArgs = append(allArgs, "--rootfs", mountPath, "echo", "hello")
- cmd := rootlessTest.PodmanAsUser(allArgs, 1000, 1000, env)
+ cmd := rootlessTest.PodmanAsUser(allArgs, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
Expect(cmd.LineInOutputContains("hello")).To(BeTrue())
- cmd = rootlessTest.PodmanAsUser([]string{"rm", "-l", "-f"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"rm", "-l", "-f"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
allArgs = append([]string{"run", "-d"}, args...)
allArgs = append(allArgs, "--security-opt", "seccomp=unconfined", "--rootfs", mountPath, "top")
- cmd = rootlessTest.PodmanAsUser(allArgs, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser(allArgs, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- cmd = rootlessTest.PodmanAsUser([]string{"restart", "-l", "-t", "0"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"restart", "-l", "-t", "0"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
canUseExec := canExec()
if canUseExec {
- cmd = rootlessTest.PodmanAsUser([]string{"top", "-l"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"top", "-l"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
}
- cmd = rootlessTest.PodmanAsUser([]string{"rm", "-l", "-f"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"rm", "-l", "-f"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
allArgs = append([]string{"run", "-d"}, args...)
allArgs = append(allArgs, "--security-opt", "seccomp=unconfined", "--rootfs", mountPath, "unshare", "-r", "unshare", "-r", "top")
- cmd = rootlessTest.PodmanAsUser(allArgs, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser(allArgs, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- cmd = rootlessTest.PodmanAsUser([]string{"stop", "-l", "-t", "0"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"stop", "-l", "-t", "0"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- cmd = rootlessTest.PodmanAsUser([]string{"inspect", "-l", "--type", "container", "--format", "{{ .State.Status }}"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"inspect", "-l", "--type", "container", "--format", "{{ .State.Status }}"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.LineInOutputContains("exited")).To(BeTrue())
- cmd = rootlessTest.PodmanAsUser([]string{"start", "-l"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"start", "-l"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- cmd = rootlessTest.PodmanAsUser([]string{"stop", "-l", "-t", "0"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"stop", "-l", "-t", "0"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- cmd = rootlessTest.PodmanAsUser([]string{"start", "-l"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"start", "-l"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
if len(args) == 0 {
- cmd = rootlessTest.PodmanAsUser([]string{"inspect", "-l"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"inspect", "-l"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
data := cmd.InspectContainerToJSON()
@@ -244,24 +244,23 @@ var _ = Describe("Podman rootless", func() {
Skip("ioctl(NS_GET_PARENT) not supported.")
}
- cmd = rootlessTest.PodmanAsUser([]string{"exec", "-l", "echo", "hello"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"exec", "-l", "echo", "hello"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
Expect(cmd.LineInOutputContains("hello")).To(BeTrue())
- cmd = rootlessTest.PodmanAsUser([]string{"ps", "-l", "-q"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"ps", "-l", "-q"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
cid := cmd.OutputToString()
- cmd = rootlessTest.PodmanAsUser([]string{"exec", "-l", "sh", "-c", "echo SeCreTMessage > /file"}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"exec", "-l", "sh", "-c", "echo SeCreTMessage > /file"}, 1000, 1000, "", env)
cmd.WaitWithDefaultTimeout()
Expect(cmd.ExitCode()).To(Equal(0))
- path := filepath.Join(home, "export.tar")
- cmd = rootlessTest.PodmanAsUser([]string{"export", "-o", path, cid}, 1000, 1000, env)
+ cmd = rootlessTest.PodmanAsUser([]string{"export", "-o", "export.tar", cid}, 1000, 1000, home, env)
cmd.WaitWithDefaultTimeout()
- content, err := ioutil.ReadFile(path)
+ content, err := ioutil.ReadFile(filepath.Join(home, "export.tar"))
Expect(err).To(BeNil())
Expect(strings.Contains(string(content), "SeCreTMessage")).To(BeTrue())
}
diff --git a/test/e2e/run_networking_test.go b/test/e2e/run_networking_test.go
index 1c09a4d0b..a07e4d047 100644
--- a/test/e2e/run_networking_test.go
+++ b/test/e2e/run_networking_test.go
@@ -36,19 +36,19 @@ var _ = Describe("Podman run networking", func() {
})
It("podman run network connection with default bridge", func() {
- session := podmanTest.Podman([]string{"run", "-dt", ALPINE, "wget", "www.projectatomic.io"})
+ session := podmanTest.Podman([]string{"run", "-dt", ALPINE, "wget", "www.podman.io"})
session.Wait(90)
Expect(session.ExitCode()).To(Equal(0))
})
It("podman run network connection with host", func() {
- session := podmanTest.Podman([]string{"run", "-dt", "--network", "host", ALPINE, "wget", "www.projectatomic.io"})
+ session := podmanTest.Podman([]string{"run", "-dt", "--network", "host", ALPINE, "wget", "www.podman.io"})
session.Wait(90)
Expect(session.ExitCode()).To(Equal(0))
})
It("podman run network connection with loopback", func() {
- session := podmanTest.Podman([]string{"run", "-dt", "--network", "host", ALPINE, "wget", "www.projectatomic.io"})
+ session := podmanTest.Podman([]string{"run", "-dt", "--network", "host", ALPINE, "wget", "www.podman.io"})
session.Wait(90)
Expect(session.ExitCode()).To(Equal(0))
})
@@ -178,4 +178,37 @@ var _ = Describe("Podman run networking", func() {
Expect(exec4.ExitCode()).To(Equal(0))
Expect(exec4.OutputToString()).To(ContainSubstring("192.0.2.2 test1"))
})
+
+ It("podman run network in user created network namespace", func() {
+ if Containerized() {
+ Skip("Can not be run within a container.")
+ }
+ SystemExec("ip", []string{"netns", "add", "xxx"})
+ session := podmanTest.Podman([]string{"run", "-dt", "--net", "ns:/run/netns/xxx", ALPINE, "wget", "www.podman.io"})
+ session.Wait(90)
+ Expect(session.ExitCode()).To(Equal(0))
+ SystemExec("ip", []string{"netns", "delete", "xxx"})
+ })
+
+ It("podman run n user created network namespace with resolv.conf", func() {
+ if Containerized() {
+ Skip("Can not be run within a container.")
+ }
+ SystemExec("ip", []string{"netns", "add", "xxx"})
+ SystemExec("mkdir", []string{"-p", "/etc/netns/xxx"})
+ SystemExec("bash", []string{"-c", "echo nameserver 11.11.11.11 > /etc/netns/xxx/resolv.conf"})
+ session := podmanTest.Podman([]string{"run", "--net", "ns:/run/netns/xxx", ALPINE, "cat", "/etc/resolv.conf"})
+ session.Wait(90)
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(ContainSubstring("11.11.11.11"))
+ SystemExec("ip", []string{"netns", "delete", "xxx"})
+ SystemExec("rm", []string{"-rf", "/etc/netns/xxx"})
+ })
+
+ It("podman run network in bogus user created network namespace", func() {
+ session := podmanTest.Podman([]string{"run", "-dt", "--net", "ns:/run/netns/xxy", ALPINE, "wget", "www.podman.io"})
+ session.Wait(90)
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ Expect(session.ErrorToString()).To(ContainSubstring("stat /run/netns/xxy: no such file or directory"))
+ })
})
diff --git a/test/e2e/run_test.go b/test/e2e/run_test.go
index 22a36bb6c..6bd49de33 100644
--- a/test/e2e/run_test.go
+++ b/test/e2e/run_test.go
@@ -322,7 +322,7 @@ var _ = Describe("Podman run", func() {
os.Setenv("NOTIFY_SOCKET", sock)
defer os.Unsetenv("NOTIFY_SOCKET")
- session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "NOTIFY_SOCKET"})
+ session := podmanTest.Podman([]string{"run", ALPINE, "printenv", "NOTIFY_SOCKET"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 0))
diff --git a/test/e2e/save_test.go b/test/e2e/save_test.go
index b354492b8..9f64e49a7 100644
--- a/test/e2e/save_test.go
+++ b/test/e2e/save_test.go
@@ -1,5 +1,3 @@
-// +build !remoteclient
-
package integration
import (
diff --git a/test/e2e/search_test.go b/test/e2e/search_test.go
index 1438fd97b..167f8fa25 100644
--- a/test/e2e/search_test.go
+++ b/test/e2e/search_test.go
@@ -63,10 +63,10 @@ var _ = Describe("Podman search", func() {
})
It("podman search single registry flag", func() {
- search := podmanTest.Podman([]string{"search", "registry.access.redhat.com/rhel7"})
+ search := podmanTest.Podman([]string{"search", "quay.io/libpod/gate:latest"})
search.WaitWithDefaultTimeout()
Expect(search.ExitCode()).To(Equal(0))
- Expect(search.LineInOutputContains("registry.access.redhat.com/rhel7")).To(BeTrue())
+ Expect(search.LineInOutputContains("quay.io/libpod/gate")).To(BeTrue())
})
It("podman search format flag", func() {
diff --git a/test/e2e/volume_create_test.go b/test/e2e/volume_create_test.go
index 9e525786e..50ee63f2a 100644
--- a/test/e2e/volume_create_test.go
+++ b/test/e2e/volume_create_test.go
@@ -1,5 +1,3 @@
-// +build !remoteclient
-
package integration
import (
diff --git a/test/e2e/volume_inspect_test.go b/test/e2e/volume_inspect_test.go
index aacdbe8be..d0d5a601e 100644
--- a/test/e2e/volume_inspect_test.go
+++ b/test/e2e/volume_inspect_test.go
@@ -1,5 +1,3 @@
-// +build !remoteclient
-
package integration
import (
diff --git a/test/e2e/volume_ls_test.go b/test/e2e/volume_ls_test.go
index d2ee558c1..119d29d9b 100644
--- a/test/e2e/volume_ls_test.go
+++ b/test/e2e/volume_ls_test.go
@@ -1,5 +1,3 @@
-// +build !remoteclient
-
package integration
import (
diff --git a/test/e2e/volume_rm_test.go b/test/e2e/volume_rm_test.go
index 295b290e4..6a1e7d0e8 100644
--- a/test/e2e/volume_rm_test.go
+++ b/test/e2e/volume_rm_test.go
@@ -1,5 +1,3 @@
-// +build !remoteclient
-
package integration
import (
@@ -50,6 +48,7 @@ var _ = Describe("Podman volume rm", func() {
})
It("podman rm with --force flag", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"create", "-v", "myvol:/myvol", ALPINE, "ls"})
cid := session.OutputToString()
session.WaitWithDefaultTimeout()
diff --git a/test/trust_set_test.json b/test/trust_set_test.json
new file mode 100644
index 000000000..661e65922
--- /dev/null
+++ b/test/trust_set_test.json
@@ -0,0 +1,8 @@
+{
+ "default": [
+ {
+ "type": "insecureAcceptAnything"
+ }
+ ],
+ "transports": null
+} \ No newline at end of file
diff --git a/test/utils/podmantest_test.go b/test/utils/podmantest_test.go
index 60e3e2a97..28f294a94 100644
--- a/test/utils/podmantest_test.go
+++ b/test/utils/podmantest_test.go
@@ -23,7 +23,7 @@ var _ = Describe("PodmanTest test", func() {
FakeOutputs["check"] = []string{"check"}
os.Setenv("HOOK_OPTION", "hook_option")
env := os.Environ()
- session := podmanTest.PodmanAsUserBase([]string{"check"}, 1000, 1000, env)
+ session := podmanTest.PodmanAsUserBase([]string{"check"}, 1000, 1000, "", env)
os.Unsetenv("HOOK_OPTION")
session.WaitWithDefaultTimeout()
Expect(session.Command.Process).ShouldNot(BeNil())
diff --git a/test/utils/utils.go b/test/utils/utils.go
index 23dcb95e3..098779321 100644
--- a/test/utils/utils.go
+++ b/test/utils/utils.go
@@ -61,7 +61,7 @@ func (p *PodmanTest) MakeOptions(args []string) []string {
// PodmanAsUserBase exec podman as user. uid and gid is set for credentials useage. env is used
// to record the env for debugging
-func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, env []string) *PodmanSession {
+func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, cwd string, env []string) *PodmanSession {
var command *exec.Cmd
podmanOptions := p.MakeOptions(args)
podmanBinary := p.PodmanBinary
@@ -74,14 +74,18 @@ func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, env []stri
fmt.Printf("Running: (env: %v) %s %s\n", env, podmanBinary, strings.Join(podmanOptions, " "))
}
if uid != 0 || gid != 0 {
- nsEnterOpts := append([]string{"--userspec", fmt.Sprintf("%d:%d", uid, gid), "/", podmanBinary}, podmanOptions...)
- command = exec.Command("chroot", nsEnterOpts...)
+ pythonCmd := fmt.Sprintf("import os; import sys; uid = %d; gid = %d; cwd = '%s'; os.setgid(gid); os.setuid(uid); os.chdir(cwd) if len(cwd)>0 else True; os.execv(sys.argv[1], sys.argv[1:])", gid, uid, cwd)
+ nsEnterOpts := append([]string{"-c", pythonCmd, podmanBinary}, podmanOptions...)
+ command = exec.Command("python", nsEnterOpts...)
} else {
command = exec.Command(podmanBinary, podmanOptions...)
}
if env != nil {
command.Env = env
}
+ if cwd != "" {
+ command.Dir = cwd
+ }
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
if err != nil {
@@ -92,7 +96,7 @@ func (p *PodmanTest) PodmanAsUserBase(args []string, uid, gid uint32, env []stri
// PodmanBase exec podman with default env.
func (p *PodmanTest) PodmanBase(args []string) *PodmanSession {
- return p.PodmanAsUserBase(args, 0, 0, nil)
+ return p.PodmanAsUserBase(args, 0, 0, "", nil)
}
// WaitForContainer waits on a started container
@@ -270,7 +274,7 @@ func (s *PodmanSession) LineInOuputStartsWith(term string) bool {
}
//LineInOutputContains returns true if a line in a
-// session output starts with the supplied string
+// session output contains the supplied string
func (s *PodmanSession) LineInOutputContains(term string) bool {
for _, i := range s.OutputToStringArray() {
if strings.Contains(i, term) {