Add flag to process replay config to use real submaster (#20701)

pull/20706/head
Joost Wooning 4 years ago committed by GitHub
parent 737d002d80
commit ff813b6b45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      cereal
  2. 19
      selfdrive/test/process_replay/process_replay.py
  3. 2
      selfdrive/test/process_replay/ref_commit

@ -1 +1 @@
Subproject commit 7d304cdd296cb90bc15ded22bc50556780ccef51 Subproject commit 1add692f472c22927dd5727d3dd94a698d12a07a

@ -21,7 +21,7 @@ from selfdrive.manager.process_config import managed_processes
NUMPY_TOLERANCE = 1e-7 NUMPY_TOLERANCE = 1e-7
CI = "CI" in os.environ CI = "CI" in os.environ
ProcessConfig = namedtuple('ProcessConfig', ['proc_name', 'pub_sub', 'ignore', 'init_callback', 'should_recv_callback', 'tolerance']) ProcessConfig = namedtuple('ProcessConfig', ['proc_name', 'pub_sub', 'ignore', 'init_callback', 'should_recv_callback', 'tolerance', 'fake_pubsubmaster'])
def wait_for_event(evt): def wait_for_event(evt):
@ -233,6 +233,7 @@ CONFIGS = [
init_callback=fingerprint, init_callback=fingerprint,
should_recv_callback=None, should_recv_callback=None,
tolerance=NUMPY_TOLERANCE, tolerance=NUMPY_TOLERANCE,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="radard", proc_name="radard",
@ -244,6 +245,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=radar_rcv_callback, should_recv_callback=radar_rcv_callback,
tolerance=None, tolerance=None,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="plannerd", proc_name="plannerd",
@ -255,6 +257,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=None, should_recv_callback=None,
tolerance=None, tolerance=None,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="calibrationd", proc_name="calibrationd",
@ -266,6 +269,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=calibration_rcv_callback, should_recv_callback=calibration_rcv_callback,
tolerance=None, tolerance=None,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="dmonitoringd", proc_name="dmonitoringd",
@ -277,6 +281,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=None, should_recv_callback=None,
tolerance=NUMPY_TOLERANCE, tolerance=NUMPY_TOLERANCE,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="locationd", proc_name="locationd",
@ -288,6 +293,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=None, should_recv_callback=None,
tolerance=NUMPY_TOLERANCE, tolerance=NUMPY_TOLERANCE,
fake_pubsubmaster=False,
), ),
ProcessConfig( ProcessConfig(
proc_name="paramsd", proc_name="paramsd",
@ -299,6 +305,7 @@ CONFIGS = [
init_callback=get_car_params, init_callback=get_car_params,
should_recv_callback=None, should_recv_callback=None,
tolerance=NUMPY_TOLERANCE, tolerance=NUMPY_TOLERANCE,
fake_pubsubmaster=True,
), ),
ProcessConfig( ProcessConfig(
proc_name="ubloxd", proc_name="ubloxd",
@ -309,13 +316,13 @@ CONFIGS = [
init_callback=None, init_callback=None,
should_recv_callback=ublox_rcv_callback, should_recv_callback=ublox_rcv_callback,
tolerance=None, tolerance=None,
fake_pubsubmaster=False,
), ),
] ]
def replay_process(cfg, lr): def replay_process(cfg, lr):
proc = managed_processes[cfg.proc_name] if cfg.fake_pubsubmaster:
if isinstance(proc, PythonProcess):
return python_replay_process(cfg, lr) return python_replay_process(cfg, lr)
else: else:
return cpp_replay_process(cfg, lr) return cpp_replay_process(cfg, lr)
@ -416,11 +423,15 @@ def cpp_replay_process(cfg, lr):
for msg in tqdm(pub_msgs, disable=CI): for msg in tqdm(pub_msgs, disable=CI):
pm.send(msg.which(), msg.as_builder()) pm.send(msg.which(), msg.as_builder())
resp_sockets = sub_sockets if cfg.should_recv_callback is None else cfg.should_recv_callback(msg) resp_sockets = cfg.pub_sub[msg.which()] if cfg.should_recv_callback is None else cfg.should_recv_callback(msg)
for s in resp_sockets: for s in resp_sockets:
response = messaging.recv_one(sockets[s]) response = messaging.recv_one(sockets[s])
if response is not None: if response is not None:
log_msgs.append(response) log_msgs.append(response)
if not len(resp_sockets):
while not pm.all_readers_updated(msg.which()):
time.sleep(0)
managed_processes[cfg.proc_name].stop() managed_processes[cfg.proc_name].stop()
return log_msgs return log_msgs

@ -1 +1 @@
abdaa764cc8aec4e30522e951667c5473970cfe1 e93953b506ff14fd935ac4bda7cd57e1be4b4892
Loading…
Cancel
Save