Wrap some missing constructors using ports.

Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
This commit is contained in:
Antonio Navarro Perez 2021-01-14 10:48:46 +01:00
parent 27614c42f7
commit 052aadb3b0
6 changed files with 65 additions and 134 deletions

View file

@ -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
})

View file

@ -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()

View file

@ -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(

View file

@ -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)

View file

@ -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)
}

View file

@ -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))
}