From 3df8bbed61f3ca409e464d89c190660bb2fefe50 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Tue, 10 Feb 2015 02:18:46 +0000 Subject: [PATCH] refactor createEntries Signed-off-by: Victor Vieux --- discovery/consul/consul.go | 19 ++++--------------- discovery/consul/consul_test.go | 19 ------------------- discovery/discovery.go | 16 ++++++++++++++++ discovery/discovery_test.go | 14 ++++++++++++++ discovery/etcd/etcd.go | 21 ++++----------------- discovery/etcd/etcd_test.go | 18 ------------------ discovery/file/file.go | 13 +------------ discovery/token/token.go | 11 +---------- discovery/zookeeper/zookeeper.go | 20 ++------------------ discovery/zookeeper/zookeeper_test.go | 17 ----------------- 10 files changed, 42 insertions(+), 126 deletions(-) diff --git a/discovery/consul/consul.go b/discovery/consul/consul.go index 1a184c2eb3..129865fb6c 100644 --- a/discovery/consul/consul.go +++ b/discovery/consul/consul.go @@ -59,26 +59,15 @@ func (s *ConsulDiscoveryService) Fetch() ([]*discovery.Entry, error) { return nil, err } - return s.createEntries(pairs) -} - -func (s *ConsulDiscoveryService) createEntries(pairs consul.KVPairs) ([]*discovery.Entry, error) { - entries := []*discovery.Entry{} - if pairs == nil { - return entries, nil - } - + addrs := []string{} for _, pair := range pairs { if pair.Key == s.prefix { continue } - entry, err := discovery.NewEntry(string(pair.Value)) - if err != nil { - return nil, err - } - entries = append(entries, entry) + addrs = append(addrs, string(pair.Value)) } - return entries, nil + + return discovery.CreateEntries(addrs) } func (s *ConsulDiscoveryService) Watch(callback discovery.WatchCallback) { diff --git a/discovery/consul/consul_test.go b/discovery/consul/consul_test.go index 4b0a674e30..9a2ff1b3c0 100644 --- a/discovery/consul/consul_test.go +++ b/discovery/consul/consul_test.go @@ -3,8 +3,6 @@ package consul import ( "testing" - consul "github.com/armon/consul-api" - "github.com/docker/swarm/discovery" "github.com/stretchr/testify/assert" ) @@ -20,20 +18,3 @@ func TestInitialize(t *testing.T) { assert.Equal(t, discovery.prefix, "path/") } - -func TestCreateEntries(t *testing.T) { - service := &ConsulDiscoveryService{prefix: "prefix"} - - entries, err := service.createEntries(nil) - assert.Equal(t, entries, []*discovery.Entry{}) - assert.NoError(t, err) - - entries, err = service.createEntries(consul.KVPairs{&consul.KVPair{Value: []byte("127.0.0.1:2375")}, &consul.KVPair{Value: []byte("127.0.0.2:2375")}}) - assert.Equal(t, len(entries), 2) - assert.Equal(t, entries[0].String(), "127.0.0.1:2375") - assert.Equal(t, entries[1].String(), "127.0.0.2:2375") - assert.NoError(t, err) - - _, err = service.createEntries(consul.KVPairs{&consul.KVPair{Value: []byte("127.0.0.1")}, &consul.KVPair{Value: []byte("127.0.0.2")}}) - assert.Error(t, err) -} diff --git a/discovery/discovery.go b/discovery/discovery.go index 2284cc1818..59038c65f1 100644 --- a/discovery/discovery.go +++ b/discovery/discovery.go @@ -76,3 +76,19 @@ func New(rawurl string, heartbeat int) (DiscoveryService, error) { return nil, ErrNotSupported } + +func CreateEntries(addrs []string) ([]*Entry, error) { + entries := []*Entry{} + if addrs == nil { + return entries, nil + } + + for _, addr := range addrs { + entry, err := NewEntry(addr) + if err != nil { + return nil, err + } + entries = append(entries, entry) + } + return entries, nil +} diff --git a/discovery/discovery_test.go b/discovery/discovery_test.go index 82ee5b9de4..caf8c2f5d5 100644 --- a/discovery/discovery_test.go +++ b/discovery/discovery_test.go @@ -37,3 +37,17 @@ func TestParse(t *testing.T) { assert.Equal(t, scheme, "nodes") assert.Equal(t, uri, "") } + +func TestCreateEntries(t *testing.T) { + entries, err := CreateEntries(nil) + assert.Equal(t, entries, []*Entry{}) + assert.NoError(t, err) + + entries, err = CreateEntries([]string{"127.0.0.1:2375", "127.0.0.2:2375"}) + assert.Equal(t, entries[0].String(), "127.0.0.1:2375") + assert.Equal(t, entries[1].String(), "127.0.0.2:2375") + assert.NoError(t, err) + + _, err = CreateEntries([]string{"127.0.0.1", "127.0.0.2"}) + assert.Error(t, err) +} diff --git a/discovery/etcd/etcd.go b/discovery/etcd/etcd.go index b504d3416c..87d9bfe71a 100644 --- a/discovery/etcd/etcd.go +++ b/discovery/etcd/etcd.go @@ -57,24 +57,11 @@ func (s *EtcdDiscoveryService) Fetch() ([]*discovery.Entry, error) { return nil, err } - return s.createEntries(resp.Node.Nodes) -} - -func (s *EtcdDiscoveryService) createEntries(nodes etcd.Nodes) ([]*discovery.Entry, error) { - entries := []*discovery.Entry{} - if nodes == nil { - return entries, nil + addrs := []string{} + for _, n := range resp.Node.Nodes { + addrs = append(addrs, n.Value) } - - for _, n := range nodes { - entry, err := discovery.NewEntry(n.Value) - if err != nil { - return nil, err - } - entries = append(entries, entry) - } - return entries, nil - + return discovery.CreateEntries(addrs) } func (s *EtcdDiscoveryService) Watch(callback discovery.WatchCallback) { diff --git a/discovery/etcd/etcd_test.go b/discovery/etcd/etcd_test.go index fdceed82a9..3070e13e9c 100644 --- a/discovery/etcd/etcd_test.go +++ b/discovery/etcd/etcd_test.go @@ -3,8 +3,6 @@ package etcd import ( "testing" - "github.com/coreos/go-etcd/etcd" - "github.com/docker/swarm/discovery" "github.com/stretchr/testify/assert" ) @@ -19,19 +17,3 @@ func TestInitialize(t *testing.T) { assert.Error(t, discovery.Initialize("127.0.0.1,127.0.0.2,127.0.0.3/path", 0)) assert.Equal(t, discovery.path, "/path/") } - -func TestCreateEntries(t *testing.T) { - service := &EtcdDiscoveryService{} - - entries, err := service.createEntries(nil) - assert.Equal(t, entries, []*discovery.Entry{}) - assert.NoError(t, err) - - entries, err = service.createEntries(etcd.Nodes{&etcd.Node{Value: "127.0.0.1:2375"}, &etcd.Node{Value: "127.0.0.2:2375"}}) - assert.Equal(t, entries[0].String(), "127.0.0.1:2375") - assert.Equal(t, entries[1].String(), "127.0.0.2:2375") - assert.NoError(t, err) - - _, err = service.createEntries(etcd.Nodes{&etcd.Node{Value: "127.0.0.1"}, &etcd.Node{Value: "127.0.0.2"}}) - assert.Error(t, err) -} diff --git a/discovery/file/file.go b/discovery/file/file.go index 65c4da87d9..80e2b7a35d 100644 --- a/discovery/file/file.go +++ b/discovery/file/file.go @@ -29,18 +29,7 @@ func (s *FileDiscoveryService) Fetch() ([]*discovery.Entry, error) { return nil, err } - var entries []*discovery.Entry - - for _, line := range strings.Split(string(data), "\n") { - if line != "" { - entry, err := discovery.NewEntry(line) - if err != nil { - return nil, err - } - entries = append(entries, entry) - } - } - return entries, nil + return discovery.CreateEntries(strings.Split(string(data), "\n")) } func (s *FileDiscoveryService) Watch(callback discovery.WatchCallback) { diff --git a/discovery/token/token.go b/discovery/token/token.go index 89a5ec60b9..5274bb9700 100644 --- a/discovery/token/token.go +++ b/discovery/token/token.go @@ -62,16 +62,7 @@ func (s *TokenDiscoveryService) Fetch() ([]*discovery.Entry, error) { return nil, fmt.Errorf("Failed to fetch entries, Discovery service returned %d HTTP status code", resp.StatusCode) } - var entries []*discovery.Entry - for _, addr := range addrs { - entry, err := discovery.NewEntry(addr) - if err != nil { - return nil, err - } - entries = append(entries, entry) - } - - return entries, nil + return discovery.CreateEntries(addrs) } func (s *TokenDiscoveryService) Watch(callback discovery.WatchCallback) { diff --git a/discovery/zookeeper/zookeeper.go b/discovery/zookeeper/zookeeper.go index 4990c1549e..fc029fa3a2 100644 --- a/discovery/zookeeper/zookeeper.go +++ b/discovery/zookeeper/zookeeper.go @@ -79,23 +79,7 @@ func (s *ZkDiscoveryService) Fetch() ([]*discovery.Entry, error) { return nil, err } - return s.createEntries(addrs) -} - -func (s *ZkDiscoveryService) createEntries(addrs []string) ([]*discovery.Entry, error) { - entries := []*discovery.Entry{} - if addrs == nil { - return entries, nil - } - - for _, addr := range addrs { - entry, err := discovery.NewEntry(addr) - if err != nil { - return nil, err - } - entries = append(entries, entry) - } - return entries, nil + return discovery.CreateEntries(addrs) } func (s *ZkDiscoveryService) Watch(callback discovery.WatchCallback) { @@ -105,7 +89,7 @@ func (s *ZkDiscoveryService) Watch(callback discovery.WatchCallback) { log.WithField("name", "zk").Debug("Discovery watch aborted") return } - entries, err := s.createEntries(addrs) + entries, err := discovery.CreateEntries(addrs) if err == nil { callback(entries) } diff --git a/discovery/zookeeper/zookeeper_test.go b/discovery/zookeeper/zookeeper_test.go index b18653b9d0..0097fa6a88 100644 --- a/discovery/zookeeper/zookeeper_test.go +++ b/discovery/zookeeper/zookeeper_test.go @@ -3,7 +3,6 @@ package zookeeper import ( "testing" - "github.com/docker/swarm/discovery" "github.com/stretchr/testify/assert" ) @@ -21,19 +20,3 @@ func TestInitialize(t *testing.T) { assert.Error(t, service.Initialize("127.0.0.1,127.0.0.2,127.0.0.3/path/sub1/sub2", 0)) assert.Equal(t, service.fullpath(), "/path/sub1/sub2") } - -func TestCreateEntries(t *testing.T) { - service := &ZkDiscoveryService{} - - entries, err := service.createEntries(nil) - assert.Equal(t, entries, []*discovery.Entry{}) - assert.NoError(t, err) - - entries, err = service.createEntries([]string{"127.0.0.1:2375", "127.0.0.2:2375"}) - assert.Equal(t, entries[0].String(), "127.0.0.1:2375") - assert.Equal(t, entries[1].String(), "127.0.0.2:2375") - assert.NoError(t, err) - - _, err = service.createEntries([]string{"127.0.0.1", "127.0.0.2"}) - assert.Error(t, err) -}