Commit Graph
36 Commits
Author SHA1 Message Date
hrushikesh.bhosale a4e11fb3ae ci(pre-commit): use typing.Callable for Python 3.8 compatibility on release/v5.4 2026-05-13 11:39:32 +05:30
hrushikesh.bhosale b6e19d2a42 fix(examples/system/ota/otatool): fix serial port contention in pytest
The otatool pytest calls dut.serial.close() and then immediately
launches otatool_example.py as a subprocess that re-opens the same
serial port via esptool. This fails intermittently because:

1. pytest-embedded's QueueFeederThread still holds a reference to
   the serial port file descriptor when close() returns, causing
   'argument must be an int, or have a fileno() method' error.

2. The OS has not fully released the serial port by the time the
   subprocess tries to open it.

Add a delay after serial close and retry logic for the subprocess
to handle transient serial port contention.

Made-with: Cursor
2026-05-12 11:27:49 +05:30
hrushikesh.bhosale 2baecc286c fix(https_request): write host time to NVS to eliminate SNTP dependency in CI
Replace erase_nvs + SNTP time sync with direct NVS timestamp injection
from the pytest host. This eliminates CI flakiness caused by NTP servers
being unreachable from the CI lab network.

Changes:
- Add write_time_to_nvs() helper that generates an NVS partition image
  with the current host timestamp and flashes it to the DUT before each
  test. The firmware reads this via the existing update_time_from_nvs()
  path and skips SNTP entirely.
- Remove @pytest.mark.parametrize('erase_nvs', ['y']) from all 4
  Ethernet-based tests since NVS is now written with valid data.
2026-05-12 10:49:06 +05:30
Hrushikesh Bhosale 31e9151dcb fix(http_server/ws_echo_server): Fix ws_echo_server test URI registration race condition
The WebSocket echo server tests connect immediately after seeing
'Starting server on port:' in the device log, but URI handlers
(/ws, /auth) are registered asynchronously after the server starts,
taking 40-660ms depending on config and CI load.

Wait for 'Returned from app_main()' before connecting, which
guarantees all URI handlers are registered. Add connection retry
with WebSocketBadStatusException handling to WsClient.

Extract _wait_for_server_ready() helper to deduplicate the WiFi
credential input and server readiness logic.

(cherry picked from commit 7a50e3ab04)
2026-04-17 14:45:37 +05:30
Hrushikesh Bhosale 897cad214a fix(https_x509_bundle): replace unreliable external URL in https_x509_bundle example
Replace howsmyssl.com with letsencrypt.org in the https_x509_bundle
example. howsmyssl.com is a third-party server that is frequently
unreachable from CI, causing flaky test failures. letsencrypt.org
chains to the same ISRG Root X1 CA, so the custom certificate bundle
validation coverage is identical.

Since letsencrypt.org was already present in the full bundle URL list,
remove the duplicate entry and reduce MAX_URLS from 9 to 8. All 6
unique root CAs in the stress test are still covered.

For the QEMU stress test, increase per-connection timeout from 30s to
60s and final completion timeout from 60s to 180s. QEMU emulated
network is 3-5x slower than real hardware for TLS handshakes.

(cherry picked from commit d6596eff3a)
(squashed with commit 995c0f129e)
2026-04-17 14:39:08 +05:30
hrushikesh.bhosale 4c8a024dc8 fix(esp_http_client): Fixed the esp_http_client example test
- remove the dut expect which was expect error code for invalid
request, as the HTTP_EVENT_DISCONNECTED is not getting triggered
2026-01-27 17:26:45 +05:30
hrushikesh.bhosale af5a62b455 fix(esp_http_client): Fixed the example pytest
Pytest was expect the positive content length for async req
2026-01-27 17:08:21 +05:30
hrushikesh.bhosale 6bdf491318 fix(http_server): Fixed response status code for temporary redirect
Closes https://github.com/espressif/esp-idf/issues/17791
2025-11-04 15:05:20 +05:30
hrushikesh.bhosale eae77c8767 fix(esp_http_server): Fix async requests on same socket blocking issue
1. In async requests, if the two or more requests are made on same
socket then it used to block the second request.
2. The main thread is used to block on select call. And there done
no FD_SET for particular fd.

