github.com/ld86/docker@v1.7.1-rc3/pkg/plugins/discovery_test.go (about) 1 package plugins 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "net" 7 "os" 8 "path" 9 "path/filepath" 10 "reflect" 11 "testing" 12 ) 13 14 func TestUnknownLocalPath(t *testing.T) { 15 tmpdir, err := ioutil.TempDir("", "docker-test") 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer os.RemoveAll(tmpdir) 20 21 l := newLocalRegistry(filepath.Join(tmpdir, "unknown")) 22 _, err = l.Plugin("foo") 23 if err == nil || err != ErrNotFound { 24 t.Fatalf("Expected error for unknown directory") 25 } 26 } 27 28 func TestLocalSocket(t *testing.T) { 29 tmpdir, err := ioutil.TempDir("", "docker-test") 30 if err != nil { 31 t.Fatal(err) 32 } 33 defer os.RemoveAll(tmpdir) 34 l, err := net.Listen("unix", filepath.Join(tmpdir, "echo.sock")) 35 if err != nil { 36 t.Fatal(err) 37 } 38 defer l.Close() 39 40 r := newLocalRegistry(tmpdir) 41 p, err := r.Plugin("echo") 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 pp, err := r.Plugin("echo") 47 if err != nil { 48 t.Fatal(err) 49 } 50 if !reflect.DeepEqual(p, pp) { 51 t.Fatalf("Expected %v, was %v\n", p, pp) 52 } 53 54 if p.Name != "echo" { 55 t.Fatalf("Expected plugin `echo`, got %s\n", p.Name) 56 } 57 58 addr := fmt.Sprintf("unix://%s/echo.sock", tmpdir) 59 if p.Addr != addr { 60 t.Fatalf("Expected plugin addr `%s`, got %s\n", addr, p.Addr) 61 } 62 } 63 64 func TestFileSpecPlugin(t *testing.T) { 65 tmpdir, err := ioutil.TempDir("", "docker-test") 66 if err != nil { 67 t.Fatal(err) 68 } 69 70 cases := []struct { 71 path string 72 name string 73 addr string 74 fail bool 75 }{ 76 {filepath.Join(tmpdir, "echo.spec"), "echo", "unix://var/lib/docker/plugins/echo.sock", false}, 77 {filepath.Join(tmpdir, "foo.spec"), "foo", "tcp://localhost:8080", false}, 78 {filepath.Join(tmpdir, "bar.spec"), "bar", "localhost:8080", true}, // unknown transport 79 } 80 81 for _, c := range cases { 82 if err = os.MkdirAll(path.Dir(c.path), 0755); err != nil { 83 t.Fatal(err) 84 } 85 if err = ioutil.WriteFile(c.path, []byte(c.addr), 0644); err != nil { 86 t.Fatal(err) 87 } 88 89 r := newLocalRegistry(tmpdir) 90 p, err := r.Plugin(c.name) 91 if c.fail && err == nil { 92 continue 93 } 94 95 if err != nil { 96 t.Fatal(err) 97 } 98 99 if p.Name != c.name { 100 t.Fatalf("Expected plugin `%s`, got %s\n", c.name, p.Name) 101 } 102 103 if p.Addr != c.addr { 104 t.Fatalf("Expected plugin addr `%s`, got %s\n", c.addr, p.Addr) 105 } 106 os.Remove(c.path) 107 } 108 }