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  }