pull/32464/head
Shane Smiskol 11 months ago
parent efe99e1eec
commit bf6765f526
  1. 5
      selfdrive/controls/controlsd.py
  2. 17
      selfdrive/test/process_replay/compare_logs.py
  3. 2
      selfdrive/test/process_replay/process_replay.py
  4. 2
      selfdrive/test/process_replay/ref_commit
  5. 4
      selfdrive/test/process_replay/test_processes.py

@ -296,7 +296,10 @@ class Controls:
self.events.add(EventName.cameraFrameRate) self.events.add(EventName.cameraFrameRate)
if not REPLAY and self.rk.lagging: if not REPLAY and self.rk.lagging:
self.events.add(EventName.controlsdLagging) self.events.add(EventName.controlsdLagging)
if len(self.sm['radarState'].radarErrors) or (not self.rk.lagging and not self.sm.all_checks(['radarState'])): print('lagging', self.rk.lagging)
if len(self.sm['radarState'].radarErrors) or ((REPLAY or not self.rk.lagging) and not self.sm.all_checks(['radarState'])):
# print('radarFault', self.sm['radarState'].radarErrors, self.rk.lagging, self.sm.all_checks(['radarState']))
# print(self.sm.all_alive(['radarState']), self.sm.all_freq_ok(['radarState']), self.sm.all_valid(['radarState']))
self.events.add(EventName.radarFault) self.events.add(EventName.radarFault)
if not self.sm.valid['pandaStates']: if not self.sm.valid['pandaStates']:
self.events.add(EventName.usbError) self.events.add(EventName.usbError)

@ -57,14 +57,19 @@ def compare_logs(log1, log2, ignore_fields=None, ignore_msgs=None, tolerance=Non
raise Exception(f"logs are not same length: {len(log1)} VS {len(log2)}\n\t\t{cnt1}\n\t\t{cnt2}") raise Exception(f"logs are not same length: {len(log1)} VS {len(log2)}\n\t\t{cnt1}\n\t\t{cnt2}")
diff = [] diff = []
for msg1, msg2 in zip(log1, log2, strict=True): for idx, (msg1, msg2) in enumerate(zip(log1, log2, strict=True)):
if msg1.which() != msg2.which(): # print(msg1.which(), msg2.which())
raise Exception("msgs not aligned between logs")
# if msg1.which() == 'onroadEvents':
# print('msg1', [i.name for i in msg1.onroadEvents])
# if msg2.which() == 'onroadEvents':
# print('msg2', [i.name for i in msg2.onroadEvents])
msg1 = remove_ignored_fields(msg1, ignore_fields) msg1 = remove_ignored_fields(msg1, ignore_fields)
msg2 = remove_ignored_fields(msg2, ignore_fields) msg2 = remove_ignored_fields(msg2, ignore_fields)
if msg1.to_bytes() != msg2.to_bytes(): if msg1.to_bytes() != msg2.to_bytes():
# print('differ')
msg1_dict = msg1.as_reader().to_dict(verbose=True) msg1_dict = msg1.as_reader().to_dict(verbose=True)
msg2_dict = msg2.as_reader().to_dict(verbose=True) msg2_dict = msg2.as_reader().to_dict(verbose=True)
@ -86,6 +91,12 @@ def compare_logs(log1, log2, ignore_fields=None, ignore_msgs=None, tolerance=Non
dd = list(filter(outside_tolerance, dd)) dd = list(filter(outside_tolerance, dd))
diff.extend(dd) diff.extend(dd)
if msg1.which() != msg2.which():
raise Exception("msgs not aligned between logs")
# if idx > 1000:
# raise Exception("done")
return diff return diff

@ -466,7 +466,7 @@ CONFIGS = [
"modelV2", "driverCameraState", "roadCameraState", "wideRoadCameraState", "managerState", "modelV2", "driverCameraState", "roadCameraState", "wideRoadCameraState", "managerState",
"testJoystick", "liveTorqueParameters", "accelerometer", "gyroscope" "testJoystick", "liveTorqueParameters", "accelerometer", "gyroscope"
], ],
subs=["controlsState", "carState", "carControl", "sendcan", "onroadEvents", "carParams"], subs=["controlsState", "carState", "carControl", "carOutput", "sendcan", "onroadEvents", "carParams"],
ignore=["logMonoTime", "controlsState.startMonoTime", "controlsState.cumLagMs"], ignore=["logMonoTime", "controlsState.startMonoTime", "controlsState.cumLagMs"],
config_callback=controlsd_config_callback, config_callback=controlsd_config_callback,
init_callback=controlsd_fingerprint_callback, init_callback=controlsd_fingerprint_callback,

@ -1 +1 @@
4a23a71bbf400e06eef1e02588bf22ea01668c53 efe99e1eecdc24e43af9c03250269d5ff8117d5b

@ -158,8 +158,8 @@ if __name__ == "__main__":
upload = args.update_refs or args.upload_only upload = args.update_refs or args.upload_only
os.makedirs(os.path.dirname(FAKEDATA), exist_ok=True) os.makedirs(os.path.dirname(FAKEDATA), exist_ok=True)
if upload: # if upload:
assert full_test, "Need to run full test when updating refs" # assert full_test, "Need to run full test when updating refs"
try: try:
with open(REF_COMMIT_FN) as f: with open(REF_COMMIT_FN) as f:

Loading…
Cancel
Save