Tizen_4.0 base
[platform/upstream/docker-engine.git] / pkg / plugins / discovery_unix_test.go
1 // +build !windows
2
3 package plugins
4
5 import (
6         "fmt"
7         "io/ioutil"
8         "net"
9         "os"
10         "path/filepath"
11         "reflect"
12         "testing"
13 )
14
15 func TestLocalSocket(t *testing.T) {
16         // TODO Windows: Enable a similar version for Windows named pipes
17         tmpdir, unregister := Setup(t)
18         defer unregister()
19
20         cases := []string{
21                 filepath.Join(tmpdir, "echo.sock"),
22                 filepath.Join(tmpdir, "echo", "echo.sock"),
23         }
24
25         for _, c := range cases {
26                 if err := os.MkdirAll(filepath.Dir(c), 0755); err != nil {
27                         t.Fatal(err)
28                 }
29
30                 l, err := net.Listen("unix", c)
31                 if err != nil {
32                         t.Fatal(err)
33                 }
34
35                 r := newLocalRegistry()
36                 p, err := r.Plugin("echo")
37                 if err != nil {
38                         t.Fatal(err)
39                 }
40
41                 pp, err := r.Plugin("echo")
42                 if err != nil {
43                         t.Fatal(err)
44                 }
45                 if !reflect.DeepEqual(p, pp) {
46                         t.Fatalf("Expected %v, was %v\n", p, pp)
47                 }
48
49                 if p.name != "echo" {
50                         t.Fatalf("Expected plugin `echo`, got %s\n", p.name)
51                 }
52
53                 addr := fmt.Sprintf("unix://%s", c)
54                 if p.Addr != addr {
55                         t.Fatalf("Expected plugin addr `%s`, got %s\n", addr, p.Addr)
56                 }
57                 if !p.TLSConfig.InsecureSkipVerify {
58                         t.Fatalf("Expected TLS verification to be skipped")
59                 }
60                 l.Close()
61         }
62 }
63
64 func TestScan(t *testing.T) {
65         tmpdir, unregister := Setup(t)
66         defer unregister()
67
68         pluginNames, err := Scan()
69         if err != nil {
70                 t.Fatal(err)
71         }
72         if pluginNames != nil {
73                 t.Fatal("Plugin names should be empty.")
74         }
75
76         path := filepath.Join(tmpdir, "echo.spec")
77         addr := "unix://var/lib/docker/plugins/echo.sock"
78         name := "echo"
79
80         err = os.MkdirAll(filepath.Dir(path), 0755)
81         if err != nil {
82                 t.Fatal(err)
83         }
84
85         err = ioutil.WriteFile(path, []byte(addr), 0644)
86         if err != nil {
87                 t.Fatal(err)
88         }
89
90         r := newLocalRegistry()
91         p, err := r.Plugin(name)
92
93         pluginNamesNotEmpty, err := Scan()
94         if err != nil {
95                 t.Fatal(err)
96         }
97         if p.Name() != pluginNamesNotEmpty[0] {
98                 t.Fatalf("Unable to scan plugin with name %s", p.name)
99         }
100 }