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.
 | 
			
		||||
func (rs *Regions) GetAnyAddress() *net.TCPAddr {
 | 
			
		||||
	if rs.region1.AvailableAddrs() > rs.region2.AvailableAddrs() {
 | 
			
		||||
		return rs.region1.GetAnyAddress()
 | 
			
		||||
	if addr := rs.region1.GetAnyAddress(); addr != nil {
 | 
			
		||||
		return addr
 | 
			
		||||
	}
 | 
			
		||||
	return rs.region2.GetAnyAddress()
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,24 @@ func TestGiveBack(t *testing.T) {
 | 
			
		|||
	edge.GiveBack(addr)
 | 
			
		||||
	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) {
 | 
			
		||||
	l := logrus.New()
 | 
			
		||||
	edge := MockEdge(l, []*net.TCPAddr{&addr0, &addr1, &addr2, &addr3})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue