github.com/chenchun/docker@v1.3.2-0.20150629222414-20467faf132b/pkg/plugins/discovery_test.go (about) 1 package plugins 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "net" 7 "os" 8 "path/filepath" 9 "reflect" 10 "testing" 11 ) 12 13 func TestUnknownLocalPath(t *testing.T) { 14 tmpdir, err := ioutil.TempDir("", "docker-test") 15 if err != nil { 16 t.Fatal(err) 17 } 18 defer os.RemoveAll(tmpdir) 19 20 l := newLocalRegistry(filepath.Join(tmpdir, "unknown")) 21 _, err = l.Plugin("foo") 22 if err == nil || err != ErrNotFound { 23 t.Fatalf("Expected error for unknown directory") 24 } 25 } 26 27 func TestLocalSocket(t *testing.T) { 28 tmpdir, err := ioutil.TempDir("", "docker-test") 29 if err != nil { 30 t.Fatal(err) 31 } 32 defer os.RemoveAll(tmpdir) 33 l, err := net.Listen("unix", filepath.Join(tmpdir, "echo.sock")) 34 if err != nil { 35 t.Fatal(err) 36 } 37 defer l.Close() 38 39 r := newLocalRegistry(tmpdir) 40 p, err := r.Plugin("echo") 41 if err != nil { 42 t.Fatal(err) 43 } 44 45 pp, err := r.Plugin("echo") 46 if err != nil { 47 t.Fatal(err) 48 } 49 if !reflect.DeepEqual(p, pp) { 50 t.Fatalf("Expected %v, was %v\n", p, pp) 51 } 52 53 if p.Name != "echo" { 54 t.Fatalf("Expected plugin `echo`, got %s\n", p.Name) 55 } 56 57 addr := fmt.Sprintf("unix://%s/echo.sock", tmpdir) 58 if p.Addr != addr { 59 t.Fatalf("Expected plugin addr `%s`, got %s\n", addr, p.Addr) 60 } 61 } 62 63 func TestFileSpecPlugin(t *testing.T) { 64 tmpdir, err := ioutil.TempDir("", "docker-test") 65 if err != nil { 66 t.Fatal(err) 67 } 68 defer os.RemoveAll(tmpdir) 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 = ioutil.WriteFile(c.path, []byte(c.addr), 0644); err != nil { 83 t.Fatal(err) 84 } 85 86 r := newLocalRegistry(tmpdir) 87 p, err := r.Plugin(c.name) 88 if c.fail && err == nil { 89 continue 90 } 91 92 if err != nil { 93 t.Fatal(err) 94 } 95 96 if p.Name != c.name { 97 t.Fatalf("Expected plugin `%s`, got %s\n", c.name, p.Name) 98 } 99 100 if p.Addr != c.addr { 101 t.Fatalf("Expected plugin addr `%s`, got %s\n", c.addr, p.Addr) 102 } 103 } 104 }