watchdog_test.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package wgengine
  4. import (
  5. "runtime"
  6. "testing"
  7. "time"
  8. "tailscale.com/health"
  9. "tailscale.com/util/eventbus/eventbustest"
  10. "tailscale.com/util/usermetric"
  11. )
  12. func TestWatchdog(t *testing.T) {
  13. t.Parallel()
  14. var maxWaitMultiple time.Duration = 1
  15. if runtime.GOOS == "darwin" {
  16. // Work around slow close syscalls on Big Sur with content filter Network Extensions installed.
  17. // See https://github.com/tailscale/tailscale/issues/1598.
  18. maxWaitMultiple = 15
  19. }
  20. t.Run("default watchdog does not fire", func(t *testing.T) {
  21. t.Parallel()
  22. bus := eventbustest.NewBus(t)
  23. ht := health.NewTracker(bus)
  24. reg := new(usermetric.Registry)
  25. e, err := NewFakeUserspaceEngine(t.Logf, 0, ht, reg, bus)
  26. if err != nil {
  27. t.Fatal(err)
  28. }
  29. e = NewWatchdog(e)
  30. e.(*watchdogEngine).maxWait = maxWaitMultiple * 150 * time.Millisecond
  31. e.(*watchdogEngine).logf = t.Logf
  32. e.(*watchdogEngine).fatalf = t.Fatalf
  33. e.RequestStatus()
  34. e.RequestStatus()
  35. e.RequestStatus()
  36. e.Close()
  37. })
  38. }