pigeond tests (#25630)
* start pigeond tests
* sm checks
* add some types
* little more
Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 4bb399ba3c
taco
parent
caac56b92e
commit
3308e740ea
8 changed files with 107 additions and 31 deletions
@ -0,0 +1,63 @@ |
||||
#!/usr/bin/env python3 |
||||
import time |
||||
import unittest |
||||
|
||||
import cereal.messaging as messaging |
||||
from cereal.services import service_list |
||||
from common.gpio import gpio_read |
||||
from selfdrive.test.helpers import with_processes |
||||
from selfdrive.manager.process_config import managed_processes |
||||
from system.hardware import TICI |
||||
from system.hardware.tici.pins import GPIO |
||||
|
||||
|
||||
# TODO: test TTFF when we have good A-GNSS |
||||
class TestPigeond(unittest.TestCase): |
||||
@classmethod |
||||
def setUpClass(cls): |
||||
if not TICI: |
||||
raise unittest.SkipTest |
||||
|
||||
def tearDown(self): |
||||
managed_processes['pigeond'].stop() |
||||
|
||||
@with_processes(['pigeond']) |
||||
def test_frequency(self): |
||||
sm = messaging.SubMaster(['ubloxRaw']) |
||||
|
||||
# setup time |
||||
time.sleep(2) |
||||
sm.update() |
||||
|
||||
for _ in range(int(10 * service_list['ubloxRaw'].frequency)): |
||||
sm.update() |
||||
assert sm.all_checks() |
||||
|
||||
def test_startup_time(self): |
||||
for _ in range(5): |
||||
sm = messaging.SubMaster(['ubloxRaw']) |
||||
managed_processes['pigeond'].start() |
||||
|
||||
start_time = time.monotonic() |
||||
for __ in range(10): |
||||
sm.update(1 * 1000) |
||||
if sm.updated['ubloxRaw']: |
||||
break |
||||
assert sm.rcv_frame['ubloxRaw'] > 0, "pigeond didn't start outputting messages in time" |
||||
|
||||
et = time.monotonic() - start_time |
||||
assert et < 5, f"pigeond took {et:.1f}s to start" |
||||
managed_processes['pigeond'].stop() |
||||
|
||||
def test_turns_off_ublox(self): |
||||
for s in (0.1, 0.5, 1, 5): |
||||
managed_processes['pigeond'].start() |
||||
time.sleep(s) |
||||
managed_processes['pigeond'].stop() |
||||
|
||||
assert gpio_read(GPIO.UBLOX_RST_N) == 0 |
||||
assert gpio_read(GPIO.UBLOX_PWR_EN) == 0 |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
unittest.main() |
Loading…
Reference in new issue