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/*.elf
|
||||||
- ./tools/unit-test-app/build/*.map
|
- ./tools/unit-test-app/build/*.map
|
||||||
- ./tools/unit-test-app/build/bootloader/*.bin
|
- ./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
|
expire_in: 6 mos
|
||||||
|
|
||||||
script:
|
script:
|
||||||
@ -94,6 +96,7 @@ build_esp_idf_tests:
|
|||||||
- git checkout ${CI_BUILD_REF_NAME} || echo "Using default branch..."
|
- git checkout ${CI_BUILD_REF_NAME} || echo "Using default branch..."
|
||||||
- make defconfig
|
- make defconfig
|
||||||
- make TESTS_ALL=1
|
- make TESTS_ALL=1
|
||||||
|
- python UnitTestParser.py
|
||||||
|
|
||||||
build_examples:
|
build_examples:
|
||||||
<<: *build_template
|
<<: *build_template
|
||||||
@ -160,6 +163,7 @@ test_report:
|
|||||||
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
||||||
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
|
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
|
||||||
REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
|
REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
|
||||||
|
MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/ModuleDefinition.yml"
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
@ -180,8 +184,7 @@ test_report:
|
|||||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||||
- cd auto_test_script
|
- cd auto_test_script
|
||||||
# generate report
|
# 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 -m $MODULE_UPDATE_FILE || FAIL=True
|
||||||
- python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH || TEST_RESULT=Fail
|
|
||||||
# commit to CI-test-result project
|
# commit to CI-test-result project
|
||||||
- git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
|
- git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
|
||||||
- rm -rf CI-test-result/RawData/$RESULT_PATH
|
- 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
|
# 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"
|
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
|
# 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:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
@ -284,7 +288,7 @@ deploy_docs:
|
|||||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||||
- cd auto_test_script
|
- cd auto_test_script
|
||||||
# run test
|
# 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
|
# template for overnight test jobs
|
||||||
@ -309,7 +313,7 @@ deploy_docs:
|
|||||||
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
||||||
- cd auto_test_script
|
- cd auto_test_script
|
||||||
# run test
|
# 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
|
# template for unit test jobs
|
||||||
.unit_test_template: &unit_test_template
|
.unit_test_template: &unit_test_template
|
||||||
@ -324,6 +328,10 @@ deploy_docs:
|
|||||||
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
||||||
APP_NAME: "ut"
|
APP_NAME: "ut"
|
||||||
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/unit_test"
|
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:
|
UT_Function_SYS_01:
|
||||||
<<: *unit_test_template
|
<<: *unit_test_template
|
||||||
@ -333,6 +341,14 @@ UT_Function_SYS_01:
|
|||||||
before_script:
|
before_script:
|
||||||
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/UT_Function_SYS_01.yml
|
- 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:
|
IT_Function_SYS_01:
|
||||||
<<: *test_template
|
<<: *test_template
|
||||||
tags:
|
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)
|
|
@ -16,7 +16,7 @@ class UnitTest(PerformanceTCBase.PerformanceTCBase):
|
|||||||
# load param from excel
|
# load param from excel
|
||||||
for i in range(1, len(cmd_set)):
|
for i in range(1, len(cmd_set)):
|
||||||
if cmd_set[i][0] != "dummy":
|
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
|
exec cmd_string
|
||||||
self.result_cntx = TCActionBase.ResultCheckContext(self, test_env, self.tc_name)
|
self.result_cntx = TCActionBase.ResultCheckContext(self, test_env, self.tc_name)
|
||||||
pass
|
pass
|
||||||
@ -25,13 +25,12 @@ class UnitTest(PerformanceTCBase.PerformanceTCBase):
|
|||||||
self.flush_data("UT1")
|
self.flush_data("UT1")
|
||||||
|
|
||||||
try:
|
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 = ""
|
data = ""
|
||||||
for _ in range(self.timeout):
|
for _ in range(self.timeout):
|
||||||
time.sleep(1) #wait for test to run before reading result
|
time.sleep(1) #wait for test to run before reading result
|
||||||
data += self.serial_read_data("UT1")
|
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")
|
self.set_result("Succeed")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
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