forked from espressif/esp-idf
Merge branch 'feature/add_esp_http_client_host_test' into 'master'
fix esp_http_client_example to build for Linux target. See merge request espressif/esp-idf!22339
This commit is contained in:
@@ -102,7 +102,7 @@ menu "mbedTLS"
|
|||||||
default n
|
default n
|
||||||
select MBEDTLS_ASYMMETRIC_CONTENT_LEN
|
select MBEDTLS_ASYMMETRIC_CONTENT_LEN
|
||||||
# Dynamic buffer feature is not supported with DTLS
|
# Dynamic buffer feature is not supported with DTLS
|
||||||
depends on !MBEDTLS_SSL_PROTO_DTLS && !MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
|
depends on !IDF_TARGET_LINUX && !MBEDTLS_SSL_PROTO_DTLS && !MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
|
||||||
help
|
help
|
||||||
Using dynamic TX/RX buffer. After enabling this option, mbedTLS will
|
Using dynamic TX/RX buffer. After enabling this option, mbedTLS will
|
||||||
allocate TX buffer when need to send data and then free it if all data
|
allocate TX buffer when need to send data and then free it if all data
|
||||||
|
@@ -4,7 +4,7 @@ if(${target} STREQUAL "linux")
|
|||||||
# Header only library for linux
|
# Header only library for linux
|
||||||
|
|
||||||
idf_component_register(INCLUDE_DIRS include
|
idf_component_register(INCLUDE_DIRS include
|
||||||
PRIV_REQUIRES tapif_io)
|
SRCS protocol_examples_utils.c)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
|
@@ -11,15 +11,18 @@
|
|||||||
|
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
|
#if !CONFIG_IDF_TARGET_LINUX
|
||||||
#include "esp_netif.h"
|
#include "esp_netif.h"
|
||||||
#if CONFIG_EXAMPLE_CONNECT_ETHERNET
|
#if CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||||
#include "esp_eth.h"
|
#include "esp_eth.h"
|
||||||
#endif
|
#endif
|
||||||
|
#endif // !CONFIG_IDF_TARGET_LINUX
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !CONFIG_IDF_TARGET_LINUX
|
||||||
#if CONFIG_EXAMPLE_CONNECT_WIFI
|
#if CONFIG_EXAMPLE_CONNECT_WIFI
|
||||||
#define EXAMPLE_NETIF_DESC_STA "example_netif_sta"
|
#define EXAMPLE_NETIF_DESC_STA "example_netif_sta"
|
||||||
#endif
|
#endif
|
||||||
@@ -96,6 +99,10 @@ void example_register_wifi_connect_commands(void);
|
|||||||
esp_eth_handle_t get_example_eth_handle(void);
|
esp_eth_handle_t get_example_eth_handle(void);
|
||||||
#endif // CONFIG_EXAMPLE_CONNECT_ETHERNET
|
#endif // CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||||
|
|
||||||
|
#else
|
||||||
|
static inline esp_err_t example_connect(void) {return ESP_OK;}
|
||||||
|
#endif // !CONFIG_IDF_TARGET_LINUX
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -12,10 +12,12 @@ examples/protocols/coap_server:
|
|||||||
- if: IDF_TARGET in ["esp32h2"]
|
- if: IDF_TARGET in ["esp32h2"]
|
||||||
|
|
||||||
examples/protocols/esp_http_client:
|
examples/protocols/esp_http_client:
|
||||||
|
enable:
|
||||||
|
- if: INCLUDE_DEFAULT == 1 or IDF_TARGET == "linux"
|
||||||
disable:
|
disable:
|
||||||
- if: IDF_TARGET in ["esp32h2"]
|
- if: IDF_TARGET in ["esp32h2"]
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET != "esp32"
|
- if: IDF_TARGET not in ["esp32", "linux"]
|
||||||
temporary: true
|
temporary: true
|
||||||
reason: only test on esp32
|
reason: only test on esp32
|
||||||
|
|
||||||
|
@@ -2,12 +2,12 @@
|
|||||||
# CMakeLists in this exact order for cmake to work correctly
|
# CMakeLists in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
if(${IDF_TARGET} STREQUAL "linux")
|
if(${IDF_TARGET} STREQUAL "linux")
|
||||||
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/"
|
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/"
|
||||||
"$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs")
|
"$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs")
|
||||||
set(COMPONENTS main)
|
set(COMPONENTS main)
|
||||||
else()
|
|
||||||
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-S2 | ESP32-S3 | Linux |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | ----- |
|
||||||
|
|
||||||
# ESP HTTP Client Example
|
# ESP HTTP Client Example
|
||||||
|
|
||||||
See the README.md file in the upper level 'examples' directory for more information about examples.
|
See the README.md file in the upper level 'examples' directory for more information about examples.
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
|
# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
|
||||||
set(requires "")
|
set(requires "")
|
||||||
if(${IDF_TARGET} STREQUAL "linux")
|
if(${IDF_TARGET} STREQUAL "linux")
|
||||||
list(APPEND requires esp_stubs esp-tls esp_http_client)
|
list(APPEND requires esp_stubs esp-tls esp_http_client protocol_examples_common)
|
||||||
endif()
|
endif()
|
||||||
idf_component_register(SRCS "esp_http_client_example.c"
|
idf_component_register(SRCS "esp_http_client_example.c"
|
||||||
INCLUDE_DIRS "."
|
INCLUDE_DIRS "."
|
||||||
|
@@ -98,3 +98,44 @@ def test_examples_protocol_esp_http_client_dynamic_buffer(dut: Dut) -> None:
|
|||||||
dut.expect(r'HTTP Status = 206, content_length = 10')
|
dut.expect(r'HTTP Status = 206, content_length = 10')
|
||||||
dut.expect(r'HTTP Status = 206, content_length = 10')
|
dut.expect(r'HTTP Status = 206, content_length = 10')
|
||||||
dut.expect('Finish http example')
|
dut.expect('Finish http example')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.linux
|
||||||
|
@pytest.mark.host_test
|
||||||
|
@pytest.mark.parametrize('config', [
|
||||||
|
'default', 'ssldyn',
|
||||||
|
], indirect=True)
|
||||||
|
def test_examples_protocol_esp_http_client_linux(dut: Dut) -> None:
|
||||||
|
# start test
|
||||||
|
dut.expect('Connected to AP, begin http example', timeout=120)
|
||||||
|
dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Basic Auth Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Basic Auth redirect Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Relative path redirect Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Absolute path redirect Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Absolute path redirect \(manual\) Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTPS Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTPS Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP redirect to HTTPS Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP chunk encoding Status = 200, content_length = (-?\d)')
|
||||||
|
# content-len for chunked encoding is typically -1, could be a positive length in some cases
|
||||||
|
dut.expect(r'HTTP Stream reader Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTPS Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'Last esp error code: 0x8001')
|
||||||
|
dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Status = 206, content_length = (\d)')
|
||||||
|
dut.expect(r'HTTP Status = 206, content_length = 10')
|
||||||
|
dut.expect(r'HTTP Status = 206, content_length = 10')
|
||||||
|
dut.expect('Finish http example')
|
||||||
|
@@ -19,11 +19,6 @@ esp_err_t esp_netif_init(void)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t example_connect(void)
|
|
||||||
{
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t nvs_flash_init(void)
|
esp_err_t nvs_flash_init(void)
|
||||||
{
|
{
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
@@ -34,7 +29,7 @@ esp_err_t nvs_flash_erase(void)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main(void)
|
||||||
{
|
{
|
||||||
app_main();
|
app_main();
|
||||||
|
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
|
||||||
*/
|
|
||||||
#include "esp_err.h"
|
|
||||||
|
|
||||||
esp_err_t example_connect(void);
|
|
@@ -1,15 +1,14 @@
|
|||||||
# The following lines of boilerplate have to be in your project's
|
# The following lines of boilerplate have to be in your project's
|
||||||
# CMakeLists in this exact order for cmake to work correctly
|
# CMakeLists in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
if("${IDF_TARGET}" STREQUAL "linux")
|
if("${IDF_TARGET}" STREQUAL "linux")
|
||||||
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/"
|
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/"
|
||||||
"$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs")
|
"$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs")
|
||||||
set(COMPONENTS main)
|
set(COMPONENTS main)
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
|
||||||
else()
|
|
||||||
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
|
||||||
project(tcp_client)
|
project(tcp_client)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
if(${IDF_TARGET} STREQUAL "linux")
|
if(${IDF_TARGET} STREQUAL "linux")
|
||||||
set(requires esp_stubs)
|
set(requires esp_stubs protocol_examples_common)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if("${CONFIG_EXAMPLE_IPV4}" STREQUAL y)
|
if("${CONFIG_EXAMPLE_IPV4}" STREQUAL y)
|
||||||
|
Reference in New Issue
Block a user