summaryrefslogtreecommitdiff
path: root/test/e2e/libpod_suite_remoteclient_test.go
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2019-01-14 13:23:13 -0600
committerbaude <bbaude@redhat.com>2019-01-14 14:51:32 -0600
commitb30a56c15613428c80033b97e81db7d3d8ed84e6 (patch)
treea9aac949e6b94cd46557fa82f29ca30aa7bdedff /test/e2e/libpod_suite_remoteclient_test.go
parent30f115a96034275fc7136b1ec576d57ec2cf099e (diff)
downloadpodman-b30a56c15613428c80033b97e81db7d3d8ed84e6.tar.gz
podman-b30a56c15613428c80033b97e81db7d3d8ed84e6.tar.bz2
podman-b30a56c15613428c80033b97e81db7d3d8ed84e6.zip
Run integrations test with remote-client
Add the ability to run the integration (ginkgo) suite using the remote client. Only the images_test.go file is run right now; all the rest are isolated with a // +build !remotelinux. As more content is developed for the remote client, we can unblock the files and just block single tests as needed. Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'test/e2e/libpod_suite_remoteclient_test.go')
-rw-r--r--test/e2e/libpod_suite_remoteclient_test.go153
1 files changed, 153 insertions, 0 deletions
diff --git a/test/e2e/libpod_suite_remoteclient_test.go b/test/e2e/libpod_suite_remoteclient_test.go
new file mode 100644
index 000000000..211fc1ebc
--- /dev/null
+++ b/test/e2e/libpod_suite_remoteclient_test.go
@@ -0,0 +1,153 @@
+// +build remoteclient
+
+package integration
+
+import (
+ "fmt"
+ "github.com/containers/libpod/libpod"
+ "github.com/containers/libpod/pkg/inspect"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+)
+
+// Cleanup cleans up the temporary store
+func (p *PodmanTestIntegration) Cleanup() {
+ p.StopVarlink()
+ // TODO
+ // Stop all containers
+ // Rm all containers
+ // Rm all images
+
+ if err := os.RemoveAll(p.TempDir); err != nil {
+ fmt.Printf("%q\n", err)
+ }
+
+ // Clean up the registries configuration file ENV variable set in Create
+ resetRegistriesConfigEnv()
+}
+
+// Podman is the exec call to podman on the filesystem
+func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
+ podmanSession := p.PodmanBase(args)
+ return &PodmanSessionIntegration{podmanSession}
+}
+
+//RunTopContainer runs a simple container in the background that
+// runs top. If the name passed != "", it will have a name
+func (p *PodmanTestIntegration) RunTopContainer(name string) *PodmanSessionIntegration {
+ // TODO
+ return nil
+}
+
+//RunLsContainer runs a simple container in the background that
+// simply runs ls. If the name passed != "", it will have a name
+func (p *PodmanTestIntegration) RunLsContainer(name string) (*PodmanSessionIntegration, int, string) {
+ // TODO
+ return nil, 0, ""
+}
+
+// InspectImageJSON takes the session output of an inspect
+// image and returns json
+func (s *PodmanSessionIntegration) InspectImageJSON() []inspect.ImageData {
+ // TODO
+ return nil
+}
+
+func (p *PodmanTestIntegration) setDefaultRegistriesConfigEnv() {
+ defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf")
+ os.Setenv("REGISTRIES_CONFIG_PATH", defaultFile)
+}
+
+func (p *PodmanTestIntegration) setRegistriesConfigEnv(b []byte) {
+ outfile := filepath.Join(p.TempDir, "registries.conf")
+ os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
+ ioutil.WriteFile(outfile, b, 0644)
+}
+
+func resetRegistriesConfigEnv() {
+ os.Setenv("REGISTRIES_CONFIG_PATH", "")
+}
+
+// InspectContainerToJSON takes the session output of an inspect
+// container and returns json
+func (s *PodmanSessionIntegration) InspectContainerToJSON() []inspect.ContainerData {
+ // TODO
+ return nil
+}
+
+// CreatePod creates a pod with no infra container
+// it optionally takes a pod name
+func (p *PodmanTestIntegration) CreatePod(name string) (*PodmanSessionIntegration, int, string) {
+ // TODO
+ return nil, 0, ""
+}
+
+func (p *PodmanTestIntegration) RunTopContainerInPod(name, pod string) *PodmanSessionIntegration {
+ // TODO
+ return nil
+}
+
+// BuildImage uses podman build and buildah to build an image
+// called imageName based on a string dockerfile
+func (p *PodmanTestIntegration) BuildImage(dockerfile, imageName string, layers string) {
+ // TODO
+}
+
+// CleanupPod cleans up the temporary store
+func (p *PodmanTestIntegration) CleanupPod() {
+ // TODO
+}
+
+// InspectPodToJSON takes the sessions output from a pod inspect and returns json
+func (s *PodmanSessionIntegration) InspectPodToJSON() libpod.PodInspect {
+ // TODO
+ return libpod.PodInspect{}
+}
+func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSessionIntegration, int, string) {
+ // TODO
+ return nil, 0, ""
+}
+
+// PullImages pulls multiple images
+func (p *PodmanTestIntegration) PullImages(images []string) error {
+ // TODO
+ return libpod.ErrNotImplemented
+}
+
+// PodmanPID execs podman and returns its PID
+func (p *PodmanTestIntegration) PodmanPID(args []string) (*PodmanSessionIntegration, int) {
+ // TODO
+ return nil, 0
+}
+
+// CleanupVolume cleans up the temporary store
+func (p *PodmanTestIntegration) CleanupVolume() {
+ // TODO
+}
+
+func PodmanTestCreate(tempDir string) *PodmanTestIntegration {
+ pti := PodmanTestCreateUtil(tempDir, true)
+ pti.StartVarlink()
+ return pti
+}
+
+func (p *PodmanTestIntegration) StartVarlink() {
+ if _, err := os.Stat("/path/to/whatever"); os.IsNotExist(err) {
+ os.MkdirAll("/run/podman", 0755)
+ }
+ args := []string{"varlink", "--timeout", "0", "unix:/run/podman/io.podman"}
+ podmanOptions := p.MakeOptions(args)
+ command := exec.Command(p.PodmanBinary, podmanOptions...)
+ fmt.Printf("Running: %s %s\n", p.PodmanBinary, strings.Join(podmanOptions, " "))
+ command.Start()
+ p.VarlinkSession = command.Process
+}
+
+func (p *PodmanTestIntegration) StopVarlink() {
+ varlinkSession := p.VarlinkSession
+ varlinkSession.Kill()
+ varlinkSession.Wait()
+}