MCPcopy Index your code
hub / github.com/tailscale/tailscale / TestUserspaceEngineTSMPLearned

Function TestUserspaceEngineTSMPLearned

wgengine/userspace_test.go:94–165  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

92}
93
94func TestUserspaceEngineTSMPLearned(t *testing.T) {
95 bus := eventbustest.NewBus(t)
96
97 ht := health.NewTracker(bus)
98 reg := new(usermetric.Registry)
99 e, err := NewFakeUserspaceEngine(t.Logf, 0, ht, reg, bus)
100 if err != nil {
101 t.Fatal(err)
102 }
103 t.Cleanup(e.Close)
104 ue := e.(*userspaceEngine)
105
106 discoChangedChan := make(chan map[key.NodePublic]bool, 1)
107 ue.testDiscoChangedHook = func(m map[key.NodePublic]bool) {
108 discoChangedChan <- m
109 }
110
111 routerCfg := &router.Config{}
112
113 keyChanges := []struct {
114 tsmp bool
115 inMap bool
116 }{
117 {tsmp: false, inMap: false},
118 {tsmp: true, inMap: false},
119 {tsmp: false, inMap: true},
120 }
121
122 nkHex := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
123 for _, change := range keyChanges {
124 oldDisco := key.NewDisco()
125 nm := &netmap.NetworkMap{
126 Peers: nodeViews([]*tailcfg.Node{
127 {
128 ID: 1,
129 Key: nkFromHex(nkHex),
130 DiscoKey: oldDisco.Public(),
131 },
132 }),
133 }
134 nk, err := key.ParseNodePublicUntyped(mem.S(nkHex))
135 if err != nil {
136 t.Fatal(err)
137 }
138 e.SetNetworkMap(nm)
139
140 newDisco := key.NewDisco()
141 cfg := &wgcfg.Config{
142 Peers: []wgcfg.Peer{
143 {
144 PublicKey: nk,
145 DiscoKey: newDisco.Public(),
146 },
147 },
148 }
149
150 if change.tsmp {
151 ue.PatchDiscoKey(nk, newDisco.Public())

Callers

nothing calls this directly

Calls 14

NewBusFunction · 0.92
NewTrackerFunction · 0.92
NewDiscoFunction · 0.92
ParseNodePublicUntypedFunction · 0.92
NewFakeUserspaceEngineFunction · 0.85
nkFromHexFunction · 0.85
nodeViewsFunction · 0.70
FatalMethod · 0.65
CleanupMethod · 0.65
SetNetworkMapMethod · 0.65
PatchDiscoKeyMethod · 0.65
ReconfigMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…