return test_app[3:]
def _create_extra_data(self, test_function):
+ """
+ For unit test case, we need to copy some attributes of test cases into config file.
+ So unit test function knows how to run the case.
+ """
case_data = []
for case in self.case_list:
one_case_data = {
"config": self._get_ut_config(self._get_case_attr(case, "Test App")),
"name": self._get_case_attr(case, "summary"),
"reset": self._get_case_attr(case, "reset"),
+ "timeout": self._get_case_attr(case, "timeout"),
}
if test_function in ["run_multiple_devices_cases", "run_multiple_stage_cases"]:
from copy import deepcopy
import CreateSectionTable
-
TEST_CASE_PATTERN = {
"initial condition": "UTINIT1",
"SDK": "ESP32_IDF",
"test environment": "UT_T1_1",
"reset": "",
"expected result": "1. set succeed",
- "cmd set": "test_unit_test_case",
+ "cmd set": "test_unit_test_case"
}
CONFIG_FILE_PATTERN = {
"sub module": self.module_map[prop["module"]]['sub module'],
"summary": name,
"multi_device": prop["multi_device"],
- "multi_stage": prop["multi_stage"]})
+ "multi_stage": prop["multi_stage"],
+ "timeout": int(prop["timeout"])})
return test_case
def dump_test_cases(self, test_cases):
EXCEPTION_PATTERN = re.compile(r"(Guru Meditation Error: Core\s+\d panic'ed \([\w].*?\))")
ABORT_PATTERN = re.compile(r"(abort\(\) was called at PC 0x[a-eA-E\d]{8} on core \d)")
FINISH_PATTERN = re.compile(r"1 Tests (\d) Failures (\d) Ignored")
-UT_TIMEOUT = 30
+
+STARTUP_TIMEOUT=10
def format_test_case_config(test_case_data):
# to determine if DUT is ready to test.
dut.write("-", flush=False)
dut.expect_any(UT_APP_BOOT_UP_DONE,
- "0 Tests 0 Failures 0 Ignored", timeout=UT_TIMEOUT)
+ "0 Tests 0 Failures 0 Ignored", timeout=STARTUP_TIMEOUT)
# run test case
dut.write("\"{}\"".format(one_case["name"]))
(ABORT_PATTERN, handle_exception_reset),
(FINISH_PATTERN, handle_test_finish),
(UT_APP_BOOT_UP_DONE, handle_reset_finish),
- timeout=UT_TIMEOUT)
+ timeout=one_case["timeout"])
except ExpectTimeout:
Utility.console_log("Timeout in expect", color="orange")
one_case_finish(False)
SEND_SIGNAL_PATTERN = re.compile(r'Send signal: \[(.+)\]!')
FINISH_PATTERN = re.compile(r"1 Tests (\d) Failures (\d) Ignored")
- def __init__(self, dut, sent_signal_list, lock, parent_case_name, child_case_index, timeout=30):
+ def __init__(self, dut, sent_signal_list, lock, parent_case_name, child_case_index, timeout):
self.dut = dut
self.sent_signal_list = sent_signal_list
self.lock = lock
(self.WAIT_SIGNAL_PATTERN, device_wait_action), # wait signal pattern
(self.SEND_SIGNAL_PATTERN, device_send_action), # send signal pattern
(self.FINISH_PATTERN, handle_device_test_finish), # test finish pattern
- timeout=UT_TIMEOUT)
+ timeout=self.timeout)
except ExpectTimeout:
Utility.console_log("Timeout in expect", color="orange")
one_device_case_finish(False)
for i in range(case_num):
dut = get_dut(duts, env, "dut%d" % i, ut_config)
threads.append(Handler(dut, send_signal_list, lock,
- parent_case, i))
+ parent_case, i, one_case["timeout"]))
for thread in threads:
thread.setDaemon(True)
thread.start()
(ABORT_PATTERN, handle_exception_reset),
(FINISH_PATTERN, handle_test_finish),
(UT_APP_BOOT_UP_DONE, handle_next_stage),
- timeout=UT_TIMEOUT)
+ timeout=one_case["timeout"])
except ExpectTimeout:
Utility.console_log("Timeout in expect", color="orange")
one_case_finish(False)