From 99e348dc6a085c5b6df670bbc4cb9c738db9c72f Mon Sep 17 00:00:00 2001 From: Salvador Fuentes Date: Fri, 7 Sep 2018 10:16:36 -0500 Subject: [PATCH] tests: modify kill tests to support Darwin SIGPWR is not supported on Darwin. This patch adds new kill_linux_test.go to use SIGPWR and kill_darwin_test.go that does not use SIGPWR. In addition SIGSTKFLT was removed from the tests. Signed-off-by: Salvador Fuentes --- integration/docker/kill_darwin_test.go | 15 +++++ integration/docker/kill_linux_test.go | 16 +++++ integration/docker/kill_test.go | 81 ++++++++++++++------------ 3 files changed, 74 insertions(+), 38 deletions(-) create mode 100644 integration/docker/kill_darwin_test.go create mode 100644 integration/docker/kill_linux_test.go diff --git a/integration/docker/kill_darwin_test.go b/integration/docker/kill_darwin_test.go new file mode 100644 index 000000000..e7b0cf13c --- /dev/null +++ b/integration/docker/kill_darwin_test.go @@ -0,0 +1,15 @@ +// Copyright (c) 2018 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 + +package docker + +import ( + "syscall" + + . "github.com/onsi/ginkgo/extensions/table" +) + +func withOSSignals(signalsMap map[syscall.Signal]bool) []TableEntry { + return withGenericSignals(signalsMap) +} diff --git a/integration/docker/kill_linux_test.go b/integration/docker/kill_linux_test.go new file mode 100644 index 000000000..91a2dc7e7 --- /dev/null +++ b/integration/docker/kill_linux_test.go @@ -0,0 +1,16 @@ +// Copyright (c) 2018 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 + +package docker + +import ( + "syscall" + + . "github.com/onsi/ginkgo/extensions/table" +) + +func withOSSignals(signalsMap map[syscall.Signal]bool) []TableEntry { + signalsMap[syscall.SIGPWR] = canBeTrapped + return withGenericSignals(signalsMap) +} diff --git a/integration/docker/kill_test.go b/integration/docker/kill_test.go index 0a40a62d2..bde70accc 100644 --- a/integration/docker/kill_test.go +++ b/integration/docker/kill_test.go @@ -20,15 +20,32 @@ const ( canBeTrapped = true ) -func withSignal(signal syscall.Signal, trap bool) TableEntry { - expectedExitCode := int(signal) - if !trap { - // 128 -> command interrupted by a signal - // http://www.tldp.org/LDP/abs/html/exitcodes.html - expectedExitCode += 128 - } - - return Entry(fmt.Sprintf("with '%d'(%s) signal", signal, syscall.Signal(signal)), signal, expectedExitCode, true) +var genericSignalMap = map[syscall.Signal]bool{ + syscall.SIGHUP: canBeTrapped, + syscall.SIGINT: canBeTrapped, + syscall.SIGQUIT: canBeTrapped, + syscall.SIGILL: canBeTrapped, + syscall.SIGTRAP: canBeTrapped, + syscall.SIGIOT: canBeTrapped, + syscall.SIGFPE: canBeTrapped, + syscall.SIGUSR1: canBeTrapped, + syscall.SIGSEGV: canBeTrapped, + syscall.SIGUSR2: canBeTrapped, + syscall.SIGPIPE: canBeTrapped, + syscall.SIGALRM: canBeTrapped, + syscall.SIGTERM: canBeTrapped, + syscall.SIGCHLD: canBeTrapped, + syscall.SIGCONT: canBeTrapped, + syscall.SIGTSTP: canBeTrapped, + syscall.SIGTTIN: canBeTrapped, + syscall.SIGTTOU: canBeTrapped, + syscall.SIGURG: canBeTrapped, + syscall.SIGXCPU: canBeTrapped, + syscall.SIGXFSZ: canBeTrapped, + syscall.SIGVTALRM: canBeTrapped, + syscall.SIGPROF: canBeTrapped, + syscall.SIGWINCH: canBeTrapped, + syscall.SIGIO: canBeTrapped, } func withoutSignal() TableEntry { @@ -43,6 +60,22 @@ func withSignalNotExitCode(signal syscall.Signal) TableEntry { return Entry(fmt.Sprintf("with '%d' (%s) signal, don't change the exit code", signal, signal), signal, 0, false) } +func withGenericSignals(signalsMap map[syscall.Signal]bool) []TableEntry { + var table []TableEntry + var expectedExitCode int + for signal, trap := range signalsMap { + expectedExitCode = int(signal) + if !trap { + // 128 -> command interrupted by a signal + // http://www.tldp.org/LDP/abs/html/exitcodes.html + expectedExitCode += 128 + + } + table = append(table, Entry(fmt.Sprintf("with '%d'(%s) signal", int(signal), signal), signal, expectedExitCode, true)) + } + return append(table, withoutSignal(), withSignalNotExitCode(syscall.SIGSTOP)) +} + var _ = Describe("docker kill", func() { var ( args []string @@ -119,34 +152,6 @@ var _ = Describe("docker kill", func() { Expect(err).ToNot(HaveOccurred()) Expect(exitCode).To(Equal(expectedExitCode)) }, - withSignal(syscall.SIGHUP, canBeTrapped), - withSignal(syscall.SIGINT, canBeTrapped), - withSignal(syscall.SIGQUIT, canBeTrapped), - withSignal(syscall.SIGILL, canBeTrapped), - withSignal(syscall.SIGTRAP, canBeTrapped), - withSignal(syscall.SIGIOT, canBeTrapped), - withSignal(syscall.SIGFPE, canBeTrapped), - withSignal(syscall.SIGUSR1, canBeTrapped), - withSignal(syscall.SIGSEGV, canBeTrapped), - withSignal(syscall.SIGUSR2, canBeTrapped), - withSignal(syscall.SIGPIPE, canBeTrapped), - withSignal(syscall.SIGALRM, canBeTrapped), - withSignal(syscall.SIGTERM, canBeTrapped), - withSignal(syscall.SIGSTKFLT, canBeTrapped), - withSignal(syscall.SIGCHLD, canBeTrapped), - withSignal(syscall.SIGCONT, canBeTrapped), - withSignalNotExitCode(syscall.SIGSTOP), - withSignal(syscall.SIGTSTP, canBeTrapped), - withSignal(syscall.SIGTTIN, canBeTrapped), - withSignal(syscall.SIGTTOU, canBeTrapped), - withSignal(syscall.SIGURG, canBeTrapped), - withSignal(syscall.SIGXCPU, canBeTrapped), - withSignal(syscall.SIGXFSZ, canBeTrapped), - withSignal(syscall.SIGVTALRM, canBeTrapped), - withSignal(syscall.SIGPROF, canBeTrapped), - withSignal(syscall.SIGWINCH, canBeTrapped), - withSignal(syscall.SIGIO, canBeTrapped), - withSignal(syscall.SIGPWR, canBeTrapped), - withoutSignal(), + withOSSignals(genericSignalMap)..., ) })