refactor: make internals easier to test and add unit tests #2
5 changed files with 31 additions and 31 deletions
|
@ -338,10 +338,10 @@ func (program *checkProgram) checkCertificateExpiry(tlDays int) (plugin.Status,
|
||||||
func (program *checkProgram) setPerfData(tlDays int) {
|
func (program *checkProgram) setPerfData(tlDays int) {
|
||||||
pdat := perfdata.New("validity", perfdata.UomNone, strconv.Itoa(tlDays))
|
pdat := perfdata.New("validity", perfdata.UomNone, strconv.Itoa(tlDays))
|
||||||
if program.crit > 0 {
|
if program.crit > 0 {
|
||||||
pdat.SetCrit(perfdata.PDRMax(strconv.Itoa(program.crit)))
|
pdat.SetCrit(perfdata.RangeMax(strconv.Itoa(program.crit)))
|
||||||
}
|
}
|
||||||
if program.warn > 0 {
|
if program.warn > 0 {
|
||||||
pdat.SetWarn(perfdata.PDRMax(strconv.Itoa(program.warn)))
|
pdat.SetWarn(perfdata.RangeMax(strconv.Itoa(program.warn)))
|
||||||
}
|
}
|
||||||
program.plugin.AddPerfData(pdat)
|
program.plugin.AddPerfData(pdat)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ type PerfData struct {
|
||||||
units UnitOfMeasurement
|
units UnitOfMeasurement
|
||||||
bits perfDataBits
|
bits perfDataBits
|
||||||
value string
|
value string
|
||||||
warn, crit PDRange
|
warn, crit Range
|
||||||
min, max string
|
min, max string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,13 +35,13 @@ 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 *PDRange) {
|
func (d *PerfData) SetWarn(r *Range) {
|
||||||
d.warn = *r
|
d.warn = *r
|
||||||
d.bits |= PDatWarn
|
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 *PDRange) {
|
func (d *PerfData) SetCrit(r *Range) {
|
||||||
d.crit = *r
|
d.crit = *r
|
||||||
d.bits |= PDatCrit
|
d.bits |= PDatCrit
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ func TestNewInvalidValue(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetWarn(t *testing.T) {
|
func TestSetWarn(t *testing.T) {
|
||||||
rangeValue := PDRange{start: "A", end: "B"}
|
rangeValue := Range{start: "A", end: "B"}
|
||||||
rangeStr := rangeValue.String()
|
rangeStr := rangeValue.String()
|
||||||
|
|
||||||
data := PerfData{}
|
data := PerfData{}
|
||||||
|
@ -51,8 +51,8 @@ func TestSetWarn(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetWarnTwice(t *testing.T) {
|
func TestSetWarnTwice(t *testing.T) {
|
||||||
range1Value := PDRange{start: "A", end: "B"}
|
range1Value := Range{start: "A", end: "B"}
|
||||||
range2Value := PDRange{start: "C", end: "D"}
|
range2Value := Range{start: "C", end: "D"}
|
||||||
range2Str := range2Value.String()
|
range2Str := range2Value.String()
|
||||||
require.NotEqual(t, range2Str, range1Value.String())
|
require.NotEqual(t, range2Str, range1Value.String())
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ func TestSetWarnTwice(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetCrit(t *testing.T) {
|
func TestSetCrit(t *testing.T) {
|
||||||
rangeValue := PDRange{start: "A", end: "B"}
|
rangeValue := Range{start: "A", end: "B"}
|
||||||
rangeStr := rangeValue.String()
|
rangeStr := rangeValue.String()
|
||||||
|
|
||||||
data := PerfData{}
|
data := PerfData{}
|
||||||
|
@ -76,8 +76,8 @@ func TestSetCrit(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetCritTwice(t *testing.T) {
|
func TestSetCritTwice(t *testing.T) {
|
||||||
range1Value := PDRange{start: "A", end: "B"}
|
range1Value := Range{start: "A", end: "B"}
|
||||||
range2Value := PDRange{start: "C", end: "D"}
|
range2Value := Range{start: "C", end: "D"}
|
||||||
range2Str := range2Value.String()
|
range2Str := range2Value.String()
|
||||||
require.NotEqual(t, range2Str, range1Value.String())
|
require.NotEqual(t, range2Str, range1Value.String())
|
||||||
|
|
||||||
|
@ -141,8 +141,8 @@ func TestString(t *testing.T) {
|
||||||
expected string
|
expected string
|
||||||
}
|
}
|
||||||
|
|
||||||
range1 := PDRange{start: "A", end: "B"}
|
range1 := Range{start: "A", end: "B"}
|
||||||
range2 := PDRange{start: "C", end: "D"}
|
range2 := Range{start: "C", end: "D"}
|
||||||
|
|
||||||
tests := []Test{
|
tests := []Test{
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package perfdata // import nocternity.net/gomonop/pkg/perfdata
|
package perfdata // import nocternity.net/gomonop/pkg/perfdata
|
||||||
|
|
||||||
// Performance data range.
|
// Performance data range.
|
||||||
type PDRange struct {
|
type Range struct {
|
||||||
start string
|
start string
|
||||||
end string
|
end string
|
||||||
inside bool
|
inside bool
|
||||||
|
@ -9,11 +9,11 @@ type PDRange struct {
|
||||||
|
|
||||||
// Creates a performance data range from -inf to 0 and from the specified
|
// Creates a performance data range from -inf to 0 and from the specified
|
||||||
// value to +inf.
|
// value to +inf.
|
||||||
func PDRMax(max string) *PDRange {
|
func RangeMax(max string) *Range {
|
||||||
if !valueCheck.MatchString(max) {
|
if !valueCheck.MatchString(max) {
|
||||||
panic("invalid performance data range maximum value")
|
panic("invalid performance data range maximum value")
|
||||||
}
|
}
|
||||||
pdRange := &PDRange{}
|
pdRange := &Range{}
|
||||||
pdRange.start = "0"
|
pdRange.start = "0"
|
||||||
pdRange.end = max
|
pdRange.end = max
|
||||||
return pdRange
|
return pdRange
|
||||||
|
@ -21,28 +21,28 @@ func PDRMax(max string) *PDRange {
|
||||||
|
|
||||||
// Creates a performance data range from -inf to the specified minimal value
|
// Creates a performance data range from -inf to the specified minimal value
|
||||||
// and from the specified maximal value to +inf.
|
// and from the specified maximal value to +inf.
|
||||||
func PDRMinMax(min, max string) *PDRange {
|
func RangeMinMax(min, max string) *Range {
|
||||||
if !valueCheck.MatchString(max) {
|
if !valueCheck.MatchString(max) {
|
||||||
panic("invalid performance data range maximum value")
|
panic("invalid performance data range maximum value")
|
||||||
}
|
}
|
||||||
if !rangeMinCheck.MatchString(min) {
|
if !rangeMinCheck.MatchString(min) {
|
||||||
panic("invalid performance data range minimum value")
|
panic("invalid performance data range minimum value")
|
||||||
}
|
}
|
||||||
pdRange := &PDRange{}
|
pdRange := &Range{}
|
||||||
pdRange.start = min
|
pdRange.start = min
|
||||||
pdRange.end = max
|
pdRange.end = max
|
||||||
return pdRange
|
return pdRange
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inverts the range.
|
// Inverts the range.
|
||||||
func (r *PDRange) Inside() *PDRange {
|
func (r *Range) Inside() *Range {
|
||||||
r.inside = true
|
r.inside = true
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generates the range's string representation so it can be sent to the
|
// Generates the range's string representation so it can be sent to the
|
||||||
// monitoring system.
|
// monitoring system.
|
||||||
func (r *PDRange) String() string {
|
func (r *Range) String() string {
|
||||||
var start, inside string
|
var start, inside string
|
||||||
|
|
||||||
switch r.start {
|
switch r.start {
|
||||||
|
|
|
@ -8,14 +8,14 @@ import (
|
||||||
|
|
||||||
func TestRangeMaxInvalid(t *testing.T) {
|
func TestRangeMaxInvalid(t *testing.T) {
|
||||||
assert.Panics(
|
assert.Panics(
|
||||||
t, func() { PDRMax("") },
|
t, func() { RangeMax("") },
|
||||||
"Created PerfDataRange with invalid max value",
|
"Created PerfDataRange with invalid max value",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRangeMax(t *testing.T) {
|
func TestRangeMax(t *testing.T) {
|
||||||
value := "123"
|
value := "123"
|
||||||
pdr := PDRMax(value)
|
pdr := RangeMax(value)
|
||||||
assert.Equal(t, "0", pdr.start, "Min value should be '0'")
|
assert.Equal(t, "0", pdr.start, "Min value should be '0'")
|
||||||
assert.Equal(t, value, pdr.end, "Max value not copied to PerfDataRange")
|
assert.Equal(t, value, pdr.end, "Max value not copied to PerfDataRange")
|
||||||
assert.False(t, pdr.inside, "Inside flag should not be set")
|
assert.False(t, pdr.inside, "Inside flag should not be set")
|
||||||
|
@ -23,25 +23,25 @@ func TestRangeMax(t *testing.T) {
|
||||||
|
|
||||||
func TestRangeMinMaxInvalid(t *testing.T) {
|
func TestRangeMinMaxInvalid(t *testing.T) {
|
||||||
assert.Panics(
|
assert.Panics(
|
||||||
t, func() { PDRMinMax("", "123") },
|
t, func() { RangeMinMax("", "123") },
|
||||||
"Created PerfDataRange with invalid min value",
|
"Created PerfDataRange with invalid min value",
|
||||||
)
|
)
|
||||||
assert.Panics(
|
assert.Panics(
|
||||||
t, func() { PDRMinMax("123", "") },
|
t, func() { RangeMinMax("123", "") },
|
||||||
"Created PerfDataRange with invalid max value",
|
"Created PerfDataRange with invalid max value",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRangeMinMax(t *testing.T) {
|
func TestRangeMinMax(t *testing.T) {
|
||||||
min, max := "123", "456"
|
min, max := "123", "456"
|
||||||
pdr := PDRMinMax(min, max)
|
pdr := RangeMinMax(min, max)
|
||||||
assert.Equal(t, min, pdr.start, "Min value not copied to PerfDataRange")
|
assert.Equal(t, min, pdr.start, "Min value not copied to PerfDataRange")
|
||||||
assert.Equal(t, max, pdr.end, "Max value not copied to PerfDataRange")
|
assert.Equal(t, max, pdr.end, "Max value not copied to PerfDataRange")
|
||||||
assert.False(t, pdr.inside, "Inside flag should not be set")
|
assert.False(t, pdr.inside, "Inside flag should not be set")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRangeInside(t *testing.T) {
|
func TestRangeInside(t *testing.T) {
|
||||||
pdr := &PDRange{}
|
pdr := &Range{}
|
||||||
pdr = pdr.Inside()
|
pdr = pdr.Inside()
|
||||||
assert.True(t, pdr.inside, "Inside flag should be set")
|
assert.True(t, pdr.inside, "Inside flag should be set")
|
||||||
pdr = pdr.Inside()
|
pdr = pdr.Inside()
|
||||||
|
@ -50,14 +50,14 @@ func TestRangeInside(t *testing.T) {
|
||||||
|
|
||||||
func TestRangeString(t *testing.T) {
|
func TestRangeString(t *testing.T) {
|
||||||
type Test struct {
|
type Test struct {
|
||||||
pdr PDRange
|
pdr Range
|
||||||
out string
|
out string
|
||||||
}
|
}
|
||||||
tests := []Test{
|
tests := []Test{
|
||||||
{pdr: PDRange{start: "Y", end: "X"}, out: "Y:X"},
|
{pdr: Range{start: "Y", end: "X"}, out: "Y:X"},
|
||||||
{pdr: PDRange{end: "X"}, out: "~:X"},
|
{pdr: Range{end: "X"}, out: "~:X"},
|
||||||
{pdr: PDRange{start: "0", end: "X"}, out: ":X"},
|
{pdr: Range{start: "0", end: "X"}, out: ":X"},
|
||||||
{pdr: PDRange{inside: true, start: "Y", end: "X"}, out: "@Y:X"},
|
{pdr: Range{inside: true, start: "Y", end: "X"}, out: "@Y:X"},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in a new issue