|  |  |  | @ -5,7 +5,6 @@ import time | 
			
		
	
		
			
				
					|  |  |  |  | import unittest | 
			
		
	
		
			
				
					|  |  |  |  | from collections import defaultdict | 
			
		
	
		
			
				
					|  |  |  |  | from parameterized import parameterized | 
			
		
	
		
			
				
					|  |  |  |  | from unittest import mock | 
			
		
	
		
			
				
					|  |  |  |  | import threading | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | from cereal import car | 
			
		
	
	
		
			
				
					|  |  |  | @ -177,7 +176,7 @@ class TestFwFingerprint(unittest.TestCase): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class TestFwFingerprintTiming(unittest.TestCase): | 
			
		
	
		
			
				
					|  |  |  |  |   N: int = 5 | 
			
		
	
		
			
				
					|  |  |  |  |   TOL: float = 0.1 | 
			
		
	
		
			
				
					|  |  |  |  |   TOL: float = 0.12 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @staticmethod | 
			
		
	
		
			
				
					|  |  |  |  |   def _run_thread(thread: threading.Thread) -> float: | 
			
		
	
	
		
			
				
					|  |  |  | @ -192,19 +191,12 @@ class TestFwFingerprintTiming(unittest.TestCase): | 
			
		
	
		
			
				
					|  |  |  |  |     return time.perf_counter() - t | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   def _benchmark_brand(self, brand, num_pandas): | 
			
		
	
		
			
				
					|  |  |  |  |     def fake_get_data(_, timeout): | 
			
		
	
		
			
				
					|  |  |  |  |       nonlocal fake_timeout_time | 
			
		
	
		
			
				
					|  |  |  |  |       fake_timeout_time += timeout | 
			
		
	
		
			
				
					|  |  |  |  |       return {} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     with mock.patch("openpilot.selfdrive.car.isotp_parallel_query.IsoTpParallelQuery.get_data", fake_get_data): | 
			
		
	
		
			
				
					|  |  |  |  |       fake_socket = FakeSocket() | 
			
		
	
		
			
				
					|  |  |  |  |       brand_time = 0 | 
			
		
	
		
			
				
					|  |  |  |  |       for _ in range(self.N): | 
			
		
	
		
			
				
					|  |  |  |  |         fake_timeout_time = 0 | 
			
		
	
		
			
				
					|  |  |  |  |         thread = threading.Thread(target=get_fw_versions, args=(fake_socket, fake_socket, brand), | 
			
		
	
		
			
				
					|  |  |  |  |                                   kwargs=dict(num_pandas=num_pandas)) | 
			
		
	
		
			
				
					|  |  |  |  |         brand_time += self._run_thread(thread) + fake_timeout_time | 
			
		
	
		
			
				
					|  |  |  |  |     fake_socket = FakeSocket() | 
			
		
	
		
			
				
					|  |  |  |  |     brand_time = 0 | 
			
		
	
		
			
				
					|  |  |  |  |     for _ in range(self.N): | 
			
		
	
		
			
				
					|  |  |  |  |       thread = threading.Thread(target=get_fw_versions, args=(fake_socket, fake_socket, brand), | 
			
		
	
		
			
				
					|  |  |  |  |                                 kwargs=dict(num_pandas=num_pandas)) | 
			
		
	
		
			
				
					|  |  |  |  |       brand_time += self._run_thread(thread) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return brand_time / self.N | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -235,7 +227,7 @@ class TestFwFingerprintTiming(unittest.TestCase): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @pytest.mark.timeout(60) | 
			
		
	
		
			
				
					|  |  |  |  |   def test_fw_query_timing(self): | 
			
		
	
		
			
				
					|  |  |  |  |     total_ref_time = 6.58 | 
			
		
	
		
			
				
					|  |  |  |  |     total_ref_time = 6.41 | 
			
		
	
		
			
				
					|  |  |  |  |     brand_ref_times = { | 
			
		
	
		
			
				
					|  |  |  |  |       1: { | 
			
		
	
		
			
				
					|  |  |  |  |         'body': 0.11, | 
			
		
	
	
		
			
				
					|  |  |  | 
 |