Jelajahi Sumber

Merge branch 'ci/system_example_test_reduction' into 'master'

ci: reduce the number of system examples built/tested in regular pipelines

See merge request espressif/esp-idf!26519
Marius Vikhammer 2 tahun lalu
induk
melakukan
4ea0538a88

+ 1 - 0
.gitlab/ci/common.yml

@@ -92,6 +92,7 @@ variables:
 
   if echo "$CI_MERGE_REQUEST_LABELS" | egrep "(^|,)include_nightly_run(,|$)"; then
     export INCLUDE_NIGHTLY_RUN="1"
+    export NIGHTLY_RUN="1"
   fi
 
   # configure cmake related flags

+ 113 - 35
examples/system/.build-test-rules.yml

@@ -6,6 +6,10 @@ examples/system/app_trace_basic:
       temporary: true
       reason: target esp32c6, esp32h2 is not supported yet
 
+examples/system/base_mac_address:
+  depends_components:
+    - esp_hw_support
+
 examples/system/console/advanced:
   disable:
     - if: IDF_TARGET == "esp32p4"
@@ -14,10 +18,16 @@ examples/system/console/advanced:
   disable_test:
     - if: IDF_TARGET not in ["esp32", "esp32c3"]
       reason: Sufficient to run this app on one chip with each architecture
+  depends_components:
+    - console
+    - vfs
 
 examples/system/console/advanced_usb_cdc:
   disable:
     - if: SOC_USB_PERIPH_NUM == 0
+  depends_components:
+    - console
+    - vfs
 
 examples/system/console/basic:
   disable:
@@ -27,6 +37,9 @@ examples/system/console/basic:
   disable_test:
     - if: IDF_TARGET not in ["esp32", "esp32c3"]
       reason: Sufficient to run this app on one chip with each architecture
+  depends_components:
+    - console
+    - vfs
 
 examples/system/deep_sleep:
   disable:
@@ -40,15 +53,35 @@ examples/system/deep_sleep_wake_stub:
       temporary: true
       reason: target(s) is not supported yet
 
+examples/system/efuse:
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - efuse
+    - bootloader_support
+
 examples/system/esp_timer:
   disable:
-    - if: IDF_TARGET in ["esp32c6", "esp32h2", "esp32p4"]
+    - if: IDF_TARGET in ["esp32p4"]
       temporary: true
       reason: target(s) is not supported yet # TODO: IDF-7529
+  disable_test:
+    - if: IDF_TARGET in ["esp32c6", "esp32h2"]
+      temporary: true
+      reason: lack of runner
+  depends_components:
+    - esp_timer
 
 examples/system/eventfd:
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
   disable:
     - if: SOC_GPTIMER_SUPPORTED != 1
+  depends_components:
+    - vfs
+    - driver
 
 examples/system/flash_suspend:
   enable:
@@ -56,6 +89,13 @@ examples/system/flash_suspend:
       temporary: true
       reason: the other targets are not tested yet
 
+examples/system/freertos:
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - freertos
+
 examples/system/gcov:
   disable_test:
     - if: IDF_TARGET != "esp32"
@@ -69,28 +109,34 @@ examples/system/gdbstub:
       reason: not supported yet #TODO: IDF-7510
 
 examples/system/heap_task_tracking:
-  disable:
-    - if: IDF_TARGET == "esp32c2" or IDF_TARGET == "esp32h2"
-      temporary: true
-      reason: target esp32c2, esp32h2 is not supported yet
+  enable:
+    - if: IDF_TARGET == "esp32c3" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - heap
 
 examples/system/himem:
   enable:
     - if: IDF_TARGET == "esp32"
-      temporary: true
-      reason: the other targets are not tested yet
+      reason: Feature is only needed/supported on ESP32
 
 examples/system/ipc/ipc_isr/riscv:
   enable:
-    - if: IDF_TARGET in ["esp32p4"]
-      temporary: true
+    - if: IDF_TARGET_ARCH_RISCV == 1 and ESP_IPC_ISR_ENABLE == 1
       reason: The test is intended only for multi-core chips
+  disable_test:
+    - if: IDF_TARGET == "esp32p4"
+      temporary: true
+      reason: lack of runners
+  depends_components:
+    - esp_system
 
 examples/system/ipc/ipc_isr/xtensa:
   enable:
-    - if: IDF_TARGET in ["esp32", "esp32s3"]
-      temporary: true
+    - if: IDF_TARGET_ARCH_XTENSA == 1 and ESP_IPC_ISR_ENABLE == 1
       reason: The test is intended only for multi-core chips
+  depends_components:
+    - esp_system
 
 examples/system/light_sleep:
   disable:
@@ -146,22 +192,26 @@ examples/system/ota/simple_ota_example:
 
 examples/system/perfmon:
   enable:
-    - if: IDF_TARGET in ["esp32", "esp32s2", "esp32s3"]
-      temporary: true
-      reason: the other targets are not tested yet
+    - if: IDF_TARGET in ["esp32", "esp32s2", "esp32s3"] and NIGHTLY_RUN == "1"
+      reason: xtensa only feature
+    - if: IDF_TARGET == "esp32"
+      reason: testing on a single target is sufficient
+  depends_components:
+    - perfmon
+
+examples/system/pthread:
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - pthread
 
 examples/system/select:
