shutdown_test.go 904 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //go:build linux || darwin
  2. package proc
  3. import (
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestShutdown(t *testing.T) {
  9. SetTimeToForceQuit(time.Hour)
  10. assert.Equal(t, time.Hour, delayTimeBeforeForceQuit)
  11. var val int
  12. called := AddWrapUpListener(func() {
  13. val++
  14. })
  15. WrapUp()
  16. called()
  17. assert.Equal(t, 1, val)
  18. called = AddShutdownListener(func() {
  19. val += 2
  20. })
  21. Shutdown()
  22. called()
  23. assert.Equal(t, 3, val)
  24. }
  25. func TestNotifyMoreThanOnce(t *testing.T) {
  26. ch := make(chan struct{}, 1)
  27. go func() {
  28. var val int
  29. called := AddWrapUpListener(func() {
  30. val++
  31. })
  32. WrapUp()
  33. WrapUp()
  34. called()
  35. assert.Equal(t, 1, val)
  36. called = AddShutdownListener(func() {
  37. val += 2
  38. })
  39. Shutdown()
  40. Shutdown()
  41. called()
  42. assert.Equal(t, 3, val)
  43. ch <- struct{}{}
  44. }()
  45. select {
  46. case <-ch:
  47. case <-time.After(time.Second):
  48. t.Fatal("timeout, check error logs")
  49. }
  50. }