You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.0 KiB
56 lines
2.0 KiB
#!/usr/bin/env python3
|
|
import unittest
|
|
from unittest.mock import Mock, patch
|
|
from parameterized import parameterized
|
|
|
|
from selfdrive.thermald.fan_controller import TiciFanController
|
|
|
|
ALL_CONTROLLERS = [(TiciFanController,)]
|
|
|
|
def patched_controller(controller_class):
|
|
with patch("os.system", new=Mock()):
|
|
return controller_class()
|
|
|
|
class TestFanController(unittest.TestCase):
|
|
def wind_up(self, controller, ignition=True):
|
|
for _ in range(1000):
|
|
controller.update(max_cpu_temp=100, ignition=ignition)
|
|
|
|
def wind_down(self, controller, ignition=False):
|
|
for _ in range(1000):
|
|
controller.update(max_cpu_temp=10, ignition=ignition)
|
|
|
|
@parameterized.expand(ALL_CONTROLLERS)
|
|
def test_hot_onroad(self, controller_class):
|
|
controller = patched_controller(controller_class)
|
|
self.wind_up(controller)
|
|
self.assertGreaterEqual(controller.update(max_cpu_temp=100, ignition=True), 70)
|
|
|
|
@parameterized.expand(ALL_CONTROLLERS)
|
|
def test_offroad_limits(self, controller_class):
|
|
controller = patched_controller(controller_class)
|
|
self.wind_up(controller)
|
|
self.assertLessEqual(controller.update(max_cpu_temp=100, ignition=False), 30)
|
|
|
|
@parameterized.expand(ALL_CONTROLLERS)
|
|
def test_no_fan_wear(self, controller_class):
|
|
controller = patched_controller(controller_class)
|
|
self.wind_down(controller)
|
|
self.assertEqual(controller.update(max_cpu_temp=10, ignition=False), 0)
|
|
|
|
@parameterized.expand(ALL_CONTROLLERS)
|
|
def test_limited(self, controller_class):
|
|
controller = patched_controller(controller_class)
|
|
self.wind_up(controller, ignition=True)
|
|
self.assertGreaterEqual(controller.update(max_cpu_temp=100, ignition=True), 80)
|
|
|
|
@parameterized.expand(ALL_CONTROLLERS)
|
|
def test_windup_speed(self, controller_class):
|
|
controller = patched_controller(controller_class)
|
|
self.wind_down(controller, ignition=True)
|
|
for _ in range(10):
|
|
controller.update(max_cpu_temp=90, ignition=True)
|
|
self.assertGreaterEqual(controller.update(max_cpu_temp=90, ignition=True), 60)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|
|
|