mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-08-08 01:35:40 +08:00
FW query timing test: mock get_data function for timeout (#29712)
* use a mock function to simulate timeout * Cleanup * Cleanup * clean refs * tolerance can also go down * fix * better name revert refs * use unittest * revert * Revert "use unittest" This reverts commit 7a1d6a6fc72fa129a66590e0e5998c2438ecbe55. * order * local * use a context * revert * stress test it * let's try * it's consistent --------- Co-authored-by: Shane Smiskol <shane@smiskol.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import time
|
||||
import unittest
|
||||
from collections import defaultdict
|
||||
from parameterized import parameterized
|
||||
from unittest import mock
|
||||
import threading
|
||||
|
||||
from cereal import car
|
||||
@@ -176,7 +177,7 @@ class TestFwFingerprint(unittest.TestCase):
|
||||
|
||||
class TestFwFingerprintTiming(unittest.TestCase):
|
||||
N: int = 5
|
||||
TOL: float = 0.12
|
||||
TOL: float = 0.1
|
||||
|
||||
@staticmethod
|
||||
def _run_thread(thread: threading.Thread) -> float:
|
||||
@@ -191,12 +192,19 @@ class TestFwFingerprintTiming(unittest.TestCase):
|
||||
return time.perf_counter() - t
|
||||
|
||||
def _benchmark_brand(self, brand, num_pandas):
|
||||
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)
|
||||
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
|
||||
|
||||
return brand_time / self.N
|
||||
|
||||
@@ -227,7 +235,7 @@ class TestFwFingerprintTiming(unittest.TestCase):
|
||||
|
||||
@pytest.mark.timeout(60)
|
||||
def test_fw_query_timing(self):
|
||||
total_ref_time = 6.41
|
||||
total_ref_time = 6.58
|
||||
brand_ref_times = {
|
||||
1: {
|
||||
'body': 0.11,
|
||||
|
||||
Reference in New Issue
Block a user