unit tests: Fix retrying with a new baud rate in IDFDUT.start_app()

This commit is contained in:
Angus Gratton 2018-12-06 15:44:27 +11:00 committed by Angus Gratton
parent f6e857c2b9
commit b3249d56f3

View file

@ -104,13 +104,14 @@ class IDFDUT(DUT.SerialDUT):
return cls.get_mac(app, port) is not None return cls.get_mac(app, port) is not None
@_uses_esptool @_uses_esptool
def start_app(self, esp, erase_nvs=ERASE_NVS): def _try_flash(self, esp, erase_nvs, baud_rate):
""" """
download and start app. Called by start_app() to try flashing at a particular baud rate.
:param: erase_nvs: whether erase NVS partition during flash Structured this way so @_uses_esptool will reconnect each time
:return: None
""" """
try:
# note: opening here prevents us from having to seek back to 0 each time
flash_files = [ (offs, open(path, "rb")) for (offs, path) in self.app.flash_files ] flash_files = [ (offs, open(path, "rb")) for (offs, path) in self.app.flash_files ]
if erase_nvs: if erase_nvs:
@ -144,19 +145,27 @@ class IDFDUT(DUT.SerialDUT):
False False
) )
try:
for baud_rate in [ 921600, 115200 ]:
try:
esp.change_baud(baud_rate) esp.change_baud(baud_rate)
esptool.write_flash(esp, flash_args) esptool.write_flash(esp, flash_args)
finally:
for (_,f) in flash_files:
f.close()
def start_app(self, erase_nvs=ERASE_NVS):
"""
download and start app.
:param: erase_nvs: whether erase NVS partition during flash
:return: None
"""
for baud_rate in [ 921600, 115200 ]:
try:
self._try_flash(erase_nvs, baud_rate)
break break
except RuntimeError: except RuntimeError:
continue continue
else: else:
raise IDFToolError() raise IDFToolError()
finally:
for (_,f) in flash_files:
f.close()
@_uses_esptool @_uses_esptool
def reset(self, esp): def reset(self, esp):