recover from panic log including stacktrace to help finding the origin (#5392)

This commit is contained in:
Radim Hatlapatka
2022-05-24 14:36:36 +02:00
committed by GitHub
parent b7e4f05f08
commit 91bcbc2e3a
7 changed files with 87 additions and 35 deletions

View File

@@ -7,55 +7,64 @@ import (
"testing"
"github.com/coredns/caddy"
"github.com/coredns/coredns/core/dnsserver"
clog "github.com/coredns/coredns/plugin/pkg/log"
)
func TestErrorsParse(t *testing.T) {
tests := []struct {
inputErrorsRules string
shouldErr bool
optCount int
inputErrorsRules string
shouldErr bool
optCount int
stacktrace bool
}{
{`errors`, false, 0},
{`errors stdout`, false, 0},
{`errors errors.txt`, true, 0},
{`errors visible`, true, 0},
{`errors { log visible }`, true, 0},
{`errors`, false, 0, false},
{`errors stdout`, false, 0, false},
{`errors errors.txt`, true, 0, false},
{`errors visible`, true, 0, false},
{`errors { log visible }`, true, 0, false},
{`errors
errors `, true, 0},
{`errors a b`, true, 0},
errors `, true, 0, false},
{`errors a b`, true, 0, false},
{`errors {
consolidate
}`, true, 0},
}`, true, 0, false},
{`errors {
consolidate 1m
}`, true, 0},
}`, true, 0, false},
{`errors {
consolidate 1m .* extra
}`, true, 0},
}`, true, 0, false},
{`errors {
consolidate abc .*
}`, true, 0},
}`, true, 0, false},
{`errors {
consolidate 1 .*
}`, true, 0},
}`, true, 0, false},
{`errors {
consolidate 1m ())
}`, true, 0},
}`, true, 0, false},
{`errors {
stacktrace
}`, false, 0, true},
{`errors {
stacktrace
consolidate 1m ^exact$
}`, false, 1, true},
{`errors {
consolidate 1m ^exact$
}`, false, 1},
}`, false, 1, false},
{`errors {
consolidate 1m error
}`, false, 1},
}`, false, 1, false},
{`errors {
consolidate 1m "format error"
}`, false, 1},
}`, false, 1, false},
{`errors {
consolidate 1m error1
consolidate 5s error2
}`, false, 2},
}`, false, 2, false},
}
for i, test := range tests {
c := caddy.NewTestController("dns", test.inputErrorsRules)
@@ -69,6 +78,10 @@ func TestErrorsParse(t *testing.T) {
t.Errorf("Test %d: pattern count mismatch, expected %d, got %d",
i, test.optCount, len(h.patterns))
}
if dnsserver.GetConfig(c).Stacktrace != test.stacktrace {
t.Errorf("Test %d: stacktrace, expected %t, got %t",
i, test.stacktrace, dnsserver.GetConfig(c).Stacktrace)
}
}
}