|  |  |  | 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(5):
 | 
					
						
							|  |  |  |         can = messaging.new_message("can", 1)
 | 
					
						
							|  |  |  |         cs = messaging.new_message("carState")
 | 
					
						
							|  |  |  |         msgs.append(can.as_reader())
 | 
					
						
							|  |  |  |         msgs.append(cs.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("radard", msgs, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2)
 | 
					
						
							|  |  |  |     states = [m for m in out if m.which() == "radarState"]
 | 
					
						
							|  |  |  |     failures = [not state.valid and len(state.radarState.radarErrors) for state in states]
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert len(states) == 0 or all(failures)
 |