Closes https://github.com/espressif/esp-idf/issues/16998
2025-09-18 16:11:06 +05:30
hrushikesh.bhosale 09bc497e1e feat(esp_http_client): Make https_async request under CERT BUNDLE config
Make https_async rqeuest under MBEDTLS_CERTIFICATE_BUNDLE config
2025-08-22 16:31:28 +05:30
hrushikesh.bhosale 3a7380f5bc feat(esp_http_server): Added pre handshake callback for websocket
1. If the user wants authenticate the request, then user needs to do
this before upgrading the protocol to websocket.
2. To achieve this, added pre_handshake_callack, which will execute
before handshake, i.e. before switching protocol.
2025-08-06 11:43:22 +05:30
hrushikesh.bhosale e3b14de2c1 fix(esp_http_client): Moved httpd_async request from cert_pem to crt_bundle
Moved the httpd_async request from cert_pem to esp_crt_bundle. As cert_pem
is alredy tested for howmyssl URL
2025-08-05 16:27:20 +05:30
hrushikesh.bhosale 99da2b8c2d feat(esp_tls): Added hidden config in esp-tls for dynamic buffer strategy configuration
Added the hidden config in the esp-tls component for the dynamic buffer
strategy configuration feature. So that external components like ota
can findout whether this feature is supported or not
2025-07-01 11:51:40 +05:30
hrushikesh.bhosale d7b3e3b978 feat(mbedtls): Add configuration to control dynamic buffer strategy in mbedtls
Problem:
1. In low-memory scenarios, the dynamic buffer feature can fail due to memory fragmentation.
2. It requires a contiguous 16KB heap chunk, but continuous allocation and deallocation of
the RX buffer can lead to fragmentation.
3. If another component allocates memory between these operations, it can break up the
available 16KB block, causing allocation failure.

Solution:
1. Introduce configurable strategy for using dynamic buffers in TLS connections.
2. For example, convert RX buffers to static after the TLS handshake.
3. Allow users to select the strategy via a new field in the esp_http_client_cfg_t structure.
4. The strategy can be controlled independently for each TLS session.
2025-06-26 12:22:44 +05:30
hrushikesh.bhosale 923ac4da5a feat(http_server): httpd register handler strdup failure case check
In httpd_register_uri_handler api, for the strdup function failure case was not
checked and not returned any error by freeing previously allocated memory, if the memory
allocation for strdup function did not gets successful.

Closes https://github.com/espressif/esp-idf/issues/15878
2025-05-29 11:50:14 +05:30
hrushikesh.bhosale ccdd373eca fix(esp_http_server): Async handler example stack overflow fix
1. In async handler example, on hitting /long URI and closing the
connection forcefully from client (example ctrl + c) cause more stack
size (almost 200 bytes) than successfull request.
2. The connection should be closed from the server as soon as the client
closes the connect (i.e. handler should return ESP_FAIL to close the
connection)
2025-05-09 10:18:13 +05:30
hrushikesh.bhosale 6988a149b4 feat(nvs_tool): Test for print_minimal_json
Added the test for the print_minimal_json function
and setup_minimal_json function to setup the test.
2025-04-23 16:23:18 +02:00
hrushikesh.bhosale f21a30fee2 fix(nvs_flash/nvs_tool): Fix nvs_tool.py to output required values
nvs_tool.py did not provide the minimal output support which outputs
the only necessary data.

nvs_tool.py minimal text ouptut, the deliminators were not handled
in the output