-  disable:
-    - if: IDF_TARGET == "esp32c2"
-      temporary: true
-      reason: target esp32c2 is not supported yet
-  disable_test:
-    - if: IDF_TARGET in ["esp32s2", "esp32s3"]
-      temporary: true
-      reason: lack of runners
-    - if: IDF_TARGET == "esp32c6" or IDF_TARGET == "esp32h2"
-      temporary: true
-      reason: target esp32c6 is not supported yet
+  enable:
+    - if: IDF_TARGET == "esp32c3" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - vfs
 
 examples/system/sysview_tracing:
   disable:
@@ -186,72 +236,100 @@ examples/system/sysview_tracing_heap_log:
       reason: lack of runners
 
 examples/system/task_watchdog:
-  disable_test:
-    - if: IDF_TARGET == "esp32c2"
-      temporary: true
-      reason: target esp32c2 is not supported yet
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - esp_system
 
 examples/system/ulp/lp_core/gpio:
   enable:
     - if: SOC_LP_CORE_SUPPORTED == 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/lp_core/lp_i2c:
   enable:
     - if: SOC_LP_I2C_SUPPORTED == 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/lp_core/lp_uart/lp_uart_echo:
   disable:
     - if: SOC_ULP_LP_UART_SUPPORTED != 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/lp_core/lp_uart/lp_uart_print:
   disable:
     - if: SOC_ULP_LP_UART_SUPPORTED != 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_fsm/ulp:
   disable:
     - if: SOC_ULP_FSM_SUPPORTED != 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_fsm/ulp_adc:
   enable:
     - if: IDF_TARGET in ["esp32", "esp32s3"]
       temporary: true
       reason: the other targets are not tested yet
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/adc:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
-      temporary: true
-      reason: the other targets are not tested yet
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/ds18b20_onewire:
   enable:
     - if: IDF_TARGET == "esp32s2"
       temporary: true
       reason: the other targets are not tested yet
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/gpio:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
-      temporary: true
-      reason: the other targets are not tested yet
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/gpio_interrupt:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
-      temporary: true
-      reason: the other targets are not tested yet
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/i2c:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/touch:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
+  depends_components:
+    - ulp
 
 examples/system/ulp/ulp_riscv/uart_print:
   enable:
     - if: SOC_RISCV_COPROC_SUPPORTED == 1
+  depends_components:
+    - ulp
+
+examples/system/unit_test/:
+  enable:
+    - if: IDF_TARGET == "esp32" or (NIGHTLY_RUN == "1" and IDF_TARGET != "linux")
+      reason: no target specific functionality, testing on a single target is sufficient
+  depends_components:
+    - unity
 
 examples/system/xip_from_psram:
   enable:

+ 2 - 2
examples/system/esp_timer/README.md

@@ -1,5 +1,5 @@
-| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-S2 | ESP32-S3 |
-| ----------------- | ----- | -------- | -------- | -------- | -------- |
+| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S2 | ESP32-S3 |
+| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
 
 # High Resolution Timer Example (`esp_timer`)
 

+ 1 - 7
examples/system/eventfd/pytest_eventfd.py

@@ -8,13 +8,7 @@ import pytest
 from pytest_embedded import Dut
 
 
-@pytest.mark.esp32
-@pytest.mark.esp32c2
-@pytest.mark.esp32s2
-@pytest.mark.esp32s3
-@pytest.mark.esp32c3
-@pytest.mark.esp32c6
-@pytest.mark.esp32h2
+@pytest.mark.supported_targets
 @pytest.mark.generic
 def test_eventfd(dut: Dut) -> None:
 

+ 2 - 2
examples/system/heap_task_tracking/README.md

@@ -1,5 +1,5 @@
-| Supported Targets | ESP32 | ESP32-C3 | ESP32-C6 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
-| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- |
+| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
+| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
 
 # Heap Task Tracking Example
 

+ 2 - 2
examples/system/select/README.md

@@ -1,5 +1,5 @@
-| Supported Targets | ESP32 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
-| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |
+| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
+| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
 
 # Synchronous I/O multiplexing example
 

+ 1 - 2
examples/system/select/pytest_select.py

@@ -20,8 +20,7 @@ def get_uart_msgs(i: int) -> List[str]:
             'uart_select_example: {} bytes were received through UART1: {}'.format(len(msg), msg)]
 
 
-@pytest.mark.esp32
-@pytest.mark.esp32c3
+@pytest.mark.supported_targets
 @pytest.mark.generic
 def test_examples_select(dut: Dut) -> None:
 

+ 1 - 7
examples/system/task_watchdog/pytest_task_watchdog.py

@@ -5,13 +5,7 @@ import pytest
 from pytest_embedded import Dut
 
 
-# IDF-5055
-@pytest.mark.esp32
-@pytest.mark.esp32s2
-@pytest.mark.esp32s3
-@pytest.mark.esp32c3
-@pytest.mark.esp32c6
-@pytest.mark.esp32h2
+@pytest.mark.supported_targets
 @pytest.mark.generic
 def test_task_watchdog(dut: Dut) -> None:
 

+ 2 - 0
tools/ci/check_build_test_rules.py

@@ -481,6 +481,7 @@ if __name__ == '__main__':
                 )
 
         if arg.action == 'check-readmes':
+            os.environ['INCLUDE_NIGHTLY_RUN'] = '1'
             os.environ['NIGHTLY_RUN'] = '1'
             check_readme(
                 list(check_dirs),
@@ -489,6 +490,7 @@ if __name__ == '__main__':
             )
         elif arg.action == 'check-test-scripts':
             os.environ['INCLUDE_NIGHTLY_RUN'] = '1'
+            os.environ['NIGHTLY_RUN'] = '1'
             check_test_scripts(
                 list(check_dirs),
                 exclude_dirs=_exclude_dirs,