summaryrefslogtreecommitdiffhomepage
path: root/ipn/ipnlocal/state_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'ipn/ipnlocal/state_test.go')
-rw-r--r--ipn/ipnlocal/state_test.go49
1 files changed, 26 insertions, 23 deletions
diff --git a/ipn/ipnlocal/state_test.go b/ipn/ipnlocal/state_test.go
index 2197112b2..54fb9402b 100644
--- a/ipn/ipnlocal/state_test.go
+++ b/ipn/ipnlocal/state_test.go
@@ -39,6 +39,7 @@ import (
"tailscale.com/types/netmap"
"tailscale.com/types/persist"
"tailscale.com/types/preftype"
+ "tailscale.com/types/topics"
"tailscale.com/util/dnsname"
"tailscale.com/util/eventbus/eventbustest"
"tailscale.com/util/mak"
@@ -1004,7 +1005,7 @@ func runTestStateMachine(t *testing.T, seamless bool) {
}
notifies.expect(1)
// Fake a DERP connection.
- b.setWgengineStatus(&wgengine.Status{DERPs: 1, AsOf: time.Now()}, nil)
+ b.onDERPConnChange(topics.DERPConnChange{RegionID: 1, Connected: true, LiveDERPs: 1})
{
nn := notifies.drain(1)
cc.assertCalls()
@@ -1144,11 +1145,11 @@ func TestWGEngineStatusRace(t *testing.T) {
wg.Add(1)
go func(i int) {
defer wg.Done()
- n := 0
if i == 0 {
- n = 1
+ b.onDERPConnChange(topics.DERPConnChange{RegionID: 1, Connected: true, LiveDERPs: 1})
+ } else {
+ b.onDERPConnChange(topics.DERPConnChange{RegionID: 1, Connected: false, LiveDERPs: 0})
}
- b.setWgengineStatus(&wgengine.Status{AsOf: time.Now(), DERPs: n}, nil)
}(i)
}
wg.Wait()
@@ -1615,7 +1616,7 @@ func runTestSendPreservesAuthURL(t *testing.T, seamless bool) {
}})
t.Logf("Running")
- b.setWgengineStatus(&wgengine.Status{AsOf: time.Now(), DERPs: 1}, nil)
+ b.onDERPConnChange(topics.DERPConnChange{RegionID: 1, Connected: true, LiveDERPs: 1})
t.Logf("Re-auth (StartLoginInteractive)")
b.StartLoginInteractive(t.Context())
@@ -1781,10 +1782,9 @@ type mockEngine struct {
cfg *wgcfg.Config
routerCfg *router.Config
dnsCfg *dns.Config
+ status *wgengine.Status
filter, jailedFilter *filter.Filter
-
- statusCb wgengine.StatusCallback
}
func newMockEngine() *mockEngine {
@@ -1805,6 +1805,24 @@ func (e *mockEngine) Reconfig(cfg *wgcfg.Config, routerCfg *router.Config, dnsCf
return nil
}
+func (e *mockEngine) GetStatus() *wgengine.Status {
+ e.mu.Lock()
+ defer e.mu.Unlock()
+ if e.status == nil {
+ return &wgengine.Status{}
+ }
+ return e.status
+}
+
+func (e *mockEngine) NumConfiguredPeers() int {
+ e.mu.Lock()
+ defer e.mu.Unlock()
+ if e.status == nil {
+ return 0
+ }
+ return len(e.status.Peers)
+}
+
func (e *mockEngine) Config() *wgcfg.Config {
e.mu.Lock()
defer e.mu.Unlock()
@@ -1851,27 +1869,12 @@ func (e *mockEngine) SetJailedFilter(f *filter.Filter) {
e.mu.Unlock()
}
-func (e *mockEngine) SetStatusCallback(cb wgengine.StatusCallback) {
- e.mu.Lock()
- e.statusCb = cb
- e.mu.Unlock()
-}
-
-func (e *mockEngine) RequestStatus() {
- e.mu.Lock()
- cb := e.statusCb
- e.mu.Unlock()
- if cb != nil {
- cb(&wgengine.Status{AsOf: time.Now()}, nil)
- }
-}
-
func (e *mockEngine) ResetAndStop() (*wgengine.Status, error) {
err := e.Reconfig(&wgcfg.Config{}, &router.Config{}, &dns.Config{})
if err != nil {
return nil, err
}
- return &wgengine.Status{AsOf: time.Now()}, nil
+ return &wgengine.Status{}, nil
}
func (e *mockEngine) PeerByKey(key.NodePublic) (_ wgint.Peer, ok bool) {