Skip to content

Commit 74f7f6c

Browse files
committed
Additional tests for redfish systems
1 parent 8261821 commit 74f7f6c

1 file changed

Lines changed: 180 additions & 31 deletions

File tree

tests/test_redfish.py

Lines changed: 180 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ def test_connect_ssl(self, mock_connector):
2020
mock_connector.assert_called_with("https://dummy:443/", "user", "pass")
2121

2222

23-
@mock.patch("redfish_client.Connector")
24-
class TestRedfishSystem(TestCase):
23+
class RedfishTestCase(TestCase):
2524
def mock_redfish_system(self, mock_connector, data):
2625
def mock_get(url):
2726
res = mock.Mock()
@@ -31,11 +30,15 @@ def mock_get(url):
3130

3231
mock_connector.get.side_effect = mock_get
3332
api_client = Root(mock_connector)
33+
api_client._content = data.get("/redfish/v1", None)
3434

3535
rf = RedfishSystem("dummy", "user", "pass", "Non-SSL", "8000",
3636
api_client=api_client)
3737
return rf
3838

39+
40+
@mock.patch("redfish_client.Connector")
41+
class TestRedfishSystem(RedfishTestCase):
3942
def test_find_resource(self, mock_connector):
4043
rf = self.mock_redfish_system(mock_connector, data={
4144
"/redfish/v1/BlankResource": {
@@ -45,6 +48,146 @@ def test_find_resource(self, mock_connector):
4548
resource = rf.find("/redfish/v1/BlankResource")
4649
self.assertEqual(resource.raw, {"@odata.id": "id"})
4750

51+
def test_redfish_system(self, mock_connector):
52+
rf = self.mock_redfish_system(mock_connector, data={
53+
"/redfish/v1/BlankResource": {
54+
"@odata.id": "id"
55+
}
56+
})
57+
self.assertEqual(rf._identifying_attrs,
58+
{"url": "http://dummy:8000/"})
59+
self.assertEqual(rf.info(),
60+
"RedfishSystem url=http://dummy:8000/")
61+
62+
def test_num_servers(self, mock_connector):
63+
rf = self.mock_redfish_system(mock_connector, data={
64+
"/redfish/v1": {
65+
"Systems": {
66+
"@odata.id":"/redfish/v1/Systems"
67+
}
68+
},
69+
"/redfish/v1/Systems": {
70+
"@odata.id": "/redfish/v1/Systems/",
71+
"Members@odata.count": 4,
72+
"@odata.context": "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection",
73+
"Members": [
74+
{"@odata.id": "/redfish/v1/Systems/1"},
75+
{"@odata.id": "/redfish/v1/Systems/2"},
76+
{"@odata.id": "/redfish/v1/Systems/3"},
77+
{"@odata.id": "/redfish/v1/Systems/4"},
78+
],
79+
"@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
80+
"Members@odata.navigationLink": "/redfish/v1/Systems/Members",
81+
"@odata.etag": "W/\"e48557da1bf040a5d45d1e5aa726bf3a\"",
82+
"Name": "ComputerSystemCollection",
83+
"Description": "A Collection of ComputerSystem resource instances."}
84+
})
85+
self.assertEqual(rf.num_servers, 4)
86+
87+
def test_num_chassis(self, mock_connector):
88+
rf = self.mock_redfish_system(mock_connector, data={
89+
"/redfish/v1": {
90+
"Chassis": {
91+
"@odata.id":"/redfish/v1/Chassis"
92+
}
93+
},
94+
"/redfish/v1/Chassis": {
95+
"@odata.id": "/redfish/v1/Chassis/",
96+
"Members@odata.count": 6,
97+
"@odata.context": "/redfish/v1/$metadata#ChassisCollection.ChassisCollection",
98+
"Members": [
99+
{"@odata.id": "/redfish/v1/Chassis/Block-1"},
100+
{"@odata.id": "/redfish/v1/Chassis/Block-2"},
101+
{"@odata.id": "/redfish/v1/Chassis/Block-3"},
102+
{"@odata.id": "/redfish/v1/Chassis/Rack-4"},
103+
{"@odata.id": "/redfish/v1/Chassis/Rack-5"},
104+
{"@odata.id": "/redfish/v1/Chassis/Sled-6"},
105+
],
106+
"@odata.type": "#ChassisCollection.ChassisCollection",
107+
"Members@odata.navigationLink": "/redfish/v1/Chassis/Members",
108+
"@odata.etag": "W/\"aef74912345d8e2ae00d008591fc5d85\"",
109+
"Name": "ChassisCollection",
110+
"Description": "A Collection of Chassis resource instances."
111+
},
112+
"/redfish/v1/Chassis/Block-1": {
113+
"@odata.id": "/redfish/v1/Chassis/Block-1",
114+
"ChassisType": "Enclosure",
115+
},
116+
"/redfish/v1/Chassis/Block-2": {
117+
"@odata.id": "/redfish/v1/Chassis/Block-2",
118+
"ChassisType": "Enclosure",
119+
},
120+
"/redfish/v1/Chassis/Block-3": {
121+
"@odata.id": "/redfish/v1/Chassis/Block-3",
122+
"ChassisType": "Enclosure",
123+
},
124+
"/redfish/v1/Chassis/Rack-4": {
125+
"@odata.id": "/redfish/v1/Chassis/Rack-4",
126+
"ChassisType": "Rack",
127+
},
128+
"/redfish/v1/Chassis/Rack-5": {
129+
"@odata.id": "/redfish/v1/Chassis/Rack-5",
130+
"ChassisType": "Rack",
131+
},
132+
"/redfish/v1/Chassis/Sled-6": {
133+
"@odata.id": "/redfish/v1/Chassis/Sled-6",
134+
"ChassisType": "Sled",
135+
},
136+
})
137+
self.assertEqual(rf.num_chassis, 4)
138+
139+
def test_num_racks(self, mock_connector):
140+
rf = self.mock_redfish_system(mock_connector, data={
141+
"/redfish/v1": {
142+
"Chassis": {
143+
"@odata.id":"/redfish/v1/Chassis"
144+
}
145+
},
146+
"/redfish/v1/Chassis": {
147+
"@odata.id": "/redfish/v1/Chassis/",
148+
"Members@odata.count": 6,
149+
"@odata.context": "/redfish/v1/$metadata#ChassisCollection.ChassisCollection",
150+
"Members": [
151+
{"@odata.id": "/redfish/v1/Chassis/Block-1"},
152+
{"@odata.id": "/redfish/v1/Chassis/Block-2"},
153+
{"@odata.id": "/redfish/v1/Chassis/Block-3"},
154+
{"@odata.id": "/redfish/v1/Chassis/Rack-4"},
155+
{"@odata.id": "/redfish/v1/Chassis/Rack-5"},
156+
{"@odata.id": "/redfish/v1/Chassis/Sled-6"},
157+
],
158+
"@odata.type": "#ChassisCollection.ChassisCollection",
159+
"Members@odata.navigationLink": "/redfish/v1/Chassis/Members",
160+
"@odata.etag": "W/\"aef74912345d8e2ae00d008591fc5d85\"",
161+
"Name": "ChassisCollection",
162+
"Description": "A Collection of Chassis resource instances."
163+
},
164+
"/redfish/v1/Chassis/Block-1": {
165+
"@odata.id": "/redfish/v1/Chassis/Block-1",
166+
"ChassisType": "Enclosure",
167+
},
168+
"/redfish/v1/Chassis/Block-2": {
169+
"@odata.id": "/redfish/v1/Chassis/Block-2",
170+
"ChassisType": "Enclosure",
171+
},
172+
"/redfish/v1/Chassis/Block-3": {
173+
"@odata.id": "/redfish/v1/Chassis/Block-3",
174+
"ChassisType": "Enclosure",
175+
},
176+
"/redfish/v1/Chassis/Rack-4": {
177+
"@odata.id": "/redfish/v1/Chassis/Rack-4",
178+
"ChassisType": "Rack",
179+
},
180+
"/redfish/v1/Chassis/Rack-5": {
181+
"@odata.id": "/redfish/v1/Chassis/Rack-5",
182+
"ChassisType": "Rack",
183+
},
184+
"/redfish/v1/Chassis/Sled-6": {
185+
"@odata.id": "/redfish/v1/Chassis/Sled-6",
186+
"ChassisType": "Sled",
187+
},
188+
})
189+
self.assertEqual(rf.num_racks, 2)
190+
48191
def test_get_server(self, mock_connector):
49192
rf = self.mock_redfish_system(mock_connector, data={
50193
"/redfish/v1/Systems/System-1-2-1-1": {
@@ -54,6 +197,39 @@ def test_get_server(self, mock_connector):
54197
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
55198
self.assertEqual(type(rf_server), RedfishServer)
56199

200+
def test_get_chassis(self, mock_connector):
201+
rf = self.mock_redfish_system(mock_connector, data={
202+
"/redfish/v1/Chassis/Sled-1-2-1": {
203+
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
204+
}
205+
})
206+
rf_chassis = rf.get_chassis("/redfish/v1/Chassis/Sled-1-2-1")
207+
self.assertEqual(type(rf_chassis), RedfishChassis)
208+
209+
def test_get_rack(self, mock_connector):
210+
rf = self.mock_redfish_system(mock_connector, data={
211+
"/redfish/v1/Chassis/Rack-1": {
212+
"@odata.id": "/redfish/v1/Chassis/Rack-1",
213+
"ChassisType": "Rack",
214+
}
215+
})
216+
rf_rack = rf.get_rack("/redfish/v1/Chassis/Rack-1")
217+
self.assertEqual(type(rf_rack), RedfishRack)
218+
219+
def test_get_rack_bad(self, mock_connector):
220+
rf = self.mock_redfish_system(mock_connector, data={
221+
"/redfish/v1/Chassis/Sled-1-2-1": {
222+
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
223+
"ChassisType": "Sled",
224+
}
225+
})
226+
with self.assertRaises(InvalidValueException,
227+
msg="Chassis type Sled does not match that of a Rack"):
228+
rf.get_rack("/redfish/v1/Chassis/Sled-1-2-1")
229+
230+
231+
@mock.patch("redfish_client.Connector")
232+
class TestRedfishServer(RedfishTestCase):
57233
def test_server_simple_properties(self, mock_connector):
58234
rf = self.mock_redfish_system(mock_connector, data={
59235
"/redfish/v1/Systems/System-1-2-1-1": {
@@ -157,15 +333,9 @@ def test_server_name_no_sn(self, mock_connector):
157333
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
158334
self.assertEqual(rf_server.name, "Dell Inc. System")
159335

160-
def test_get_chassis(self, mock_connector):
161-
rf = self.mock_redfish_system(mock_connector, data={
162-
"/redfish/v1/Chassis/Sled-1-2-1": {
163-
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
164-
}
165-
})
166-
rf_chassis = rf.get_chassis("/redfish/v1/Chassis/Sled-1-2-1")
167-
self.assertEqual(type(rf_chassis), RedfishChassis)
168336

337+
@mock.patch("redfish_client.Connector")
338+
class TestRedfishChassis(RedfishTestCase):
169339
def test_get_chassis_properties(self, mock_connector):
170340
rf = self.mock_redfish_system(mock_connector, data={
171341
"/redfish/v1/Chassis/Sled-1-2-1": {
@@ -199,27 +369,6 @@ def test_get_chassis_properties(self, mock_connector):
199369
self.assertEqual(rf_chassis.uuid(), "Sled-1-2-1")
200370
self.assertEqual(rf_chassis.num_servers, 2)
201371

202-
def test_get_rack(self, mock_connector):
203-
rf = self.mock_redfish_system(mock_connector, data={
204-
"/redfish/v1/Chassis/Rack-1": {
205-
"@odata.id": "/redfish/v1/Chassis/Rack-1",
206-
"ChassisType": "Rack",
207-
}
208-
})
209-
rf_rack = rf.get_rack("/redfish/v1/Chassis/Rack-1")
210-
self.assertEqual(type(rf_rack), RedfishRack)
211-
212-
def test_get_rack_bad(self, mock_connector):
213-
rf = self.mock_redfish_system(mock_connector, data={
214-
"/redfish/v1/Chassis/Sled-1-2-1": {
215-
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
216-
"ChassisType": "Sled",
217-
}
218-
})
219-
with self.assertRaises(InvalidValueException,
220-
msg="Chassis type Sled does not match that of a Rack"):
221-
rf.get_rack("/redfish/v1/Chassis/Sled-1-2-1")
222-
223372
def test_get_rack_properties(self, mock_connector):
224373
rf = self.mock_redfish_system(mock_connector, data={
225374
"/redfish/v1/Chassis/Rack-1": {

0 commit comments

Comments
 (0)