#!/usr/bin/env python3 import argparse import os from selfdrive.test.openpilotci import upload_file, get_url from selfdrive.test.process_replay.compare_logs import save_log from selfdrive.test.process_replay.process_replay import replay_process, CONFIGS from selfdrive.test.process_replay.test_processes import segments, PROC_REPLAY_DIR from selfdrive.version import get_commit from tools.lib.logreader import LogReader if __name__ == "__main__": parser = argparse.ArgumentParser(description="Updates the reference logs for the current commit") parser.add_argument("--no-upload", action="store_true") parser.add_argument("--upload-only", action="store_true") # TODO: split this out into own file upload_refs? args = parser.parse_args() assert args.no_upload != args.upload_only or not args.no_upload, "Both upload args can't be set" ref_commit_fn = os.path.join(PROC_REPLAY_DIR, "ref_commit") ref_commit = get_commit() if ref_commit is None: raise Exception("couldn't get ref commit") with open(ref_commit_fn, "w") as f: f.write(ref_commit) for car_brand, segment in segments: if args.upload_only: for cfg in CONFIGS: log_fn = os.path.join(PROC_REPLAY_DIR, f"{segment}_{cfg.proc_name}_{ref_commit}.bz2") upload_file(log_fn, os.path.basename(log_fn)) os.remove(log_fn) print('Uploaded {}'.format(log_fn)) continue r, n = segment.rsplit("--", 1) lr = LogReader(get_url(r, n)) for cfg in CONFIGS: log_msgs = replay_process(cfg, lr) log_fn = os.path.join(PROC_REPLAY_DIR, f"{segment}_{cfg.proc_name}_{ref_commit}.bz2") save_log(log_fn, log_msgs) if not args.no_upload: upload_file(log_fn, os.path.basename(log_fn)) os.remove(log_fn) print('done') if args.upload_only: print('new reference commit: {}'.format(ref_commit))