|
|
@ -12,6 +12,7 @@ from selfdrive.test.openpilotci import get_url, upload_file |
|
|
|
from selfdrive.test.process_replay.compare_logs import compare_logs, save_log |
|
|
|
from selfdrive.test.process_replay.compare_logs import compare_logs, save_log |
|
|
|
from selfdrive.test.process_replay.process_replay import CONFIGS, PROC_REPLAY_DIR, FAKEDATA, check_enabled, replay_process |
|
|
|
from selfdrive.test.process_replay.process_replay import CONFIGS, PROC_REPLAY_DIR, FAKEDATA, check_enabled, replay_process |
|
|
|
from selfdrive.version import get_commit |
|
|
|
from selfdrive.version import get_commit |
|
|
|
|
|
|
|
from tools.lib.filereader import FileReader |
|
|
|
from tools.lib.logreader import LogReader |
|
|
|
from tools.lib.logreader import LogReader |
|
|
|
|
|
|
|
|
|
|
|
original_segments = [ |
|
|
|
original_segments = [ |
|
|
@ -57,7 +58,8 @@ REF_COMMIT_FN = os.path.join(PROC_REPLAY_DIR, "ref_commit") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def run_test_process(data): |
|
|
|
def run_test_process(data): |
|
|
|
segment, cfg, args, cur_log_fn, ref_log_path, lr = data |
|
|
|
segment, cfg, args, cur_log_fn, ref_log_path, lr_dat = data |
|
|
|
|
|
|
|
lr = LogReader.from_bytes(lr_dat) |
|
|
|
res = None |
|
|
|
res = None |
|
|
|
if not args.upload_only: |
|
|
|
if not args.upload_only: |
|
|
|
res, log_msgs = test_process(cfg, lr, ref_log_path, args.ignore_fields, args.ignore_msgs) |
|
|
|
res, log_msgs = test_process(cfg, lr, ref_log_path, args.ignore_fields, args.ignore_msgs) |
|
|
@ -72,10 +74,10 @@ def run_test_process(data): |
|
|
|
return (segment, cfg.proc_name, res) |
|
|
|
return (segment, cfg.proc_name, res) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_logreader(segment): |
|
|
|
def get_log_data(segment): |
|
|
|
r, n = segment.rsplit("--", 1) |
|
|
|
r, n = segment.rsplit("--", 1) |
|
|
|
lr = LogReader(get_url(r, n)) |
|
|
|
with FileReader(get_url(r, n)) as f: |
|
|
|
return (segment, lr) |
|
|
|
return (segment, f.read()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_process(cfg, lr, ref_log_path, ignore_fields=None, ignore_msgs=None): |
|
|
|
def test_process(cfg, lr, ref_log_path, ignore_fields=None, ignore_msgs=None): |
|
|
@ -186,10 +188,10 @@ if __name__ == "__main__": |
|
|
|
with concurrent.futures.ProcessPoolExecutor(max_workers=args.jobs) as pool: |
|
|
|
with concurrent.futures.ProcessPoolExecutor(max_workers=args.jobs) as pool: |
|
|
|
if not args.upload_only: |
|
|
|
if not args.upload_only: |
|
|
|
download_segments = [seg for car, seg in segments if car in tested_cars] |
|
|
|
download_segments = [seg for car, seg in segments if car in tested_cars] |
|
|
|
lreaders: Dict[str, LogReader] = {} |
|
|
|
log_data: Dict[str, LogReader] = {} |
|
|
|
p1 = pool.map(get_logreader, download_segments) |
|
|
|
p1 = pool.map(get_log_data, download_segments) |
|
|
|
for segment, lr in tqdm(p1, desc="Getting Logs", total=len(download_segments)): |
|
|
|
for segment, lr in tqdm(p1, desc="Getting Logs", total=len(download_segments)): |
|
|
|
lreaders[segment] = lr |
|
|
|
log_data[segment] = lr |
|
|
|
|
|
|
|
|
|
|
|
pool_args: Any = [] |
|
|
|
pool_args: Any = [] |
|
|
|
for car_brand, segment in segments: |
|
|
|
for car_brand, segment in segments: |
|
|
@ -207,8 +209,8 @@ if __name__ == "__main__": |
|
|
|
ref_log_fn = os.path.join(FAKEDATA, f"{segment}_{cfg.proc_name}_{ref_commit}.bz2") |
|
|
|
ref_log_fn = os.path.join(FAKEDATA, f"{segment}_{cfg.proc_name}_{ref_commit}.bz2") |
|
|
|
ref_log_path = ref_log_fn if os.path.exists(ref_log_fn) else BASE_URL + os.path.basename(ref_log_fn) |
|
|
|
ref_log_path = ref_log_fn if os.path.exists(ref_log_fn) else BASE_URL + os.path.basename(ref_log_fn) |
|
|
|
|
|
|
|
|
|
|
|
lr = None if args.upload_only else lreaders[segment] |
|
|
|
dat = None if args.upload_only else log_data[segment] |
|
|
|
pool_args.append((segment, cfg, args, cur_log_fn, ref_log_path, lr)) |
|
|
|
pool_args.append((segment, cfg, args, cur_log_fn, ref_log_path, dat)) |
|
|
|
|
|
|
|
|
|
|
|
results: Any = defaultdict(dict) |
|
|
|
results: Any = defaultdict(dict) |
|
|
|
p2 = pool.map(run_test_process, pool_args) |
|
|
|
p2 = pool.map(run_test_process, pool_args) |
|
|
|