kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'feat/add_netif_dependency_test' into 'master'
esp_netif/ci: Add test to verify dependencies to/from lwip/drivers See merge request espressif/esp-idf!19179pull/9491/head
commit
fdfda6e064
|
@ -44,6 +44,12 @@ tools/test_apps/protocols/mqtt/publish_connect_test:
|
|||
temporary: true
|
||||
reason: lack of runners
|
||||
|
||||
tools/test_apps/protocols/netif_components:
|
||||
enable:
|
||||
- if: IDF_TARGET == "esp32"
|
||||
temporary: true
|
||||
reason: one target is enough to verify netif component dependencies
|
||||
|
||||
tools/test_apps/security/secure_boot:
|
||||
# disable:
|
||||
# - if: SOC_SECURE_BOOT_SUPPORTED != 1
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
# For more information about build system see
|
||||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
|
||||
# The following five lines of boilerplate have to be in your project's
|
||||
# CMakeLists in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
set(driver_components esp_eth esp_wifi openthread)
|
||||
|
||||
# Check manually if the ESP_NETIF is configured in sdkconfig
|
||||
message(STATUS "Checking if sdkconfig contains CONFIG_TESTAPP_COMPONENT related config:")
|
||||
set(config_file "${CMAKE_CURRENT_SOURCE_DIR}/sdkconfig")
|
||||
if(EXISTS ${config_file})
|
||||
# If the config file exists, check for the non-default settings - LWIP
|
||||
# otherwise (file missing or defalut settings) go with ESP_NETIF
|
||||
file(READ ${config_file} config_file_content)
|
||||
string(FIND "${config_file_content}" "CONFIG_TESTAPP_COMPONENT_LWIP=y" match)
|
||||
if(NOT ${match} EQUAL -1)
|
||||
set(CONFIG_IS_LWIP 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CONFIG_IS_LWIP)
|
||||
message(STATUS "CONFIG_TESTAPP_COMPONENT_ESP_LWIP")
|
||||
set(component_under_test lwip)
|
||||
set(expected_build_components lwip)
|
||||
else()
|
||||
message(STATUS "CONFIG_TESTAPP_COMPONENT_ESP_NETIF")
|
||||
set(component_under_test esp_netif)
|
||||
set(expected_build_components esp_netif lwip)
|
||||
endif()
|
||||
|
||||
set(COMPONENTS ${component_under_test} main)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
|
||||
idf_build_set_property(__BUILD_COMPONENT_DEPGRAPH_ENABLED 1)
|
||||
|
||||
project(network_components)
|
||||
|
||||
# Get the actual build commponents included in the build
|
||||
idf_build_get_property(build_components BUILD_COMPONENTS)
|
||||
|
||||
message(STATUS "Build components needed my main and ${component_under_test}:")
|
||||
foreach(comp ${build_components})
|
||||
message(STATUS "${comp}")
|
||||
endforeach()
|
||||
|
||||
# Check for all driver components, these shall not be included
|
||||
foreach(comp ${driver_components})
|
||||
if(${comp} IN_LIST build_components)
|
||||
message(FATAL_ERROR "Component ${comp} shall not be included when building only ${component_under_test}")
|
||||
else()
|
||||
message(STATUS "-> OK: ${comp} is not included when building only ${component_under_test}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Check for all needed components, these must be included
|
||||
foreach(comp ${expected_build_components})
|
||||
if(${comp} IN_LIST build_components)
|
||||
message(STATUS "-> OK: ${comp} is pulled by ${component_under_test}")
|
||||
else()
|
||||
message(FATAL_ERROR "${comp} is expected by adding ${component_under_test}")
|
||||
endif()
|
||||
endforeach()
|
|
@ -0,0 +1,28 @@
|
|||
| Supported Targets | ESP32 |
|
||||
| ----------------- | ----- |
|
||||
|
||||
# Networking component dependency
|
||||
|
||||
This test application checks the list of components included into the build when:
|
||||
* `esp_netif` component is added to the build.
|
||||
* `lwip` component is added to the build.
|
||||
|
||||
The test checks that driver components are not included in the build
|
||||
|
||||
# Using this test app
|
||||
|
||||
* Remove the build artifacts `idf.py fullclean`
|
||||
* Choose the component to test (either `esp_netif` or `lwip`)
|
||||
* Build the project `idf.py build`
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If you get a build error in this example, please check there's no dependency from the tested component (either `esp_netif` or `lwip`) to any defined driver component.
|
||||
|
||||
Please open the project `CMakeLists.txt` to view the expected dependencies and driver's components that must not be included in the list:
|
||||
* CMake variable `driver_components` contains list of driver's components
|
||||
* CMake variable `expected_build_components` contains list expected dependecies
|
||||
|
||||
Note that this project creates `component_deps.dot`, a simpified dependecy graph that could be used to display and troubleshoot component dependencies.
|
||||
|
||||
Note that this test is executed for one target only in CI (ESP32), but shall work correctly for all IDF supported targets.
|
|
@ -0,0 +1,2 @@
|
|||
idf_component_register(SRCS "netif_components.c"
|
||||
INCLUDE_DIRS ".")
|
|
@ -0,0 +1,16 @@
|
|||
menu "TestApp Configuration"
|
||||
|
||||
choice TESTAPP_COMPONENT_TEST
|
||||
prompt "Component under test"
|
||||
help
|
||||
Component for which we check their dependencies
|
||||
|
||||
config TESTAPP_COMPONENT_ESP_NETIF
|
||||
bool "esp_netif"
|
||||
|
||||
config TESTAPP_COMPONENT_LWIP
|
||||
bool "lwip"
|
||||
|
||||
endchoice
|
||||
|
||||
endmenu
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
CONFIG_TESTAPP_COMPONENT_ESP_NETIF=y
|
|
@ -0,0 +1 @@
|
|||
CONFIG_TESTAPP_COMPONENT_LWIP=y
|
Ładowanie…
Reference in New Issue