summaryrefslogtreecommitdiff
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
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
-rw-r--r--test/e2e/libpod_suite_test.go74
-rw-r--r--test/e2e/run_signal_test.go2
-rw-r--r--test/e2e/run_test.go2
-rw-r--r--test/e2e/search_test.go30
-rw-r--r--test/registries.conf2
5 files changed, 70 insertions, 40 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
diff --git a/test/e2e/run_signal_test.go b/test/e2e/run_signal_test.go
index bd00b8aa9..02b6f4941 100644
--- a/test/e2e/run_signal_test.go
+++ b/test/e2e/run_signal_test.go
@@ -63,7 +63,7 @@ var _ = Describe("Podman run with --sig-proxy", func() {
udsPath := filepath.Join(udsDir, "fifo")
syscall.Mkfifo(udsPath, 0600)
- _, pid := podmanTest.PodmanPID([]string{"run", "-it", "-v", fmt.Sprintf("%s:/h", udsDir), fedoraMinimal, "bash", "-c", sigCatch})
+ _, pid := podmanTest.PodmanPID([]string{"run", "-it", "-v", fmt.Sprintf("%s:/h:Z", udsDir), fedoraMinimal, "bash", "-c", sigCatch})
uds, _ := os.OpenFile(udsPath, os.O_RDONLY, 0600)
defer uds.Close()
diff --git a/test/e2e/run_test.go b/test/e2e/run_test.go
index 1c86d48bc..7bba1e31e 100644
--- a/test/e2e/run_test.go
+++ b/test/e2e/run_test.go
@@ -562,7 +562,7 @@ USER mail`
err = os.MkdirAll(vol2, 0755)
Expect(err).To(BeNil())
- session := podmanTest.Podman([]string{"run", "--volume", vol1 + ":/myvol1:ro", "--volume", vol2 + ":/myvol2", ALPINE, "touch", "/myvol2/foo.txt"})
+ session := podmanTest.Podman([]string{"run", "--volume", vol1 + ":/myvol1:z", "--volume", vol2 + ":/myvol2:z", ALPINE, "touch", "/myvol2/foo.txt"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
})
diff --git a/test/e2e/search_test.go b/test/e2e/search_test.go
index bdbd5e770..7b9612a35 100644
--- a/test/e2e/search_test.go
+++ b/test/e2e/search_test.go
@@ -2,9 +2,7 @@ package integration
import (
"fmt"
- "io/ioutil"
"os"
- "path/filepath"
"strconv"
. "github.com/onsi/ginkgo"
@@ -177,10 +175,7 @@ var _ = Describe("Podman search", func() {
Expect(push.ExitCode()).To(Equal(0))
// registries.conf set up
- regFileBytes := []byte(regFileContents)
- outfile := filepath.Join(podmanTest.TempDir, "registries.conf")
- os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
- ioutil.WriteFile(outfile, regFileBytes, 0644)
+ podmanTest.setRegistriesConfigEnv([]byte(regFileContents))
search := podmanTest.Podman([]string{"search", "localhost:5000/my-alpine"})
search.WaitWithDefaultTimeout()
@@ -191,7 +186,7 @@ var _ = Describe("Podman search", func() {
Expect(search.ErrorToString()).Should(BeEmpty())
// cleanup
- os.Setenv("REGISTRIES_CONFIG_PATH", "")
+ resetRegistriesConfigEnv()
})
It("podman search doesn't attempt HTTP if force secure is true", func() {
@@ -208,10 +203,7 @@ var _ = Describe("Podman search", func() {
Expect(push.ExitCode()).To(Equal(0))
// registries.conf set up
- regFileBytes := []byte(regFileContents)
- outfile := filepath.Join(podmanTest.TempDir, "registries.conf")
- os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
- ioutil.WriteFile(outfile, regFileBytes, 0644)
+ podmanTest.setRegistriesConfigEnv([]byte(regFileContents))
search := podmanTest.Podman([]string{"search", "localhost:5000/my-alpine", "--tls-verify=true"})
search.WaitWithDefaultTimeout()
@@ -222,7 +214,7 @@ var _ = Describe("Podman search", func() {
Expect(match).Should(BeTrue())
// cleanup
- os.Setenv("REGISTRIES_CONFIG_PATH", "")
+ resetRegistriesConfigEnv()
})
It("podman search doesn't attempt HTTP if registry is not listed as insecure", func() {
@@ -239,10 +231,7 @@ var _ = Describe("Podman search", func() {
Expect(push.ExitCode()).To(Equal(0))
// registries.conf set up
- regFileBytes := []byte(badRegFileContents)
- outfile := filepath.Join(podmanTest.TempDir, "registries.conf")
- os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
- ioutil.WriteFile(outfile, regFileBytes, 0644)
+ podmanTest.setRegistriesConfigEnv([]byte(badRegFileContents))
search := podmanTest.Podman([]string{"search", "localhost:5000/my-alpine"})
search.WaitWithDefaultTimeout()
@@ -253,7 +242,7 @@ var _ = Describe("Podman search", func() {
Expect(match).Should(BeTrue())
// cleanup
- os.Setenv("REGISTRIES_CONFIG_PATH", "")
+ resetRegistriesConfigEnv()
})
It("podman search doesn't attempt HTTP if one registry is not listed as insecure", func() {
@@ -278,10 +267,7 @@ var _ = Describe("Podman search", func() {
Expect(push.ExitCode()).To(Equal(0))
// registries.conf set up
- regFileBytes := []byte(regFileContents2)
- outfile := filepath.Join(podmanTest.TempDir, "registries.conf")
- os.Setenv("REGISTRIES_CONFIG_PATH", outfile)
- ioutil.WriteFile(outfile, regFileBytes, 0644)
+ podmanTest.setRegistriesConfigEnv([]byte(regFileContents2))
search := podmanTest.Podman([]string{"search", "my-alpine"})
search.WaitWithDefaultTimeout()
@@ -292,6 +278,6 @@ var _ = Describe("Podman search", func() {
Expect(match).Should(BeTrue())
// cleanup
- os.Setenv("REGISTRIES_CONFIG_PATH", "")
+ resetRegistriesConfigEnv()
})
})
diff --git a/test/registries.conf b/test/registries.conf
index f3bf092b0..6c9d39bbc 100644
--- a/test/registries.conf
+++ b/test/registries.conf
@@ -1,5 +1,5 @@
[registries.search]
-registries = ['registry.access.redhat.com', 'registry.fedoraproject.org', 'docker.io']
+registries = ['docker.io', 'quay.io']
[registries.insecure]
registries = []