mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
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:
@@ -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...");
|
||||
}
|
||||
|
||||
@@ -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...");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user