diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index ddb04087c6..644f9cffb3 100644 --- a/.ci/Jenkinsfile-hardware +++ b/.ci/Jenkinsfile-hardware @@ -803,7 +803,7 @@ pipeline { stage("tests") { steps { // run tests - sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_*` || true' // ignore failures for now (flaky console on test rack) + sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_*`' } } stage("reset") { @@ -836,7 +836,7 @@ void statusFTDI() { // run logger sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "logger on"' // status commands - sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "adc test"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "board_adc test"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "commander check"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "commander status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "commander calibrate accel quick; sleep 2; param show CAL_ACC*"' @@ -909,7 +909,7 @@ void statusSEGGER() { // run logger sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "logger on"' // status commands - sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "adc test"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "board_adc test"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "commander check"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "commander status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "commander calibrate accel quick; sleep 2; param show CAL_ACC*"' @@ -990,12 +990,15 @@ void cleanupFTDI() { // drop any uncommited hardfaults sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "hardfault_log rearm"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "hardfault_log reset"' - // wipe parameters + // erase mtd + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "mtd readtest"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "mtd rwtest"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "mtd erase"' - sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "param reset_all"' // disable buzzer and cleanup storage + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "param reset_all"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "param set CBRK_BUZZER 782097"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "param set SDLOG_DIRS_MAX 1"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-FTDI_*` --cmd "param save"' @@ -1017,12 +1020,15 @@ void cleanupSEGGER() { // drop any uncommited hardfaults sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "hardfault_log rearm"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "hardfault_log reset"' - // wipe parameters + // erase mtd + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "mtd readtest"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "mtd rwtest"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "mtd erase"' - sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "param reset_all"' // disable buzzer and cleanup storage + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "param reset_all"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "param set CBRK_BUZZER 782097"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "param set SDLOG_DIRS_MAX 1"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-SEGGER_*` --cmd "param save"' diff --git a/Tools/HIL/run_nsh_cmd.py b/Tools/HIL/run_nsh_cmd.py index 47f88da7e7..d60c3cfb24 100755 --- a/Tools/HIL/run_nsh_cmd.py +++ b/Tools/HIL/run_nsh_cmd.py @@ -12,7 +12,7 @@ def do_nsh_cmd(port, baudrate, cmd): parity = serial.PARITY_NONE ser = serial.Serial(port, baudrate, databits, parity, stopbits, timeout=10) - ser.write('\n\n') + ser.write('\n') finished = 0 success = False @@ -20,47 +20,47 @@ def do_nsh_cmd(port, baudrate, cmd): timeout = 10 # 10 seconds timeout_start = time.time() - while finished == 0: + while True: serial_line = ser.readline() print(serial_line.replace('\n','')) if "nsh>" in serial_line: - finished = 1 + break + elif "NuttShell (NSH)" in serial_line: + break if time.time() > timeout_start + timeout: print("Error, timeout") - finished = 1 break + ser.write('\n') + time.sleep(0.01) + + # run command ser.write(cmd + '\n') - time.sleep(0.05) - ser.write('\n') - finished = 0 timeout = 30 # 30 seconds timeout_start = time.time() - timeout_newline = time.time() + timeout_newline = timeout_start - while finished == 0: + while True: serial_line = ser.readline() print(serial_line.replace('\n','')) if cmd in serial_line: continue elif "nsh>" in serial_line: - finished = 1 + break + elif "NuttShell (NSH)" in serial_line: break if time.time() > timeout_start + timeout: print("Error, timeout") - finished = 1 break - # newline every 10 seconds if still running - if time.time() - timeout_newline > 10: - ser.write('\n') - timeout_newline = time.time() + ser.write('\n') + time.sleep(0.01) ser.close() diff --git a/Tools/HIL/run_tests.py b/Tools/HIL/run_tests.py index 3bd05133d1..0de56b6f5a 100755 --- a/Tools/HIL/run_tests.py +++ b/Tools/HIL/run_tests.py @@ -14,7 +14,7 @@ def do_test(port, baudrate, test_name): parity = serial.PARITY_NONE ser = serial.Serial(port, baudrate, databits, parity, stopbits, timeout=10) - ser.write('\n\n') + ser.write('\n') finished = 0 success = False @@ -22,43 +22,53 @@ def do_test(port, baudrate, test_name): timeout = 10 # 10 seconds timeout_start = time.time() - while finished == 0: + while True: serial_line = ser.readline() print(serial_line.replace('\n','')) if "nsh>" in serial_line: - finished = 1 + break + elif "NuttShell (NSH)" in serial_line: + break if time.time() > timeout_start + timeout: print("Error, timeout") - finished = 1 break + ser.write('\n') + time.sleep(0.01) - # run test - ser.write('tests ' + test_name + '\n') - time.sleep(0.05) - finished = 0 - timeout = 300 # 5 minutes + # run test cmd + cmd = 'tests ' + test_name + ser.write(cmd + '\n') + + timeout = 180 # 3 minutes timeout_start = time.time() - timeout_newline = time.time() + timeout_newline = timeout_start - while finished == 0: + while True: serial_line = ser.readline() print(serial_line.replace('\n','')) - if test_name + " PASSED" in serial_line: - finished = 1 + if cmd in serial_line: + continue + elif test_name + " PASSED" in serial_line: success = True + break elif test_name + " FAILED" in serial_line: - finished = 1 success = False + break + elif "nsh>" in serial_line: + success = False + break + elif "NuttShell (NSH)" in serial_line: + success = False + break if time.time() > timeout_start + timeout: print("Error, timeout") print(test_name + " FAILED") - finished = 1 success = False break @@ -93,9 +103,6 @@ class TestHadrwareMethods(unittest.TestCase): def floattest_float(self): self.assertTrue(do_test(self.TEST_DEVICE, self.TEST_BAUDRATE, "float")) - def hrttest_hrt(self): - self.assertTrue(do_test(self.TEST_DEVICE, self.TEST_BAUDRATE, "hrt")) - def test_hrt(self): self.assertTrue(do_test(self.TEST_DEVICE, self.TEST_BAUDRATE, "hrt"))