Browse code

Add test coverage to pkg/signal

Signed-off-by: Naveed Jamil <naveed.jamil@tenpearls.com>

Naveed Jamil authored on 2017/06/01 01:40:41
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,58 @@
0
+// +build darwin linux solaris
1
+
2
+package signal
3
+
4
+import (
5
+	"os"
6
+	"syscall"
7
+	"testing"
8
+	"time"
9
+
10
+	"github.com/stretchr/testify/assert"
11
+)
12
+
13
+func TestCatchAll(t *testing.T) {
14
+	sigs := make(chan os.Signal, 1)
15
+	CatchAll(sigs)
16
+	defer StopCatch(sigs)
17
+
18
+	listOfSignals := map[string]string{
19
+		"CONT": syscall.SIGCONT.String(),
20
+		"HUP":  syscall.SIGHUP.String(),
21
+		"CHLD": syscall.SIGCHLD.String(),
22
+		"ILL":  syscall.SIGILL.String(),
23
+		"FPE":  syscall.SIGFPE.String(),
24
+		"CLD":  syscall.SIGCLD.String(),
25
+	}
26
+
27
+	for sigStr := range listOfSignals {
28
+		signal, ok := SignalMap[sigStr]
29
+		if ok {
30
+			go func() {
31
+				time.Sleep(1 * time.Millisecond)
32
+				syscall.Kill(syscall.Getpid(), signal)
33
+			}()
34
+
35
+			s := <-sigs
36
+			assert.EqualValues(t, s.String(), signal.String())
37
+		}
38
+
39
+	}
40
+}
41
+
42
+func TestStopCatch(t *testing.T) {
43
+	signal, _ := SignalMap["HUP"]
44
+	channel := make(chan os.Signal, 1)
45
+	CatchAll(channel)
46
+	go func() {
47
+
48
+		time.Sleep(1 * time.Millisecond)
49
+		syscall.Kill(syscall.Getpid(), signal)
50
+	}()
51
+	signalString := <-channel
52
+	assert.EqualValues(t, signalString.String(), signal.String())
53
+
54
+	StopCatch(channel)
55
+	_, ok := <-channel
56
+	assert.EqualValues(t, ok, false)
57
+}
0 58
new file mode 100644
... ...
@@ -0,0 +1,33 @@
0
+package signal
1
+
2
+import (
3
+	"syscall"
4
+	"testing"
5
+
6
+	"github.com/stretchr/testify/assert"
7
+)
8
+
9
+func TestParseSignal(t *testing.T) {
10
+	_, checkAtoiError := ParseSignal("0")
11
+	assert.EqualError(t, checkAtoiError, "Invalid signal: 0")
12
+
13
+	_, error := ParseSignal("SIG")
14
+	assert.EqualError(t, error, "Invalid signal: SIG")
15
+
16
+	for sigStr := range SignalMap {
17
+		responseSignal, error := ParseSignal(sigStr)
18
+		assert.NoError(t, error)
19
+		signal := SignalMap[sigStr]
20
+		assert.EqualValues(t, signal, responseSignal)
21
+	}
22
+}
23
+
24
+func TestValidSignalForPlatform(t *testing.T) {
25
+	isValidSignal := ValidSignalForPlatform(syscall.Signal(0))
26
+	assert.EqualValues(t, false, isValidSignal)
27
+
28
+	for _, sigN := range SignalMap {
29
+		isValidSignal = ValidSignalForPlatform(syscall.Signal(sigN))
30
+		assert.EqualValues(t, true, isValidSignal)
31
+	}
32
+}