| // +build !experimental |
| |
| package daemon |
| |
| import ( |
| "io/ioutil" |
| "os" |
| "testing" |
| |
| "github.com/docker/docker/runconfig" |
| "github.com/docker/docker/volume" |
| "github.com/docker/docker/volume/drivers" |
| "github.com/docker/docker/volume/local" |
| ) |
| |
| func TestGetVolumeDefaultDriver(t *testing.T) { |
| tmp, err := ioutil.TempDir("", "volume-test-") |
| if err != nil { |
| t.Fatal(err) |
| } |
| defer os.RemoveAll(tmp) |
| |
| l, err := local.New(tmp) |
| if err != nil { |
| t.Fatal(err) |
| } |
| volumedrivers.Register(l, volume.DefaultDriverName) |
| d, err := getVolumeDriver("missing") |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| if d.Name() != volume.DefaultDriverName { |
| t.Fatalf("Expected local driver, was %s\n", d.Name) |
| } |
| } |
| |
| func TestParseBindMount(t *testing.T) { |
| cases := []struct { |
| bind string |
| expDest string |
| expSource string |
| expName string |
| mountLabel string |
| expRW bool |
| fail bool |
| }{ |
| {"/tmp:/tmp", "/tmp", "/tmp", "", "", true, false}, |
| {"/tmp:/tmp:ro", "/tmp", "/tmp", "", "", false, false}, |
| {"/tmp:/tmp:rw", "/tmp", "/tmp", "", "", true, false}, |
| {"/tmp:/tmp:foo", "/tmp", "/tmp", "", "", false, true}, |
| {"name:/tmp", "", "", "", "", false, true}, |
| {"local/name:/tmp:rw", "", "", "", "", true, true}, |
| } |
| |
| for _, c := range cases { |
| conf := &runconfig.Config{} |
| m, err := parseBindMount(c.bind, c.mountLabel, conf) |
| if c.fail { |
| if err == nil { |
| t.Fatalf("Expected error, was nil, for spec %s\n", c.bind) |
| } |
| continue |
| } |
| |
| if m.Destination != c.expDest { |
| t.Fatalf("Expected destination %s, was %s, for spec %s\n", c.expDest, m.Destination, c.bind) |
| } |
| |
| if m.Source != c.expSource { |
| t.Fatalf("Expected source %s, was %s, for spec %s\n", c.expSource, m.Source, c.bind) |
| } |
| |
| if m.Name != c.expName { |
| t.Fatalf("Expected name %s, was %s for spec %s\n", c.expName, m.Name, c.bind) |
| } |
| |
| if m.RW != c.expRW { |
| t.Fatalf("Expected RW %v, was %v for spec %s\n", c.expRW, m.RW, c.bind) |
| } |
| } |
| } |