mirror of
https://github.com/tailscale/tailscale.git
synced 2025-07-29 15:23:45 +00:00
net/netmon: add tests for the events over the eventbus (#16382)
Updates #15160 Signed-off-by: Claus Lensbøl <claus@tailscale.com>
This commit is contained in:
parent
35b11e7be5
commit
37eca1785c
@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"tailscale.com/util/eventbus"
|
||||
"tailscale.com/util/eventbus/eventbustest"
|
||||
"tailscale.com/util/mak"
|
||||
)
|
||||
|
||||
@ -68,6 +69,23 @@ func TestMonitorInjectEvent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMonitorInjectEventOnBus(t *testing.T) {
|
||||
bus := eventbustest.NewBus(t)
|
||||
|
||||
mon, err := New(bus, t.Logf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer mon.Close()
|
||||
tw := eventbustest.NewWatcher(t, bus)
|
||||
|
||||
mon.Start()
|
||||
mon.InjectEvent()
|
||||
if err := eventbustest.Expect(tw, eventbustest.Type[*ChangeDelta]()); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
monitor = flag.String("monitor", "", `go into monitor mode like 'route monitor'; test never terminates. Value can be either "raw" or "callback"`)
|
||||
monitorDuration = flag.Duration("monitor-duration", 0, "if non-zero, how long to run TestMonitorMode. Zero means forever.")
|
||||
@ -77,13 +95,13 @@ func TestMonitorMode(t *testing.T) {
|
||||
switch *monitor {
|
||||
case "":
|
||||
t.Skip("skipping non-test without --monitor")
|
||||
case "raw", "callback":
|
||||
case "raw", "callback", "eventbus":
|
||||
default:
|
||||
t.Skipf(`invalid --monitor value: must be "raw" or "callback"`)
|
||||
t.Skipf(`invalid --monitor value: must be "raw", "callback" or "eventbus"`)
|
||||
}
|
||||
|
||||
bus := eventbus.New()
|
||||
defer bus.Close()
|
||||
bus := eventbustest.NewBus(t)
|
||||
tw := eventbustest.NewWatcher(t, bus)
|
||||
|
||||
mon, err := New(bus, t.Logf)
|
||||
if err != nil {
|
||||
@ -124,6 +142,16 @@ func TestMonitorMode(t *testing.T) {
|
||||
mon.Start()
|
||||
<-done
|
||||
t.Logf("%v callbacks", n)
|
||||
case "eventbus":
|
||||
tw.TimeOut = *monitorDuration
|
||||
n := 0
|
||||
mon.Start()
|
||||
eventbustest.Expect(tw, func(event *ChangeDelta) (bool, error) {
|
||||
n++
|
||||
t.Logf("cb: changed=%v, ifSt=%v", event.Major, event.New)
|
||||
return false, nil // Return false, indicating we wanna look for more events
|
||||
})
|
||||
t.Logf("%v events", n)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user