Initial commit
This commit is contained in:
commit
2b72492a59
25 changed files with 3147 additions and 0 deletions
104
checker/report_test.go
Normal file
104
checker/report_test.go
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
package checker
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
func TestSeverityToStatus(t *testing.T) {
|
||||
cases := []struct {
|
||||
sev Severity
|
||||
want sdk.Status
|
||||
}{
|
||||
{SeverityCrit, sdk.StatusCrit},
|
||||
{SeverityWarn, sdk.StatusWarn},
|
||||
{SeverityInfo, sdk.StatusInfo},
|
||||
{Severity("nonsense"), sdk.StatusOK},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := severityToStatus(c.sev); got != c.want {
|
||||
t.Errorf("severityToStatus(%q) = %v, want %v", c.sev, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatusToSeverity(t *testing.T) {
|
||||
cases := []struct {
|
||||
s sdk.Status
|
||||
want Severity
|
||||
}{
|
||||
{sdk.StatusCrit, SeverityCrit},
|
||||
{sdk.StatusWarn, SeverityWarn},
|
||||
{sdk.StatusInfo, SeverityInfo},
|
||||
{sdk.StatusOK, ""},
|
||||
{sdk.StatusUnknown, ""},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := statusToSeverity(c.s); got != c.want {
|
||||
t.Errorf("statusToSeverity(%v) = %q, want %q", c.s, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMostCommonSerial(t *testing.T) {
|
||||
d := &ObservationData{
|
||||
Results: map[string]*NSResult{
|
||||
"a.": {Authoritative: true, SOA: mkSOA(10), Serial: 10},
|
||||
"b.": {Authoritative: true, SOA: mkSOA(10), Serial: 10},
|
||||
"c.": {Authoritative: true, SOA: mkSOA(11), Serial: 11},
|
||||
"d.": {Authoritative: false, SOA: mkSOA(99), Serial: 99}, // ignored
|
||||
"e.": {Authoritative: true, SOA: nil, Serial: 0}, // ignored
|
||||
"f.": nil, // ignored
|
||||
},
|
||||
}
|
||||
if got := mostCommonSerial(d); got != 10 {
|
||||
t.Errorf("mostCommonSerial = %d, want 10", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFindingsToStates_AttachesHint(t *testing.T) {
|
||||
in := []Finding{
|
||||
{Code: CodeNoNS, Severity: SeverityCrit, Message: "x"},
|
||||
{Code: "no_such_code", Severity: SeverityWarn, Message: "y"},
|
||||
}
|
||||
got := findingsToStates(in)
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("want 2 states, got %d", len(got))
|
||||
}
|
||||
if got[0].Status != sdk.StatusCrit || got[0].Code != CodeNoNS {
|
||||
t.Errorf("state[0] = %#v", got[0])
|
||||
}
|
||||
if got[0].Meta == nil || got[0].Meta["fix"] == nil {
|
||||
t.Errorf("state[0] should carry remediation hint, got %#v", got[0].Meta)
|
||||
}
|
||||
if got[1].Meta != nil {
|
||||
t.Errorf("state[1] should have no Meta, got %#v", got[1].Meta)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHeadlineFromStates_AllGood(t *testing.T) {
|
||||
d := &ObservationData{HasSOA: true, Probed: []string{"a.", "b."}, Results: map[string]*NSResult{
|
||||
"a.": {Authoritative: true, SOA: mkSOA(7), Serial: 7},
|
||||
"b.": {Authoritative: true, SOA: mkSOA(7), Serial: 7},
|
||||
}}
|
||||
states := []sdk.CheckState{{Status: sdk.StatusOK, Code: "ok"}}
|
||||
_, class, _ := headlineFromStates(d, states, nil)
|
||||
if class != "ok" {
|
||||
t.Errorf("class = %q, want ok", class)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHeadlineFromStates_PrioritisesCrit(t *testing.T) {
|
||||
d := &ObservationData{HasSOA: true}
|
||||
states := []sdk.CheckState{
|
||||
{Status: sdk.StatusWarn, Code: CodeSlowNS},
|
||||
{Status: sdk.StatusCrit, Code: CodeLame},
|
||||
{Status: sdk.StatusWarn, Code: CodeNSRRsetDrift},
|
||||
}
|
||||
rendered := []reportFinding{{Class: "crit"}, {Class: "warn"}, {Class: "warn"}}
|
||||
title, class, _ := headlineFromStates(d, states, rendered)
|
||||
if class != "crit" || title == "" {
|
||||
t.Errorf("expected crit headline, got class=%q title=%q", class, title)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue