test_onroad fixups (#34572)

* test_onroad fixpus

* fix
test-sim
Adeeb Shihadeh 2 months ago committed by GitHub
parent 6ec5d82a29
commit fbf918b311
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 49
      selfdrive/test/test_onroad.py

@ -34,7 +34,7 @@ CPU usage budget
TEST_DURATION = 25 TEST_DURATION = 25
LOG_OFFSET = 8 LOG_OFFSET = 8
MAX_TOTAL_CPU = 275. # total for all 8 cores MAX_TOTAL_CPU = 280. # total for all 8 cores
PROCS = { PROCS = {
# Baseline CPU usage by process # Baseline CPU usage by process
"selfdrive.controls.controlsd": 16.0, "selfdrive.controls.controlsd": 16.0,
@ -42,7 +42,7 @@ PROCS = {
"selfdrive.car.card": 26.0, "selfdrive.car.card": 26.0,
"./loggerd": 14.0, "./loggerd": 14.0,
"./encoderd": 17.0, "./encoderd": 17.0,
"./camerad": 14.5, "./camerad": 10.0,
"selfdrive.controls.plannerd": 9.0, "selfdrive.controls.plannerd": 9.0,
"./ui": 18.0, "./ui": 18.0,
"selfdrive.locationd.paramsd": 9.0, "selfdrive.locationd.paramsd": 9.0,
@ -99,12 +99,12 @@ TIMINGS = {
"wideRoadCameraState": [1.5, 0.35], "wideRoadCameraState": [1.5, 0.35],
} }
LOGS_SIZE_RATE = { LOGS_SIZE = { # MB per segment
"qlog.zst": 0.0083, "qlog.zst": 0.5,
"rlog.zst": 0.135, "rlog.zst": 8.1,
"qcamera.ts": 0.03828, "qcamera.ts": 2.3,
} }
LOGS_SIZE_RATE.update(dict.fromkeys(['ecamera.hevc', 'fcamera.hevc'], 1.2740)) LOGS_SIZE.update(dict.fromkeys(['ecamera.hevc', 'fcamera.hevc', 'dcamera.hevc'], 76.5))
def cputime_total(ct): def cputime_total(ct):
@ -126,6 +126,7 @@ class TestOnroad:
# setup env # setup env
params = Params() params = Params()
params.remove("CurrentRoute") params.remove("CurrentRoute")
params.put_bool("RecordFront", True)
set_params_enabled() set_params_enabled()
os.environ['REPLAY'] = '1' os.environ['REPLAY'] = '1'
os.environ['TESTING_CLOSET'] = '1' os.environ['TESTING_CLOSET'] = '1'
@ -212,12 +213,13 @@ class TestOnroad:
big_logs = [f for f, n in cnt.most_common(3) if n / sum(cnt.values()) > 30.] big_logs = [f for f, n in cnt.most_common(3) if n / sum(cnt.values()) > 30.]
assert len(big_logs) == 0, f"Log spam: {big_logs}" assert len(big_logs) == 0, f"Log spam: {big_logs}"
def test_log_sizes(self): def test_log_sizes(self, subtests):
for f, sz in self.log_sizes.items(): for f, sz in self.log_sizes.items():
rate = LOGS_SIZE_RATE[f.name] rate = LOGS_SIZE[f.name]/60.
minn = rate * TEST_DURATION * 0.8 minn = rate * TEST_DURATION * 0.5
maxx = rate * TEST_DURATION * 1.2 maxx = rate * TEST_DURATION * 1.5
assert minn < sz < maxx with subtests.test(file=f.name):
assert minn < sz < maxx
def test_ui_timings(self): def test_ui_timings(self):
result = "\n" result = "\n"
@ -311,24 +313,8 @@ class TestOnroad:
def test_gpu_usage(self): def test_gpu_usage(self):
assert self.gpu_procs == {"weston", "ui", "camerad", "selfdrive.modeld.modeld", "selfdrive.modeld.dmonitoringmodeld"} assert self.gpu_procs == {"weston", "ui", "camerad", "selfdrive.modeld.modeld", "selfdrive.modeld.dmonitoringmodeld"}
def test_camera_processing_time(self):
result = "\n"
result += "------------------------------------------------\n"
result += "-------------- ImgProc Timing ------------------\n"
result += "------------------------------------------------\n"
ts = []
for s in ['roadCameraState', 'driverCameraState', 'wideCameraState']:
ts.extend(getattr(m, s).processingTime for m in self.msgs[s])
assert min(ts) < 0.025, f"high execution time: {min(ts)}"
result += f"execution time: min {min(ts):.5f}s\n"
result += f"execution time: max {max(ts):.5f}s\n"
result += f"execution time: mean {np.mean(ts):.5f}s\n"
result += "------------------------------------------------\n"
print(result)
@pytest.mark.skip("TODO: enable once timings are fixed") @pytest.mark.skip("TODO: enable once timings are fixed")
def test_camera_frame_timings(self): def test_camera_frame_timings(self, subtests):
result = "\n" result = "\n"
result += "------------------------------------------------\n" result += "------------------------------------------------\n"
result += "----------------- SoF Timing ------------------\n" result += "----------------- SoF Timing ------------------\n"
@ -337,11 +323,12 @@ class TestOnroad:
ts = [getattr(m, m.which()).timestampSof for m in self.lr if name in m.which()] ts = [getattr(m, m.which()).timestampSof for m in self.lr if name in m.which()]
d_ms = np.diff(ts) / 1e6 d_ms = np.diff(ts) / 1e6
d50 = np.abs(d_ms-50) d50 = np.abs(d_ms-50)
assert max(d50) < 1.0, f"high sof delta vs 50ms: {max(d50)}"
result += f"{name} sof delta vs 50ms: min {min(d50):.5f}s\n" result += f"{name} sof delta vs 50ms: min {min(d50):.5f}s\n"
result += f"{name} sof delta vs 50ms: max {max(d50):.5f}s\n" result += f"{name} sof delta vs 50ms: max {max(d50):.5f}s\n"
result += f"{name} sof delta vs 50ms: mean {d50.mean():.5f}s\n" result += f"{name} sof delta vs 50ms: mean {d50.mean():.5f}s\n"
result += "------------------------------------------------\n" with subtests.test(camera=name):
assert max(d50) < 1.0, f"high SOF delta vs 50ms: {max(d50)}"
result += "------------------------------------------------\n"
print(result) print(result)
def test_mpc_execution_timings(self): def test_mpc_execution_timings(self):

Loading…
Cancel
Save