Skip to content

Commit b4efa8b

Browse files
authored
Merge pull request #217 from wojtekwanczyk/basic-ipmi-tests
Basic tests and fix in keys in mappings
2 parents 0a5f6ea + e6ffffa commit b4efa8b

File tree

4 files changed

+102
-1
lines changed

4 files changed

+102
-1
lines changed

easy_manage/tools/ipmi/system/maps/chassis_maps.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def map_chassis_capabilities(cap_object):
3838
if cap_object.frontpanel_lockout == 1:
3939
caps.append(CHASSIS_CAPABILITIES_MAP['frontpanel_lockout '])
4040
if cap_object.diagnostic_interrupt == 1:
41-
caps.append(CHASSIS_CAPABILITIES_MAP['diagnostic_interrupt '])
41+
caps.append(CHASSIS_CAPABILITIES_MAP['diagnostic_interrupt'])
4242
if cap_object.power_interlock == 1:
4343
caps.append(CHASSIS_CAPABILITIES_MAP['power_interlock'])
4444
return caps

tests/ipmi/__init__.py

Whitespace-only changes.

tests/ipmi/test_ipmi_backend.py

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import unittest
2+
from unittest import TestCase
3+
from unittest.mock import Mock, PropertyMock, patch
4+
5+
from easy_manage.tools.ipmi.ipmi_backend import IpmiBackend
6+
7+
8+
class IpmiBackendTestCase(TestCase):
9+
10+
@staticmethod
11+
def mock_connector():
12+
"Mocks ipmi connector instance"
13+
connector = Mock()
14+
connector.address = PropertyMock(return_value="192.168.1.1")
15+
mocked_credentials = Mock()
16+
mocked_credentials.username = PropertyMock(return_value="usrname")
17+
mocked_credentials.password = PropertyMock(return_value="passwd")
18+
connector.credentials = Mock(return_value=mocked_credentials)
19+
connector.ipmi = Mock()
20+
return connector
21+
22+
@staticmethod
23+
def mock_caps_object(intrusion_sensor=0, frontpanel_lockout=0, diagnostic_interrupt=0, power_interlock=0):
24+
"Mock chassis capabilities object response"
25+
capabilities = Mock()
26+
cap_flags = Mock()
27+
cap_flags.intrusion_sensor = intrusion_sensor
28+
cap_flags.frontpanel_lockout = frontpanel_lockout
29+
cap_flags.diagnostic_interrupt = diagnostic_interrupt
30+
cap_flags.power_interlock = power_interlock
31+
capabilities.capabilities_flags = cap_flags
32+
return capabilities
33+
34+
@staticmethod
35+
def mock_chassis_status(
36+
power_on=True, overload=True, interlock=True,
37+
fault=True, control_fault=True, restore_policy=True,
38+
last_event=True, chassis_state=True
39+
):
40+
chassis_status = Mock()
41+
chassis_status.power_on = power_on
42+
chassis_status.overload = overload
43+
chassis_status.interlock = interlock
44+
chassis_status.fault = fault
45+
chassis_status.control_fault = control_fault
46+
chassis_status.restore_policy = restore_policy
47+
chassis_status.last_event = last_event
48+
chassis_status.chassis_state = chassis_state
49+
return chassis_status
50+
51+
def setUp(self):
52+
self.connector = IpmiBackendTestCase.mock_connector()
53+
54+
def test_chassis_functions(self):
55+
self.connector.ipmi.send_message_with_name = Mock(
56+
return_value=IpmiBackendTestCase.mock_caps_object(
57+
intrusion_sensor=1,
58+
diagnostic_interrupt=1
59+
)
60+
)
61+
response = self.connector.ipmi.send_message_with_name()
62+
ipmi_backend = IpmiBackend(self.connector)
63+
functions = ipmi_backend.chassis_functions()
64+
self.assertIn('Physical security sensor', functions)
65+
self.assertIn('Diagnostic interrupt', functions)
66+
self.assertNotIn('Power interlock', functions)
67+
68+
def test_chassis_status(self):
69+
self.connector.ipmi.get_chassis_status = Mock(
70+
return_value=IpmiBackendTestCase.mock_chassis_status(
71+
power_on=False
72+
)
73+
)
74+
ipmi_backend = IpmiBackend(self.connector)
75+
status = ipmi_backend.chassis_status()
76+
self.assertEqual(status['chassis_status']['power_on'], False)

tests/ipmi/test_reducer.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from unittest import TestCase
2+
from easy_manage.tools.ipmi.reducers.ipmi_reducer import IpmiReducer
3+
4+
5+
class IpmiReducerTestCase(TestCase):
6+
def setUp(self):
7+
chass_buffer = {} # Implement further parsing tests if needed
8+
sys_buffer = {
9+
'hardware': {
10+
'system_components': [
11+
{
12+
'Board Extra': 'psu',
13+
'properties': {
14+
'Board Mfg Date': 'Mon Jul 23 14:00:00 2018',
15+
}
16+
}
17+
]
18+
}
19+
}
20+
21+
self.reducer = IpmiReducer(sys_buffer, chass_buffer)
22+
23+
def test_reduce_chassis_static(self):
24+
reduced = self.reducer.reduce_chassis_static()
25+
self.assertEqual(reduced['power_supplies'], {'psu': {'Mfg Date': 'Mon Jul 23 14:00:00 2018'}})

0 commit comments

Comments
 (0)