From b43c1c7176b717983039145f95b1a6b9f50c1e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Mon, 7 Apr 2025 20:35:19 -0700 Subject: [PATCH] Get log.capnp from target branch --- .../test/process_replay/test_log_compat.py | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/selfdrive/test/process_replay/test_log_compat.py b/selfdrive/test/process_replay/test_log_compat.py index 1856886813..db6ca74573 100644 --- a/selfdrive/test/process_replay/test_log_compat.py +++ b/selfdrive/test/process_replay/test_log_compat.py @@ -1,21 +1,38 @@ import os import capnp +import pytest +import shutil import hypothesis.strategies as st from hypothesis import given, settings, HealthCheck +from cereal import CEREAL_PATH from openpilot.selfdrive.test.fuzzy_generation import FuzzyGenerator from openpilot.tools.lib.logreader import LogReader +from openpilot.common.run import run_cmd MAX_EXAMPLES = int(os.environ.get("MAX_EXAMPLES", "10")) +TARGET_REMOTE = os.environ.get("TARGET_REMOTE", "origin") +TARGET_BRANCH = os.environ.get("TARGET_BRANCH", "master") + + +@pytest.fixture(scope="module") +def parent_schema_file(tmp_path_factory): + commit = run_cmd(["git", "merge-base", f"{TARGET_REMOTE}/{TARGET_BRANCH}", "HEAD"]) + log_capnp_url = f"https://raw.githubusercontent.com/commaai/openpilot/{commit}/cereal/log.capnp" + tmp_dir = tmp_path_factory.mktemp("capnp") + tmp_log_capnp_path = tmp_dir / f"{commit}-log.capnp" + if not tmp_log_capnp_path.exists(): + run_cmd(["curl", "-o", str(tmp_log_capnp_path), log_capnp_url]) + + return str(tmp_log_capnp_path) @given(st.data()) @settings(max_examples=MAX_EXAMPLES, suppress_health_check=[HealthCheck.large_base_example]) -def test_log_backwards_compatibility(schema_path, data): +def test_log_backwards_compatibility(parent_schema_file, data): # capnp global parser needs to be cleaned up to avoid schema/struct ID conflicts - capnp.cleanup_global_schema_parser() - old_log = capnp.load(schema_path) - capnp.cleanup_global_schema_parser() + capnp_parser = capnp.SchemaParser() + old_log = capnp_parser.load(parent_schema_file, imports=[CEREAL_PATH]) msgs_dicts = FuzzyGenerator.get_random_event_msg(data.draw, log_schema=old_log, events=old_log.Event.schema.union_fields, real_floats=True) msgs = [old_log.Event.new_message(**m).as_reader() for m in msgs_dicts]