add test for essential ecus for fuzzy fingerprinting

pull/28386/head
Shane Smiskol 2 years ago
parent 0eb0063e5f
commit 407d80552e
  1. 3
      hkg_fuzzy_fp.py
  2. 19
      selfdrive/car/hyundai/tests/test_hyundai.py

@ -9,6 +9,9 @@ plugin_hybrid = []
hybrid = []
ev = []
platform_codes = set()
# these ecus are available on all cars (even CAN FD with no OBD fingerprinting)
fw_keys = [(Ecu.fwdCamera, 0x7c4, None), (Ecu.fwdRadar, 0x7d0, None)]
for car in FW_VERSIONS.keys():

@ -2,28 +2,31 @@
import unittest
from cereal import car
from selfdrive.car.car_helpers import get_interface_attr
from selfdrive.car.fw_versions import FW_QUERY_CONFIGS
from selfdrive.car.hyundai.values import CANFD_CAR
from selfdrive.car.hyundai.values import CANFD_CAR, FW_VERSIONS, FW_QUERY_CONFIG
Ecu = car.CarParams.Ecu
ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()}
VERSIONS = get_interface_attr("FW_VERSIONS", ignore_none=True)
class TestHyundaiFingerprint(unittest.TestCase):
def test_auxiliary_request_ecu_whitelist(self):
# Asserts only auxiliary Ecus can exist in database for CAN-FD cars
config = FW_QUERY_CONFIGS['hyundai']
whitelisted_ecus = {ecu for r in config.requests for ecu in r.whitelist_ecus if r.bus > 3}
whitelisted_ecus = {ecu for r in FW_QUERY_CONFIG.requests for ecu in r.whitelist_ecus if r.bus > 3}
for car_model in CANFD_CAR:
ecus = {fw[0] for fw in VERSIONS['hyundai'][car_model].keys()}
ecus = {fw[0] for fw in FW_VERSIONS[car_model].keys()}
ecus_not_in_whitelist = ecus - whitelisted_ecus
ecu_strings = ", ".join([f'Ecu.{ECU_NAME[ecu]}' for ecu in ecus_not_in_whitelist])
self.assertEqual(len(ecus_not_in_whitelist), 0, f'{car_model}: Car model has ECUs not in auxiliary request whitelists: {ecu_strings}')
def test_certain_ecus_available(self):
# Asserts certain ecu keys essential for fuzzy fingerprinting are available on all platforms
essential_ecus = [(Ecu.fwdCamera, 0x7c4, None), (Ecu.fwdRadar, 0x7d0, None)]
for car, ecus in FW_VERSIONS.items():
for essential_ecu in essential_ecus:
self.assertIn(essential_ecu, ecus)
if __name__ == "__main__":
unittest.main()

Loading…
Cancel
Save