mirror of
https://github.com/containers/podman.git
synced 2025-05-31 15:42:48 +08:00
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>
This commit is contained in:
153
test/e2e/libpod_suite_remoteclient_test.go
Normal file
153
test/e2e/libpod_suite_remoteclient_test.go
Normal file
@ -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()
|
||||
}
|
Reference in New Issue
Block a user