From c8e79a926620e48830778714cfe4b2ea2453fcaf Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 25 Jul 2025 13:33:07 +1000 Subject: Update forked idf components --- lib/bt/test_apps/CMakeLists.txt | 9 -- lib/bt/test_apps/README.md | 21 ---- .../basic_unit_test/pytest_basic_unit_test.py | 6 +- lib/bt/test_apps/main/CMakeLists.txt | 6 - lib/bt/test_apps/main/test_bt_common.c | 24 ---- lib/bt/test_apps/main/test_bt_main.c | 48 -------- lib/bt/test_apps/main/test_smp.c | 126 --------------------- .../test_apps/memory_release/main/test_app_main.c | 5 +- .../memory_release/pytest_memory_release.py | 20 ++-- lib/bt/test_apps/memory_release/sdkconfig.defaults | 2 + lib/bt/test_apps/pytest_bt.py | 12 -- lib/bt/test_apps/sdkconfig.defaults | 3 - 12 files changed, 22 insertions(+), 260 deletions(-) delete mode 100644 lib/bt/test_apps/CMakeLists.txt delete mode 100644 lib/bt/test_apps/README.md delete mode 100644 lib/bt/test_apps/main/CMakeLists.txt delete mode 100644 lib/bt/test_apps/main/test_bt_common.c delete mode 100644 lib/bt/test_apps/main/test_bt_main.c delete mode 100644 lib/bt/test_apps/main/test_smp.c delete mode 100644 lib/bt/test_apps/pytest_bt.py delete mode 100644 lib/bt/test_apps/sdkconfig.defaults (limited to 'lib/bt/test_apps') diff --git a/lib/bt/test_apps/CMakeLists.txt b/lib/bt/test_apps/CMakeLists.txt deleted file mode 100644 index ab61d4b6..00000000 --- a/lib/bt/test_apps/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -cmake_minimum_required(VERSION 3.16) - -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -set(COMPONENTS main) -list(PREPEND SDKCONFIG_DEFAULTS - "$ENV{IDF_PATH}/tools/test_apps/configs/sdkconfig.debug_helpers" - "sdkconfig.defaults") - -project(bt_test) diff --git a/lib/bt/test_apps/README.md b/lib/bt/test_apps/README.md deleted file mode 100644 index fc828476..00000000 --- a/lib/bt/test_apps/README.md +++ /dev/null @@ -1,21 +0,0 @@ -| Supported Targets | ESP32 | ESP32-C3 | -| ----------------- | ----- | -------- | - -# `bt` component unit tests - -When adding new test cases, check if the `depends_components` list in `.build-test-rules.yml` needs to be updated to include additional components. The test app will only be built and tested when these components are modified. - -To build and run this test app, using esp32c3 target for example: - -```bash -idf.py set-target esp32c3 -idf.py build flash monitor -``` - -To run tests using pytest: - -```bash -idf.py set-target esp32c3 -idf.py build -pytest --target=esp32c3 -``` diff --git a/lib/bt/test_apps/basic_unit_test/pytest_basic_unit_test.py b/lib/bt/test_apps/basic_unit_test/pytest_basic_unit_test.py index de3d235b..98e7cd8a 100644 --- a/lib/bt/test_apps/basic_unit_test/pytest_basic_unit_test.py +++ b/lib/bt/test_apps/basic_unit_test/pytest_basic_unit_test.py @@ -1,11 +1,11 @@ -# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: CC0-1.0 import pytest from pytest_embedded import Dut +from pytest_embedded_idf.utils import idf_parametrize @pytest.mark.generic -@pytest.mark.esp32 -@pytest.mark.esp32c3 +@idf_parametrize('target', ['esp32', 'esp32c3'], indirect=['target']) def test_bt(dut: Dut) -> None: dut.run_all_single_board_cases() diff --git a/lib/bt/test_apps/main/CMakeLists.txt b/lib/bt/test_apps/main/CMakeLists.txt deleted file mode 100644 index 6aecb24e..00000000 --- a/lib/bt/test_apps/main/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -idf_component_register(SRCS "test_bt_main.c" - "test_bt_common.c" - "test_smp.c" - INCLUDE_DIRS "." - PRIV_REQUIRES unity bt - WHOLE_ARCHIVE) diff --git a/lib/bt/test_apps/main/test_bt_common.c b/lib/bt/test_apps/main/test_bt_common.c deleted file mode 100644 index 402633d0..00000000 --- a/lib/bt/test_apps/main/test_bt_common.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -/* - Tests for the BT common things implementation -*/ - -#include - -#include "unity.h" -#include "sdkconfig.h" - -// btdm_controller_compile_version_check defined only for ESP32 -#ifdef CONFIG_IDF_TARGET_ESP32 -extern bool btdm_controller_compile_version_check(void); - -TEST_CASE("bt_controller_git_commit_check", "[bt_common]") -{ - TEST_ASSERT(btdm_controller_compile_version_check() == true); -} -#endif diff --git a/lib/bt/test_apps/main/test_bt_main.c b/lib/bt/test_apps/main/test_bt_main.c deleted file mode 100644 index 53a93c95..00000000 --- a/lib/bt/test_apps/main/test_bt_main.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "unity.h" -#include "unity_test_runner.h" -#include "esp_heap_caps.h" - -#define TEST_MEMORY_LEAK_THRESHOLD_DEFAULT 0 -static int leak_threshold = TEST_MEMORY_LEAK_THRESHOLD_DEFAULT; -void set_leak_threshold(int threshold) -{ - leak_threshold = threshold; -} - -static size_t before_free_8bit; -static size_t before_free_32bit; - -static void check_leak(size_t before_free, size_t after_free, const char *type) -{ - ssize_t delta = after_free - before_free; - printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); - TEST_ASSERT_MESSAGE(delta >= leak_threshold, "memory leak"); -} - -void setUp(void) -{ - before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); - before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); -} - -void tearDown(void) -{ - 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"); - check_leak(before_free_32bit, after_free_32bit, "32BIT"); - - leak_threshold = TEST_MEMORY_LEAK_THRESHOLD_DEFAULT; -} - -void app_main(void) -{ - printf("Running bt component tests\n"); - unity_run_menu(); -} diff --git a/lib/bt/test_apps/main/test_smp.c b/lib/bt/test_apps/main/test_smp.c deleted file mode 100644 index ea89ec26..00000000 --- a/lib/bt/test_apps/main/test_smp.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -/* - * Tests for the BLE SMP implementation - */ - -#include - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "unity.h" -#include "esp_random.h" - -#include "esp_bt_main.h" -#include "esp_bt_device.h" -#include "esp_gap_ble_api.h" - -#define KEY_LENGTH_DWORDS_P256 8 - -typedef unsigned long DWORD; -typedef uint32_t UINT32; - -typedef struct { - DWORD x[KEY_LENGTH_DWORDS_P256]; - DWORD y[KEY_LENGTH_DWORDS_P256]; - DWORD z[KEY_LENGTH_DWORDS_P256]; -} Point; - -typedef struct { - // curve's coefficients - DWORD a[KEY_LENGTH_DWORDS_P256]; - DWORD b[KEY_LENGTH_DWORDS_P256]; - - //whether a is -3 - int a_minus3; - - // prime modulus - DWORD p[KEY_LENGTH_DWORDS_P256]; - - // Omega, p = 2^m -omega - DWORD omega[KEY_LENGTH_DWORDS_P256]; - - // base point, a point on E of order r - Point G; - -} elliptic_curve_t; - -extern void ECC_PointMult_Bin_NAF(Point *q, Point *p, DWORD *n, uint32_t keyLength); -extern bool ECC_CheckPointIsInElliCur_P256(Point *p); -extern void p_256_init_curve(UINT32 keyLength); -extern elliptic_curve_t curve_p256; - -static void bt_rand(void *buf, size_t len) -{ - if (!len) { - return; - } - // Reset the buf value to the fixed value. - memset(buf, 0x55, len); - - for (int i = 0; i < (int)(len / sizeof(uint32_t)); i++) { - uint32_t rand = esp_random(); - memcpy(buf + i * sizeof(uint32_t), &rand, sizeof(uint32_t)); - } - - return; -} - -TEST_CASE("ble_smp_public_key_check", "[ble_smp]") -{ - /* We wait init finish 200ms here */ - vTaskDelay(200 / portTICK_PERIOD_MS); - Point public_key; - DWORD private_key[KEY_LENGTH_DWORDS_P256] = {[0 ... (KEY_LENGTH_DWORDS_P256 - 1)] = 0x12345678}; - p_256_init_curve(KEY_LENGTH_DWORDS_P256); - ECC_PointMult_Bin_NAF(&public_key, &(curve_p256.G), private_key, KEY_LENGTH_DWORDS_P256); - /* Check Is the public key generated by the system on the given elliptic curve */ - TEST_ASSERT(ECC_CheckPointIsInElliCur_P256(&public_key)); - /* We simulate the attacker and set the y coordinate of the public key to 0. */ - for (int i = 0; i < KEY_LENGTH_DWORDS_P256; i++) { - public_key.y[i] = 0x0; - } - /* At this point the public key should not be on the given elliptic curve. */ - TEST_ASSERT(!ECC_CheckPointIsInElliCur_P256(&public_key)); - /* Test whether the G point on the protocol is on a given elliptic curve */ - TEST_ASSERT(ECC_CheckPointIsInElliCur_P256(&(curve_p256.G))); - /* test 100 times when the private key is generated by the random number. */ - for (int j = 0; j < 100; j++) { - bt_rand(private_key, sizeof(DWORD)*KEY_LENGTH_DWORDS_P256); - ECC_PointMult_Bin_NAF(&public_key, &(curve_p256.G), private_key, KEY_LENGTH_DWORDS_P256); - /* Check Is the public key generated by the system on the given elliptic curve */ - TEST_ASSERT(ECC_CheckPointIsInElliCur_P256(&public_key)); - } -} - -TEST_CASE("ble_smp_set_clear_static_passkey", "[ble_smp]") -{ - /* We wait init finish 200ms here */ - vTaskDelay(200 / portTICK_PERIOD_MS); - esp_ble_auth_req_t auth_req = ESP_LE_AUTH_BOND; - uint32_t passkey = 123456; - /* test len = 0 when type != ESP_BLE_SM_CLEAR_STATIC_PASSKEY */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_AUTHEN_REQ_MODE, &auth_req, 0) == ESP_ERR_INVALID_ARG); - /* test function */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_AUTHEN_REQ_MODE, &auth_req, sizeof(esp_ble_auth_req_t)) != ESP_ERR_INVALID_ARG); - /* test type >= ESP_BLE_SM_MAX_PARAM */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_MAX_PARAM, &passkey, sizeof(uint32_t)) == ESP_ERR_INVALID_ARG); - /* test len < sizeof(uint32_t) when type is ESP_BLE_SM_SET_STATIC_PASSKEY */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, sizeof(uint8_t)) != ESP_ERR_INVALID_ARG); - /* test value is NULL when type != ESP_BLE_SM_CLEAR_STATIC_PASSKEY */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, NULL, sizeof(uint8_t)) == ESP_ERR_INVALID_ARG); - /* test value is NULL and len is 0 when type != ESP_BLE_SM_CLEAR_STATIC_PASSKEY */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, NULL, 0) == ESP_ERR_INVALID_ARG); - /* test function */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, sizeof(uint32_t)) != ESP_ERR_INVALID_ARG); - /* test function */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_CLEAR_STATIC_PASSKEY, &passkey, sizeof(uint32_t)) != ESP_ERR_INVALID_ARG); - /* test function */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_CLEAR_STATIC_PASSKEY, NULL, sizeof(uint32_t)) != ESP_ERR_INVALID_ARG); - /* test function */ - TEST_ASSERT(esp_ble_gap_set_security_param(ESP_BLE_SM_CLEAR_STATIC_PASSKEY, NULL, 0) != ESP_ERR_INVALID_ARG); -} diff --git a/lib/bt/test_apps/memory_release/main/test_app_main.c b/lib/bt/test_apps/memory_release/main/test_app_main.c index 562d1d97..909a730d 100644 --- a/lib/bt/test_apps/memory_release/main/test_app_main.c +++ b/lib/bt/test_apps/memory_release/main/test_app_main.c @@ -11,6 +11,7 @@ #include "nvs_flash.h" #include "multi_heap.h" +#include "esp_heap_caps.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -127,5 +128,7 @@ void app_main(void) } ESP_LOGI(tag, "Free heap size increased by %"PRIu32" bytes", free_after - free_before); - ESP_LOGI(tag, "SUCCESS"); + if (heap_caps_check_integrity_all(true)) { + ESP_LOGI(tag, "Comprehensive heap check: SUCCESS"); + } } diff --git a/lib/bt/test_apps/memory_release/pytest_memory_release.py b/lib/bt/test_apps/memory_release/pytest_memory_release.py index dbefc908..d5d70fcd 100644 --- a/lib/bt/test_apps/memory_release/pytest_memory_release.py +++ b/lib/bt/test_apps/memory_release/pytest_memory_release.py @@ -1,15 +1,21 @@ -# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 import pytest from pytest_embedded import Dut +from pytest_embedded_idf.utils import idf_parametrize -@pytest.mark.parametrize('config', [ - pytest.param('default', marks=[pytest.mark.esp32, pytest.mark.esp32c2, pytest.mark.generic]), - pytest.param('iram', marks=[pytest.mark.esp32c2, pytest.mark.generic]), - pytest.param('psram', marks=[pytest.mark.esp32, pytest.mark.psram]), -], indirect=True) +@idf_parametrize( + 'config,target,markers', + [ + ('default', 'esp32', (pytest.mark.generic,)), + ('default', 'esp32c2', (pytest.mark.generic,)), + ('iram', 'esp32c2', (pytest.mark.generic,)), + ('psram', 'esp32', (pytest.mark.psram,)), + ], + indirect=['config', 'target'], +) def test_bt_memory_release(dut: Dut) -> None: dut.expect_exact('BLE Host Task Started', timeout=6) dut.expect_exact('BLE Host Task Stopped', timeout=8) - dut.expect_exact('SUCCESS', timeout=10) + dut.expect_exact('Comprehensive heap check: SUCCESS', timeout=10) diff --git a/lib/bt/test_apps/memory_release/sdkconfig.defaults b/lib/bt/test_apps/memory_release/sdkconfig.defaults index a22d8109..fc2b04c1 100644 --- a/lib/bt/test_apps/memory_release/sdkconfig.defaults +++ b/lib/bt/test_apps/memory_release/sdkconfig.defaults @@ -1,2 +1,4 @@ +CONFIG_HEAP_POISONING_COMPREHENSIVE=y + CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/bt/test_apps/pytest_bt.py b/lib/bt/test_apps/pytest_bt.py deleted file mode 100644 index 74b0a76a..00000000 --- a/lib/bt/test_apps/pytest_bt.py +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD -# SPDX-License-Identifier: CC0-1.0 - -import pytest -from pytest_embedded import Dut - - -@pytest.mark.generic -@pytest.mark.esp32 -@pytest.mark.esp32c3 -def test_bt(dut: Dut) -> None: - dut.run_all_single_board_cases() diff --git a/lib/bt/test_apps/sdkconfig.defaults b/lib/bt/test_apps/sdkconfig.defaults deleted file mode 100644 index 5847dd3c..00000000 --- a/lib/bt/test_apps/sdkconfig.defaults +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_BT_ENABLED=y -CONFIG_UNITY_FREERTOS_STACK_SIZE=12288 -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=n -- cgit v1.2.3