42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from afancontrol.pwmfan import FanValue, FreeIPMIFanSpeed
|
|
|
|
|
|
@pytest.fixture
|
|
def ipmi_sensors_output():
|
|
return """
|
|
ID,Name,Type,Reading,Units,Event
|
|
17,FAN1,Fan,1400.00,RPM,'OK'
|
|
18,FAN2,Fan,1800.00,RPM,'OK'
|
|
19,FAN3,Fan,N/A,RPM,N/A
|
|
20,FAN4,Fan,N/A,RPM,N/A
|
|
21,FAN5,Fan,N/A,RPM,N/A
|
|
22,FAN6,Fan,N/A,RPM,N/A
|
|
""".lstrip()
|
|
|
|
|
|
def test_fan_speed(ipmi_sensors_output):
|
|
fan_speed = FreeIPMIFanSpeed("FAN2")
|
|
with patch.object(FreeIPMIFanSpeed, "_call_ipmi_sensors") as mock_call:
|
|
mock_call.return_value = ipmi_sensors_output
|
|
assert fan_speed.get_speed() == FanValue(1800)
|
|
|
|
|
|
def test_fan_speed_na(ipmi_sensors_output):
|
|
fan_speed = FreeIPMIFanSpeed("FAN3")
|
|
with patch.object(FreeIPMIFanSpeed, "_call_ipmi_sensors") as mock_call:
|
|
mock_call.return_value = ipmi_sensors_output
|
|
with pytest.raises(ValueError):
|
|
fan_speed.get_speed()
|
|
|
|
|
|
def test_fan_speed_unknown(ipmi_sensors_output):
|
|
fan_speed = FreeIPMIFanSpeed("FAN30")
|
|
with patch.object(FreeIPMIFanSpeed, "_call_ipmi_sensors") as mock_call:
|
|
mock_call.return_value = ipmi_sensors_output
|
|
with pytest.raises(RuntimeError):
|
|
fan_speed.get_speed()
|