openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
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.
 
 
 
 
 
 

58 lines
2.2 KiB

#!/usr/bin/env python3
import unittest
from unittest.mock import Mock, MagicMock, patch
from parameterized import parameterized
with patch("smbus2.SMBus", new=MagicMock()):
from selfdrive.thermald.fan_controller import EonFanController, UnoFanController, TiciFanController
ALL_CONTROLLERS = [(EonFanController, ), (UnoFanController,), (TiciFanController,)]
GEN2_CONTROLLERS = [(UnoFanController,), (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(GEN2_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(GEN2_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()