Fix process replay regen (#24517)

* fix regen issues

* compress like uploader
old-commit-hash: d6c6275163
taco
Shane Smiskol 3 years ago committed by GitHub
parent 6a8fefd5de
commit 874ba219dc
  1. 1
      selfdrive/test/process_replay/process_replay.py
  2. 15
      selfdrive/test/process_replay/regen.py

@ -350,6 +350,7 @@ def setup_env(simulation=False):
params.put_bool("Passive", False)
params.put_bool("DisengageOnAccelerator", True)
params.put_bool("EnableWideCamera", False)
params.put_bool("DisableLogging", False)
os.environ["NO_RADAR_SLEEP"] = "1"
os.environ["REPLAY"] = "1"

@ -1,4 +1,5 @@
#!/usr/bin/env python3
import bz2
import os
import time
import multiprocessing
@ -8,6 +9,7 @@ import argparse
os.environ["USE_WEBCAM"] = "1"
import cereal.messaging as messaging
from cereal import car
from cereal.services import service_list
from cereal.visionipc.visionipc_pyx import VisionIpcServer, VisionStreamType # pylint: disable=no-name-in-module, import-error
from common.params import Params
@ -227,7 +229,7 @@ def regen_segment(lr, frs=None, outdir=FAKEDATA):
# start procs up
ignore = list(fake_daemons.keys()) + ['ui', 'manage_athenad', 'uploader']
ensure_running(managed_processes.values(), started=True, not_run=ignore)
ensure_running(managed_processes.values(), started=True, params=Params(), CP=car.CarParams(), not_run=ignore)
for procs in fake_daemons.values():
for p in procs:
p.start()
@ -264,11 +266,18 @@ def regen_and_save(route, sidx, upload=False, use_route_meta=False):
lr = LogReader(r.log_paths()[args.seg])
fr = FrameReader(r.camera_paths()[args.seg])
else:
lr = LogReader(f"cd:/{route.replace('|', '/')}/{sidx}/rlog")
lr = LogReader(f"cd:/{route.replace('|', '/')}/{sidx}/rlog.bz2")
fr = FrameReader(f"cd:/{route.replace('|', '/')}/{sidx}/fcamera.hevc")
rpath = regen_segment(lr, {'roadCameraState': fr})
lr = LogReader(os.path.join(rpath, 'rlog2'))
# compress raw rlog before uploading
with open(os.path.join(rpath, "rlog"), "rb") as f:
data = bz2.compress(f.read())
with open(os.path.join(rpath, "rlog.bz2"), "wb") as f:
f.write(data)
os.remove(os.path.join(rpath, "rlog"))
lr = LogReader(os.path.join(rpath, 'rlog.bz2'))
controls_state_active = [m.controlsState.active for m in lr if m.which() == 'controlsState']
assert any(controls_state_active), "Segment did not engage"

Loading…
Cancel
Save