1
0
Fork 0

Unit test setting peers on cluster service

master
Philip O Toole 9 years ago
parent f50dc9a533
commit d5e3889ac8

@ -88,8 +88,8 @@ func (s *Service) Addr() string {
return s.addr.String()
}
// SetPeers will set the mapping between raftAddr and apiAddr for the entire cluster.
func (s *Service) SetPeers(raftAddr, apiAddr string) error {
// SetPeer will set the mapping between raftAddr and apiAddr for the entire cluster.
func (s *Service) SetPeer(raftAddr, apiAddr string) error {
peer := map[string]string{
raftAddr: apiAddr,
}

@ -1,6 +1,7 @@
package cluster
import (
"fmt"
"net"
"testing"
"time"
@ -22,6 +23,58 @@ func Test_NewServiceOpenClose(t *testing.T) {
}
}
func Test_SetAPIPeer(t *testing.T) {
raftAddr, apiAddr := "localhost:4002", "localhost:4001"
s, _, ms := mustNewOpenService()
defer s.Close()
if err := s.SetPeer(raftAddr, apiAddr); err != nil {
t.Fatalf("failed to set peer: %s", err.Error())
}
if ms.peers[raftAddr] != apiAddr {
t.Fatalf("peer not set correctly, exp %s, got %s", apiAddr, ms.peers[raftAddr])
}
}
func Test_SerAPIPeerNetwork(t *testing.T) {
t.Skip("service not responding correctly")
raftAddr, apiAddr := "localhost:4002", "localhost:4001"
s, _, ms := mustNewOpenService()
defer s.Close()
raddr, err := net.ResolveTCPAddr("tcp", s.Addr())
if err != nil {
t.Fatalf("failed to resolve remote uster ervice address: %s", err.Error())
}
conn, err := net.DialTCP("tcp4", nil, raddr)
if err != nil {
t.Fatalf("failed to connect to remote cluster service: %s", err.Error())
}
conn.Write([]byte(fmt.Sprintf(`{"%s": "%d"}`, raftAddr, apiAddr)))
if err != nil {
t.Fatalf("failed to write to remote cluster service: %s", err.Error())
}
// XXX Check response
if ms.peers[raftAddr] != apiAddr {
t.Fatalf("peer not set correctly, exp %s, got %s", apiAddr, ms.peers[raftAddr])
}
}
func mustNewOpenService() (*Service, *mockListener, *mockStore) {
ml := mustNewMockListener()
ms := newMockStore()
s := NewService(ml, ms)
if err := s.Open(); err != nil {
panic("failed to open new service")
}
return s, ml, ms
}
type mockListener struct {
ln net.Listener
}
@ -54,6 +107,13 @@ func (ml *mockListener) Dial(addr string, t time.Duration) (net.Conn, error) {
type mockStore struct {
leader string
peers map[string]string
}
func newMockStore() *mockStore {
return &mockStore{
peers: make(map[string]string),
}
}
func (ms *mockStore) Leader() string {
@ -61,5 +121,8 @@ func (ms *mockStore) Leader() string {
}
func (ms *mockStore) UpdateAPIPeers(peers map[string]string) error {
for k, v := range peers {
ms.peers[k] = v
}
return nil
}

Loading…
Cancel
Save