github.com/resin-io/docker@v1.13.1/pkg/discovery/memory/memory_test.go (about)

     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  }