afancontrol/tests/pwmfan/test_ipmi.py
2021-10-26 12:58:36 +02:00

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()