summaryrefslogtreecommitdiff
path: root/test/e2e/libpod_suite_test.go
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2018-07-31 17:16:08 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-02 12:40:14 +0000
commita6de23278a6e5b7f27c093eb19c201b77b7c4416 (patch)
tree18226712362c752832a61bc772e7902338b50251 /test/e2e/libpod_suite_test.go
parent3d1449b2cccdf6c84248c82758b0850c971d05be (diff)
downloadpodman-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.go74
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