this catches the accord/accordh issue!

pull/31500/head
Shane Smiskol 1 year ago
parent 207789e047
commit a80f86712d
  1. 16
      selfdrive/car/tests/test_fw_fingerprint.py

@ -33,8 +33,8 @@ class TestFwFingerprint(unittest.TestCase):
self.assertEqual(len(candidates), 1, f"got more than one candidate: {candidates}") self.assertEqual(len(candidates), 1, f"got more than one candidate: {candidates}")
self.assertEqual(candidates[0], expected) self.assertEqual(candidates[0], expected)
@parameterized.expand([(b, c, e[c]) for b, e in VERSIONS.items() for c in e]) @parameterized.expand([(b, c, e[c], n) for b, e in VERSIONS.items() for c in e for n in (True, False)])
def test_exact_match(self, brand, car_model, ecus): def test_exact_match(self, brand, car_model, ecus, test_non_essential):
print() print()
print(brand, car_model) print(brand, car_model)
config = FW_QUERY_CONFIGS[brand] config = FW_QUERY_CONFIGS[brand]
@ -43,8 +43,10 @@ class TestFwFingerprint(unittest.TestCase):
fw = [] fw = []
for ecu, fw_versions in ecus.items(): for ecu, fw_versions in ecus.items():
print(ecu) print(ecu)
# Assume non-essential ECUs apply to all cars, so that missing ECUs on an
# Accord Hybrid won't match to an Accord where only Accord has labeled non-essential ECUs
# if car_model in config.non_essential_ecus.get(ecu[0], []): # if car_model in config.non_essential_ecus.get(ecu[0], []):
if ecu[0] in config.non_essential_ecus: if ecu[0] in config.non_essential_ecus and test_non_essential:
print('continue') print('continue')
continue continue
ecu_name, addr, sub_addr = ecu ecu_name, addr, sub_addr = ecu
@ -53,10 +55,12 @@ class TestFwFingerprint(unittest.TestCase):
CP.carFw = fw CP.carFw = fw
print(CP.carFw) print(CP.carFw)
_, matches = match_fw_to_car(CP.carFw, allow_fuzzy=False) _, matches = match_fw_to_car(CP.carFw, allow_fuzzy=False)
assert len(matches) < 2 if not test_non_essential:
if len(matches) == 1:
self.assertFingerprints(matches, car_model) self.assertFingerprints(matches, car_model)
# self.assertFingerprints(matches, car_model) else:
# if we're removing ECUs we expect some match loss, but it shouldn't mismatch
if len(matches) != 0:
self.assertFingerprints(matches, car_model)
@parameterized.expand([(b, c, e[c]) for b, e in VERSIONS.items() for c in e]) @parameterized.expand([(b, c, e[c]) for b, e in VERSIONS.items() for c in e])
def test_custom_fuzzy_match(self, brand, car_model, ecus): def test_custom_fuzzy_match(self, brand, car_model, ecus):

Loading…
Cancel
Save