mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-20 09:57:31 +00:00
wgengine/magicsock,all: allocate peer relay over disco instead of PeerAPI (#16603)
Updates tailscale/corp#30583 Updates tailscale/corp#30534 Updates tailscale/corp#30557 Signed-off-by: Dylan Bargatze <dylan@tailscale.com> Signed-off-by: Jordan Whited <jordan@tailscale.com> Co-authored-by: Dylan Bargatze <dylan@tailscale.com>
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
package magicsock
|
||||
|
||||
import (
|
||||
"net/netip"
|
||||
"testing"
|
||||
|
||||
"tailscale.com/disco"
|
||||
@@ -22,26 +21,57 @@ func TestRelayManagerInitAndIdle(t *testing.T) {
|
||||
<-rm.runLoopStoppedCh
|
||||
|
||||
rm = relayManager{}
|
||||
rm.handleCallMeMaybeVia(&endpoint{c: &Conn{discoPrivate: key.NewDisco()}}, addrQuality{}, false, &disco.CallMeMaybeVia{ServerDisco: key.NewDisco().Public()})
|
||||
rm.handleCallMeMaybeVia(&endpoint{c: &Conn{discoPrivate: key.NewDisco()}}, addrQuality{}, false, &disco.CallMeMaybeVia{UDPRelayEndpoint: disco.UDPRelayEndpoint{ServerDisco: key.NewDisco().Public()}})
|
||||
<-rm.runLoopStoppedCh
|
||||
|
||||
rm = relayManager{}
|
||||
rm.handleGeneveEncapDiscoMsg(&Conn{discoPrivate: key.NewDisco()}, &disco.BindUDPRelayEndpointChallenge{}, &discoInfo{}, epAddr{})
|
||||
rm.handleRxDiscoMsg(&Conn{discoPrivate: key.NewDisco()}, &disco.BindUDPRelayEndpointChallenge{}, key.NodePublic{}, key.DiscoPublic{}, epAddr{})
|
||||
<-rm.runLoopStoppedCh
|
||||
|
||||
rm = relayManager{}
|
||||
rm.handleRelayServersSet(make(set.Set[netip.AddrPort]))
|
||||
rm.handleRelayServersSet(make(set.Set[candidatePeerRelay]))
|
||||
<-rm.runLoopStoppedCh
|
||||
|
||||
rm = relayManager{}
|
||||
rm.getServers()
|
||||
<-rm.runLoopStoppedCh
|
||||
|
||||
rm = relayManager{}
|
||||
rm.handleDERPHomeChange(key.NodePublic{}, 1)
|
||||
<-rm.runLoopStoppedCh
|
||||
}
|
||||
|
||||
func TestRelayManagerHandleDERPHomeChange(t *testing.T) {
|
||||
rm := relayManager{}
|
||||
servers := make(set.Set[candidatePeerRelay], 1)
|
||||
c := candidatePeerRelay{
|
||||
nodeKey: key.NewNode().Public(),
|
||||
discoKey: key.NewDisco().Public(),
|
||||
derpHomeRegionID: 1,
|
||||
}
|
||||
servers.Add(c)
|
||||
rm.handleRelayServersSet(servers)
|
||||
want := c
|
||||
want.derpHomeRegionID = 2
|
||||
rm.handleDERPHomeChange(c.nodeKey, 2)
|
||||
got := rm.getServers()
|
||||
if len(got) != 1 {
|
||||
t.Fatalf("got %d servers, want 1", len(got))
|
||||
}
|
||||
_, ok := got[want]
|
||||
if !ok {
|
||||
t.Fatal("DERP home change failed to propagate")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRelayManagerGetServers(t *testing.T) {
|
||||
rm := relayManager{}
|
||||
servers := make(set.Set[netip.AddrPort], 1)
|
||||
servers.Add(netip.MustParseAddrPort("192.0.2.1:7"))
|
||||
servers := make(set.Set[candidatePeerRelay], 1)
|
||||
c := candidatePeerRelay{
|
||||
nodeKey: key.NewNode().Public(),
|
||||
discoKey: key.NewDisco().Public(),
|
||||
}
|
||||
servers.Add(c)
|
||||
rm.handleRelayServersSet(servers)
|
||||
got := rm.getServers()
|
||||
if !servers.Equal(got) {
|
||||
|
Reference in New Issue
Block a user