Skip to content

Commit 6423e90

Browse files
Merge with latest Unit test helpers
1 parent 9d2e2d9 commit 6423e90

File tree

4 files changed

+44
-50
lines changed

4 files changed

+44
-50
lines changed

bmc/mockup.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,29 @@
33

44
package bmc
55

6+
import "github.com/stmcginnis/gofish/redfish"
7+
68
// RedfishLocalBMC is an implementation of the BMC interface for Redfish.
79
type RedfishMockUps struct {
810
BIOSSettingAttr map[string]map[string]any
911
PendingBIOSSetting map[string]map[string]any
12+
13+
BMCSettingAttr map[string]map[string]any
14+
PendingBMCSetting map[string]map[string]any
1015
}
1116

1217
func (r *RedfishMockUps) InitializeDefaults() {
1318
r.BIOSSettingAttr = map[string]map[string]any{
1419
"abc": {"type": "string", "reboot": false, "value": "bar"},
1520
"fooreboot": {"type": "integer", "reboot": true, "value": 123},
1621
}
22+
r.BMCSettingAttr = map[string]map[string]any{
23+
"abc": {"type": redfish.StringAttributeType, "reboot": false, "value": "bar"},
24+
"fooreboot": {"type": redfish.IntegerAttributeType, "reboot": true, "value": 123},
25+
}
1726
r.PendingBIOSSetting = map[string]map[string]any{}
27+
28+
r.PendingBMCSetting = map[string]map[string]any{}
1829
}
1930

