#!/usr/bin/env python3
import argparse
from openpilot . selfdrive . test . process_replay . process_replay import CONFIGS , replay_process
from openpilot . tools . lib . helpers import save_log
from openpilot . tools . lib . logreader import LogReader
if __name__ == " __main__ " :
parser = argparse . ArgumentParser ( description = " Run process on route and create new logs " ,
formatter_class = argparse . ArgumentDefaultsHelpFormatter )
parser . add_argument ( " --fingerprint " , help = " The fingerprint to use " )
parser . add_argument ( " route " , help = " The route name to use " )
parser . add_argument ( " process " , help = " The process to run " )
args = parser . parse_args ( )
cfg = [ c for c in CONFIGS if c . proc_name == args . process ] [ 0 ]
lr = LogReader ( args . route )
inputs = list ( lr )
outputs = replay_process ( cfg , inputs , fingerprint = args . fingerprint )
# Remove message generated by the process under test and merge in the new messages
produces = { o . which ( ) for o in outputs }
inputs = [ i for i in inputs if i . which ( ) not in produces ]
outputs = sorted ( inputs + outputs , key = lambda x : x . logMonoTime )
fn = f " { args . route . replace ( ' / ' , ' _ ' ) } _ { args . process } .bz2 "
print ( f " Saved log to { fn } " )
save_log ( fn , outputs )