Closes https://github.com/espressif/esp-idf/issues/15274
2025-04-23 16:23:18 +02:00
hrushikesh.bhosale f96a118ebf feat(https_server): Added checks to verify if uri is empty
Added the checks if the URI is empty for the funtions httpd_req_get_url_query_len
and httpd_req_get_url_query_str in httpd_parser.c
2025-01-10 11:09:31 +05:30
hrushikesh.bhosale 9e9577b3f2 fix(esp_wifi_prov): Send failure msg on first fail
Added new sta state WIFI_PROV_ATTEMPT_FAILED, which is
returned on first failure with attemps_remaining field.
2024-12-10 17:52:47 +05:30
hrushikesh.bhosale 2bde704d1a fix(esp_wifi_prov): Moved the registering of wifi event handler
Moved the registering of of wifi event handler if under the condition
if device is already provisioned
2024-12-10 17:52:47 +05:30
hrushikesh.bhosale 66ebdd0b32 feat(ota): Added support of otatool for esp32c61
Enabled the test for esp32c61 for otatool
2024-10-10 14:48:16 +05:30
hrushikesh.bhosale 3dc0f88dc6 fix(protocols): Erased the storage partition for http_server ci test
Added api to erase storage partition for http_server ci test
2024-10-10 14:11:18 +05:30
hrushikesh.bhosale 95f5b29ffc feat(provisioning): Addded api to set Authmode in provisioning
Added api to set threshold authmode for provisioning demo
2024-10-01 19:31:53 +08:00
hrushikesh.bhosale 7db2dfce67 feat(ota): Enable support for OTA examples for c61
Tested OTA examples on esp32c61 and added their support in their
corresponding README.mds
2024-09-26 11:28:41 +05:30
hrushikesh.bhosale 6744e1bac0 docs(provisioning): Updated the provisioning documents for esp32c61
Tested and updated docs_not_updated for esp32c61 for provisioning
2024-09-24 12:04:48 +05:30
hrushikesh.bhosale aaf1f868d5 fix(nvs_sec_provider): Added check for nvs_keys partition
Added check to whether nvs_keys partition is provided or not in partiton csv.
Converted nvs_sec_provider_register_flash_enc_ctr and nvs_sec_provider_register_hmac_ctr
functions from __attribute__(constructor) to ESP_SYSTEM_INIT_FN.
2024-09-10 12:12:02 +08:00
hrushikesh.bhosale 952533bee3 docs(systems): Updated the random number generator docs for esp32c61
Udpated the non_updated_docs for esp32c61 for random number geneartor
2024-09-09 17:20:35 +05:30
hrushikesh.bhosale 737bbb4a91 docs(protocols): Updated the protocol docs for esp32c61
Checked and updated the not_updated_docs for esp32c61 for
protocols examples
2024-09-09 08:55:37 +05:30
hrushikesh.bhosale 99f0e1b526 feat(ota): Added test for checking flash encryption and anti-rollback enabled
Added test to check if flash encryption and anti-rollback enbaled
together. Added marked pytest.mark.flash_encryption to advanced OTA
test.
2024-08-30 14:11:33 +05:30
hrushikesh.bhosale ed4166a64c feat(ota): Checked the support of OTA for esp32c5
Checked the support of OTA features for esp32c5, tested
examples and added the support in README.md file. Even
added the support in systems .build-test-rules.yml
2024-08-21 11:45:41 +05:30
hrushikesh.bhosale 7d2253288f feat(protocols): Added and Tested eps32c5 with protocols examples
Tested examples from the protocols, added the support of esp32c5
into the README.md and .build-test-rules.yml file
2024-08-20 17:18:54 +05:30
hrushikesh.bhosale 74b5033284 docs(nvs_encryption): Updated the docs of nvs_encryption
Updated the documentation by changing subtype from key to
nvs_keys in nvs_encryption.rst
2024-07-26 12:21:47 +05:30
hrushikesh.bhosale 83afbfd4d7 fix(mbedtls): Check return values of md functions during ssl handshake
Added checks for mbedtls_md_setup and mbedtls_md_start
functioms in esp_ssl_tls.c
2024-07-24 11:16:20 +05:30
hrushikesh.bhosale 52cd89698e feat(esp_http_client): Added http method REPORT
Added support http REPORT method and tested it using local server.
Added test case for REPOPRT method in esp_http_client_example.c
The URL(httpbin.org) does not support for /report endpoint.

Closes https://github.com/espressif/esp-idf/issues/14147
2024-07-23 16:43:33 +05:30
hrushikesh.bhosale 5f1916f8e7 test(nvs_flash): Added test for u64 and i64 encoding methods in mfg_gen.py 2024-07-18 14:39:47 +05:30