feat(pkg): thresholds on perfdata can be cleared using Set...(nil)

This commit is contained in:
Emmanuel BENOîT 2024-07-20 18:11:06 +02:00
parent 14c7a0e5e8
commit 1a35167eab
Signed by: Emmanuel BENOîT
SSH key fingerprint: SHA256:l7PFUUF5TCDsvYeQC9OnTNz08dFY7Fvf4Hv3neIqYpg
2 changed files with 44 additions and 4 deletions

View file

@ -35,14 +35,22 @@ func New(label string, units UnitOfMeasurement, value string) *PerfData {
// Set the warning range for the performance data record. // Set the warning range for the performance data record.
func (d *PerfData) SetWarn(r *Range) { func (d *PerfData) SetWarn(r *Range) {
d.warn = *r if r == nil {
d.bits |= PDatWarn d.bits &^= PDatWarn
} else {
d.warn = *r
d.bits |= PDatWarn
}
} }
// Set the critical range for the performance data record. // Set the critical range for the performance data record.
func (d *PerfData) SetCrit(r *Range) { func (d *PerfData) SetCrit(r *Range) {
d.crit = *r if r == nil {
d.bits |= PDatCrit d.bits &^= PDatCrit
} else {
d.crit = *r
d.bits |= PDatCrit
}
} }
// Set the performance data's minimal value. // Set the performance data's minimal value.

View file

@ -50,6 +50,12 @@ func TestSetWarn(t *testing.T) {
assert.Equal(t, rangeStr, data.warn.String()) assert.Equal(t, rangeStr, data.warn.String())
} }
func TestSetWarnNil(t *testing.T) {
data := PerfData{}
data.SetWarn(nil)
assert.Equal(t, perfDataBits(0), data.bits&PDatWarn)
}
func TestSetWarnTwice(t *testing.T) { func TestSetWarnTwice(t *testing.T) {
range1Value := Range{start: "A", end: "B"} range1Value := Range{start: "A", end: "B"}
range2Value := Range{start: "C", end: "D"} range2Value := Range{start: "C", end: "D"}
@ -64,6 +70,16 @@ func TestSetWarnTwice(t *testing.T) {
assert.Equal(t, range2Str, data.warn.String()) assert.Equal(t, range2Str, data.warn.String())
} }
func TestSetWarnClear(t *testing.T) {
range1Value := Range{start: "A", end: "B"}
data := PerfData{}
data.SetWarn(&range1Value)
data.SetWarn(nil)
assert.Equal(t, perfDataBits(0), data.bits&PDatWarn)
}
func TestSetCrit(t *testing.T) { func TestSetCrit(t *testing.T) {
rangeValue := Range{start: "A", end: "B"} rangeValue := Range{start: "A", end: "B"}
rangeStr := rangeValue.String() rangeStr := rangeValue.String()
@ -75,6 +91,12 @@ func TestSetCrit(t *testing.T) {
assert.Equal(t, rangeStr, data.crit.String()) assert.Equal(t, rangeStr, data.crit.String())
} }
func TestSetCritNil(t *testing.T) {
data := PerfData{}
data.SetCrit(nil)
assert.Equal(t, perfDataBits(0), data.bits&PDatCrit)
}
func TestSetCritTwice(t *testing.T) { func TestSetCritTwice(t *testing.T) {
range1Value := Range{start: "A", end: "B"} range1Value := Range{start: "A", end: "B"}
range2Value := Range{start: "C", end: "D"} range2Value := Range{start: "C", end: "D"}
@ -89,6 +111,16 @@ func TestSetCritTwice(t *testing.T) {
assert.Equal(t, range2Str, data.crit.String()) assert.Equal(t, range2Str, data.crit.String())
} }
func TestSetCritClear(t *testing.T) {
range1Value := Range{start: "A", end: "B"}
data := PerfData{}
data.SetCrit(&range1Value)
data.SetCrit(nil)
assert.Equal(t, perfDataBits(0), data.bits&PDatCrit)
}
func TestSetMin(t *testing.T) { func TestSetMin(t *testing.T) {
const min = "100" const min = "100"