signal_linux_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // +build darwin linux
  2. package signal // import "github.com/docker/docker/pkg/signal"
  3. import (
  4. "os"
  5. "syscall"
  6. "testing"
  7. "gotest.tools/v3/assert"
  8. is "gotest.tools/v3/assert/cmp"
  9. )
  10. func TestCatchAll(t *testing.T) {
  11. sigs := make(chan os.Signal, 1)
  12. CatchAll(sigs)
  13. defer StopCatch(sigs)
  14. listOfSignals := map[string]string{
  15. "CONT": syscall.SIGCONT.String(),
  16. "HUP": syscall.SIGHUP.String(),
  17. "CHLD": syscall.SIGCHLD.String(),
  18. "ILL": syscall.SIGILL.String(),
  19. "FPE": syscall.SIGFPE.String(),
  20. "CLD": syscall.SIGCLD.String(),
  21. }
  22. for sigStr := range listOfSignals {
  23. if signal, ok := SignalMap[sigStr]; ok {
  24. syscall.Kill(syscall.Getpid(), signal)
  25. s := <-sigs
  26. assert.Check(t, is.Equal(s.String(), signal.String()))
  27. }
  28. }
  29. }
  30. func TestStopCatch(t *testing.T) {
  31. signal := SignalMap["HUP"]
  32. channel := make(chan os.Signal, 1)
  33. CatchAll(channel)
  34. syscall.Kill(syscall.Getpid(), signal)
  35. signalString := <-channel
  36. assert.Check(t, is.Equal(signalString.String(), signal.String()))
  37. StopCatch(channel)
  38. _, ok := <-channel
  39. assert.Check(t, is.Equal(ok, false))
  40. }