diff --git a/cmd/check_example2/main.go b/cmd/check_example2/main.go new file mode 100644 index 0000000..ba23761 --- /dev/null +++ b/cmd/check_example2/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "github.com/NETWAYS/go-check" + "github.com/NETWAYS/go-check/perfdata" + "github.com/NETWAYS/go-check/result" +) + +func main() { + defer check.CatchPanic() + + var overall result.Overall + + check1 := result.PartialResult{} + + check1.Output = "Check1" + err := check1.SetState(check.OK) + + if err != nil { + check.ExitError(err) + } + + check1.Perfdata.Add(&perfdata.Perfdata{ + Label: "foo", + Value: 23, + }) + + check2 := result.PartialResult{} + + check2.Output = "Check2" + err = check2.SetState(check.Warning) + + if err != nil { + check.ExitError(err) + } + + check2.Perfdata.Add(&perfdata.Perfdata{ + Label: "bar", + Value: 42, + }) + check2.Perfdata.Add(&perfdata.Perfdata{ + Label: "foo2 bar", + Value: 46, + }) + + overall.AddSubcheck(check1) + overall.AddSubcheck(check2) + + check.ExitRaw(overall.GetStatus(), overall.GetOutput()) +} diff --git a/cmd/check_example2/main_test.go b/cmd/check_example2/main_test.go new file mode 100644 index 0000000..4e644a4 --- /dev/null +++ b/cmd/check_example2/main_test.go @@ -0,0 +1,28 @@ +package main + +import ( + "os" + "testing" + + "github.com/NETWAYS/go-check/testhelper" + "github.com/stretchr/testify/assert" +) + +func TestMyMain(t *testing.T) { + stdout := testhelper.RunMainTest(main) + + resultString := `[WARNING] - states: warning=1 ok=1 +\_ [OK] Check1 +\_ [WARNING] Check2 +|foo=23 bar=42 'foo2 bar'=46 + +would exit with code 1 +` + + assert.Equal(t, resultString, stdout) +} + +func TestMain(m *testing.M) { + testhelper.EnableTestMode() + os.Exit(m.Run()) +} diff --git a/perfdata/list_test.go b/perfdata/list_test.go index d629d3e..ac758d6 100644 --- a/perfdata/list_test.go +++ b/perfdata/list_test.go @@ -1,6 +1,11 @@ package perfdata -import "fmt" +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) func ExamplePerfdataList() { list := PerfdataList{} @@ -12,3 +17,11 @@ func ExamplePerfdataList() { // Output: // test1=23 test2=42 } + +func TestPerfdataListFormating(t *testing.T) { + list := PerfdataList{} + list.Add(&Perfdata{Label: "test1", Value: 23}) + list.Add(&Perfdata{Label: "test2", Value: 42}) + + assert.Equal(t, "test1=23 test2=42", list.String()) +} diff --git a/result/overall_test.go b/result/overall_test.go index 021e9e1..ce8ede0 100644 --- a/result/overall_test.go +++ b/result/overall_test.go @@ -348,6 +348,42 @@ func TestOverall_withSubchecks_PartialResultStatus(t *testing.T) { assert.Equal(t, 0, overall.GetStatus()) } +func TestSubchecksPerfdata(t *testing.T) { + var overall Overall + + check1 := PartialResult{ + state: check.OK, + Output: "Check1", + Perfdata: perfdata.PerfdataList{ + &perfdata.Perfdata{ + Label: "foo", + Value: 23, + }, + &perfdata.Perfdata{ + Label: "bar", + Value: 42, + }, + }, + } + check2 := PartialResult{ + state: check.Warning, + Output: "Check2", + Perfdata: perfdata.PerfdataList{ + &perfdata.Perfdata{ + Label: "foo2 bar", + Value: 46, + }, + }, + } + + overall.AddSubcheck(check1) + overall.AddSubcheck(check2) + + resultString := "states: warning=1 ok=1\n\\_ [OK] Check1\n\\_ [WARNING] Check2\n|foo=23 bar=42 'foo2 bar'=46\n" + + assert.Equal(t, resultString, overall.GetOutput()) +} + func TestDefaultStates1(t *testing.T) { var overall Overall