Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions examples/check_example2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func main() {
check1.Output = "Check1"
check1.SetState(check.OK)

check1.Perfdata.Add(&check.Perfdata{
check1.AddPerfdata(&check.Perfdata{
Label: "foo",
Value: 23,
})
Expand All @@ -27,11 +27,11 @@ func main() {
check2.Output = "Check2"
check2.SetState(check.Warning)

check2.Perfdata.Add(&check.Perfdata{
check2.AddPerfdata(&check.Perfdata{
Label: "bar",
Value: 42,
})
check2.Perfdata.Add(&check.Perfdata{
check2.AddPerfdata(&check.Perfdata{
Label: "foo2 bar",
Value: 46,
})
Expand Down
14 changes: 11 additions & 3 deletions result/overall.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func (o *Overall) getStatusCount() statusCount {

// PartialResult represents a sub-result for an Overall struct
type PartialResult struct {
Perfdata check.PerfdataList
perfdata check.PerfdataList
PartialResults []*PartialResult
Output string

Expand Down Expand Up @@ -180,6 +180,14 @@ func (s *PartialResult) AddSubcheck(subcheck *PartialResult) {
s.PartialResults = append(s.PartialResults, subcheck)
}

// AddPerfdata adds a Perfdata point to the PartialResult
func (s *PartialResult) AddPerfdata(perfdata *check.Perfdata) {
s.mu.Lock()
defer s.mu.Unlock()

s.perfdata.Add(perfdata)
}

// String returns the status and output of the PartialResult
func (s *PartialResult) String() string {
return fmt.Sprintf("[%s] %s", s.GetStatus(), strings.ReplaceAll(s.Output, check.PerfdataSeparatorSymbol, " "))
Expand Down Expand Up @@ -233,8 +241,8 @@ func (s *PartialResult) GetStatus() check.Status {
func (s *PartialResult) getPerfdata() string {
var output strings.Builder

if len(s.Perfdata) > 0 {
output.WriteString(s.Perfdata.String())
if len(s.perfdata) > 0 {
output.WriteString(s.perfdata.String())
}

if s.PartialResults != nil {
Expand Down
91 changes: 46 additions & 45 deletions result/overall_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,15 +149,13 @@ func ExampleOverall_GetStatus() {
func ExampleOverall_withSubchecks() {
var overall Overall

example_perfdata := check.Perfdata{Label: "pd_test", Value: 5, Uom: "s"}
pd_list := check.PerfdataList{}
pd_list.Add(&example_perfdata)

subcheck := &PartialResult{
Output: "Subcheck1 Test",
Perfdata: pd_list,
Output: "Subcheck1 Test",
}

example_perfdata := check.Perfdata{Label: "pd_test", Value: 5, Uom: "s"}
subcheck.AddPerfdata(&example_perfdata)

subcheck.SetState(check.OK)

overall.AddSubcheck(subcheck)
Expand All @@ -176,15 +174,13 @@ func ExampleOverall_withVerticalbar() {

overall.OKSummary = "unit|test"

example_perfdata := check.Perfdata{Label: "pd_test", Value: 5, Uom: "s"}
pd_list := check.PerfdataList{}
pd_list.Add(&example_perfdata)

subcheck := &PartialResult{
Output: "vertical|bar",
Perfdata: pd_list,
Output: "vertical|bar",
}

example_perfdata := check.Perfdata{Label: "pd_test", Value: 5, Uom: "s"}
subcheck.AddPerfdata(&example_perfdata)

subcheck.SetState(check.OK)

overall.AddSubcheck(subcheck)
Expand Down Expand Up @@ -213,26 +209,22 @@ func TestOverall_withEnhancedSubchecks(t *testing.T) {
example_perfdata3 := check.Perfdata{Label: "kl;jr2if;l2rkjasdf", Value: 5, Uom: "m"}
example_perfdata4 := check.Perfdata{Label: "asdf", Value: uint64(18446744073709551615), Uom: "B"}

pd_list := check.PerfdataList{}
pd_list.Add(&example_perfdata)
pd_list.Add(&example_perfdata2)

pd_list2 := check.PerfdataList{}
pd_list2.Add(&example_perfdata3)
pd_list2.Add(&example_perfdata4)

subcheck := &PartialResult{
Output: "Subcheck1 Test",
Perfdata: pd_list,
Output: "Subcheck1 Test",
}

subcheck.AddPerfdata(&example_perfdata)
subcheck.AddPerfdata(&example_perfdata2)

subcheck.SetState(check.OK)

subcheck2 := &PartialResult{
Output: "Subcheck2 Test",
Perfdata: pd_list2,
Output: "Subcheck2 Test",
}

subcheck2.AddPerfdata(&example_perfdata3)
subcheck2.AddPerfdata(&example_perfdata4)

subcheck2.SetState(check.Warning)

overall.AddSubcheck(subcheck)
Expand Down Expand Up @@ -311,8 +303,8 @@ func TestOverall_withSubchecks_Perfdata(t *testing.T) {
Uom: "%",
}

subcheck2.Perfdata.Add(&perf1)
subcheck2.Perfdata.Add(&perf2)
subcheck2.AddPerfdata(&perf1)
subcheck2.AddPerfdata(&perf2)
subcheck.PartialResults = append(subcheck.PartialResults, subcheck2)

overall.AddSubcheck(subcheck)
Expand Down Expand Up @@ -364,9 +356,9 @@ func TestOverall_withSubchecks_PartialResult(t *testing.T) {
Uom: "B",
}

subcheck3.Perfdata.Add(&perf3)
subcheck2.Perfdata.Add(&perf1)
subcheck2.Perfdata.Add(&perf2)
subcheck3.AddPerfdata(&perf3)
subcheck2.AddPerfdata(&perf1)
subcheck2.AddPerfdata(&perf2)
subcheck2.PartialResults = append(subcheck.PartialResults, subcheck3)
subcheck.PartialResults = append(subcheck.PartialResults, subcheck2)

Expand Down Expand Up @@ -433,30 +425,35 @@ func TestSubchecksPerfdata(t *testing.T) {

check1 := &PartialResult{
Output: "Check1",
Perfdata: check.PerfdataList{
&check.Perfdata{
Label: "foo",
Value: 23,
},
&check.Perfdata{
Label: "bar",
Value: 42,
},
},
}

check1.AddPerfdata(
&check.Perfdata{
Label: "foo",
Value: 23,
},
)

check1.AddPerfdata(
&check.Perfdata{
Label: "bar",
Value: 42,
},
)

check1.SetState(check.OK)

check2 := &PartialResult{
Output: "Check2",
Perfdata: check.PerfdataList{
&check.Perfdata{
Label: "foo2 bar",
Value: 46,
},
},
}

check2.AddPerfdata(
&check.Perfdata{
Label: "foo2 bar",
Value: 46,
},
)

check2.SetState(check.Warning)

overall.AddSubcheck(check1)
Expand Down Expand Up @@ -705,6 +702,10 @@ func TestPartialResult_SetDefaultState_WithRace(t *testing.T) {
wg.Add(1)
go func() {
defer wg.Done()

example_perfdata := check.Perfdata{Label: "pd_test", Value: 5, Uom: "s"}
pr.AddPerfdata(&example_perfdata)

pr.SetDefaultState(check.Warning)
}()
}
Expand Down
Loading