2031
func (r *RedfishMockUps) ResetBIOSSettings() {
@@ -29,6 +40,18 @@ func (r *RedfishMockUps) ResetPendingBIOSSetting() {
2940
r.PendingBIOSSetting = map[string]map[string]any{}
3041
}
3142

43+
func (r *RedfishMockUps) ResetPendingBMCSetting() {
44+
r.PendingBMCSetting = map[string]map[string]any{}
45+
}
46+
47+
func (r *RedfishMockUps) ResetBMCSettings() {
48+
r.BMCSettingAttr = map[string]map[string]any{
49+
"abc": {"type": redfish.StringAttributeType, "reboot": false, "value": "bar"},
50+
"fooreboot": {"type": redfish.IntegerAttributeType, "reboot": true, "value": 123},
51+
}
52+
r.PendingBMCSetting = map[string]map[string]any{}
53+
}
54+
3255
func InitMockUp() {
3356
UnitTestMockUps = &RedfishMockUps{}
3457
UnitTestMockUps.InitializeDefaults()

bmc/redfish_local.go

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@ import (
1515

1616
var _ BMC = (*RedfishLocalBMC)(nil)
1717

18-
var defaultMockedBMCSetting = map[string]map[string]any{
19-
"abc": {"type": redfish.StringAttributeType, "reboot": false, "value": "bar"},
20-
"fooreboot": {"type": redfish.IntegerAttributeType, "reboot": true, "value": 123},
21-
}
22-
23-
var PendingMockedBMCSetting = map[string]map[string]any{}
24-
2518
// RedfishLocalBMC is an implementation of the BMC interface for Redfish.
2619
type RedfishLocalBMC struct {
2720
*RedfishBMC
@@ -211,20 +204,18 @@ func (r *RedfishLocalBMC) ResetManager(ctx context.Context, UUID string, resetTy
211204

212205
// mock the bmc update here with timed delay
213206
go func() {
214-
if len(PendingMockedBMCSetting) > 0 {
215-
time.Sleep(1 * time.Second)
216-
for key, data := range PendingMockedBMCSetting {
217-
if _, ok := defaultMockedBMCSetting[key]; ok {
218-
defaultMockedBMCSetting[key] = data
207+
if len(UnitTestMockUps.PendingBMCSetting) > 0 {
208+
time.Sleep(150 * time.Millisecond)
209+
for key, data := range UnitTestMockUps.PendingBMCSetting {
210+
if _, ok := UnitTestMockUps.BMCSettingAttr[key]; ok {
211+
UnitTestMockUps.BMCSettingAttr[key] = data
219212
}
220213
}
221-
PendingMockedBMCSetting = map[string]map[string]any{}
222-
r.StoredBMCSettingData = defaultMockedBMCSetting
214+
UnitTestMockUps.ResetPendingBMCSetting()
223215
}
224216
}()
225217

226218
return nil
227-
228219
}
229220

230221
// mock SetBiosAttributesOnReset sets given bios attributes for unit testing.
@@ -237,39 +228,25 @@ func (r *RedfishLocalBMC) SetBMCAttributesImediately(
237228
for name, value := range attributes {
238229
attrs[name] = value
239230
}
240-
if len(defaultMockedBMCSetting) == 0 {
241-
defaultMockedBMCSetting = map[string]map[string]any{}
242-
}
243231

244232
for key, attrData := range attributes {
245-
if AttributesData, ok := defaultMockedBMCSetting[key]; ok {
233+
if AttributesData, ok := UnitTestMockUps.BMCSettingAttr[key]; ok {
246234
if reboot, ok := AttributesData["reboot"]; ok && !reboot.(bool) {
247235
// if reboot not needed, set the attribute immediately.
248236
AttributesData["value"] = attrData
249237
} else {
250238
// if reboot needed, set the attribute at next power on.
251-
PendingMockedBMCSetting[key] = map[string]any{
239+
UnitTestMockUps.PendingBMCSetting[key] = map[string]any{
252240
"type": AttributesData["type"],
253241
"reboot": AttributesData["reboot"],
254242
"value": attrData,
255243
}
256244
}
257245
}
258246
}
259-
r.StoredBMCSettingData = defaultMockedBMCSetting
260-
261247
return nil
262248
}
263249

264-
func (r *RedfishLocalBMC) getMockedBMCSettingData() map[string]map[string]any {
265-
266-
if len(r.StoredBMCSettingData) > 0 {
267-
return r.StoredBMCSettingData
268-
}
269-
return defaultMockedBMCSetting
270-
271-
}
272-
273250
func (r *RedfishLocalBMC) GetBMCAttributeValues(
274251
ctx context.Context,
275252
UUID string,
@@ -278,21 +255,17 @@ func (r *RedfishLocalBMC) GetBMCAttributeValues(
278255
result redfish.SettingsAttributes,
279256
err error,
280257
) {
281-
282258
if len(attributes) == 0 {
283259
return
284260
}
285-
286-
mockedAttributes := r.getMockedBMCSettingData()
287-
288261
filteredAttr, err := r.getFilteredBMCRegistryAttributes(false, false)
289262
if err != nil {
290263
return
291264
}
292265
result = make(redfish.SettingsAttributes, len(attributes))
293266
for _, name := range attributes {
294267
if _, ok := filteredAttr[name]; ok {
295-
if AttributesData, ok := mockedAttributes[name]; ok {
268+
if AttributesData, ok := UnitTestMockUps.BMCSettingAttr[name]; ok {
296269
result[name] = AttributesData["value"]
297270
}
298271
}
@@ -307,13 +280,13 @@ func (r *RedfishLocalBMC) GetBMCPendingAttributeValues(
307280
redfish.SettingsAttributes,
308281
error,
309282
) {
310-
if len(PendingMockedBMCSetting) == 0 {
283+
if len(UnitTestMockUps.PendingBMCSetting) == 0 {
311284
return redfish.SettingsAttributes{}, nil
312285
}
313286

314-
result := make(redfish.SettingsAttributes, len(PendingMockedBMCSetting))
287+
result := make(redfish.SettingsAttributes, len(UnitTestMockUps.PendingBMCSetting))
315288

316-
for key, data := range PendingMockedBMCSetting {
289+
for key, data := range UnitTestMockUps.PendingBMCSetting {
317290
result[key] = data["value"]
318291
}
319292

@@ -327,12 +300,11 @@ func (r *RedfishLocalBMC) getFilteredBMCRegistryAttributes(
327300
filtered map[string]redfish.Attribute,
328301
err error,
329302
) {
330-
mockedAttributes := r.getMockedBMCSettingData()
331303
filtered = make(map[string]redfish.Attribute)
332-
if len(mockedAttributes) == 0 {
304+
if len(UnitTestMockUps.BMCSettingAttr) == 0 {
333305
return filtered, fmt.Errorf("no bmc setting attributes found")
334306
}
335-
for name, AttributesData := range mockedAttributes {
307+
for name, AttributesData := range UnitTestMockUps.BMCSettingAttr {
336308
data := redfish.Attribute{}
337309
data.AttributeName = name
338310
data.Immutable = immutable

internal/controller/biossettings_controller_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import (
1616

1717
apierrors "k8s.io/apimachinery/pkg/api/errors"
1818
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19-
20-
"github.com/ironcore-dev/metal-operator/bmc"
2119
)
2220

2321
var _ = Describe("BIOSSettings Controller", func() {
@@ -256,7 +254,7 @@ var _ = Describe("BIOSSettings Controller", func() {
256254
metautils.SetAnnotation(serverClaim, metalv1alpha1.ServerMaintenanceApprovalKey, "true")
257255
})).Should(Succeed())
258256

259-
By("Ensuring that the biosSettings resource has started bios setting updated")
257+
By("Ensuring that the biosSettings resource has started bios setting update")
260258
Eventually(Object(biosSettings)).Should(SatisfyAll(
261259
HaveField("Status.State", metalv1alpha1.BIOSSettingsStateInProgress),
262260
HaveField("Status.UpdateSettingState", metalv1alpha1.BIOSSettingUpdateState("")),
@@ -365,7 +363,7 @@ var _ = Describe("BIOSSettings Controller", func() {
365363
metautils.SetAnnotation(serverClaim, metalv1alpha1.ServerMaintenanceApprovalKey, "true")
366364
})).Should(Succeed())
367365

368-
By("Ensuring that the biosSettings resource has started bios setting updated")
366+
By("Ensuring that the biosSettings resource has started bios setting update")
369367
Eventually(Object(biosSettings)).Should(SatisfyAll(
370368
HaveField("Status.State", metalv1alpha1.BIOSSettingsStateInProgress),
371369
HaveField("Status.UpdateSettingState", metalv1alpha1.BIOSSettingUpdateState("")),
@@ -447,7 +445,7 @@ var _ = Describe("BIOSSettings Controller", func() {
447445
Name: biosSettings.Name,
448446
},
449447
}
450-
checkServerMaintenanceGranted(serverMaintenance, server)
448+
Eventually(Get(serverMaintenance)).Should(Succeed())
451449

452450
By("Ensuring that the Maintenance resource has been referenced by biosSettings")
453451
Eventually(Object(biosSettings)).Should(SatisfyAny(

internal/controller/bmcsettings_controller_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ var _ = Describe("BMCSettings Controller", func() {
8181

8282
AfterEach(func(ctx SpecContext) {
8383
DeleteAllMetalResources(ctx, ns.Name)
84-
bmcPkg.PendingMockedBMCSetting = map[string]map[string]any{}
84+
bmcPkg.UnitTestMockUps.ResetBMCSettings()
8585
})
8686

8787
It("should successfully patch BMCSettings reference to referred BMC", func(ctx SpecContext) {
@@ -208,7 +208,8 @@ var _ = Describe("BMCSettings Controller", func() {
208208

209209
// put server in reserved state. and create a bmc setting in Ownerapproved which needs reboot.
210210
// this is needed to check the states traversed.
211-
serverClaim := transitionServerToReserved(ctx, ns, server, metalv1alpha1.PowerOff)
211+
serverClaim := BuildServerClaim(ctx, k8sClient, *server, ns.Name, nil, metalv1alpha1.PowerOff, "foo:bar")
212+
TransistionServerToReserveredState(ctx, k8sClient, serverClaim, server, ns.Name)
212213

213214
By("Creating a BMCSetting")
214215
bmcSettings := &metalv1alpha1.BMCSettings{
@@ -360,7 +361,7 @@ var _ = Describe("BMCSettings Controller", func() {
360361
Name: fmt.Sprintf("%s-%s", BMCSettings.Name, server.Name),
361362
},
362363
}
363-
checkServerMaintenanceGranted(serverMaintenance, server)
364+
Eventually(Get(serverMaintenance)).Should(Succeed())
364365

365366
By("Ensuring that the BMCSettings resource hasmoved to next state")
366367
Eventually(Object(BMCSettings)).Should(SatisfyAny(

0 commit comments

Comments
 (0)