Break some routines out of the mutable files test for future use

Docker-DCO-1.1-Signed-off-by: Erik Hollensbe <github@hollensbe.org> (github: erikh)
This commit is contained in:
Erik Hollensbe 2014-10-24 18:12:54 +00:00
parent 1eb5e5d25f
commit 20575d20ba
3 changed files with 42 additions and 21 deletions

View File

@ -1897,37 +1897,25 @@ func TestRunMutableNetworkFiles(t *testing.T) {
for _, fn := range []string{"resolv.conf", "hosts"} {
deleteAllContainers()
out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "--name", "c1", "busybox", "sh", "-c", fmt.Sprintf("echo success >/etc/%s; while true; do sleep 1; done", fn)))
if err != nil {
t.Fatal(err, out)
}
time.Sleep(1 * time.Second)
contID := strings.TrimSpace(out)
f, err := os.Open(filepath.Join("/var/lib/docker/containers", contID, fn))
content, err := runCommandAndReadContainerFile(fn, exec.Command(dockerBinary, "run", "-d", "--name", "c1", "busybox", "sh", "-c", fmt.Sprintf("echo success >/etc/%s; while true; do sleep 1; done", fn)))
if err != nil {
t.Fatal(err)
}
content, err := ioutil.ReadAll(f)
f.Close()
if strings.TrimSpace(string(content)) != "success" {
t.Fatal("Content was not what was modified in the container", string(content))
}
out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "--name", "c2", "busybox", "sh", "-c", fmt.Sprintf("while true; do cat /etc/%s; sleep 1; done", fn)))
out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "--name", "c2", "busybox", "sh", "-c", fmt.Sprintf("while true; do cat /etc/%s; sleep 1; done", fn)))
if err != nil {
t.Fatal(err)
}
contID = strings.TrimSpace(out)
contID := strings.TrimSpace(out)
resolvConfPath := filepath.Join("/var/lib/docker/containers", contID, fn)
resolvConfPath := containerStorageFile(contID, fn)
f, err = os.OpenFile(resolvConfPath, os.O_WRONLY|os.O_SYNC|os.O_APPEND, 0644)
f, err := os.OpenFile(resolvConfPath, os.O_WRONLY|os.O_SYNC|os.O_APPEND, 0644)
if err != nil {
t.Fatal(err)
}

View File

@ -16,10 +16,11 @@ var (
// the private registry to use for tests
privateRegistryURL = "127.0.0.1:5000"
dockerBasePath = "/var/lib/docker"
execDriverPath = dockerBasePath + "/execdriver/native"
volumesConfigPath = dockerBasePath + "/volumes"
volumesStoragePath = dockerBasePath + "/vfs/dir"
dockerBasePath = "/var/lib/docker"
execDriverPath = dockerBasePath + "/execdriver/native"
volumesConfigPath = dockerBasePath + "/volumes"
volumesStoragePath = dockerBasePath + "/vfs/dir"
containerStoragePath = dockerBasePath + "/containers"
workingDirectory string
)

View File

@ -731,3 +731,35 @@ func readFile(src string, t *testing.T) (content string) {
}
return string(data)
}
func containerStorageFile(containerId, basename string) string {
return filepath.Join("/var/lib/docker/containers", containerId, basename)
}
func runCommandAndReadContainerFile(filename string, cmd *exec.Cmd) ([]byte, error) {
out, _, err := runCommandWithOutput(cmd)
if err != nil {
return nil, err
}
time.Sleep(1 * time.Second)
contID := strings.TrimSpace(out)
return readContainerFile(contID, filename)
}
func readContainerFile(containerId, filename string) ([]byte, error) {
f, err := os.Open(containerStorageFile(containerId, filename))
if err != nil {
return nil, err
}
defer f.Close()
content, err := ioutil.ReadAll(f)
if err != nil {
return nil, err
}
return content, nil
}