process replay: update after laika publish policy change (#27647)

* laika pubs all

* lr for locationd

* fix locationd qcom

* update refs
pull/27632/head
Adeeb Shihadeh 2 years ago committed by GitHub
parent e0ac5a940e
commit ee36c106af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 30
      selfdrive/test/process_replay/process_replay.py
  2. 2
      selfdrive/test/process_replay/ref_commit

@ -248,15 +248,6 @@ def ublox_rcv_callback(msg):
return [] return []
def laika_rcv_callback(msg, CP, cfg, fsm):
if msg.which() == 'ubloxGnss' and msg.ubloxGnss.which() == "measurementReport":
return ["gnssMeasurements"], True
elif msg.which() == 'qcomGnss' and msg.qcomGnss.which() == "drMeasurementReport":
return ["gnssMeasurements"], True
else:
return [], False
CONFIGS = [ CONFIGS = [
ProcessConfig( ProcessConfig(
proc_name="controlsd", proc_name="controlsd",
@ -331,7 +322,7 @@ CONFIGS = [
pub_sub={ pub_sub={
"cameraOdometry": ["liveLocationKalman"], "cameraOdometry": ["liveLocationKalman"],
"accelerometer": [], "gyroscope": [], "accelerometer": [], "gyroscope": [],
"gpsLocationExternal": [], "liveCalibration": [], "carState": [], "gpsLocationExternal": [], "liveCalibration": [], "carState": [], "gpsLocation": [],
}, },
ignore=["logMonoTime", "valid"], ignore=["logMonoTime", "valid"],
init_callback=get_car_params, init_callback=get_car_params,
@ -371,7 +362,7 @@ CONFIGS = [
}, },
ignore=["logMonoTime"], ignore=["logMonoTime"],
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=laika_rcv_callback, should_recv_callback=None,
tolerance=NUMPY_TOLERANCE, tolerance=NUMPY_TOLERANCE,
fake_pubsubmaster=True, fake_pubsubmaster=True,
), ),
@ -398,7 +389,7 @@ def replay_process(cfg, lr, fingerprint=None):
return cpp_replay_process(cfg, lr, fingerprint) return cpp_replay_process(cfg, lr, fingerprint)
def setup_env(simulation=False, CP=None, cfg=None, controlsState=None): def setup_env(simulation=False, CP=None, cfg=None, controlsState=None, lr=None):
params = Params() params = Params()
params.clear_all() params.clear_all()
params.put_bool("OpenpilotEnabledToggle", True) params.put_bool("OpenpilotEnabledToggle", True)
@ -406,7 +397,6 @@ def setup_env(simulation=False, CP=None, cfg=None, controlsState=None):
params.put_bool("DisengageOnAccelerator", True) params.put_bool("DisengageOnAccelerator", True)
params.put_bool("WideCameraOnly", False) params.put_bool("WideCameraOnly", False)
params.put_bool("DisableLogging", False) params.put_bool("DisableLogging", False)
params.put_bool("UbloxAvailable", True)
params.put_bool("ObdMultiplexingDisabled", True) params.put_bool("ObdMultiplexingDisabled", True)
os.environ["NO_RADAR_SLEEP"] = "1" os.environ["NO_RADAR_SLEEP"] = "1"
@ -414,6 +404,10 @@ def setup_env(simulation=False, CP=None, cfg=None, controlsState=None):
os.environ['SKIP_FW_QUERY'] = "" os.environ['SKIP_FW_QUERY'] = ""
os.environ['FINGERPRINT'] = "" os.environ['FINGERPRINT'] = ""
if lr is not None:
services = {m.which() for m in lr}
params.put_bool("UbloxAvailable", "ubloxGnss" in services)
if cfg is not None: if cfg is not None:
# Clear all custom processConfig environment variables # Clear all custom processConfig environment variables
for config in CONFIGS: for config in CONFIGS:
@ -485,10 +479,10 @@ def python_replay_process(cfg, lr, fingerprint=None):
if fingerprint is not None: if fingerprint is not None:
os.environ['SKIP_FW_QUERY'] = "1" os.environ['SKIP_FW_QUERY'] = "1"
os.environ['FINGERPRINT'] = fingerprint os.environ['FINGERPRINT'] = fingerprint
setup_env(cfg=cfg, controlsState=controlsState) setup_env(cfg=cfg, controlsState=controlsState, lr=lr)
else: else:
CP = [m for m in lr if m.which() == 'carParams'][0].carParams CP = [m for m in lr if m.which() == 'carParams'][0].carParams
setup_env(CP=CP, cfg=cfg, controlsState=controlsState) setup_env(CP=CP, cfg=cfg, controlsState=controlsState, lr=lr)
assert(type(managed_processes[cfg.proc_name]) is PythonProcess) assert(type(managed_processes[cfg.proc_name]) is PythonProcess)
managed_processes[cfg.proc_name].prepare() managed_processes[cfg.proc_name].prepare()
@ -517,7 +511,7 @@ def python_replay_process(cfg, lr, fingerprint=None):
recv_socks, should_recv = cfg.should_recv_callback(msg, CP, cfg, fsm) recv_socks, should_recv = cfg.should_recv_callback(msg, CP, cfg, fsm)
else: else:
recv_socks = [s for s in cfg.pub_sub[msg.which()] if recv_socks = [s for s in cfg.pub_sub[msg.which()] if
(fsm.frame + 1) % int(service_list[msg.which()].frequency / service_list[s].frequency) == 0] (fsm.frame + 1) % max(1, int(service_list[msg.which()].frequency / service_list[s].frequency)) == 0]
should_recv = bool(len(recv_socks)) should_recv = bool(len(recv_socks))
if msg.which() == 'can': if msg.which() == 'can':
@ -549,14 +543,14 @@ def cpp_replay_process(cfg, lr, fingerprint=None):
log_msgs = [] log_msgs = []
# We need to fake SubMaster alive since we can't inject a fake clock # We need to fake SubMaster alive since we can't inject a fake clock
setup_env(simulation=True, cfg=cfg) setup_env(simulation=True, cfg=cfg, lr=lr)
managed_processes[cfg.proc_name].prepare() managed_processes[cfg.proc_name].prepare()
managed_processes[cfg.proc_name].start() managed_processes[cfg.proc_name].start()
try: try:
with Timeout(TIMEOUT, error_msg=f"timed out testing process {repr(cfg.proc_name)}"): with Timeout(TIMEOUT, error_msg=f"timed out testing process {repr(cfg.proc_name)}"):
while not all(pm.all_readers_updated(s) for s in cfg.pub_sub.keys()): while not any(pm.all_readers_updated(s) for s in cfg.pub_sub.keys()):
time.sleep(0) time.sleep(0)
# Make sure all subscribers are connected # Make sure all subscribers are connected

@ -1 +1 @@
5775220ec2e62dcdedb92d96270f1380bbd88c39 30128f043985c8a793cdca2ad9ea1039c5086d72
Loading…
Cancel
Save