import cereal.messaging as messaging from opendbc.car.toyota.values import CAR as TOYOTA from openpilot.selfdrive.test.process_replay import replay_process_with_name class TestLeads: def test_radar_fault(self): # if there's no radar-related can traffic, radard should either not respond or respond with an error # this is tightly coupled with underlying car radar_interface implementation, but it's a good sanity check def single_iter_pkg(): # single iter package, with meaningless cans and empty carState/modelV2 msgs = [] for _ in range(500): can = messaging.new_message("can", 1) cs = messaging.new_message("carState") cp = messaging.new_message("carParams") msgs.append(can.as_reader()) msgs.append(cs.as_reader()) msgs.append(cp.as_reader()) model = messaging.new_message("modelV2") msgs.append(model.as_reader()) return msgs msgs = [m for _ in range(3) for m in single_iter_pkg()] out = replay_process_with_name("card", msgs, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2) states = [m for m in out if m.which() == "liveTracks"] failures = [not state.valid and len(state.liveTracks.errors) for state in states] assert len(states) == 0 or all(failures)