mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-30 04:34:27 +00:00
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:
parent
7fdaab49bc
commit
1c1ee8057c
@ -7,7 +7,9 @@ package signals
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"reflect"
|
"reflect"
|
||||||
goruntime "runtime"
|
goruntime "runtime"
|
||||||
"sort"
|
"sort"
|
||||||
@ -135,3 +137,69 @@ func TestSignalBacktrace(t *testing.T) {
|
|||||||
assert.True(strings.Contains(b, "contention:"))
|
assert.True(strings.Contains(b, "contention:"))
|
||||||
assert.True(strings.Contains(b, `level=error`))
|
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)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user