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