ipn/ipnlocal/local_test: prepare withSuggest for configurable values

Updates tailscale/corp#31011

Signed-off-by: Simon Law <sfllaw@tailscale.com>
This commit is contained in:
Simon Law
2025-08-04 10:36:20 -07:00
parent 834630fedf
commit afebdddcd5

View File

@@ -601,7 +601,7 @@ func TestSetUseExitNodeEnabled(t *testing.T) {
} }
func makeExitNode(id tailcfg.NodeID, opts ...peerOptFunc) tailcfg.NodeView { func makeExitNode(id tailcfg.NodeID, opts ...peerOptFunc) tailcfg.NodeView {
return makePeer(id, append([]peerOptFunc{withCap(26), withSuggest(), withExitRoutes()}, opts...)...) return makePeer(id, append([]peerOptFunc{withCap(26), withSuggest(nil), withExitRoutes()}, opts...)...)
} }
func TestConfigureExitNode(t *testing.T) { func TestConfigureExitNode(t *testing.T) {
@@ -2854,8 +2854,8 @@ func TestSetExitNodeIDPolicy(t *testing.T) {
} }
func TestUpdateNetmapDeltaAutoExitNode(t *testing.T) { func TestUpdateNetmapDeltaAutoExitNode(t *testing.T) {
peer1 := makePeer(1, withCap(26), withSuggest(), withOnline(true), withExitRoutes()) peer1 := makePeer(1, withCap(26), withSuggest(nil), withOnline(true), withExitRoutes())
peer2 := makePeer(2, withCap(26), withSuggest(), withOnline(true), withExitRoutes()) peer2 := makePeer(2, withCap(26), withSuggest(nil), withOnline(true), withExitRoutes())
derpMap := &tailcfg.DERPMap{ derpMap := &tailcfg.DERPMap{
Regions: map[int]*tailcfg.DERPRegion{ Regions: map[int]*tailcfg.DERPRegion{
1: { 1: {
@@ -3034,8 +3034,8 @@ func TestAutoExitNodeSetNetInfoCallback(t *testing.T) {
syspolicy.ExitNodeID, "auto:any", syspolicy.ExitNodeID, "auto:any",
)) ))
syspolicy.MustRegisterStoreForTest(t, "TestStore", setting.DeviceScope, policyStore) syspolicy.MustRegisterStoreForTest(t, "TestStore", setting.DeviceScope, policyStore)
peer1 := makePeer(1, withCap(26), withDERP(3), withSuggest(), withExitRoutes()) peer1 := makePeer(1, withCap(26), withDERP(3), withSuggest(nil), withExitRoutes())
peer2 := makePeer(2, withCap(26), withDERP(2), withSuggest(), withExitRoutes()) peer2 := makePeer(2, withCap(26), withDERP(2), withSuggest(nil), withExitRoutes())
selfNode := tailcfg.Node{ selfNode := tailcfg.Node{
Addresses: []netip.Prefix{ Addresses: []netip.Prefix{
netip.MustParsePrefix("100.64.1.1/32"), netip.MustParsePrefix("100.64.1.1/32"),
@@ -3100,8 +3100,8 @@ func TestAutoExitNodeSetNetInfoCallback(t *testing.T) {
} }
func TestSetControlClientStatusAutoExitNode(t *testing.T) { func TestSetControlClientStatusAutoExitNode(t *testing.T) {
peer1 := makePeer(1, withCap(26), withSuggest(), withExitRoutes(), withOnline(true), withNodeKey()) peer1 := makePeer(1, withCap(26), withSuggest(nil), withExitRoutes(), withOnline(true), withNodeKey())
peer2 := makePeer(2, withCap(26), withSuggest(), withExitRoutes(), withOnline(true), withNodeKey()) peer2 := makePeer(2, withCap(26), withSuggest(nil), withExitRoutes(), withOnline(true), withNodeKey())
derpMap := &tailcfg.DERPMap{ derpMap := &tailcfg.DERPMap{
Regions: map[int]*tailcfg.DERPRegion{ Regions: map[int]*tailcfg.DERPRegion{
1: { 1: {
@@ -3149,7 +3149,7 @@ func TestSetControlClientStatusAutoExitNode(t *testing.T) {
b.lastSuggestedExitNode = peer2.StableID() b.lastSuggestedExitNode = peer2.StableID()
b.sys.MagicSock.Get().SetLastNetcheckReportForTest(b.ctx, report) b.sys.MagicSock.Get().SetLastNetcheckReportForTest(b.ctx, report)
b.SetPrefsForTest(b.pm.CurrentPrefs().AsStruct()) b.SetPrefsForTest(b.pm.CurrentPrefs().AsStruct())
offlinePeer2 := makePeer(2, withCap(26), withSuggest(), withExitRoutes(), withOnline(false), withNodeKey()) offlinePeer2 := makePeer(2, withCap(26), withSuggest(nil), withExitRoutes(), withOnline(false), withNodeKey())
updatedNetmap := &netmap.NetworkMap{ updatedNetmap := &netmap.NetworkMap{
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
peer1, peer1,
@@ -4294,9 +4294,9 @@ func withExitRoutes() peerOptFunc {
} }
} }
func withSuggest() peerOptFunc { func withSuggest(v []tailcfg.RawMessage) peerOptFunc {
return func(n *tailcfg.Node) { return func(n *tailcfg.Node) {
mak.Set(&n.CapMap, tailcfg.NodeAttrSuggestExitNode, []tailcfg.RawMessage{}) mak.Set(&n.CapMap, tailcfg.NodeAttrSuggestExitNode, v)
} }
} }
@@ -4435,41 +4435,41 @@ func TestSuggestExitNode(t *testing.T) {
peer1 := makePeer(1, peer1 := makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest()) withSuggest(nil))
peer2DERP1 := makePeer(2, peer2DERP1 := makePeer(2,
withDERP(1), withDERP(1),
withExitRoutes(), withExitRoutes(),
withSuggest()) withSuggest(nil))
peer3 := makePeer(3, peer3 := makePeer(3,
withExitRoutes(), withExitRoutes(),
withSuggest()) withSuggest(nil))
peer4DERP3 := makePeer(4, peer4DERP3 := makePeer(4,
withDERP(3), withDERP(3),
withExitRoutes(), withExitRoutes(),
withSuggest()) withSuggest(nil))
dallasPeer5 := makePeer(5, dallasPeer5 := makePeer(5,
withName("Dallas"), withName("Dallas"),
withoutDERP(), withoutDERP(),
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(dallas.View())) withLocation(dallas.View()))
sanJosePeer6 := makePeer(6, sanJosePeer6 := makePeer(6,
withName("San Jose"), withName("San Jose"),
withoutDERP(), withoutDERP(),
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(sanJose.View())) withLocation(sanJose.View()))
fortWorthPeer7 := makePeer(7, fortWorthPeer7 := makePeer(7,
withName("Fort Worth"), withName("Fort Worth"),
withoutDERP(), withoutDERP(),
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(fortWorth.View())) withLocation(fortWorth.View()))
fortWorthPeer8LowPriority := makePeer(8, fortWorthPeer8LowPriority := makePeer(8,
withName("Fort Worth Low"), withName("Fort Worth Low"),
withoutDERP(), withoutDERP(),
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(fortWorthLowPriority.View())) withLocation(fortWorthLowPriority.View()))
selfNode := tailcfg.Node{ selfNode := tailcfg.Node{
@@ -5035,7 +5035,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
SelfNode: selfNode.View(), SelfNode: selfNode.View(),
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withSuggest()), withSuggest(nil)),
}, },
}, },
wantID: "", wantID: "",
@@ -5047,7 +5047,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
}, },
}, },
wantID: "stable1", wantID: "stable1",
@@ -5060,16 +5060,16 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
makePeer(3, makePeer(3,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
makePeer(4, makePeer(4,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
}, },
}, },
// Change this, if the hashing function changes. // Change this, if the hashing function changes.
@@ -5083,11 +5083,11 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(1)), withLocationPriority(1)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
}, },
}, },
wantID: "stable1", wantID: "stable1",
@@ -5101,10 +5101,10 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(1)), withLocationPriority(1)),
}, },
}, },
@@ -5119,19 +5119,19 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-1)), withLocationPriority(-1)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-2)), withLocationPriority(-2)),
makePeer(3, makePeer(3,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-3)), withLocationPriority(-3)),
makePeer(4, makePeer(4,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-4)), withLocationPriority(-4)),
}, },
}, },
@@ -5146,15 +5146,15 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-1)), withLocationPriority(-1)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(-2)), withLocationPriority(-2)),
makePeer(3, makePeer(3,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
}, },
}, },
wantID: "stable3", wantID: "stable3",
@@ -5167,30 +5167,30 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(1)), withLocationPriority(1)),
makePeer(2, makePeer(2,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(2)), // top withLocationPriority(2)), // top
makePeer(3, makePeer(3,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(1)), withLocationPriority(1)),
makePeer(4, makePeer(4,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(2)), // top withLocationPriority(2)), // top
makePeer(5, makePeer(5,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(2)), // top withLocationPriority(2)), // top
makePeer(6, makePeer(6,
withExitRoutes(), withExitRoutes(),
withSuggest()), withSuggest(nil)),
makePeer(7, makePeer(7,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocationPriority(2)), // top withLocationPriority(2)), // top
}, },
}, },
@@ -5205,7 +5205,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(city.View())), withLocation(city.View())),
}, },
}, },
@@ -5220,7 +5220,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(city.View()), withLocation(city.View()),
withLocationPriority(1)), withLocationPriority(1)),
}, },
@@ -5237,7 +5237,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(noLatLng.View())), withLocation(noLatLng.View())),
}, },
}, },
@@ -5252,7 +5252,7 @@ func TestSuggestExitNodeTrafficSteering(t *testing.T) {
Peers: []tailcfg.NodeView{ Peers: []tailcfg.NodeView{
makePeer(1, makePeer(1,
withExitRoutes(), withExitRoutes(),
withSuggest(), withSuggest(nil),
withLocation(noLatLng.View()), withLocation(noLatLng.View()),
withLocationPriority(1)), withLocationPriority(1)),
}, },