Tizen_4.0 base
[platform/upstream/docker-engine.git] / pkg / discovery / memory / memory_test.go
1 package memory
2
3 import (
4         "testing"
5
6         "github.com/docker/docker/pkg/discovery"
7         "github.com/go-check/check"
8 )
9
10 // Hook up gocheck into the "go test" runner.
11 func Test(t *testing.T) { check.TestingT(t) }
12
13 type discoverySuite struct{}
14
15 var _ = check.Suite(&discoverySuite{})
16
17 func (s *discoverySuite) TestWatch(c *check.C) {
18         d := &Discovery{}
19         d.Initialize("foo", 1000, 0, nil)
20         stopCh := make(chan struct{})
21         ch, errCh := d.Watch(stopCh)
22
23         // We have to drain the error channel otherwise Watch will get stuck.
24         go func() {
25                 for range errCh {
26                 }
27         }()
28
29         expected := discovery.Entries{
30                 &discovery.Entry{Host: "1.1.1.1", Port: "1111"},
31         }
32
33         c.Assert(d.Register("1.1.1.1:1111"), check.IsNil)
34         c.Assert(<-ch, check.DeepEquals, expected)
35
36         expected = discovery.Entries{
37                 &discovery.Entry{Host: "1.1.1.1", Port: "1111"},
38                 &discovery.Entry{Host: "2.2.2.2", Port: "2222"},
39         }
40
41         c.Assert(d.Register("2.2.2.2:2222"), check.IsNil)
42         c.Assert(<-ch, check.DeepEquals, expected)
43
44         // Stop and make sure it closes all channels.
45         close(stopCh)
46         c.Assert(<-ch, check.IsNil)
47         c.Assert(<-errCh, check.IsNil)
48 }