pkg/signals: Improved test coverage 60% to 100%

Expanded tests on signals_test.go to cover more lines of code. 'go test' won't show 100% coverage (only 66.7%), because one test need to spawn a new
process (since it is testing a function that calls os.Exit(1)).

Fixes: #256

Signed-off-by: Eduardo Berrocal <eduardo.berrocal@intel.com>
This commit is contained in:
Eduardo Berrocal 2023-04-25 23:34:13 +00:00
parent 7fdaab49bc
commit 1c1ee8057c

View File

@ -7,7 +7,9 @@ package signals
import (
"bytes"
"errors"
"os"
"os/exec"
"reflect"
goruntime "runtime"
"sort"
@ -135,3 +137,69 @@ func TestSignalBacktrace(t *testing.T) {
assert.True(strings.Contains(b, "contention:"))
assert.True(strings.Contains(b, `level=error`))
}
func TestSignalHandlePanic(t *testing.T) {
assert := assert.New(t)
savedLog := signalLog
defer func() {
signalLog = savedLog
}()
signalLog = logrus.WithFields(logrus.Fields{
"name": "name",
"pid": os.Getpid(),
"source": "throttler",
"test-logger": true})
// Create buffer to save logger output.
buf := &bytes.Buffer{}
savedOut := signalLog.Logger.Out
defer func() {
signalLog.Logger.Out = savedOut
}()
// Capture output to buffer.
signalLog.Logger.Out = buf
HandlePanic(nil)
b := buf.String()
assert.True(len(b) == 0)
}
func TestSignalHandlePanicWithError(t *testing.T) {
assert := assert.New(t)
if os.Getenv("CALL_EXIT") != "1" {
cmd := exec.Command(os.Args[0], "-test.run=TestSignalHandlePanicWithError")
cmd.Env = append(os.Environ(), "CALL_EXIT=1")
err := cmd.Run()
assert.True(err != nil)
exitError, ok := err.(*exec.ExitError)
assert.True(ok)
assert.True(exitError.ExitCode() == 1)
return
}
signalLog = logrus.WithFields(logrus.Fields{
"name": "name",
"pid": os.Getpid(),
"source": "throttler",
"test-logger": true})
// Create buffer to save logger output.
buf := &bytes.Buffer{}
// Capture output to buffer.
signalLog.Logger.Out = buf
dieCallBack := func() {}
defer HandlePanic(dieCallBack)
e := errors.New("test-panic")
panic(e)
}