Skip to content

Commit

Permalink
Merge pull request moby#10659 from estesp/fix-dup-bind-mounts-testing
Browse files Browse the repository at this point in the history
Clean up dup. volume test and add API test for the same
  • Loading branch information
tiborvass committed Feb 9, 2015
2 parents 4c1da91 + 35d4825 commit 765c897
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 1 deletion.
37 changes: 37 additions & 0 deletions integration-cli/docker_api_containers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,43 @@ func TestContainerApiStartVolumeBinds(t *testing.T) {
logDone("container REST API - check volume binds on start")
}

// Test for GH#10618
func TestContainerApiStartDupVolumeBinds(t *testing.T) {
defer deleteAllContainers()
name := "testdups"
config := map[string]interface{}{
"Image": "busybox",
"Volumes": map[string]struct{}{"/tmp": {}},
}

if _, err := sockRequest("POST", "/containers/create?name="+name, config); err != nil && !strings.Contains(err.Error(), "201 Created") {
t.Fatal(err)
}

bindPath1, err := ioutil.TempDir("", "test1")
if err != nil {
t.Fatal(err)
}
defer os.Remove(bindPath1)
bindPath2, err := ioutil.TempDir("", "test2")
if err != nil {
t.Fatal(err)
}
defer os.Remove(bindPath2)

config = map[string]interface{}{
"Binds": []string{bindPath1 + ":/tmp", bindPath2 + ":/tmp"},
}
if body, err := sockRequest("POST", "/containers/"+name+"/start", config); err == nil {
t.Fatal("expected container start to fail when duplicate volume binds to same container path")
} else {
if !strings.Contains(string(body), "Duplicate volume") {
t.Fatalf("Expected failure due to duplicate bind mounts to same path, instead got: %q with error: %v", string(body), err)
}
}

logDone("container REST API - check for duplicate volume binds error on start")
}
func TestContainerApiStartVolumesFrom(t *testing.T) {
defer deleteAllContainers()
volName := "voltst"
Expand Down
18 changes: 17 additions & 1 deletion integration-cli/docker_cli_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,23 @@ func TestVolumesFromGetsProperMode(t *testing.T) {

// Test for GH#10618
func TestRunNoDupVolumes(t *testing.T) {
cmd := exec.Command(dockerBinary, "run", "-v", "/etc:/someplace", "-v", "/usr/lib:/someplace", "busybox", "echo", "hi")

bindPath1, err := ioutil.TempDir("", "test1")
if err != nil {
t.Fatal(err)
}
defer os.Remove(bindPath1)

bindPath2, err := ioutil.TempDir("", "test2")
if err != nil {
t.Fatal(err)
}
defer os.Remove(bindPath2)

mountstr1 := bindPath1 + ":/someplace"
mountstr2 := bindPath2 + ":/someplace"

cmd := exec.Command(dockerBinary, "run", "-v", mountstr1, "-v", mountstr2, "busybox", "true")
if out, _, err := runCommandWithOutput(cmd); err == nil {
t.Fatal("Expected error about duplicate volume definitions")
} else {
Expand Down

0 comments on commit 765c897

Please sign in to comment.