From 1945ef0441f9df9483cf0c9c6c349cf7f1c06534 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 11 Aug 2023 18:33:11 -0700 Subject: [PATCH] test_models: match online fingerprinting behavior (#29306) * draft * 1x * clean up * final clean up * fix * self explan * space * space old-commit-hash: 001d4e8729bdab999f9bd948b162091465a125f6 --- selfdrive/car/car_helpers.py | 7 ++++--- selfdrive/car/tests/test_models.py | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 5bda64368b..1ad584de26 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -13,6 +13,8 @@ from system.swaglog import cloudlog import cereal.messaging as messaging from selfdrive.car import gen_empty_fingerprint +FRAME_FINGERPRINT = 100 # 1s + EventName = car.CarEvent.EventName @@ -126,7 +128,6 @@ def fingerprint(logcan, sendcan, num_pandas): finger = gen_empty_fingerprint() candidate_cars = {i: all_legacy_fingerprint_cars() for i in [0, 1]} # attempt fingerprint on both bus 0 and 1 frame = 0 - frame_fingerprint = 100 # 1s car_fingerprint = None done = False @@ -152,12 +153,12 @@ def fingerprint(logcan, sendcan, num_pandas): # if we only have one car choice and the time since we got our first # message has elapsed, exit for b in candidate_cars: - if len(candidate_cars[b]) == 1 and frame > frame_fingerprint: + if len(candidate_cars[b]) == 1 and frame > FRAME_FINGERPRINT: # fingerprint done car_fingerprint = candidate_cars[b][0] # bail if no cars left or we've been waiting for more than 2s - failed = (all(len(cc) == 0 for cc in candidate_cars.values()) and frame > frame_fingerprint) or frame > 200 + failed = (all(len(cc) == 0 for cc in candidate_cars.values()) and frame > FRAME_FINGERPRINT) or frame > 200 succeeded = car_fingerprint is not None done = failed or succeeded diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 590258fbb7..b7b8900461 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -11,7 +11,7 @@ from cereal import log, car from common.basedir import BASEDIR from common.realtime import DT_CTRL from selfdrive.car.fingerprints import all_known_cars -from selfdrive.car.car_helpers import interfaces +from selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces from selfdrive.car.gm.values import CAR as GM from selfdrive.car.honda.values import CAR as HONDA, HONDA_BOSCH from selfdrive.car.hyundai.values import CAR as HYUNDAI @@ -106,10 +106,12 @@ class TestCarModelBase(unittest.TestCase): dashcam_only = False for msg in lr: if msg.which() == "can": - for m in msg.can: - if m.src < 64: - fingerprint[m.src][m.address] = len(m.dat) can_msgs.append(msg) + if len(can_msgs) <= FRAME_FINGERPRINT: + for m in msg.can: + if m.src < 64: + fingerprint[m.src][m.address] = len(m.dat) + elif msg.which() == "carParams": car_fw = msg.carParams.carFw dashcam_only = msg.carParams.dashcamOnly @@ -117,6 +119,7 @@ class TestCarModelBase(unittest.TestCase): experimental_long = True if cls.car_model is None and not cls.ci: cls.car_model = msg.carParams.carFingerprint + elif msg.which() == 'initData': for param in msg.initData.params.entries: if param.key == 'OpenpilotEnabledToggle':