wgengine/monitor: skip some macOS route updates, fix debounce regression

Debound was broken way back in 5c1e443d34 and we never noticed.

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2021-03-02 10:29:49 -08:00
committed by Brad Fitzpatrick
parent be779b3587
commit 471f0c470a
3 changed files with 89 additions and 18 deletions
+35
View File
@@ -5,7 +5,10 @@
package monitor
import (
"flag"
"testing"
"tailscale.com/net/interfaces"
)
func TestMonitorStartClose(t *testing.T) {
@@ -28,3 +31,35 @@ func TestMonitorJustClose(t *testing.T) {
t.Fatal(err)
}
}
var monitor = flag.String("monitor", "", `go into monitor mode like 'route monitor'; test never terminates. Value can be either "raw" or "callback"`)
func TestMonitorMode(t *testing.T) {
switch *monitor {
case "":
t.Skip("skipping non-test without --monitor")
case "raw", "callback":
default:
t.Skipf(`invalid --monitor value: must be "raw" or "callback"`)
}
mon, err := New(t.Logf)
if err != nil {
t.Fatal(err)
}
switch *monitor {
case "raw":
for {
msg, err := mon.om.Receive()
if err != nil {
t.Fatal(err)
}
t.Logf("msg: %#v", msg)
}
case "callback":
mon.RegisterChangeCallback(func(changed bool, st *interfaces.State) {
t.Logf("cb: changed=%v, ifSt=%v", changed, st)
})
mon.Start()
select {}
}
}