power draw test improvements (#24368)

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: c971061859
taco
Adeeb Shihadeh 3 years ago committed by GitHub
parent 2a5eae5a56
commit d2e7af9fe5
  1. 43
      selfdrive/hardware/tici/test_power_draw.py

@ -2,19 +2,28 @@
import unittest import unittest
import time import time
import math import math
from collections import OrderedDict from dataclasses import dataclass
from selfdrive.hardware import HARDWARE, TICI from selfdrive.hardware import HARDWARE, TICI
from selfdrive.hardware.tici.power_monitor import get_power from selfdrive.hardware.tici.power_monitor import get_power
from selfdrive.manager.process_config import managed_processes from selfdrive.manager.process_config import managed_processes
from selfdrive.manager.manager import manager_cleanup from selfdrive.manager.manager import manager_cleanup
POWER = OrderedDict(
camerad=2.58, @dataclass
modeld=0.90, class Proc:
dmonitoringmodeld=0.25, name: str
loggerd=0.45, power: float
) rtol: float = 0.05
atol: float = 0.1
warmup: float = 3.
PROCS = [
Proc('camerad', 2.5),
Proc('modeld', 0.95),
Proc('dmonitoringmodeld', 0.25),
Proc('loggerd', 0.45, warmup=10.),
]
class TestPowerDraw(unittest.TestCase): class TestPowerDraw(unittest.TestCase):
@ -36,24 +45,24 @@ class TestPowerDraw(unittest.TestCase):
prev = baseline prev = baseline
used = {} used = {}
for proc in POWER.keys(): for proc in PROCS:
managed_processes[proc].start() managed_processes[proc.name].start()
time.sleep(6) time.sleep(proc.warmup)
now = get_power(8) now = get_power(8)
used[proc] = now - prev used[proc.name] = now - prev
prev = now prev = now
manager_cleanup() manager_cleanup()
print("-"*35) print("-"*35)
print(f"Baseline {baseline:.2f}W\n") print(f"Baseline {baseline:.2f}W\n")
for proc in POWER.keys(): for proc in PROCS:
cur = used[proc] cur = used[proc.name]
expected = POWER[proc] expected = proc.power
print(f"{proc.ljust(20)} {expected:.2f}W {cur:.2f}W") print(f"{proc.name.ljust(20)} {expected:.2f}W {cur:.2f}W")
with self.subTest(proc=proc): with self.subTest(proc=proc.name):
self.assertTrue(math.isclose(cur, expected, rel_tol=0.10, abs_tol=0.1)) self.assertTrue(math.isclose(cur, expected, rel_tol=proc.rtol, abs_tol=proc.atol))
print("-"*35) print("-"*35)

Loading…
Cancel
Save