Merge branch 'fix/eloop-wifi-deinit-leak-delay_v6.1' into 'release/v6.1'

test(wifi): wait for the idle task after esp_wifi_deinit in Wi-Fi UTs (Backport v6.1)

See merge request espressif/esp-idf!52511
This commit is contained in:
Jiang Jiang Jian
2026-09-09 10:53:28 +08:00
5 changed files with 28 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -8,6 +8,8 @@
#include "esp_log.h"
#include "test_utils.h"
#include "unity_test_utils.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#define TAG "test_wifi"
#define EMPH_STR(s) "****** "s" ******"
@@ -36,6 +38,8 @@ TEST_CASE("wifi set country code", "[wifi_init]")
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("esp_wifi_init"));
TEST_ESP_OK(esp_wifi_init(&cfg));
@@ -56,7 +60,8 @@ TEST_CASE("wifi set country code", "[wifi_init]")
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, "test passed...");
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -60,7 +60,8 @@ static void wifi_driver_can_start_on_APP_CPU_task(void* arg)
TEST_ESP_OK(esp_wifi_init(&cfg));
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit..."));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("event_deinit"));
TEST_ESP_OK(event_deinit());
ESP_LOGI(TAG, "exit task...");
@@ -99,7 +100,8 @@ TEST_CASE("Calling esp_wifi_stop() with start", "[wifi_init]")
TEST_ESP_OK(esp_wifi_stop());
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("event_deinit"));
TEST_ESP_OK(event_deinit());
ESP_LOGI(TAG, "test passed...");
@@ -116,7 +118,8 @@ TEST_CASE("Calling esp_wifi_stop() without start", "[wifi_init]")
TEST_ESP_OK(esp_wifi_stop());
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("event_deinit"));
TEST_ESP_OK(event_deinit());
ESP_LOGI(TAG, "test passed...");
@@ -137,7 +140,8 @@ TEST_CASE("Calling esp_wifi_deinit() without stop", "[wifi_init]")
TEST_ESP_OK(esp_wifi_stop());
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("event_deinit"));
TEST_ESP_OK(event_deinit());
ESP_LOGI(TAG, "test passed...");
@@ -154,7 +158,8 @@ TEST_CASE("Calling esp_wifi_connect() without start", "[wifi_init]")
TEST_ESP_ERR(ESP_ERR_WIFI_NOT_STARTED, esp_wifi_connect());
ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit"));
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
ESP_LOGI(TAG, EMPH_STR("event_deinit"));
TEST_ESP_OK(event_deinit());
ESP_LOGI(TAG, "test passed...");

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -11,6 +11,8 @@
#include "esp_wifi.h"
#include "esp_heap_caps.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// Some resources are lazy allocated in wifi and lwip
// #define TEST_MEMORY_LEAK_THRESHOLD (-1546)
@@ -39,6 +41,8 @@ void setUp(void)
void tearDown(void)
{
ESP_ERROR_CHECK(esp_wifi_deinit());
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(pdMS_TO_TICKS(300));
size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
check_leak(before_free_8bit, after_free_8bit, "8BIT");

View File

@@ -97,6 +97,8 @@ static void eloop_test_wifi_stop(void)
{
TEST_ESP_OK(esp_wifi_stop());
TEST_ESP_OK(esp_wifi_deinit());
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(300 / portTICK_PERIOD_MS);
}
static void reset_timeout_ctx(struct timeout_test_ctx *ctx, void *sem)
@@ -269,7 +271,6 @@ TEST_CASE("Test eloop timers run", "[eloop]")
vTaskDelay(250 / portTICK_PERIOD_MS);
fired_before_stop = t;
eloop_test_wifi_stop();
vTaskDelay(300 / portTICK_PERIOD_MS);
TEST_ASSERT_EQUAL(fired_before_stop, t);
TEST_ASSERT_TRUE(t >= 1);
TEST_ASSERT_TRUE(t < 6);

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -105,7 +105,8 @@ static void stop_wifi(void)
}
vTaskDelay(500 / portTICK_PERIOD_MS);
TEST_ESP_OK(esp_wifi_deinit());
vTaskDelay(1);
/* Let the idle task reclaim the deleted Wi-Fi task's stack and TCB before the leak check. */
vTaskDelay(300 / portTICK_PERIOD_MS);
}
static void start_wifi_as_sta(void)