Files
panda-meb/tests/hitl/1_program.py
Adeeb Shihadeh b3e9292922 HITL test fixups (#1117)
* automated -> hitl

* simplify

* jenkinsfile cleanup

* cleanup

* fix new linter errors

* fix ws cleanup

* some retry

* more cleaning up after ourselves

* unpin scons

* bump opendbc

* fix quotes

* enable flaky

* debug print

Co-authored-by: Bruce Wayne <batman@comma.ai>
2022-11-03 17:24:28 -07:00

60 lines
1.5 KiB
Python

import os
import time
from panda import Panda, PandaDFU, MCU_TYPE_H7, BASEDIR
from .helpers import test_all_pandas, panda_connect_and_init, check_signature
@test_all_pandas
@panda_connect_and_init(full_reset=False)
def test_a_known_bootstub(p):
# Test that compiled app can work with known production bootstub
KNOWN_H7_BOOTSTUB_FN = os.path.join(BASEDIR, "tests", "hitl", "known_bootstub", "bootstub.panda_h7.bin")
KNOWN_BOOTSTUB_FN = os.path.join(BASEDIR, "tests", "hitl", "known_bootstub", "bootstub.panda.bin")
p.reset(enter_bootstub=True)
p.reset(enter_bootloader=True)
dfu_serial = PandaDFU.st_serial_to_dfu_serial(p._serial, p._mcu_type)
assert Panda.wait_for_dfu(dfu_serial, timeout=30)
dfu = PandaDFU(dfu_serial)
fn = KNOWN_H7_BOOTSTUB_FN if p._mcu_type == MCU_TYPE_H7 else KNOWN_BOOTSTUB_FN
with open(fn, "rb") as f:
code = f.read()
dfu.program_bootstub(code)
p.connect(True, True)
p.flash()
check_signature(p)
@test_all_pandas
@panda_connect_and_init(full_reset=False)
def test_b_recover(p):
assert p.recover(timeout=30)
check_signature(p)
@test_all_pandas
@panda_connect_and_init(full_reset=False)
def test_c_flash(p):
# test flash from bootstub
serial = p._serial
assert serial is not None
p.reset(enter_bootstub=True)
p.close()
time.sleep(2)
np = Panda(serial)
assert np.bootstub
assert np._serial == serial
np.flash()
np.close()
p.reconnect()
p.reset()
check_signature(p)
# test flash from app
p.flash()
check_signature(p)