mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
CI: add script for parsing unit test cases for CI from test files
Add python script that parses list of unit test cases for CI from component test folder Modify .gitlab-ci.yml to run this script as part of build unit tests stage
This commit is contained in:
parent
f8b5c29346
commit
0501507d6b
@ -87,6 +87,8 @@ build_esp_idf_tests:
|
||||
- ./tools/unit-test-app/build/*.elf
|
||||
- ./tools/unit-test-app/build/*.map
|
||||
- ./tools/unit-test-app/build/bootloader/*.bin
|
||||
- ./components/idf_test/unit_test/TestCaseAll.yml
|
||||
- ./components/idf_test/unit_test/CIConfigs/*.yml
|
||||
expire_in: 6 mos
|
||||
|
||||
script:
|
||||
@ -94,6 +96,7 @@ build_esp_idf_tests:
|
||||
- git checkout ${CI_BUILD_REF_NAME} || echo "Using default branch..."
|
||||
- make defconfig
|
||||
- make TESTS_ALL=1
|
||||
- python UnitTestParser.py
|
||||
|
||||
build_examples:
|
||||
<<: *build_template
|
||||
@ -160,6 +163,7 @@ test_report:
|
||||
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
||||
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
|
||||
REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
|
||||
MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/ModuleDefinition.yml"
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
@ -180,8 +184,7 @@ test_report:
|
||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||
- cd auto_test_script
|
||||
# generate report
|
||||
- TEST_RESULT=Pass
|
||||
- python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH || TEST_RESULT=Fail
|
||||
- python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH -m $MODULE_UPDATE_FILE || FAIL=True
|
||||
# commit to CI-test-result project
|
||||
- git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
|
||||
- rm -rf CI-test-result/RawData/$RESULT_PATH
|
||||
@ -263,6 +266,7 @@ deploy_docs:
|
||||
# append test level folder to TEST_CASE_FILE_PATH in before_script of test job
|
||||
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/integration_test"
|
||||
# jobs MUST set CONFIG_FILE in before_script, and overwrite the variables above if necessary
|
||||
MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/ModuleDefinition.yml"
|
||||
|
||||
artifacts:
|
||||
when: always
|
||||
@ -284,7 +288,7 @@ deploy_docs:
|
||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||
- cd auto_test_script
|
||||
# run test
|
||||
- python CIRunner.py -l $LOG_PATH -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH bin_path $APP_NAME $BIN_PATH
|
||||
- python CIRunner.py -l $LOG_PATH -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE bin_path $APP_NAME $BIN_PATH
|
||||
|
||||
|
||||
# template for overnight test jobs
|
||||
@ -309,7 +313,7 @@ deploy_docs:
|
||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||
- cd auto_test_script
|
||||
# run test
|
||||
- python CIRunner.py -l $LOG_PATH -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH bin_path $APP_NAME $BIN_PATH
|
||||
- python CIRunner.py -l $LOG_PATH -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE bin_path $APP_NAME $BIN_PATH
|
||||
|
||||
# template for unit test jobs
|
||||
.unit_test_template: &unit_test_template
|
||||
@ -324,6 +328,10 @@ deploy_docs:
|
||||
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
||||
APP_NAME: "ut"
|
||||
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/unit_test"
|
||||
MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/ModuleDefinition.yml"
|
||||
|
||||
dependencies:
|
||||
- build_esp_idf_tests
|
||||
|
||||
UT_Function_SYS_01:
|
||||
<<: *unit_test_template
|
||||
@ -333,6 +341,14 @@ UT_Function_SYS_01:
|
||||
before_script:
|
||||
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/UT_Function_SYS_01.yml
|
||||
|
||||
UT_Function_SYS_02:
|
||||
<<: *unit_test_template
|
||||
tags:
|
||||
- ESP32_IDF
|
||||
- UT_T1_1
|
||||
before_script:
|
||||
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/UT_Function_SYS_02.yml
|
||||
|
||||
IT_Function_SYS_01:
|
||||
<<: *test_template
|
||||
tags:
|
||||
|
@ -1,7 +0,0 @@
|
||||
Config: {execute count: 1, execute order: in order}
|
||||
DUT: [UT1]
|
||||
Filter:
|
||||
- Add:
|
||||
ID: [SYS_OS_0102, SYS_MISC_0102, SYS_MISC_0107, SYS_MISC_0106, SYS_MISC_0109,
|
||||
SYS_MISC_0108, SYS_MISC_0112, SYS_MISC_0113, SYS_MISC_0110, SYS_MISC_0111, SYS_LIB_0103,
|
||||
SYS_LIB_0102, SYS_LIB_0101, SYS_LIB_0106, SYS_LIB_0105, SYS_LIB_0104]
|
@ -1,461 +0,0 @@
|
||||
test cases:
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0101
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "check if ROM or Flash is used for functions"
|
||||
- [dummy]
|
||||
comment: check if ROM or Flash is used for functions
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0102
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test time functions"
|
||||
- [dummy]
|
||||
comment: test time functions
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0103
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test sscanf function"
|
||||
- [dummy]
|
||||
comment: test sscanf function
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0104
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test sprintf function"
|
||||
- [dummy]
|
||||
comment: test sprintf function
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0105
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test atoX functions"
|
||||
- [dummy]
|
||||
comment: test atoX functions
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_LIB_0106
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test ctype functions"
|
||||
- [dummy]
|
||||
comment: test ctype functions
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run lib test
|
||||
sub module: Std Lib
|
||||
summary: lib unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: lib
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0102
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "mbedtls MPI self-tests"
|
||||
- [dummy]
|
||||
comment: mbedtls MPI self-tests
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run bignum test
|
||||
sub module: Misc
|
||||
summary: bignum unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: bignum
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0103
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test AES thread safety"
|
||||
- [dummy]
|
||||
comment: test AES thread safety
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run hwcrypto test
|
||||
sub module: Misc
|
||||
summary: hwcrypto unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: hwcrypto
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0104
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test AES acceleration"
|
||||
- [dummy]
|
||||
comment: test AES acceleration
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run hwcrypto test
|
||||
sub module: Misc
|
||||
summary: hwcrypto unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: hwcrypto
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0105
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test SHA thread safety"
|
||||
- [dummy]
|
||||
comment: test SHA thread safety
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run hwcrypto test
|
||||
sub module: Misc
|
||||
summary: hwcrypto unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: hwcrypto
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0106
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "context switch saves FP registers"
|
||||
- [dummy]
|
||||
comment: context switch saves FP registers
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run fp test
|
||||
sub module: Misc
|
||||
summary: fp unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: fp
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0107
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test FP sqrt"
|
||||
- [dummy]
|
||||
comment: test FP sqrt
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run fp test
|
||||
sub module: Misc
|
||||
summary: fp unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: fp
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0108
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test FP div"
|
||||
- [dummy]
|
||||
comment: test FP div
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run fp test
|
||||
sub module: Misc
|
||||
summary: fp unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: fp
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0109
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test FP mul"
|
||||
- [dummy]
|
||||
comment: test FP mul
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run fp test
|
||||
sub module: Misc
|
||||
summary: fp unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: fp
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0110
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test FP add"
|
||||
- [dummy]
|
||||
comment: test FP add
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run fp test
|
||||
sub module: Misc
|
||||
summary: fp unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: fp
|
||||
version: v1 (2016-10-26)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0111
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "Test JPEG decompression library"
|
||||
- [dummy]
|
||||
comment: Test JPEG decompression library
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run JPEG decompression test
|
||||
sub module: Misc
|
||||
summary: JPEG decompression library unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: tjpgd
|
||||
version: v1 (2016-10-31)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0112
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "mbedtls AES self-tests"
|
||||
- [dummy]
|
||||
comment: mbedtls AES self-tests
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run mbedtls AES self-tests
|
||||
sub module: Misc
|
||||
summary: mbedtls AES unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: mbedtls AES
|
||||
version: v1 (2016-10-31)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0113
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "mbedtls SHA self-tests"
|
||||
- [dummy]
|
||||
comment: mbedtls SHA self-tests
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run mbedtls SHA self-tests
|
||||
sub module: Misc
|
||||
summary: mbedtls SHA unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: mbedtls SHA
|
||||
version: v1 (2016-10-31)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_MISC_0115
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "test SHA acceleration"
|
||||
- [dummy]
|
||||
comment: test SHA acceleration
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run SHA acceleration test
|
||||
sub module: Misc
|
||||
summary: SHA acceleration unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: SHA acceleration
|
||||
version: v1 (2016-10-31)
|
||||
- CI ready: 'Yes'
|
||||
ID: SYS_OS_0102
|
||||
SDK: ESP32_IDF
|
||||
Test App: UT
|
||||
auto test: 'Yes'
|
||||
category: Function
|
||||
cmd set:
|
||||
- IDFUnitTest/UnitTest
|
||||
- - test_case = "Freertos TLS delete cb"
|
||||
- [dummy]
|
||||
comment: Freertos TLS delete cb
|
||||
execution time: 0
|
||||
expected result: 1. set succeed
|
||||
initial condition: UTINIT1
|
||||
level: Unit
|
||||
module: System
|
||||
steps: 1. run Freertos TLS delete cb test
|
||||
sub module: OS
|
||||
summary: Freertos TLS delete cb unit test
|
||||
test environment: UT_T1_1
|
||||
test point 1: basic function
|
||||
test point 2: Freertos TLS delete cb
|
||||
version: v1 (2016-10-31)
|
@ -9,41 +9,40 @@ class UnitTest(PerformanceTCBase.PerformanceTCBase):
|
||||
def __init__(self, name, test_env, cmd_set, timeout=30, log_path=TCActionBase.LOG_PATH):
|
||||
PerformanceTCBase.PerformanceTCBase.__init__(self, name, test_env, cmd_set=cmd_set,
|
||||
timeout=timeout, log_path=log_path)
|
||||
|
||||
|
||||
self.test_case = None
|
||||
self.test_timeout = 20
|
||||
|
||||
|
||||
# load param from excel
|
||||
for i in range(1, len(cmd_set)):
|
||||
if cmd_set[i][0] != "dummy":
|
||||
cmd_string = "self." + cmd_set[i][0]
|
||||
cmd_string = "self.test_case = " + "\"" + cmd_set[i][0] + "\""
|
||||
exec cmd_string
|
||||
self.result_cntx = TCActionBase.ResultCheckContext(self, test_env, self.tc_name)
|
||||
pass
|
||||
|
||||
def send_commands(self):
|
||||
self.flush_data("UT1")
|
||||
|
||||
|
||||
try:
|
||||
# add case select by name mark " before case name
|
||||
self.serial_write_line("UT1", "\"" + self.test_case)
|
||||
self.serial_write_line("UT1", "\"" + self.test_case + "\"")
|
||||
data = ""
|
||||
for _ in range(self.timeout):
|
||||
time.sleep(1) #wait for test to run before reading result
|
||||
data += self.serial_read_data("UT1")
|
||||
if re.search('[^0] Tests 0 F', data): #check that number of tests run != 0 and number of tests failed == 0
|
||||
if re.search('[^0].* Tests 0 F', data): #check that number of tests run != 0 and number of tests failed == 0
|
||||
self.set_result("Succeed")
|
||||
break
|
||||
else:
|
||||
self.set_result("Fail")
|
||||
|
||||
|
||||
except StandardError,e:
|
||||
NativeLog.add_exception_log(e)
|
||||
|
||||
|
||||
def execute(self):
|
||||
TCActionBase.TCActionBase.execute(self)
|
||||
self.send_commands()
|
||||
|
||||
|
||||
def main():
|
||||
pass
|
||||
|
||||
|
127
tools/unit-test-app/ModuleDefinition.yml
Normal file
127
tools/unit-test-app/ModuleDefinition.yml
Normal file
@ -0,0 +1,127 @@
|
||||
freertos:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: OS
|
||||
sub module abbr: OS
|
||||
nvs:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: NVS
|
||||
sub module abbr: NVS
|
||||
partition:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
ulp:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
fp:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
hw:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
tjpgd:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
miniz:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
mmap:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
bignum:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
newlib:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Std Lib
|
||||
sub module abbr: STD
|
||||
aes:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
mbedtls:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
spi_flash:
|
||||
module: Driver
|
||||
module abbr: DRV
|
||||
sub module: SPI
|
||||
sub module abbr: SPI
|
||||
spi_flash_read:
|
||||
module: Driver
|
||||
module abbr: DRV
|
||||
sub module: SPI
|
||||
sub module abbr: SPI
|
||||
spi_flash_write:
|
||||
module: Driver
|
||||
module abbr: DRV
|
||||
sub module: SPI
|
||||
sub module abbr: SPI
|
||||
esp32:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
deepsleep:
|
||||
module: RTC
|
||||
module abbr: RTC
|
||||
sub module: Deep Sleep
|
||||
sub module abbr: SLEEP
|
||||
sd:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
cxx:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
fatfs:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
delay:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
spi:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
vfs:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
misc:
|
||||
module: System
|
||||
module abbr: SYS
|
||||
sub module: Misc
|
||||
sub module abbr: MISC
|
||||
|
||||
|
169
tools/unit-test-app/UnitTestParser.py
Normal file
169
tools/unit-test-app/UnitTestParser.py
Normal file
@ -0,0 +1,169 @@
|
||||
import yaml
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import shutil
|
||||
|
||||
|
||||
MODULE_MAP = yaml.load(open("ModuleDefinition.yml", "r"))
|
||||
|
||||
TEST_CASE_PATTERN = {
|
||||
"initial condition": "UTINIT1",
|
||||
"SDK": "ESP32_IDF",
|
||||
"level": "Unit",
|
||||
"execution time": 0,
|
||||
"Test App": "UT",
|
||||
"auto test": "Yes",
|
||||
"category": "Function",
|
||||
"test point 1": "basic function",
|
||||
"version": "v1 (2016-12-06)",
|
||||
"test environment": "UT_T1_1",
|
||||
"expected result": "1. set succeed"
|
||||
}
|
||||
|
||||
CONFIG_FILE_PATTERN = {
|
||||
"Config": {"execute count": 1, "execute order": "in order"},
|
||||
"DUT": [],
|
||||
"Filter": [{"Add": {"ID": []}}]
|
||||
}
|
||||
|
||||
test_cases = list()
|
||||
test_ids = {}
|
||||
test_ids_by_job = {}
|
||||
unit_jobs = {}
|
||||
|
||||
os.chdir(os.path.join("..", ".."))
|
||||
IDF_PATH = os.getcwd()
|
||||
|
||||
|
||||
class Parser(object):
|
||||
@classmethod
|
||||
def parse_test_folders(cls):
|
||||
test_folder_paths = list()
|
||||
os.chdir(os.path.join(IDF_PATH, "components"))
|
||||
component_dirs = os.listdir(".")
|
||||
for dir in component_dirs:
|
||||
os.chdir(dir)
|
||||
if "test" in os.listdir("."):
|
||||
test_folder_paths.append(os.path.join(os.getcwd(), "test"))
|
||||
os.chdir("..")
|
||||
Parser.parse_test_files(test_folder_paths)
|
||||
|
||||
@classmethod
|
||||
def parse_test_files(cls, test_folder_paths):
|
||||
for path in test_folder_paths:
|
||||
os.chdir(path)
|
||||
for file_path in os.listdir("."):
|
||||
if file_path[-2:] == ".c":
|
||||
Parser.read_test_file(os.path.join(os.getcwd(), file_path), len(test_cases)+1)
|
||||
os.chdir(os.path.join("..", ".."))
|
||||
Parser.dump_test_cases(test_cases)
|
||||
|
||||
@classmethod
|
||||
def read_test_file(cls, test_file_path, file_index):
|
||||
test_index = 0
|
||||
with open(test_file_path, "r") as file:
|
||||
for line in file:
|
||||
if re.match("TEST_CASE", line):
|
||||
test_index += 1
|
||||
tags = re.split(r"[\[\]\"]", line)
|
||||
Parser.parse_test_cases(file_index, test_index, tags)
|
||||
|
||||
|
||||
@classmethod
|
||||
def parse_test_cases(cls, file_index, test_index, tags):
|
||||
ci_ready = "Yes"
|
||||
test_env = "UT_T1_1"
|
||||
for tag in tags:
|
||||
if tag == "ignore":
|
||||
ci_ready = "No"
|
||||
if re.match("test_env=", tag):
|
||||
test_env = tag[9:]
|
||||
module_name = tags[4]
|
||||
try:
|
||||
MODULE_MAP[module_name]
|
||||
except KeyError:
|
||||
module_name = "misc"
|
||||
id = "UT_%s_%s_%03d%02d" % (MODULE_MAP[module_name]['module abbr'],
|
||||
MODULE_MAP[module_name]['sub module abbr'],
|
||||
file_index, test_index)
|
||||
test_case = dict(TEST_CASE_PATTERN)
|
||||
test_case.update({"module": MODULE_MAP[module_name]['module'],
|
||||
"CI ready": ci_ready,
|
||||
"cmd set": ["IDFUnitTest/UnitTest", [tags[1]]],
|
||||
"ID": id,
|
||||
"test point 2": module_name,
|
||||
"steps": tags[1],
|
||||
"comment": tags[1],
|
||||
"test environment": test_env,
|
||||
"sub module": MODULE_MAP[module_name]['sub module'],
|
||||
"summary": tags[1]})
|
||||
if test_case["CI ready"] == "Yes":
|
||||
if test_ids.has_key(test_env):
|
||||
test_ids[test_env].append(id)
|
||||
else:
|
||||
test_ids.update({test_env: [id]})
|
||||
test_cases.append(test_case)
|
||||
|
||||
@classmethod
|
||||
def dump_test_cases(cls, test_cases):
|
||||
os.chdir(os.path.join(IDF_PATH, "components", "idf_test", "unit_test"))
|
||||
with open ("TestCaseAll.yml", "wb+") as f:
|
||||
yaml.dump({"test cases": test_cases}, f, allow_unicode=True, default_flow_style=False)
|
||||
|
||||
@classmethod
|
||||
def dump_ci_config(cls):
|
||||
Parser.split_test_cases()
|
||||
os.chdir(os.path.join(IDF_PATH, "components", "idf_test", "unit_test"))
|
||||
if not os.path.exists("CIConfigs"):
|
||||
os.makedirs("CIConfigs")
|
||||
os.chdir("CIConfigs")
|
||||
for unit_job in unit_jobs:
|
||||
job = dict(CONFIG_FILE_PATTERN)
|
||||
job.update({"DUT": ["UT1"]})
|
||||
job.update({"Filter": [{"Add": {"ID": test_ids_by_job[unit_job]}}]})
|
||||
with open (unit_job + ".yml", "wb+") as f:
|
||||
yaml.dump(job, f, allow_unicode=True, default_flow_style=False)
|
||||
|
||||
@classmethod
|
||||
def split_test_cases(cls):
|
||||
for job in unit_jobs:
|
||||
test_ids_by_job.update({job: list()})
|
||||
for test_env in test_ids:
|
||||
available_jobs = list()
|
||||
for job in unit_jobs:
|
||||
if test_env in unit_jobs[job]:
|
||||
available_jobs.append(job)
|
||||
for idx, job in enumerate(available_jobs):
|
||||
test_ids_by_job[job] += (test_ids[test_env][idx*len(test_ids[test_env])/len(available_jobs):(idx+1)*len(test_ids[test_env])/len(available_jobs)])
|
||||
|
||||
@classmethod
|
||||
def parse_gitlab_ci(cls):
|
||||
os.chdir(IDF_PATH)
|
||||
with open(".gitlab-ci.yml", "rb") as f:
|
||||
gitlab_ci = yaml.load(f)
|
||||
keys = gitlab_ci.keys()
|
||||
for key in keys:
|
||||
if re.match("UT_", key):
|
||||
test_env = gitlab_ci[key]["tags"]
|
||||
unit_job = key
|
||||
key = {}
|
||||
key.update({unit_job: test_env})
|
||||
unit_jobs.update(key)
|
||||
|
||||
@classmethod
|
||||
def copy_module_def_file(cls):
|
||||
src = os.path.join(IDF_PATH, "tools", "unit-test-app", "ModuleDefinition.yml")
|
||||
dst = os.path.join(IDF_PATH, "components", "idf_test", "unit_test")
|
||||
shutil.copy(src, dst)
|
||||
|
||||
|
||||
def main():
|
||||
Parser.parse_test_folders()
|
||||
Parser.parse_gitlab_ci()
|
||||
Parser.dump_ci_config()
|
||||
Parser.copy_module_def_file()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user