TUN-2812: Tunnel proxies and RPCs can share an edge address
This commit is contained in:
parent
e8f55cc911
commit
0cf6ce9aeb
|
@ -68,8 +68,8 @@ func NewNoResolve(addrs []*net.TCPAddr) *Regions {
|
||||||
|
|
||||||
// GetAnyAddress returns an arbitrary address from the larger region.
|
// GetAnyAddress returns an arbitrary address from the larger region.
|
||||||
func (rs *Regions) GetAnyAddress() *net.TCPAddr {
|
func (rs *Regions) GetAnyAddress() *net.TCPAddr {
|
||||||
if rs.region1.AvailableAddrs() > rs.region2.AvailableAddrs() {
|
if addr := rs.region1.GetAnyAddress(); addr != nil {
|
||||||
return rs.region1.GetAnyAddress()
|
return addr
|
||||||
}
|
}
|
||||||
return rs.region2.GetAnyAddress()
|
return rs.region2.GetAnyAddress()
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,24 @@ func TestGiveBack(t *testing.T) {
|
||||||
edge.GiveBack(addr)
|
edge.GiveBack(addr)
|
||||||
assert.Equal(t, 4, edge.AvailableAddrs())
|
assert.Equal(t, 4, edge.AvailableAddrs())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRPCAndProxyShareSingleEdgeIP(t *testing.T) {
|
||||||
|
l := logrus.New()
|
||||||
|
|
||||||
|
// Make an edge with a single IP
|
||||||
|
edge := MockEdge(l, []*net.TCPAddr{&addr0})
|
||||||
|
tunnelConnID := 0
|
||||||
|
|
||||||
|
// Use the IP for a tunnel
|
||||||
|
addrTunnel, err := edge.GetAddr(tunnelConnID)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Ensure the IP can be used for RPC too
|
||||||
|
addrRPC, err := edge.GetAddrForRPC()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, addrTunnel, addrRPC)
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetAddrForRPC(t *testing.T) {
|
func TestGetAddrForRPC(t *testing.T) {
|
||||||
l := logrus.New()
|
l := logrus.New()
|
||||||
edge := MockEdge(l, []*net.TCPAddr{&addr0, &addr1, &addr2, &addr3})
|
edge := MockEdge(l, []*net.TCPAddr{&addr0, &addr1, &addr2, &addr3})
|
||||||
|
|
Loading…
Reference in New Issue