diff options
author | baude <bbaude@redhat.com> | 2018-07-31 17:16:08 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-08-02 12:40:14 +0000 |
commit | a6de23278a6e5b7f27c093eb19c201b77b7c4416 (patch) | |
tree | 18226712362c752832a61bc772e7902338b50251 /test/e2e/libpod_suite_test.go | |
parent | 3d1449b2cccdf6c84248c82758b0850c971d05be (diff) | |
download | podman-a6de23278a6e5b7f27c093eb19c201b77b7c4416.tar.gz podman-a6de23278a6e5b7f27c093eb19c201b77b7c4416.tar.bz2 podman-a6de23278a6e5b7f27c093eb19c201b77b7c4416.zip |
Use REGISTRIES_CONFIG_PATH for all tests
We should not be using the test systems registries.conf file for integration
tests. We should always use a constructed file created specifically for the
integration tests or we stand to have unpredictable results. The beforeTest
function now sets an environment variable pointing to a registries.conf file
in the test's tempdir. That file will container docker.io as a default.
The afterTest function then clears the environment variable.
Signed-off-by: baude <bbaude@redhat.com>
Closes: #1197
Approved by: rhatdan
Diffstat (limited to 'test/e2e/libpod_suite_test.go')
-rw-r--r-- | test/e2e/libpod_suite_test.go | 74 |
1 files changed, 59 insertions, 15 deletions
diff --git a/test/e2e/libpod_suite_test.go b/test/e2e/libpod_suite_test.go index ab09d5004..e95b03cb9 100644 --- a/test/e2e/libpod_suite_test.go +++ b/test/e2e/libpod_suite_test.go @@ -1,6 +1,7 @@ package integration import ( + "bufio" "context" "encoding/json" "fmt" @@ -60,6 +61,12 @@ type PodmanTest struct { TempDir string } +// HostOS is a simple struct for the test os +type HostOS struct { + Distribution string + Version string +} + // TestLibpod ginkgo master function func TestLibpod(t *testing.T) { if reexec.Init() { @@ -91,7 +98,20 @@ var _ = BeforeSuite(func() { os.Exit(1) } } - + host := GetHostDistributionInfo() + if host.Distribution == "rhel" && strings.HasPrefix(host.Version, "7") { + f, err := os.OpenFile("/proc/sys/user/max_user_namespaces", os.O_WRONLY, 0644) + if err != nil { + fmt.Println("Unable to enable userspace on RHEL 7") + os.Exit(1) + } + _, err = f.WriteString("15000") + if err != nil { + fmt.Println("Unable to enable userspace on RHEL 7") + os.Exit(1) + } + f.Close() + } }) // CreateTempDirin @@ -101,6 +121,7 @@ func CreateTempDirInTempDir() (string, error) { // PodmanCreate creates a PodmanTest instance for the tests func PodmanCreate(tempDir string) PodmanTest { + cwd, _ := os.Getwd() podmanBinary := filepath.Join(cwd, "../../bin/podman") @@ -123,7 +144,7 @@ func PodmanCreate(tempDir string) PodmanTest { runCBinary := "/usr/bin/runc" CNIConfigDir := "/etc/cni/net.d" - return PodmanTest{ + p := PodmanTest{ PodmanBinary: podmanBinary, ConmonBinary: conmonBinary, CrioRoot: filepath.Join(tempDir, "crio"), @@ -135,6 +156,10 @@ func PodmanCreate(tempDir string) PodmanTest { ArtifactPath: ARTIFACT_DIR, TempDir: tempDir, } + + // Setup registries.conf ENV variable + p.setDefaultRegistriesConfigEnv() + return p } //MakeOptions assembles all the podman main options @@ -201,6 +226,9 @@ func (p *PodmanTest) Cleanup() { 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() } // CleanupPod cleans up the temporary store @@ -571,24 +599,40 @@ func (p *PodmanTest) BuildImage(dockerfile, imageName string, layers string) { Expect(session.ExitCode()).To(Equal(0)) } -//GetHostDistribution returns the dist in string format. If the -//distribution cannot be determined, an empty string will be returned. -func (p *PodmanTest) GetHostDistribution() string { - content, err := ioutil.ReadFile("/etc/os-release") +//GetHostDistributionInfo returns a struct with its distribution name and version +func GetHostDistributionInfo() HostOS { + f, err := os.Open("/etc/os-release") + defer f.Close() if err != nil { - return "" + return HostOS{} } - for _, line := range content { - if strings.HasPrefix(fmt.Sprintf("%x", line), "ID") { - fields := strings.Split(fmt.Sprintf("%x", line), "=") - if len(fields) < 2 { - return "" - } - return strings.Trim(fields[1], "\"") + l := bufio.NewScanner(f) + host := HostOS{} + for l.Scan() { + if strings.HasPrefix(l.Text(), "ID=") { + host.Distribution = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1) + } + if strings.HasPrefix(l.Text(), "VERSION_ID=") { + host.Version = strings.Replace(strings.TrimSpace(strings.Join(strings.Split(l.Text(), "=")[1:], "")), "\"", "", -1) } } - return "" + return host +} + +func (p *PodmanTest) setDefaultRegistriesConfigEnv() { + defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf") + os.Setenv("REGISTRIES_CONFIG_PATH", defaultFile) +} + +func (p *PodmanTest) 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", "") } // IsKernelNewThan compares the current kernel version to one provided. If |