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