diff --git a/cereal b/cereal index 7d304cdd29..1add692f47 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 7d304cdd296cb90bc15ded22bc50556780ccef51 +Subproject commit 1add692f472c22927dd5727d3dd94a698d12a07a diff --git a/selfdrive/test/process_replay/process_replay.py b/selfdrive/test/process_replay/process_replay.py index b1953b8732..1ff3ba3325 100755 --- a/selfdrive/test/process_replay/process_replay.py +++ b/selfdrive/test/process_replay/process_replay.py @@ -21,7 +21,7 @@ from selfdrive.manager.process_config import managed_processes NUMPY_TOLERANCE = 1e-7 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): @@ -233,6 +233,7 @@ CONFIGS = [ init_callback=fingerprint, should_recv_callback=None, tolerance=NUMPY_TOLERANCE, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="radard", @@ -244,6 +245,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=radar_rcv_callback, tolerance=None, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="plannerd", @@ -255,6 +257,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=None, tolerance=None, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="calibrationd", @@ -266,6 +269,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=calibration_rcv_callback, tolerance=None, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="dmonitoringd", @@ -277,6 +281,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=None, tolerance=NUMPY_TOLERANCE, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="locationd", @@ -288,6 +293,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=None, tolerance=NUMPY_TOLERANCE, + fake_pubsubmaster=False, ), ProcessConfig( proc_name="paramsd", @@ -299,6 +305,7 @@ CONFIGS = [ init_callback=get_car_params, should_recv_callback=None, tolerance=NUMPY_TOLERANCE, + fake_pubsubmaster=True, ), ProcessConfig( proc_name="ubloxd", @@ -309,13 +316,13 @@ CONFIGS = [ init_callback=None, should_recv_callback=ublox_rcv_callback, tolerance=None, + fake_pubsubmaster=False, ), ] def replay_process(cfg, lr): - proc = managed_processes[cfg.proc_name] - if isinstance(proc, PythonProcess): + if cfg.fake_pubsubmaster: return python_replay_process(cfg, lr) else: return cpp_replay_process(cfg, lr) @@ -416,11 +423,15 @@ def cpp_replay_process(cfg, lr): for msg in tqdm(pub_msgs, disable=CI): 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: response = messaging.recv_one(sockets[s]) if response is not None: 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() return log_msgs diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index f5c80e086e..0b2a04a103 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -abdaa764cc8aec4e30522e951667c5473970cfe1 \ No newline at end of file +e93953b506ff14fd935ac4bda7cd57e1be4b4892 \ No newline at end of file