forked from espressif/esp-mqtt
[MQTT] Simplifies MQTT CMakeLists file
- Uses mocks from tools instead of creating them. - Move host based definition to test code.
This commit is contained in:
@ -7,122 +7,7 @@ endif()
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
INCLUDE_DIRS esp-mqtt/include
|
||||
PRIV_INCLUDE_DIRS "esp-mqtt/lib/include"
|
||||
PRIV_REQUIRES esp_timer
|
||||
REQUIRES esp_event tcp_transport
|
||||
PRIV_REQUIRES esp_timer http_parser esp_hw_support
|
||||
)
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
|
||||
|
||||
if(TEST_BUILD)
|
||||
message(STATUS "building MOCKS")
|
||||
idf_component_get_property(tcp_transport_dir tcp_transport COMPONENT_DIR)
|
||||
idf_component_get_property(esp_hw_support_dir esp_hw_support COMPONENT_DIR)
|
||||
idf_component_get_property(esp_event_dir esp_event COMPONENT_DIR)
|
||||
idf_component_get_property(log_dir log COMPONENT_DIR)
|
||||
idf_component_get_property(freertos_dir freertos COMPONENT_OVERRIDEN_DIR)
|
||||
idf_component_get_property(http_parser_dir http_parser COMPONENT_DIR)
|
||||
idf_component_get_property(esp_wifi_dir esp_wifi COMPONENT_DIR)
|
||||
idf_component_get_property(esp_tls_dir esp-tls COMPONENT_DIR)
|
||||
idf_component_get_property(esp_netif_dir esp_netif COMPONENT_DIR)
|
||||
idf_component_get_property(esp_common_dir esp_common COMPONENT_DIR)
|
||||
idf_component_get_property(esp_rom_dir esp_rom COMPONENT_DIR)
|
||||
idf_component_get_property(esp_system_dir esp_system COMPONENT_DIR)
|
||||
idf_component_get_property(mbedtls_dir mbedtls COMPONENT_DIR)
|
||||
|
||||
idf_component_get_property(cmock_lib cmock COMPONENT_LIB)
|
||||
set(IDF_PATH $ENV{IDF_PATH})
|
||||
set(CMOCK_DIR "${IDF_PATH}/components/cmock/CMock")
|
||||
set(MOCK_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/mocks")
|
||||
set(ENV{UNITY_DIR} "$ENV{IDF_PATH}/components/cmock/CMock")
|
||||
file(MAKE_DIRECTORY ${MOCK_GEN_DIR})
|
||||
|
||||
set(MOCK_OUTPUT
|
||||
"${MOCK_GEN_DIR}/Mockesp_transport.c" "${MOCK_GEN_DIR}/Mockesp_transport.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_transport_ssl.c" "${MOCK_GEN_DIR}/Mockesp_transport_ssl.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_transport_ws.c" "${MOCK_GEN_DIR}/Mockesp_transport_ws.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_transport_tcp.c" "${MOCK_GEN_DIR}/Mockesp_transport_tcp.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_event.c" "${MOCK_GEN_DIR}/Mockesp_event.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_mac.c" "${MOCK_GEN_DIR}/Mockesp_mac.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_random.c" "${MOCK_GEN_DIR}/Mockesp_random.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_system.c" "${MOCK_GEN_DIR}/Mockesp_system.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_tls.c" "${MOCK_GEN_DIR}/Mockesp_tls.h"
|
||||
"${MOCK_GEN_DIR}/Mockevent_groups.c" "${MOCK_GEN_DIR}/Mockevent_groups.h"
|
||||
"${MOCK_GEN_DIR}/Mockqueue.c" "${MOCK_GEN_DIR}/Mockqueue.h"
|
||||
"${MOCK_GEN_DIR}/Mocktask.c" "${MOCK_GEN_DIR}/Mocktask.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_log.c" "${MOCK_GEN_DIR}/Mockesp_log.h"
|
||||
"${MOCK_GEN_DIR}/Mockhttp_parser.c" "${MOCK_GEN_DIR}/Mockhttp_parser.h"
|
||||
)
|
||||
|
||||
set(HEADERS_TO_MOCK
|
||||
${tcp_transport_dir}/include/esp_transport_tcp.h
|
||||
${tcp_transport_dir}/include/esp_transport_ws.h
|
||||
${tcp_transport_dir}/include/esp_transport_ssl.h
|
||||
${tcp_transport_dir}/include/esp_transport.h
|
||||
${esp_event_dir}/include/esp_event.h
|
||||
${esp_hw_support_dir}/include/esp_mac.h
|
||||
${esp_hw_support_dir}/include/esp_random.h
|
||||
${freertos_dir}/FreeRTOS-Kernel/include/freertos/event_groups.h
|
||||
${log_dir}/include/esp_log.h
|
||||
${http_parser_dir}/http_parser.h
|
||||
)
|
||||
|
||||
set(srcs
|
||||
${MOCK_GEN_DIR}/Mockesp_transport.c
|
||||
${MOCK_GEN_DIR}/Mockesp_transport_ws.c
|
||||
${MOCK_GEN_DIR}/Mockesp_transport_ssl.c
|
||||
${MOCK_GEN_DIR}/Mockesp_transport_tcp.c
|
||||
${MOCK_GEN_DIR}/Mockesp_transport_tcp.c
|
||||
${MOCK_GEN_DIR}/Mockesp_event.c
|
||||
${MOCK_GEN_DIR}/Mockesp_mac.c
|
||||
${MOCK_GEN_DIR}/Mockesp_random.c
|
||||
${MOCK_GEN_DIR}/Mockesp_log.c
|
||||
${MOCK_GEN_DIR}/Mockhttp_parser.c
|
||||
${MOCK_GEN_DIR}/Mockevent_groups.c
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ruby_found SYMBOLIC
|
||||
COMMAND "ruby" "-v"
|
||||
COMMENT "Try to find ruby. If this fails, you need to install ruby"
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${MOCK_OUTPUT}
|
||||
DEPENDS ruby_found
|
||||
COMMAND ${CMAKE_COMMAND} -E env "UNITY_DIR=${IDF_PATH}/components/unity/unity"
|
||||
ruby
|
||||
${CMOCK_DIR}/lib/cmock.rb
|
||||
-o${CMAKE_CURRENT_SOURCE_DIR}/host_test/mocks/config.yaml
|
||||
${HEADERS_TO_MOCK}
|
||||
)
|
||||
|
||||
add_library(mocks ${srcs})
|
||||
target_include_directories(mocks PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/host_test/mocks/include
|
||||
${tcp_transport_dir}/include
|
||||
${esp_tls_dir}
|
||||
${freertos_dir}/FreeRTOS-Kernel/include
|
||||
${esp_event_dir}/include
|
||||
${esp_system_dir}/include
|
||||
${esp_common_dir}/include
|
||||
${esp_wifi_dir}/include
|
||||
${esp_hw_support_dir}/include
|
||||
${esp_netif_dir}/include
|
||||
${log_dir}/include
|
||||
${esp_rom_dir}/include
|
||||
${mbedtls_dir}/port/include
|
||||
${http_parser_dir}
|
||||
${mbedtls_dir}/mbedtls/include
|
||||
${freertos_dir}/FreeRTOS-Kernel/include/freertos
|
||||
esp-mqtt/lib/include
|
||||
${MOCK_GEN_DIR}
|
||||
)
|
||||
target_link_libraries(mocks PUBLIC ${cmock_lib})
|
||||
target_compile_definitions(mocks PUBLIC
|
||||
CONFIG_LOG_TIMESTAMP_SOURCE_RTOS)
|
||||
target_link_options(${COMPONENT_LIB} INTERFACE -fsanitize=address)
|
||||
|
||||
target_link_libraries(${COMPONENT_LIB} PUBLIC mocks)
|
||||
|
||||
else()
|
||||
idf_component_optional_requires(PUBLIC esp_event tcp_transport)
|
||||
idf_component_optional_requires(PRIVATE http_parser)
|
||||
endif()
|
||||
|
@ -2,9 +2,15 @@ cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
set(COMPONENTS main)
|
||||
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/"
|
||||
list(APPEND EXTRA_COMPONENT_DIRS
|
||||
"$ENV{IDF_PATH}/tools/mocks/esp_hw_support/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/freertos/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/esp_timer/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/esp_event/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/lwip/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/esp-tls/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/http_parser/"
|
||||
"$ENV{IDF_PATH}/tools/mocks/tcp_transport/"
|
||||
)
|
||||
|
||||
option(TEST_BUILD "" ON)
|
||||
project(host_mqtt_client_test)
|
||||
|
@ -1,3 +1,3 @@
|
||||
idf_component_register(SRCS "test_mqtt_client.cpp"
|
||||
INCLUDE_DIRS "$ENV{IDF_PATH}/tools/catch"
|
||||
REQUIRES cmock mqtt esp_timer)
|
||||
REQUIRES cmock mqtt esp_timer esp_hw_support http_parser log)
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
extern "C" {
|
||||
#include "Mockesp_event.h"
|
||||
#include "Mockesp_log.h"
|
||||
#include "Mockesp_mac.h"
|
||||
#include "Mockesp_transport.h"
|
||||
#include "Mockesp_transport_ssl.h"
|
||||
@ -37,14 +36,12 @@ struct ClientInitializedFixture {
|
||||
int transport;
|
||||
int event_group;
|
||||
uint8_t mac[] = {0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55};
|
||||
esp_log_write_Ignore();
|
||||
esp_timer_get_time_IgnoreAndReturn(0);
|
||||
xQueueTakeMutexRecursive_IgnoreAndReturn(true);
|
||||
xQueueGiveMutexRecursive_IgnoreAndReturn(true);
|
||||
xQueueCreateMutex_ExpectAnyArgsAndReturn(
|
||||
reinterpret_cast<QueueHandle_t>(&mtx));
|
||||
xEventGroupCreate_IgnoreAndReturn(reinterpret_cast<EventGroupHandle_t>(&event_group));
|
||||
esp_log_timestamp_IgnoreAndReturn(0);
|
||||
esp_transport_list_init_IgnoreAndReturn(reinterpret_cast<esp_transport_list_handle_t>(&transport_list));
|
||||
esp_transport_tcp_init_IgnoreAndReturn(reinterpret_cast<esp_transport_handle_t>(&transport));
|
||||
esp_transport_ssl_init_IgnoreAndReturn(reinterpret_cast<esp_transport_handle_t>(&transport));
|
||||
|
@ -1,6 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#define configUSE_TRACE_FACILITY 1
|
@ -104,4 +104,5 @@ TEST_CASE("mqtt broker tests", "[mqtt][test_env=UT_T2_Ethernet]")
|
||||
|
||||
connect_test_fixture_teardown();
|
||||
}
|
||||
|
||||
#endif // SOC_EMAC_SUPPORTED
|
||||
|
Reference in New Issue
Block a user