summaryrefslogtreecommitdiff
path: root/test/system/libpod_suite_test.go
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2019-02-20 13:19:20 -0700
committerEd Santiago <santiago@redhat.com>2019-03-07 13:09:54 -0700
commit681eae9bcc856f8dad107765a97c29d0fe093d4a (patch)
treea8224181c5b01ebfece7e309117b9bc1d4e5a9a0 /test/system/libpod_suite_test.go
parent1b253cf73a360557196213684cec63b37407ed7c (diff)
downloadpodman-681eae9bcc856f8dad107765a97c29d0fe093d4a.tar.gz
podman-681eae9bcc856f8dad107765a97c29d0fe093d4a.tar.bz2
podman-681eae9bcc856f8dad107765a97c29d0fe093d4a.zip
new system tests under BATS
Initial attempt at writing a framework for podman system tests. The idea is to define a useful set of primitives that will make it easy to write actual tests and to interpret results of failing ones. This is a proof-of-concept right now; only a small number of tests, by no means comprehensive. I am requesting review in order to find showstopper problems: reasons why this approach cannot work. Should there be none, we can work toward running these as gating tests for Fedora and RHEL8. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test/system/libpod_suite_test.go')
-rw-r--r--test/system/libpod_suite_test.go217
1 files changed, 0 insertions, 217 deletions
diff --git a/test/system/libpod_suite_test.go b/test/system/libpod_suite_test.go
deleted file mode 100644
index 5de50e4e7..000000000
--- a/test/system/libpod_suite_test.go
+++ /dev/null
@@ -1,217 +0,0 @@
-package system
-
-import (
- "fmt"
- "os"
- "strings"
- "testing"
-
- . "github.com/containers/libpod/test/utils"
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-)
-
-var (
- PODMAN_BINARY string
- GLOBALOPTIONS = []string{"--cgroup-manager",
- "--cni-config-dir",
- "--config", "-c",
- "--conmon",
- "--cpu-profile",
- "--log-level",
- "--root",
- "--tmpdir",
- "--runroot",
- "--runtime",
- "--storage-driver",
- "--storage-opt",
- "--syslog",
- }
- PODMAN_SUBCMD = []string{"attach",
- "commit",
- "container",
- "build",
- "create",
- "diff",
- "exec",
- "export",
- "history",
- "image",
- "images",
- "import",
- "info",
- "inspect",
- "kill",
- "load",
- "login",
- "logout",
- "logs",
- "mount",
- "pause",
- "ps",
- "pod",
- "port",
- "pull",
- "push",
- "restart",
- "rm",
- "rmi",
- "run",
- "save",
- "search",
- "start",
- "stats",
- "stop",
- "tag",
- "top",
- "umount",
- "unpause",
- "version",
- "wait",
- "h",
- }
- INTEGRATION_ROOT string
- ARTIFACT_DIR = "/tmp/.artifacts"
- ALPINE = "docker.io/library/alpine:latest"
- BB = "docker.io/library/busybox:latest"
- BB_GLIBC = "docker.io/library/busybox:glibc"
- fedoraMinimal = "registry.fedoraproject.org/fedora-minimal:latest"
- nginx = "quay.io/baude/alpine_nginx:latest"
- redis = "docker.io/library/redis:alpine"
- registry = "docker.io/library/registry:2"
- infra = "k8s.gcr.io/pause:3.1"
- defaultWaitTimeout = 90
-)
-
-// PodmanTestSystem struct for command line options
-type PodmanTestSystem struct {
- PodmanTest
- GlobalOptions map[string]string
- PodmanCmdOptions map[string][]string
-}
-
-// TestLibpod ginkgo master function
-func TestLibpod(t *testing.T) {
- RegisterFailHandler(Fail)
- RunSpecs(t, "Libpod Suite")
-}
-
-var _ = BeforeSuite(func() {
-})
-
-// PodmanTestCreate creates a PodmanTestSystem instance for the tests
-func PodmanTestCreate(tempDir string) *PodmanTestSystem {
- var envKey string
- globalOptions := make(map[string]string)
- podmanCmdOptions := make(map[string][]string)
-
- for _, n := range GLOBALOPTIONS {
- envKey = strings.Replace(strings.ToUpper(strings.Trim(n, "-")), "-", "_", -1)
- if isEnvSet(envKey) {
- globalOptions[n] = os.Getenv(envKey)
- }
- }
-
- for _, n := range PODMAN_SUBCMD {
- envKey = strings.Replace("PODMAN_SUBCMD_OPTIONS", "SUBCMD", strings.ToUpper(n), -1)
- if isEnvSet(envKey) {
- podmanCmdOptions[n] = strings.Split(os.Getenv(envKey), " ")
- }
- }
-
- podmanBinary := "podman"
- if os.Getenv("PODMAN_BINARY") != "" {
- podmanBinary = os.Getenv("PODMAN_BINARY")
- }
-
- p := &PodmanTestSystem{
- PodmanTest: PodmanTest{
- PodmanBinary: podmanBinary,
- ArtifactPath: ARTIFACT_DIR,
- TempDir: tempDir,
- },
- GlobalOptions: globalOptions,
- PodmanCmdOptions: podmanCmdOptions,
- }
-
- p.PodmanMakeOptions = p.makeOptions
-
- return p
-}
-
-func (p *PodmanTestSystem) Podman(args []string) *PodmanSession {
- return p.PodmanBase(args)
-}
-
-//MakeOptions assembles all the podman options
-func (p *PodmanTestSystem) makeOptions(args []string) []string {
- var addOptions, subArgs []string
- for _, n := range GLOBALOPTIONS {
- if p.GlobalOptions[n] != "" {
- addOptions = append(addOptions, n, p.GlobalOptions[n])
- }
- }
-
- if len(args) == 0 {
- return addOptions
- }
-
- subCmd := args[0]
- addOptions = append(addOptions, subCmd)
- if subCmd == "unmount" {
- subCmd = "umount"
- }
- if subCmd == "help" {
- subCmd = "h"
- }
-
- if _, ok := p.PodmanCmdOptions[subCmd]; ok {
- m := make(map[string]bool)
- subArgs = p.PodmanCmdOptions[subCmd]
- for i := 0; i < len(subArgs); i++ {
- m[subArgs[i]] = true
- }
- for i := 1; i < len(args); i++ {
- if _, ok := m[args[i]]; !ok {
- subArgs = append(subArgs, args[i])
- }
- }
- } else {
- subArgs = args[1:]
- }
-
- addOptions = append(addOptions, subArgs...)
-
- return addOptions
-}
-
-// Cleanup cleans up the temporary store
-func (p *PodmanTestSystem) Cleanup() {
- // Remove all containers
- stopall := p.Podman([]string{"stop", "-a", "--timeout", "0"})
- stopall.WaitWithDefaultTimeout()
-
- session := p.Podman([]string{"rm", "-fa"})
- session.Wait(90)
- // Nuke tempdir
- if err := os.RemoveAll(p.TempDir); err != nil {
- fmt.Printf("%q\n", err)
- }
-}
-
-// CleanupPod cleans up the temporary store
-func (p *PodmanTestSystem) CleanupPod() {
- // Remove all containers
- session := p.Podman([]string{"pod", "rm", "-fa"})
- session.Wait(90)
- // Nuke tempdir
- if err := os.RemoveAll(p.TempDir); err != nil {
- fmt.Printf("%q\n", err)
- }
-}
-
-// Check if the key is set in Env
-func isEnvSet(key string) bool {
- _, set := os.LookupEnv(key)
- return set
-}