Merge branch 'ci/fix_failures_in_esp_http_client_example_v5.1' into 'release/v5.1'

CI: fix esp_http_client example failures in CI. Timeout was observed in the... (v5.1)

See merge request espressif/esp-idf!24949
This commit is contained in:
Mahavir Jain
2023-07-27 12:42:10 +08:00
7 changed files with 39 additions and 22 deletions

View File

@@ -265,6 +265,14 @@ pytest_examples_esp32_ethernet:
- build_pytest_examples_esp32 - build_pytest_examples_esp32
tags: [ esp32, ethernet] tags: [ esp32, ethernet]
pytest_examples_esp32_ethernet_httpbin:
extends:
- .pytest_examples_dir_template
- .rules:test:example_test-esp32-ethernet
needs:
- build_pytest_examples_esp32
tags: [ esp32, httpbin]
pytest_examples_esp32_8mb_flash: pytest_examples_esp32_8mb_flash:
extends: extends:
- .pytest_examples_dir_template - .pytest_examples_dir_template

View File

@@ -123,6 +123,7 @@ ENV_MARKERS = {
'esp32eco3': 'Runner with esp32 eco3 connected', 'esp32eco3': 'Runner with esp32 eco3 connected',
'ecdsa_efuse': 'Runner with test ECDSA private keys programmed in efuse', 'ecdsa_efuse': 'Runner with test ECDSA private keys programmed in efuse',
'ccs811': 'Runner with CCS811 connected', 'ccs811': 'Runner with CCS811 connected',
'httpbin': 'runner for tests that need to access the httpbin service',
# multi-dut markers # multi-dut markers
'ieee802154': 'ieee802154 related tests should run on ieee802154 runners.', 'ieee802154': 'ieee802154 related tests should run on ieee802154 runners.',
'openthread_br': 'tests should be used for openthread border router.', 'openthread_br': 'tests should be used for openthread border router.',

View File

@@ -0,0 +1,7 @@
menu "Example Configuration"
config EXAMPLE_HTTP_ENDPOINT
string "Example HTTP Endpoint"
default "httpbin.org"
help
Target endpoint host-name for the example to use.
endmenu

View File

@@ -50,7 +50,6 @@ extern const char howsmyssl_com_root_cert_pem_end[] asm("_binary_howsmyssl_com
extern const char postman_root_cert_pem_start[] asm("_binary_postman_root_cert_pem_start"); extern const char postman_root_cert_pem_start[] asm("_binary_postman_root_cert_pem_start");
extern const char postman_root_cert_pem_end[] asm("_binary_postman_root_cert_pem_end"); extern const char postman_root_cert_pem_end[] asm("_binary_postman_root_cert_pem_end");
esp_err_t _http_event_handler(esp_http_client_event_t *evt) esp_err_t _http_event_handler(esp_http_client_event_t *evt)
{ {
static char *output_buffer; // Buffer to store response of http request from event handler static char *output_buffer; // Buffer to store response of http request from event handler
@@ -146,7 +145,7 @@ static void http_rest_with_url(void)
* If URL as well as host and path parameters are specified, values of host and path will be considered. * If URL as well as host and path parameters are specified, values of host and path will be considered.
*/ */
esp_http_client_config_t config = { esp_http_client_config_t config = {
.host = "httpbin.org", .host = CONFIG_EXAMPLE_HTTP_ENDPOINT,
.path = "/get", .path = "/get",
.query = "esp", .query = "esp",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
@@ -168,7 +167,7 @@ static void http_rest_with_url(void)
// POST // POST
const char *post_data = "{\"field1\":\"value1\"}"; const char *post_data = "{\"field1\":\"value1\"}";
esp_http_client_set_url(client, "http://httpbin.org/post"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/post");
esp_http_client_set_method(client, HTTP_METHOD_POST); esp_http_client_set_method(client, HTTP_METHOD_POST);
esp_http_client_set_header(client, "Content-Type", "application/json"); esp_http_client_set_header(client, "Content-Type", "application/json");
esp_http_client_set_post_field(client, post_data, strlen(post_data)); esp_http_client_set_post_field(client, post_data, strlen(post_data));
@@ -182,7 +181,7 @@ static void http_rest_with_url(void)
} }
//PUT //PUT
esp_http_client_set_url(client, "http://httpbin.org/put"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/put");
esp_http_client_set_method(client, HTTP_METHOD_PUT); esp_http_client_set_method(client, HTTP_METHOD_PUT);
err = esp_http_client_perform(client); err = esp_http_client_perform(client);
if (err == ESP_OK) { if (err == ESP_OK) {
@@ -194,7 +193,7 @@ static void http_rest_with_url(void)
} }
//PATCH //PATCH
esp_http_client_set_url(client, "http://httpbin.org/patch"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/patch");
esp_http_client_set_method(client, HTTP_METHOD_PATCH); esp_http_client_set_method(client, HTTP_METHOD_PATCH);
esp_http_client_set_post_field(client, NULL, 0); esp_http_client_set_post_field(client, NULL, 0);
err = esp_http_client_perform(client); err = esp_http_client_perform(client);
@@ -207,7 +206,7 @@ static void http_rest_with_url(void)
} }
//DELETE //DELETE
esp_http_client_set_url(client, "http://httpbin.org/delete"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/delete");
esp_http_client_set_method(client, HTTP_METHOD_DELETE); esp_http_client_set_method(client, HTTP_METHOD_DELETE);
err = esp_http_client_perform(client); err = esp_http_client_perform(client);
if (err == ESP_OK) { if (err == ESP_OK) {
@@ -219,7 +218,7 @@ static void http_rest_with_url(void)
} }
//HEAD //HEAD
esp_http_client_set_url(client, "http://httpbin.org/get"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/get");
esp_http_client_set_method(client, HTTP_METHOD_HEAD); esp_http_client_set_method(client, HTTP_METHOD_HEAD);
err = esp_http_client_perform(client); err = esp_http_client_perform(client);
if (err == ESP_OK) { if (err == ESP_OK) {
@@ -236,7 +235,7 @@ static void http_rest_with_url(void)
static void http_rest_with_hostname_path(void) static void http_rest_with_hostname_path(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.host = "httpbin.org", .host = CONFIG_EXAMPLE_HTTP_ENDPOINT,
.path = "/get", .path = "/get",
.transport_type = HTTP_TRANSPORT_OVER_TCP, .transport_type = HTTP_TRANSPORT_OVER_TCP,
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
@@ -330,7 +329,7 @@ static void http_auth_basic(void)
* To disable authorization retries, set max_authorization_retries to -1. * To disable authorization retries, set max_authorization_retries to -1.
*/ */
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://user:passwd@httpbin.org/basic-auth/user/passwd", .url = "http://user:passwd@"CONFIG_EXAMPLE_HTTP_ENDPOINT"/basic-auth/user/passwd",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
.auth_type = HTTP_AUTH_TYPE_BASIC, .auth_type = HTTP_AUTH_TYPE_BASIC,
.max_authorization_retries = -1, .max_authorization_retries = -1,
@@ -351,7 +350,7 @@ static void http_auth_basic(void)
static void http_auth_basic_redirect(void) static void http_auth_basic_redirect(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://user:passwd@httpbin.org/basic-auth/user/passwd", .url = "http://user:passwd@"CONFIG_EXAMPLE_HTTP_ENDPOINT"/basic-auth/user/passwd",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -372,7 +371,7 @@ static void http_auth_basic_redirect(void)
static void http_auth_digest(void) static void http_auth_digest(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://user:passwd@httpbin.org/digest-auth/auth/user/passwd/MD5/never", .url = "http://user:passwd@"CONFIG_EXAMPLE_HTTP_ENDPOINT"/digest-auth/auth/user/passwd/MD5/never",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -436,7 +435,7 @@ static void https_with_hostname_path(void)
static void http_encoded_query(void) static void http_encoded_query(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.host = "httpbin.org", .host = CONFIG_EXAMPLE_HTTP_ENDPOINT,
.path = "/get", .path = "/get",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
@@ -464,7 +463,7 @@ static void http_encoded_query(void)
static void http_relative_redirect(void) static void http_relative_redirect(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/relative-redirect/3", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/relative-redirect/3",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -483,7 +482,7 @@ static void http_relative_redirect(void)
static void http_absolute_redirect(void) static void http_absolute_redirect(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/absolute-redirect/3", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/absolute-redirect/3",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -502,7 +501,7 @@ static void http_absolute_redirect(void)
static void http_absolute_redirect_manual(void) static void http_absolute_redirect_manual(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/absolute-redirect/3", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/absolute-redirect/3",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
.disable_auto_redirect = true, .disable_auto_redirect = true,
}; };
@@ -522,7 +521,7 @@ static void http_absolute_redirect_manual(void)
static void http_redirect_to_https(void) static void http_redirect_to_https(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/redirect-to?url=https%3A%2F%2Fwww.howsmyssl.com", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/redirect-to?url=https://www.howsmyssl.com",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
.cert_pem = howsmyssl_com_root_cert_pem_start, .cert_pem = howsmyssl_com_root_cert_pem_start,
}; };
@@ -543,7 +542,7 @@ static void http_redirect_to_https(void)
static void http_download_chunk(void) static void http_download_chunk(void)
{ {
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/stream-bytes/8912", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/stream-bytes/8912",
.event_handler = _http_event_handler, .event_handler = _http_event_handler,
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -567,7 +566,7 @@ static void http_perform_as_stream_reader(void)
return; return;
} }
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/get", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/get",
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
esp_err_t err; esp_err_t err;
@@ -657,7 +656,7 @@ static void http_native_request(void)
char output_buffer[MAX_HTTP_OUTPUT_BUFFER] = {0}; // Buffer to store response of http request char output_buffer[MAX_HTTP_OUTPUT_BUFFER] = {0}; // Buffer to store response of http request
int content_length = 0; int content_length = 0;
esp_http_client_config_t config = { esp_http_client_config_t config = {
.url = "http://httpbin.org/get", .url = "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/get",
}; };
esp_http_client_handle_t client = esp_http_client_init(&config); esp_http_client_handle_t client = esp_http_client_init(&config);
@@ -686,7 +685,7 @@ static void http_native_request(void)
// POST Request // POST Request
const char *post_data = "{\"field1\":\"value1\"}"; const char *post_data = "{\"field1\":\"value1\"}";
esp_http_client_set_url(client, "http://httpbin.org/post"); esp_http_client_set_url(client, "http://"CONFIG_EXAMPLE_HTTP_ENDPOINT"/post");
esp_http_client_set_method(client, HTTP_METHOD_POST); esp_http_client_set_method(client, HTTP_METHOD_POST);
esp_http_client_set_header(client, "Content-Type", "application/json"); esp_http_client_set_header(client, "Content-Type", "application/json");
err = esp_http_client_open(client, strlen(post_data)); err = esp_http_client_open(client, strlen(post_data));

View File

@@ -8,7 +8,7 @@ from pytest_embedded import Dut
@pytest.mark.esp32 @pytest.mark.esp32
@pytest.mark.ethernet @pytest.mark.httpbin
def test_examples_protocol_esp_http_client(dut: Dut) -> None: def test_examples_protocol_esp_http_client(dut: Dut) -> None:
""" """
steps: | steps: |
@@ -55,7 +55,7 @@ def test_examples_protocol_esp_http_client(dut: Dut) -> None:
@pytest.mark.esp32 @pytest.mark.esp32
@pytest.mark.ethernet @pytest.mark.httpbin
@pytest.mark.parametrize('config', [ @pytest.mark.parametrize('config', [
'ssldyn', 'ssldyn',
], indirect=True) ], indirect=True)

View File

@@ -9,3 +9,4 @@ CONFIG_EXAMPLE_ETH_PHY_ADDR=1
CONFIG_EXAMPLE_CONNECT_IPV6=y CONFIG_EXAMPLE_CONNECT_IPV6=y
CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y
CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y
CONFIG_EXAMPLE_HTTP_ENDPOINT="httpbin.espressif.cn"

View File

@@ -11,3 +11,4 @@ CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y
CONFIG_MBEDTLS_DYNAMIC_BUFFER=y CONFIG_MBEDTLS_DYNAMIC_BUFFER=y
CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT=y CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT=y
CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA=y CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA=y
CONFIG_EXAMPLE_HTTP_ENDPOINT="httpbin.espressif.cn"