Skip to content

Commit c0b886c

Browse files
committed
TST: Add test coverage for logic in hypervisor prop mapping
1 parent c0920b8 commit c0b886c

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

tests/enums/props/test_hypervisor_properties.py

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,135 @@ def test_get_marker_prop_func(mock_get_prop_mapping):
106106
val = HypervisorProperties.get_marker_prop_func()
107107
mock_get_prop_mapping.assert_called_once_with(HypervisorProperties.HYPERVISOR_ID)
108108
assert val == mock_get_prop_mapping.return_value
109+
110+
111+
class MockUsage:
112+
def __init__(
113+
self,
114+
vcpus=0,
115+
pcpus=0,
116+
vcpus_used=0,
117+
pcpus_used=0,
118+
vcpus_avail=0,
119+
pcpus_avail=0,
120+
memory_mb_size=0,
121+
memory_mb_used=0,
122+
memory_mb_avail=0,
123+
disk_gb_size=0,
124+
disk_gb_used=0,
125+
disk_gb_avail=0,
126+
):
127+
self.vcpus = vcpus
128+
self.pcpus = pcpus
129+
self.vcpus_used = vcpus_used
130+
self.pcpus_used = pcpus_used
131+
self.vcpus_avail = vcpus_avail
132+
self.pcpus_avail = pcpus_avail
133+
self.memory_mb_size = memory_mb_size
134+
self.memory_mb_used = memory_mb_used
135+
self.memory_mb_avail = memory_mb_avail
136+
self.disk_gb_size = disk_gb_size
137+
self.disk_gb_used = disk_gb_used
138+
self.disk_gb_avail = disk_gb_avail
139+
140+
141+
class MockHypervisor:
142+
def __init__(self, hv, usage):
143+
self.hv = hv
144+
self.usage = usage
145+
146+
147+
@pytest.mark.parametrize(
148+
"prop, mock_hv, mock_usage, expected",
149+
[
150+
(HypervisorProperties.HYPERVISOR_ID, {"id": "abc123"}, None, "abc123"),
151+
(HypervisorProperties.HYPERVISOR_IP, {"host_ip": "10.0.0.1"}, None, "10.0.0.1"),
152+
(HypervisorProperties.HYPERVISOR_NAME, {"name": "hyp1"}, None, "hyp1"),
153+
(HypervisorProperties.HYPERVISOR_STATE, {"state": "up"}, None, "up"),
154+
(
155+
HypervisorProperties.HYPERVISOR_STATUS,
156+
{"status": "enabled"},
157+
None,
158+
"enabled",
159+
),
160+
(
161+
HypervisorProperties.HYPERVISOR_DISABLED_REASON,
162+
{"service": {"disabled_reason": "maintenance"}},
163+
None,
164+
"maintenance",
165+
),
166+
(
167+
HypervisorProperties.VCPUS,
168+
{},
169+
MockUsage(vcpus=4, pcpus=2),
170+
6,
171+
),
172+
(
173+
HypervisorProperties.VCPUS_USED,
174+
{},
175+
MockUsage(vcpus_used=1, pcpus_used=2),
176+
3,
177+
),
178+
(
179+
HypervisorProperties.VCPUS_AVAIL,
180+
{},
181+
MockUsage(vcpus_avail=3, pcpus_avail=1),
182+
4,
183+
),
184+
(
185+
HypervisorProperties.MEMORY_MB_SIZE,
186+
{},
187+
MockUsage(memory_mb_size=8192),
188+
8192,
189+
),
190+
(
191+
HypervisorProperties.MEMORY_MB_USED,
192+
{},
193+
MockUsage(memory_mb_used=4096),
194+
4096,
195+
),
196+
(
197+
HypervisorProperties.MEMORY_MB_AVAIL,
198+
{},
199+
MockUsage(memory_mb_avail=2048),
200+
2048,
201+
),
202+
(
203+
HypervisorProperties.DISK_GB_SIZE,
204+
{},
205+
MockUsage(disk_gb_size=500),
206+
500,
207+
),
208+
(
209+
HypervisorProperties.DISK_GB_USED,
210+
{},
211+
MockUsage(disk_gb_used=200),
212+
200,
213+
),
214+
(
215+
HypervisorProperties.DISK_GB_AVAIL,
216+
{},
217+
MockUsage(disk_gb_avail=300),
218+
300,
219+
),
220+
],
221+
)
222+
def test_hypervisor_property_mappings(prop, mock_hv, mock_usage, expected):
223+
"""Test that each HypervisorProperties mapping correctly extracts the expected data."""
224+
hv_obj = MockHypervisor(mock_hv, mock_usage)
225+
func = HypervisorProperties.get_prop_mapping(prop)
226+
assert func(hv_obj) == expected
227+
228+
229+
@patch("openstackquery.enums.props.hypervisor_properties.TimeUtils.extract_uptime")
230+
def test_hypervisor_uptime_days_mapping(mock_extract):
231+
mock_extract.return_value = 5
232+
hv_obj = MockHypervisor({"uptime": "fake-uptime-string"}, None)
233+
234+
func = HypervisorProperties.get_prop_mapping(
235+
HypervisorProperties.HYPERVISOR_UPTIME_DAYS
236+
)
237+
result = func(hv_obj)
238+
239+
mock_extract.assert_called_once_with("fake-uptime-string")
240+
assert result == 5

0 commit comments

Comments
 (0)