From 4f769d0a383b32e46ff5c17f9d03f26862dfe933 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 3 Oct 2023 15:42:04 -0700 Subject: [PATCH] pandad: ensure panda is in a good state before each test case (#30151) * pandad: ensure panda is in a good state before each test case * less overhead * fix pc * update that * Update selfdrive/boardd/tests/test_pandad.py * update --- selfdrive/boardd/tests/test_pandad.py | 32 ++++++++++----------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/selfdrive/boardd/tests/test_pandad.py b/selfdrive/boardd/tests/test_pandad.py index 68747e1008..b85878e864 100755 --- a/selfdrive/boardd/tests/test_pandad.py +++ b/selfdrive/boardd/tests/test_pandad.py @@ -1,21 +1,26 @@ #!/usr/bin/env python3 import os import time -import unittest +import pytest import cereal.messaging as messaging from cereal import log from openpilot.common.gpio import gpio_set, gpio_init from panda import Panda, PandaDFU, PandaProtocolMismatch -from openpilot.selfdrive.test.helpers import phone_only from openpilot.selfdrive.manager.process_config import managed_processes -from openpilot.system.hardware import HARDWARE +from openpilot.system.hardware import HARDWARE, PC from openpilot.system.hardware.tici.pins import GPIO HERE = os.path.dirname(os.path.realpath(__file__)) -class TestPandad(unittest.TestCase): +@pytest.mark.skipif(PC, reason="needs a panda") +class TestPandad: + + def setUp(self): + # ensure panda is up + if len(Panda.list()) == 0: + self._run_test(60) def tearDown(self): managed_processes['pandad'].stop() @@ -54,7 +59,7 @@ class TestPandad(unittest.TestCase): assert Panda.wait_for_panda(None, 10) if expect_mismatch: - with self.assertRaises(PandaProtocolMismatch): + with pytest.raises(PandaProtocolMismatch): Panda() else: with Panda() as p: @@ -62,19 +67,16 @@ class TestPandad(unittest.TestCase): self._run_test(45) - @phone_only def test_in_dfu(self): HARDWARE.recover_internal_panda() self._run_test(60) - @phone_only def test_in_bootstub(self): with Panda() as p: p.reset(enter_bootstub=True) assert p.bootstub self._run_test() - @phone_only def test_internal_panda_reset(self): gpio_init(GPIO.STM_RST_N, True) gpio_set(GPIO.STM_RST_N, 1) @@ -84,28 +86,22 @@ class TestPandad(unittest.TestCase): assert any(Panda(s).is_internal() for s in Panda.list()) - @phone_only def test_best_case_startup_time(self): # run once so we're setup - self._run_test() + self._run_test(60) # should be fast this time self._run_test(8) - @phone_only + @pytest.mark.skipif(HARDWARE.get_device_type() == 'tici', reason="SPI test") def test_protocol_version_check(self): - if HARDWARE.get_device_type() == 'tici': - self.skipTest("") - # flash old fw fn = os.path.join(HERE, "bootstub.panda_h7_spiv0.bin") self._flash_bootstub_and_test(fn, expect_mismatch=True) - @phone_only def test_release_to_devel_bootstub(self): self._flash_bootstub_and_test(None) - @phone_only def test_recover_from_bad_bootstub(self): self._go_to_dfu() with PandaDFU(None) as pd: @@ -115,7 +111,3 @@ class TestPandad(unittest.TestCase): self._assert_no_panda() self._run_test(60) - - -if __name__ == "__main__": - unittest.main()