Skip to content

Commit

Permalink
Refactor ilo firmware tests to be table driven
Browse files Browse the repository at this point in the history
  • Loading branch information
martialblog committed Feb 22, 2024
1 parent 79f88f8 commit 6bbeacb
Showing 1 changed file with 55 additions and 23 deletions.
78 changes: 55 additions & 23 deletions hp/ilo/firmware_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,68 @@ import (
)

func TestIlo_GetNagiosStatus(t *testing.T) {
ilo := Ilo{
Model: "pciIntegratedLightsOutRemoteInsight3",
ModelID: 9,
RomRevision: "1.40",
testcases := map[string]struct {
ilo Ilo
expectedState int
expectedOutput string
}{
"too-old": {
ilo: Ilo{
Model: "pciIntegratedLightsOutRemoteInsight3",
ModelID: 9,
RomRevision: "1.40",
},
expectedState: check.Critical,
expectedOutput: "too old",
},
"newer": {
ilo: Ilo{
Model: "pciIntegratedLightsOutRemoteInsight3",
ModelID: 9,
RomRevision: "2.18",
},
expectedState: check.OK,
expectedOutput: "2.18 - version newer than affected",
},
"pretty-old": {
ilo: Ilo{
Model: "pciIntegratedLightsOutRemoteInsight2",
ModelID: 7,
RomRevision: "2.18",
},
expectedState: check.Critical,
expectedOutput: "is pretty old and likely unsafe",
},
"unknown-new": {
ilo: Ilo{
Model: "verynew",
ModelID: 12,
RomRevision: "2.18",
},
expectedState: check.OK,
expectedOutput: "verynew (12) revision 2.18 not known for any issues",
},
}

state, output := ilo.GetNagiosStatus()
assert.Equal(t, check.Critical, state)
assert.Contains(t, output, "too old")

ilo.RomRevision = "2.18"
state, output = ilo.GetNagiosStatus()
assert.Equal(t, check.OK, state)
assert.Contains(t, output, "2.18")

ilo.Model = "pciIntegratedLightsOutRemoteInsight2"
ilo.ModelID = 7
state, output = ilo.GetNagiosStatus()
assert.Equal(t, check.Critical, state)
assert.Contains(t, output, "pretty old")
for name, tc := range testcases {
t.Run(name, func(t *testing.T) {
state, output := tc.ilo.GetNagiosStatus()
assert.Equal(t, state, tc.expectedState)
assert.Contains(t, output, tc.expectedOutput)
})
}

ilo.Model = "someNewerModel"
ilo.ModelID = 12
state, output = ilo.GetNagiosStatus()
assert.Equal(t, check.OK, state)
assert.Contains(t, output, "not known")
}

func TestCompareVer(t *testing.T) {
// Compare required Version with current Version
assert.True(t, CompareVersion("1.0", "1.0"))
assert.True(t, CompareVersion("1.0", "1.1"))
assert.True(t, CompareVersion("1.0", "5"))
assert.True(t, CompareVersion("1.0", "10.1.0"))

assert.False(t, CompareVersion("1.0", "0.9"))
assert.False(t, CompareVersion("1.0", "0.9"))
assert.False(t, CompareVersion("1.0", "0.0"))
assert.False(t, CompareVersion("1.0", "0"))
}

0 comments on commit 6bbeacb

Please sign in to comment.