tailscale/wgengine/magicsock/peermap_test.go
Jordan Whited 67b1693c13
wgengine/magicsock: enable setting relay epAddr's as bestAddr (#16229)
relayManager can now hand endpoint a relay epAddr for it to consider
as bestAddr.

endpoint and Conn disco ping/pong handling are now VNI-aware.

Updates tailscale/corp#27502
Updates tailscale/corp#29422

Signed-off-by: Jordan Whited <jordan@tailscale.com>
2025-06-09 13:17:14 -07:00

37 lines
953 B
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package magicsock
import (
"net/netip"
"testing"
"tailscale.com/types/key"
)
func Test_peerMap_oneRelayEpAddrPerNK(t *testing.T) {
pm := newPeerMap()
nk := key.NewNode().Public()
ep := &endpoint{
nodeID: 1,
publicKey: nk,
}
ed := &endpointDisco{key: key.NewDisco().Public()}
ep.disco.Store(ed)
pm.upsertEndpoint(ep, key.DiscoPublic{})
vni := virtualNetworkID{}
vni.set(1)
relayEpAddrA := epAddr{ap: netip.MustParseAddrPort("127.0.0.1:1"), vni: vni}
relayEpAddrB := epAddr{ap: netip.MustParseAddrPort("127.0.0.1:2"), vni: vni}
pm.setNodeKeyForEpAddr(relayEpAddrA, nk)
pm.setNodeKeyForEpAddr(relayEpAddrB, nk)
if len(pm.byEpAddr) != 1 {
t.Fatalf("expected 1 epAddr in byEpAddr, got: %d", len(pm.byEpAddr))
}
got := pm.relayEpAddrByNodeKey[nk]
if got != relayEpAddrB {
t.Fatalf("expected relay epAddr %v, got: %v", relayEpAddrB, got)
}
}