mirror of
https://github.com/containers/podman.git
synced 2025-10-25 18:25:59 +08:00
When there is a podman pause process running the local podman ginkgo tests will join the usernamespace. This because pkg/rootless will automatically join the ns on startup when possible. To fix this we need to use the remote build tag which disables that behavior. However since the remote tag is also used in the e2e test itself we would always run remote tests which is wrong, this is fixed by using a new `remote_testing` tag for the test. see discussion here: https://github.com/containers/podman/pull/16309#discussion_r1006166930 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
83 lines
2.5 KiB
Go
83 lines
2.5 KiB
Go
//go:build !remote_testing
|
|
// +build !remote_testing
|
|
|
|
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/containers/podman/v4/pkg/rootless"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
func IsRemote() bool {
|
|
return false
|
|
}
|
|
|
|
// Podman is the exec call to podman on the filesystem
|
|
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
|
|
podmanSession := p.PodmanBase(args, false, false)
|
|
return &PodmanSessionIntegration{podmanSession}
|
|
}
|
|
|
|
// PodmanSystemdScope runs the podman command in a new systemd scope
|
|
func (p *PodmanTestIntegration) PodmanSystemdScope(args []string) *PodmanSessionIntegration {
|
|
wrapper := []string{"systemd-run", "--scope"}
|
|
if rootless.IsRootless() {
|
|
wrapper = []string{"systemd-run", "--scope", "--user"}
|
|
}
|
|
podmanSession := p.PodmanAsUserBase(args, 0, 0, "", nil, false, false, wrapper, nil)
|
|
return &PodmanSessionIntegration{podmanSession}
|
|
}
|
|
|
|
// PodmanExtraFiles is the exec call to podman on the filesystem and passes down extra files
|
|
func (p *PodmanTestIntegration) PodmanExtraFiles(args []string, extraFiles []*os.File) *PodmanSessionIntegration {
|
|
podmanSession := p.PodmanAsUserBase(args, 0, 0, "", nil, false, false, nil, extraFiles)
|
|
return &PodmanSessionIntegration{podmanSession}
|
|
}
|
|
|
|
func (p *PodmanTestIntegration) setDefaultRegistriesConfigEnv() {
|
|
defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf")
|
|
err := os.Setenv("CONTAINERS_REGISTRIES_CONF", defaultFile)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
}
|
|
|
|
func (p *PodmanTestIntegration) setRegistriesConfigEnv(b []byte) {
|
|
outfile := filepath.Join(p.TempDir, "registries.conf")
|
|
os.Setenv("CONTAINERS_REGISTRIES_CONF", outfile)
|
|
err := os.WriteFile(outfile, b, 0644)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
}
|
|
|
|
func resetRegistriesConfigEnv() {
|
|
os.Setenv("CONTAINERS_REGISTRIES_CONF", "")
|
|
}
|
|
|
|
func PodmanTestCreate(tempDir string) *PodmanTestIntegration {
|
|
return PodmanTestCreateUtil(tempDir, false)
|
|
}
|
|
|
|
// RestoreArtifact puts the cached image into our test store
|
|
func (p *PodmanTestIntegration) RestoreArtifact(image string) error {
|
|
tarball := imageTarPath(image)
|
|
if _, err := os.Stat(tarball); err == nil {
|
|
fmt.Printf("Restoring %s...\n", image)
|
|
restore := p.PodmanNoEvents([]string{"load", "-q", "-i", tarball})
|
|
restore.Wait(90)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PodmanTestIntegration) StopRemoteService() {}
|
|
|
|
// We don't support running API service when local
|
|
func (p *PodmanTestIntegration) StartRemoteService() {
|
|
}
|
|
|
|
// Just a stub for compiling with `!remote`.
|
|
func getRemoteOptions(p *PodmanTestIntegration, args []string) []string {
|
|
return nil
|
|
}
|