CI: use parallel attribute in CI config file
This commit is contained in:
parent
916df0df14
commit
81dd9d4e27
9 changed files with 139 additions and 4320 deletions
1134
.gitlab-ci.yml
1134
.gitlab-ci.yml
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
||||||
__all__ = ["UnitTest"]
|
|
|
@ -1,292 +0,0 @@
|
||||||
test environment:
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_1,
|
|
||||||
test environment detail: 'PC has 2 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
1 AT target connect with PC by UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_2,
|
|
||||||
test environment detail: 'PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
1 AT target connect with PC by UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_3,
|
|
||||||
test environment detail: 'Able to access WAN after connect to AP.
|
|
||||||
|
|
||||||
1 AT target connect with PC by UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_ADC,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
Analog input connect to AT1 TOUT.
|
|
||||||
|
|
||||||
Multimeter connect to input, able to measure input voltage.
|
|
||||||
|
|
||||||
1 AT target connect with PC by UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_APC1,
|
|
||||||
test environment detail: "PC has 1 wired NIC connected to AP.\nPC has 1 wired NIC\
|
|
||||||
\ connected to APC (static IP within the same subnet with APC). \nAPC control\
|
|
||||||
\ AP power supply. \nPC has 1 WiFi NIC. \n1 AT target connect with PC by UART\
|
|
||||||
\ (AT and LOG port).", test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_APC2,
|
|
||||||
test environment detail: "Able to access WAN after connect to AP.\nPC has 1 wired\
|
|
||||||
\ NIC connected to APC (static IP within the same subnet with APC). \nAPC control\
|
|
||||||
\ AP power supply.\nPC has 1 WiFi NIC.\n1 AT target connect with PC by UART (AT\
|
|
||||||
\ and LOG port).", test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_HighSpeedUART,
|
|
||||||
test environment detail: 'PC has 2 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
1 AT target connect with PC by high speed UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: AT_T1_SmartConfigIOT,
|
|
||||||
test environment detail: '1 AT target connect with PC by UART (AT and LOG port).
|
|
||||||
|
|
||||||
PC has 1 wired NIC connect to Common AP.
|
|
||||||
|
|
||||||
Several AP are placed near AT target.
|
|
||||||
|
|
||||||
Several smart phone installed test APK are placed near AT target.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: AT_T2_1,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
2 AT target connect with PC by UART (AT and LOG port).', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, script path: EnvBase.py, tag: AT_T2_JAP,
|
|
||||||
test environment detail: "Several AP are placed near AT target.\nPC has 1 wired\
|
|
||||||
\ NIC connected to APC (static IP within the same subnet with APC).\nAPC control\
|
|
||||||
\ power supply for all APs. \n2 AT target connect with PC by UART (AT and LOG\
|
|
||||||
\ port).", test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, script path: EnvBase.py, tag: AT_T2_Sleep,
|
|
||||||
test environment detail: 'AP support DTIM placed with AT target.
|
|
||||||
|
|
||||||
2 AT target connect with PC by UART (AT and LOG port).
|
|
||||||
|
|
||||||
Multimeter connect with PC via GPIB.
|
|
||||||
|
|
||||||
Series multimeter between GND and VCC of AT1.
|
|
||||||
|
|
||||||
AT1''s light sleep wakeup pin and wakeup indication connect with AT2''s GPIO.',
|
|
||||||
test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: AT_T2_SmartConfig,
|
|
||||||
test environment detail: '2 AT target connect with PC by UART (AT and LOG port).
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
One HT20 AP and One HT40 AP are placed near target.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, UART ports: 'SSC1
|
|
||||||
|
|
||||||
SSC2', additional param list: '', basic param list: '', script path: EnvBase.py,
|
|
||||||
tag: IR_T2_1, test environment detail: '[TBD] 本测试为非自动测试, 红外能够做到数据收发吻合即可通过', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, script path: EnvBase.py, tag: NVS_T1_1,
|
|
||||||
test environment detail: '1 NVS target connect with PC by UART.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
SSC2 GPIO connect to NVS1 power control pin.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, UART ports: SSC_1, additional param list: '',
|
|
||||||
basic param list: '', script path: EnvBase.py, tag: PWM_T1_1, test environment detail: "[TBD]\
|
|
||||||
\ 1. PWM OS SDK 以及 Non-OS SDK的测试建议分开进行, 放在不同的文件夹, 防止文件命名混淆\n2. 分析CSV文件的Python脚本只能分析单个channel\
|
|
||||||
\ \n3. 如果Init脚本打印\"Network Error\" 检查TCP Server是不是正常发送data", test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_1,
|
|
||||||
test environment detail: 'PC has 2 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_2,
|
|
||||||
test environment detail: 'Able to access WAN after connect to AP.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_8089,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
1 8089 tablet able to run iperf test placed near SSC1.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_ADC,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
Analog input connect to SSC1 TOUT.
|
|
||||||
|
|
||||||
Multimeter connect to input, able to measure input voltage.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_APC,
|
|
||||||
test environment detail: "PC has 1 wired NIC connected to AP.\nPC has 1 wired NIC\
|
|
||||||
\ connected to APC (static IP within the same subnet with APC). \nAPC control\
|
|
||||||
\ AP power supply. \nPC has 1 WiFi NIC. \n1 SSC target connect with PC by UART.",
|
|
||||||
test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_Enterprise,
|
|
||||||
test environment detail: "AP use WPA2-Etherprise is placed near SSC1. \n1 SSC target\
|
|
||||||
\ connect with PC by UART.", test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_IOT1,
|
|
||||||
test environment detail: 'PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
1 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
AP todo IOT test are placed near SSC1.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T1_InitData,
|
|
||||||
test environment detail: '2 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
SSC1 use 40M crystal oscillator.
|
|
||||||
|
|
||||||
SSC2 use normal 26M crystal oscillator.
|
|
||||||
|
|
||||||
SSC2 GPIO connect to SSC1 power control pin.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_ShieldBox,
|
|
||||||
test environment detail: 'refer to figure.
|
|
||||||
|
|
||||||
All APs and APC should be set to the same IP subnet.
|
|
||||||
|
|
||||||
PC wired NIC should set static IP address within the same subnet with AP.
|
|
||||||
|
|
||||||
Must use onboard wired NIC.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_Sleep1,
|
|
||||||
test environment detail: 'AP support DTIM placed with AT target.
|
|
||||||
|
|
||||||
SSC target connect with Raspberry Pi by UART.
|
|
||||||
|
|
||||||
Multimeter connect with Raspberry Pi via GPIB.
|
|
||||||
|
|
||||||
Series multimeter between GND and VCC of SSC1.
|
|
||||||
|
|
||||||
SSC1''s light sleep wakeup pin and wakeup indication connect with Raspberry Pi''s
|
|
||||||
GPIO.
|
|
||||||
|
|
||||||
SSC1''s XPD connect with RSTB.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_Sleep2,
|
|
||||||
test environment detail: 'AP support DTIM placed with AT target.
|
|
||||||
|
|
||||||
SSC target connect with Raspberry Pi by UART.
|
|
||||||
|
|
||||||
Multimeter connect with Raspberry Pi via GPIB.
|
|
||||||
|
|
||||||
Series multimeter between GND and VCC of SSC1.
|
|
||||||
|
|
||||||
SSC1''s RSTB pin connect with Raspberry Pi''s GPIO.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_TempBox,
|
|
||||||
test environment detail: '1 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
Put SSC target to temperature box.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, UART ports: SSC_1, additional param list: '',
|
|
||||||
basic param list: '', script path: EnvBase.py, tag: SSC_T1_Timer, test environment detail: '[TBD]
|
|
||||||
通过串口工具调节Timer, 将GPIO_13端口连接到逻辑分析仪', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_VDD33,
|
|
||||||
test environment detail: '1 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
Multimeter connect to VDD33, able to measure voltage.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T1_WEP,
|
|
||||||
test environment detail: '1 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
One WEP share key AP placed near SSC1.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T2_1,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
2 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, UART ports: 'SSC1
|
|
||||||
|
|
||||||
SSC2', additional param list: '', basic param list: '', script path: EnvBase.py,
|
|
||||||
tag: SSC_T2_GPIO1, test environment detail: '[TBD] 2个ESP_8266通过UART连到PC, ESP_8266的
|
|
||||||
GPIO_6相连', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, UART ports: 'SSC1
|
|
||||||
|
|
||||||
SSC2', additional param list: '', basic param list: '', script path: EnvBase.py,
|
|
||||||
tag: SSC_T2_GPIO2, test environment detail: '[TBD] 1. 2个ESP_8266通过UART连到PC, ESP_8266的
|
|
||||||
GPIO_15通过面包板相连
|
|
||||||
|
|
||||||
2. 可借助面包板, 将GPIO_15, 以及中断函数被打开的8266板的GPIO_2 相连', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, UART ports: 'SSC1
|
|
||||||
|
|
||||||
SSC2', additional param list: '', basic param list: '', script path: EnvBase.py,
|
|
||||||
tag: SSC_T2_GPIO3, test environment detail: '[TBD] 2个ESP_8266通过UART连到PC, ESP_8266之间需要测试的Target_GPIO相连',
|
|
||||||
test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T2_JAP,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to APC.
|
|
||||||
|
|
||||||
APC control the power supply of multiple APs.
|
|
||||||
|
|
||||||
2 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T2_PhyMode,
|
|
||||||
test environment detail: '2 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
PC has one WiFi NIC support capture wlan packet using libpcap.
|
|
||||||
|
|
||||||
Set 4 AP with phy mode 11b, 11g, 11n HT20, 11n HT40.
|
|
||||||
|
|
||||||
Put 4 APs near SSC targets.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T2_ShieldBox,
|
|
||||||
test environment detail: '2 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
Put them to Shield box.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 2.0, script path: EnvBase.py, tag: SSC_T2_SmartConfig,
|
|
||||||
test environment detail: '2 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
One HT20 AP and One HT40 AP are placed near target.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 3.0, script path: EnvBase.py, tag: SSC_T3_PhyMode,
|
|
||||||
test environment detail: '3 SSC target connect with PC by UART.
|
|
||||||
|
|
||||||
PC has one WiFi NIC support capture wlan packet using libpcap.
|
|
||||||
|
|
||||||
Set 4 AP with (HT20, channel1), (HT20, channel2), (HT40, channel1), (HT40, channel2).
|
|
||||||
|
|
||||||
Put 4 APs near SSC targets.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 5.0, script path: EnvBase.py, tag: SSC_T5_1,
|
|
||||||
test environment detail: 5 SSC target connect with PC by UART., test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 5.0, script path: EnvBase.py, tag: SSC_T5_IOT1,
|
|
||||||
test environment detail: '5 SSC targets connect with PC by UART.
|
|
||||||
|
|
||||||
some Android smart phone are placed near SSC targets.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: SSC_T6_1,
|
|
||||||
test environment detail: 'PC has 1 wired NIC connected to AP.
|
|
||||||
|
|
||||||
PC has 1 WiFi NIC.
|
|
||||||
|
|
||||||
6 SSC target connect with PC by UART.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: TempSensor_T1_1,
|
|
||||||
test environment detail: 'Tempeture sensor target connect with PC by UART.
|
|
||||||
|
|
||||||
AP support DTIM placed with AT target.
|
|
||||||
|
|
||||||
Multimeter connect with PC via GPIB.
|
|
||||||
|
|
||||||
Series multimeter between GND and VCC of TempSensor1.
|
|
||||||
|
|
||||||
PC has 1 wired NIC connected to switch.
|
|
||||||
|
|
||||||
APC, AP also connect with swtich.
|
|
||||||
|
|
||||||
All devices connected with switch use the same IP subnet.
|
|
||||||
|
|
||||||
APC control AP power supply.', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, UART ports: SSC_1, additional param list: '',
|
|
||||||
basic param list: '', script path: EnvBase.py, tag: UART_T1_1, test environment detail: '[TBD]
|
|
||||||
将ESP_8266通过UART连到PC', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: Y, Target Count: 1.0, UART ports: 'SSC1
|
|
||||||
|
|
||||||
SSC2', additional param list: '', basic param list: '', script path: EnvBase.py,
|
|
||||||
tag: UART_T1_2, test environment detail: '[TBD] ESP_8266通过UART_0通过USB, UART_1 TXD
|
|
||||||
通过 TTLcable 连到PC', test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: UT_T1_1,
|
|
||||||
test environment detail: Environment for running ESP32 unit tests, test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: UT_T1_SDMODE,
|
|
||||||
test environment detail: Environment for running sd card sd mode unit tests, test script: EnvBase}
|
|
||||||
- {PC OS: '', Special: N, Target Count: 1.0, script path: EnvBase.py, tag: UT_T1_SPIMODE,
|
|
||||||
test environment detail: Environment for running sd card spi mode unit tests, test script: EnvBase}
|
|
||||||
- {PC OS: linux, Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: WebServer_T1_1,
|
|
||||||
test environment detail: 'Web Server target connect with PC by UART.
|
|
||||||
|
|
||||||
PC has 1 wired NIC connected to switch.
|
|
||||||
|
|
||||||
APC, AP also connect with swtich.
|
|
||||||
|
|
||||||
All devices connected with switch use same IP subnet.
|
|
||||||
|
|
||||||
APC control AP power supply.', test script: EnvBase}
|
|
||||||
- {PC OS: linux, Special: Y, Target Count: 1.0, script path: EnvBase.py, tag: WebServer_T1_2,
|
|
||||||
test environment detail: 'Web Server target connect with PC by UART.
|
|
||||||
|
|
||||||
4 PC with WiFi NIC placed near WebServer1.', test script: EnvBase}
|
|
|
@ -48,9 +48,6 @@ die() {
|
||||||
|
|
||||||
echo "build_examples running in ${PWD}"
|
echo "build_examples running in ${PWD}"
|
||||||
|
|
||||||
# only 0 or 1 arguments
|
|
||||||
[ $# -le 1 ] || die "Have to run as $(basename $0) [<JOB_NAME>]"
|
|
||||||
|
|
||||||
export BATCH_BUILD=1
|
export BATCH_BUILD=1
|
||||||
export V=0 # only build verbose if there's an error
|
export V=0 # only build verbose if there's an error
|
||||||
|
|
||||||
|
@ -65,26 +62,14 @@ SDKCONFIG_DEFAULTS_CI=sdkconfig.ci
|
||||||
|
|
||||||
EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name Makefile | grep -v "/build_system/cmake/" | sort )
|
EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name Makefile | grep -v "/build_system/cmake/" | sort )
|
||||||
|
|
||||||
if [ $# -eq 0 ]
|
if [ -z {CI_NODE_TOTAL} ]
|
||||||
then
|
then
|
||||||
START_NUM=0
|
START_NUM=0
|
||||||
END_NUM=999
|
END_NUM=999
|
||||||
else
|
else
|
||||||
JOB_NAME=$1
|
JOB_NUM=${CI_NODE_INDEX}
|
||||||
|
|
||||||
# parse text prefix at the beginning of string 'some_your_text_NUM'
|
|
||||||
# (will be 'some_your_text' without last '_')
|
|
||||||
JOB_PATTERN=$( echo ${JOB_NAME} | sed -n -r 's/^(.*)_[0-9]+$/\1/p' )
|
|
||||||
[ -z ${JOB_PATTERN} ] && die "JOB_PATTERN is bad"
|
|
||||||
|
|
||||||
# parse number 'NUM' at the end of string 'some_your_text_NUM'
|
|
||||||
# NOTE: Getting rid of the leading zero to get the decimal
|
|
||||||
JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_0*([0-9]+)$/\1/p' )
|
|
||||||
[ -z ${JOB_NUM} ] && die "JOB_NUM is bad"
|
|
||||||
|
|
||||||
# count number of the jobs
|
# count number of the jobs
|
||||||
NUM_OF_JOBS=$( grep -c -E "^${JOB_PATTERN}_[0-9]+:$" "${IDF_PATH}/.gitlab-ci.yml" )
|
NUM_OF_JOBS=${CI_NODE_TOTAL}
|
||||||
[ -z ${NUM_OF_JOBS} ] && die "NUM_OF_JOBS is bad"
|
|
||||||
|
|
||||||
# count number of examples
|
# count number of examples
|
||||||
NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l )
|
NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l )
|
||||||
|
@ -96,10 +81,10 @@ else
|
||||||
[ -z ${NUM_OF_EX_PER_JOB} ] && die "NUM_OF_EX_PER_JOB is bad"
|
[ -z ${NUM_OF_EX_PER_JOB} ] && die "NUM_OF_EX_PER_JOB is bad"
|
||||||
|
|
||||||
# ex.: [0; 12); [12; 24); [24; 36); [36; 48); [48; 60)
|
# ex.: [0; 12); [12; 24); [24; 36); [36; 48); [48; 60)
|
||||||
START_NUM=$(( ${JOB_NUM} * ${NUM_OF_EX_PER_JOB} ))
|
START_NUM=$(( (${JOB_NUM} - 1) * ${NUM_OF_EX_PER_JOB} ))
|
||||||
[ -z ${START_NUM} ] && die "START_NUM is bad"
|
[ -z ${START_NUM} ] && die "START_NUM is bad"
|
||||||
|
|
||||||
END_NUM=$(( (${JOB_NUM} + 1) * ${NUM_OF_EX_PER_JOB} ))
|
END_NUM=$(( ${JOB_NUM} * ${NUM_OF_EX_PER_JOB} ))
|
||||||
[ -z ${END_NUM} ] && die "END_NUM is bad"
|
[ -z ${END_NUM} ] && die "END_NUM is bad"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -168,6 +153,8 @@ build_example () {
|
||||||
|
|
||||||
EXAMPLE_NUM=0
|
EXAMPLE_NUM=0
|
||||||
|
|
||||||
|
echo "Current job will build example ${START_NUM} - ${END_NUM}"
|
||||||
|
|
||||||
for EXAMPLE_PATH in ${EXAMPLE_PATHS}
|
for EXAMPLE_PATH in ${EXAMPLE_PATHS}
|
||||||
do
|
do
|
||||||
if [[ $EXAMPLE_NUM -lt $START_NUM || $EXAMPLE_NUM -ge $END_NUM ]]
|
if [[ $EXAMPLE_NUM -lt $START_NUM || $EXAMPLE_NUM -ge $END_NUM ]]
|
||||||
|
|
|
@ -68,26 +68,14 @@ SDKCONFIG_DEFAULTS_CI=sdkconfig.ci
|
||||||
|
|
||||||
EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name CMakeLists.txt | grep -v "/components/" | grep -v "/common_components/" | grep -v "/main/" | grep -v "/idf_as_lib/stubs/" | sort )
|
EXAMPLE_PATHS=$( find ${IDF_PATH}/examples/ -type f -name CMakeLists.txt | grep -v "/components/" | grep -v "/common_components/" | grep -v "/main/" | grep -v "/idf_as_lib/stubs/" | sort )
|
||||||
|
|
||||||
if [ $# -eq 0 ]
|
if [ -z {CI_NODE_TOTAL} ]
|
||||||
then
|
then
|
||||||
START_NUM=0
|
START_NUM=0
|
||||||
END_NUM=999
|
END_NUM=999
|
||||||
else
|
else
|
||||||
JOB_NAME=$1
|
JOB_NUM=${CI_NODE_INDEX}
|
||||||
|
|
||||||
# parse text prefix at the beginning of string 'some_your_text_NUM'
|
|
||||||
# (will be 'some_your_text' without last '_')
|
|
||||||
JOB_PATTERN=$( echo ${JOB_NAME} | sed -n -r 's/^(.*)_[0-9]+$/\1/p' )
|
|
||||||
[ -z ${JOB_PATTERN} ] && die "JOB_PATTERN is bad"
|
|
||||||
|
|
||||||
# parse number 'NUM' at the end of string 'some_your_text_NUM'
|
|
||||||
# NOTE: Getting rid of the leading zero to get the decimal
|
|
||||||
JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_0*([0-9]+)$/\1/p' )
|
|
||||||
[ -z ${JOB_NUM} ] && die "JOB_NUM is bad"
|
|
||||||
|
|
||||||
# count number of the jobs
|
# count number of the jobs
|
||||||
NUM_OF_JOBS=$( grep -c -E "^${JOB_PATTERN}_[0-9]+:$" "${IDF_PATH}/.gitlab-ci.yml" )
|
NUM_OF_JOBS=${CI_NODE_TOTAL}
|
||||||
[ -z ${NUM_OF_JOBS} ] && die "NUM_OF_JOBS is bad"
|
|
||||||
|
|
||||||
# count number of examples
|
# count number of examples
|
||||||
NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l )
|
NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l )
|
||||||
|
@ -99,10 +87,10 @@ else
|
||||||
[ -z ${NUM_OF_EX_PER_JOB} ] && die "NUM_OF_EX_PER_JOB is bad"
|
[ -z ${NUM_OF_EX_PER_JOB} ] && die "NUM_OF_EX_PER_JOB is bad"
|
||||||
|
|
||||||
# ex.: [0; 12); [12; 24); [24; 36); [36; 48); [48; 60)
|
# ex.: [0; 12); [12; 24); [24; 36); [36; 48); [48; 60)
|
||||||
START_NUM=$(( ${JOB_NUM} * ${NUM_OF_EX_PER_JOB} ))
|
START_NUM=$(( (${JOB_NUM} - 1) * ${NUM_OF_EX_PER_JOB} ))
|
||||||
[ -z ${START_NUM} ] && die "START_NUM is bad"
|
[ -z ${START_NUM} ] && die "START_NUM is bad"
|
||||||
|
|
||||||
END_NUM=$(( (${JOB_NUM} + 1) * ${NUM_OF_EX_PER_JOB} ))
|
END_NUM=$(( ${JOB_NUM} * ${NUM_OF_EX_PER_JOB} ))
|
||||||
[ -z ${END_NUM} ] && die "END_NUM is bad"
|
[ -z ${END_NUM} ] && die "END_NUM is bad"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -156,6 +144,8 @@ build_example () {
|
||||||
|
|
||||||
EXAMPLE_NUM=0
|
EXAMPLE_NUM=0
|
||||||
|
|
||||||
|
echo "Current job will build example ${START_NUM} - ${END_NUM}"
|
||||||
|
|
||||||
for EXAMPLE_PATH in ${EXAMPLE_PATHS}
|
for EXAMPLE_PATH in ${EXAMPLE_PATHS}
|
||||||
do
|
do
|
||||||
if [[ $EXAMPLE_NUM -lt $START_NUM || $EXAMPLE_NUM -ge $END_NUM ]]
|
if [[ $EXAMPLE_NUM -lt $START_NUM || $EXAMPLE_NUM -ge $END_NUM ]]
|
||||||
|
|
|
@ -134,6 +134,19 @@ class AssignTest(object):
|
||||||
self.jobs = self._parse_gitlab_ci_config(ci_config_file)
|
self.jobs = self._parse_gitlab_ci_config(ci_config_file)
|
||||||
self.case_group = case_group
|
self.case_group = case_group
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _handle_parallel_attribute(job_name, job):
|
||||||
|
jobs_out = []
|
||||||
|
try:
|
||||||
|
for i in range(job["parallel"]):
|
||||||
|
jobs_out.append(GitlabCIJob.Job(job, job_name + "_{}".format(i + 1)))
|
||||||
|
except KeyError:
|
||||||
|
# Gitlab don't allow to set parallel to 1.
|
||||||
|
# to make test job name same ($CI_JOB_NAME_$CI_NODE_INDEX),
|
||||||
|
# we append "_" to jobs don't have parallel attribute
|
||||||
|
jobs_out.append(GitlabCIJob.Job(job, job_name + "_"))
|
||||||
|
return jobs_out
|
||||||
|
|
||||||
def _parse_gitlab_ci_config(self, ci_config_file):
|
def _parse_gitlab_ci_config(self, ci_config_file):
|
||||||
|
|
||||||
with open(ci_config_file, "r") as f:
|
with open(ci_config_file, "r") as f:
|
||||||
|
@ -142,7 +155,7 @@ class AssignTest(object):
|
||||||
job_list = list()
|
job_list = list()
|
||||||
for job_name in ci_config:
|
for job_name in ci_config:
|
||||||
if self.CI_TEST_JOB_PATTERN.search(job_name) is not None:
|
if self.CI_TEST_JOB_PATTERN.search(job_name) is not None:
|
||||||
job_list.append(GitlabCIJob.Job(ci_config[job_name], job_name))
|
job_list.extend(self._handle_parallel_attribute(job_name, ci_config[job_name]))
|
||||||
job_list.sort(key=lambda x: x["name"])
|
job_list.sort(key=lambda x: x["name"])
|
||||||
return job_list
|
return job_list
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,8 @@ TEST_CASE_PATTERN = {
|
||||||
class Parser(object):
|
class Parser(object):
|
||||||
""" parse unit test cases from build files and create files for test bench """
|
""" parse unit test cases from build files and create files for test bench """
|
||||||
|
|
||||||
TAG_PATTERN = re.compile("([^=]+)(=)?(.+)?")
|
TAG_PATTERN = re.compile(r"([^=]+)(=)?(.+)?")
|
||||||
DESCRIPTION_PATTERN = re.compile("\[([^]\[]+)\]") # noqa: W605 - regular expression
|
DESCRIPTION_PATTERN = re.compile(r"\[([^]\[]+)\]")
|
||||||
CONFIG_PATTERN = re.compile(r"{([^}]+)}")
|
CONFIG_PATTERN = re.compile(r"{([^}]+)}")
|
||||||
TEST_GROUPS_PATTERN = re.compile(r"TEST_GROUPS=(.*)$")
|
TEST_GROUPS_PATTERN = re.compile(r"TEST_GROUPS=(.*)$")
|
||||||
|
|
||||||
|
@ -261,7 +261,12 @@ class Parser(object):
|
||||||
dump parsed test cases to YAML file for test bench input
|
dump parsed test cases to YAML file for test bench input
|
||||||
:param test_cases: parsed test cases
|
:param test_cases: parsed test cases
|
||||||
"""
|
"""
|
||||||
with open(os.path.join(self.idf_path, self.TEST_CASE_FILE), "w+") as f:
|
filename = os.path.join(self.idf_path, self.TEST_CASE_FILE)
|
||||||
|
try:
|
||||||
|
os.mkdir(os.path.dirname(filename))
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
with open(os.path.join(filename), "w+") as f:
|
||||||
yaml.dump({"test cases": test_cases}, f, allow_unicode=True, default_flow_style=False)
|
yaml.dump({"test cases": test_cases}, f, allow_unicode=True, default_flow_style=False)
|
||||||
|
|
||||||
def copy_module_def_file(self):
|
def copy_module_def_file(self):
|
||||||
|
|
Loading…
Reference in a new issue