From 052aadb3b031ced20bb4256932da27cce8a721c9 Mon Sep 17 00:00:00 2001 From: Antonio Navarro Perez Date: Thu, 14 Jan 2021 10:48:46 +0100 Subject: [PATCH] Wrap some missing constructors using ports. Signed-off-by: Antonio Navarro Perez --- server/cluster_test.go | 116 ++++++++++++---------------------- server/handler_test.go | 7 +- server/server.go | 12 ++-- test/cluster.go | 38 +++++------ test/port/port_mapper.go | 24 ------- test/port/port_mapper_test.go | 2 - 6 files changed, 65 insertions(+), 134 deletions(-) diff --git a/server/cluster_test.go b/server/cluster_test.go index 3b8a28d40..046f4ef05 100644 --- a/server/cluster_test.go +++ b/server/cluster_test.go @@ -183,16 +183,12 @@ func TestClusterResize_AddNode(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} + if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -239,15 +235,12 @@ func TestClusterResize_AddNode(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} + if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -293,15 +286,12 @@ func TestClusterResize_AddNode(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} + if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -353,15 +343,12 @@ func TestClusterResize_AddNode(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} + if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -407,15 +394,11 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -465,15 +448,11 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } errc := make(chan error, 1) @@ -529,20 +508,16 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + errc := make(chan error, 1) + go func() { + _, err := m0.API.CreateIndex(context.Background(), "blah", pilosa.IndexOptions{}) + errc <- err + }() + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - errc := make(chan error, 1) - go func() { - _, err := m0.API.CreateIndex(context.Background(), "blah", pilosa.IndexOptions{}) - errc <- err - }() - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } defer m1.Close() @@ -590,23 +565,18 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) { // Configure node1 m1 := test.NewCommandNode(t, false) + m1.Config.Gossip.Seeds = []string{seed} if err := port.GetPort(func(p int) error { m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + errc := make(chan error, 1) + go func() { + _, err := m0.API.CreateIndex(context.Background(), "blah", pilosa.IndexOptions{}) + errc <- err + }() + return m1.Start() }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } - m1.Config.Gossip.Seeds = []string{seed} - errc := make(chan error, 1) - go func() { - _, err := m0.API.CreateIndex(context.Background(), "blah", pilosa.IndexOptions{}) - errc <- err - }() - err := m1.Start() - if err != nil { t.Fatalf("starting second main: %v", err) } - defer m1.Close() if !test.CheckClusterState(m0, pilosa.ClusterStateNormal, 1000) { t.Fatalf("unexpected node0 cluster state: %s", m0.API.State()) @@ -634,18 +604,15 @@ func TestCluster_GossipMembership(t *testing.T) { m1 := test.NewCommandNode(t, false) defer m1.Close() eg.Go(func() error { - if err := port.GetPort(func(p int) error { - m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil - }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } // Pass invalid seed as first in list m1.Config.Gossip.Seeds = []string{"http://localhost:8765", seed} - err := m1.Start() - if err != nil { + if err := port.GetPort(func(p int) error { + m1.Config.Gossip.Port = fmt.Sprintf("%d", p) + return m1.Start() + }, 10); err != nil { t.Fatalf("starting second main: %v", err) } + return nil }) @@ -653,18 +620,15 @@ func TestCluster_GossipMembership(t *testing.T) { m2 := test.NewCommandNode(t, false) defer m2.Close() eg.Go(func() error { - if err := port.GetPort(func(p int) error { - m1.Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil - }, 10); err != nil { - t.Fatalf("getting gossip port: %v", err) - } // Pass invalid seed as first in list m2.Config.Gossip.Seeds = []string{seed, "http://localhost:8765"} - err := m2.Start() - if err != nil { + if err := port.GetPort(func(p int) error { + m2.Config.Gossip.Port = fmt.Sprintf("%d", p) + return m2.Start() + }, 10); err != nil { t.Fatalf("starting second main: %v", err) } + defer m2.Close() return nil }) diff --git a/server/handler_test.go b/server/handler_test.go index 4d6e1031b..0d2074362 100644 --- a/server/handler_test.go +++ b/server/handler_test.go @@ -1402,13 +1402,8 @@ func TestCluster_TranslateStore(t *testing.T) { if err := port.GetPort(func(p int) error { cluster.GetNode(0).Config.Gossip.Port = fmt.Sprintf("%d", p) - return nil + return cluster.GetNode(0).Start() }, 10); err != nil { - t.Fatalf("getting port: %v", err) - } - - err := cluster.GetNode(0).Start() - if err != nil { t.Fatalf("starting node 0: %v", err) } defer cluster.GetNode(0).Close() diff --git a/server/server.go b/server/server.go index 7917ec95c..62dfdf8b6 100644 --- a/server/server.go +++ b/server/server.go @@ -517,15 +517,13 @@ func (m *Command) setupNetworking() error { m.logger.Printf("ephemeral port %d already occupied, switching to :0 (%v)", gossipPort, err) if err := port.GetPort(func(p int) error { gossipPort = p - return nil + m.Config.Gossip.Port = fmt.Sprintf(":%d", gossipPort) + m.gossipTransport, err = gossip.NewTransport(gossipHost, gossipPort, m.logger.Logger()) + return err }, 10); err != nil { - return errors.Wrap(err, "getting port") + return errors.Wrap(err, "getting transport") } - m.Config.Gossip.Port = fmt.Sprintf(":%d", gossipPort) - m.gossipTransport, err = gossip.NewTransport(gossipHost, gossipPort, m.logger.Logger()) - } - if err != nil { - return errors.Wrap(err, "getting transport") + } gossipMemberSet, err := gossip.NewMemberSet( diff --git a/test/cluster.go b/test/cluster.go index 9496e95c3..88ab423a3 100644 --- a/test/cluster.go +++ b/test/cluster.go @@ -260,30 +260,30 @@ func (c *Cluster) Start() error { if err := port.GetPort(func(p int) error { cc.Config.Gossip.Port = fmt.Sprint(p) + gossipHost := uri.Host + gossipPort := cc.Config.Gossip.Port + + if gossipPort == "0" || gossipPort == "" { + panic("gossipPort not allowed to be 0!") + } + println("gossipPort is ", gossipPort) + + // the first node doesn't need to wait for a seed. + if i > 0 { + x := <-seedCh + cc.Config.Gossip.Seeds = []string{x} + } + seedCh <- fmt.Sprintf("%s:%s", gossipHost, gossipPort) + + if err := cc.Start(); err != nil { + return errors.Wrapf(err, "starting server %d", i) + } + return nil }, 10); err != nil { return errors.Wrap(err, "getting gossip port") } - gossipHost := uri.Host - gossipPort := cc.Config.Gossip.Port - - if gossipPort == "0" || gossipPort == "" { - panic("gossipPort not allowed to be 0!") - } - println("gossipPort is ", gossipPort) - - // the first node doesn't need to wait for a seed. - if i > 0 { - x := <-seedCh - cc.Config.Gossip.Seeds = []string{x} - } - seedCh <- fmt.Sprintf("%s:%s", gossipHost, gossipPort) - - if err := cc.Start(); err != nil { - return errors.Wrapf(err, "starting server %d", i) - } - return nil }) // fixes race on gossip: time.Sleep(time.Second) diff --git a/test/port/port_mapper.go b/test/port/port_mapper.go index 90636d5b8..5723cabed 100644 --- a/test/port/port_mapper.go +++ b/test/port/port_mapper.go @@ -21,30 +21,6 @@ import ( "syscall" ) -// lsn, err := net.Listen("tcp", ":0") -// if err != nil { -// panic(err) -// } -// // must be available to UDP too! -// addr := lsn.Addr() -// port := addr.(*net.TCPAddr).Port -// udpConn, err := net.ListenUDP("udp4", &net.UDPAddr{ -// IP: net.IP{}, // listen on all non-multicast addresses... -// Port: port, -// }) -// if err != nil { -// fmt.Printf("UDP port %v was available on tcp but not udp: %v\n", port, err) -// lsn.Close() -// } else { -// _ = udpConn.Close() -// if lsn == nil { -// panic("lsn should never be nil") -// } -// pm.availPorts[i] = lsn -// i++ -// //println("------ bulk reservation: port mapping reserves port ", lsn.Addr().(*net.TCPAddr).Port) -// } - func ColonZeroString(port int) string { return fmt.Sprintf(":%d", port) } diff --git a/test/port/port_mapper_test.go b/test/port/port_mapper_test.go index 638ec3de6..29cc8cdd8 100644 --- a/test/port/port_mapper_test.go +++ b/test/port/port_mapper_test.go @@ -16,7 +16,6 @@ package port_test import ( "fmt" - "log" "net" "testing" @@ -28,7 +27,6 @@ func TestPortsAreUnique(t *testing.T) { portmap := make(map[int]struct{}) err := port.GetPorts(func(ports []int) error { for _, p := range ports { - log.Println("PORTTT", p) if _, exists := portmap[p]; exists { panic(fmt.Sprintf("port %v was already issued!", p)) }