mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
ci: Migrate mbedtls unit tests from unit-test-app to component-test-app
This commit is contained in:
parent
a2c132c5c3
commit
146f101289
7
components/mbedtls/test_apps/CMakeLists.txt
Normal file
7
components/mbedtls/test_apps/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
||||
#This is the project CMakeLists.txt file for the test subproject
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(mbedtls_test)
|
2
components/mbedtls/test_apps/README.md
Normal file
2
components/mbedtls/test_apps/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-S2 | ESP32-S3 |
|
||||
| ----------------- | ----- | -------- | -------- | -------- | -------- |
|
@ -7,8 +7,9 @@ set(TEST_CRTS "crts/server_cert_chain.pem"
|
||||
|
||||
idf_component_register(SRC_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "."
|
||||
PRIV_REQUIRES cmock test_utils mbedtls esp_timer
|
||||
EMBED_TXTFILES ${TEST_CRTS})
|
||||
PRIV_REQUIRES cmock test_utils mbedtls esp_timer unity
|
||||
EMBED_TXTFILES ${TEST_CRTS}
|
||||
WHOLE_ARCHIVE)
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
|
||||
|
||||
idf_component_get_property(mbedtls mbedtls COMPONENT_LIB)
|
19
components/mbedtls/test_apps/main/app_main.c
Normal file
19
components/mbedtls/test_apps/main/app_main.c
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "test_utils.h"
|
||||
|
||||
static void test_task(void *pvParameters)
|
||||
{
|
||||
vTaskDelay(2); /* Delay a bit to let the main task be deleted */
|
||||
unity_run_menu();
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
xTaskCreatePinnedToCore(test_task, "testTask", UNITY_FREERTOS_STACK_SIZE, NULL, UNITY_FREERTOS_PRIORITY, NULL, UNITY_FREERTOS_CPU);
|
||||
}
|
@ -1,3 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
/* mbedTLS AES test
|
||||
*/
|
||||
#include <string.h>
|
@ -1,3 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
/* mbedTLS AES performance test
|
||||
*/
|
||||
#include <string.h>
|
@ -1,3 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
/* Implementation of utility functions to verify
|
||||
unit tests aren't performing SMP-unsafe DPORT reads.
|
||||
*/
|
@ -1,3 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
/* Utility functions to test that APB access is still safe
|
||||
while the other CPU performs some set of DPORT accesses
|
||||
|
@ -1,3 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
/* mbedTLS self-tests as unit tests
|
||||
|
||||
Focus on testing functionality where we use ESP32 hardware
|
@ -20,6 +20,7 @@
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "unity.h"
|
||||
#include "test_utils.h"
|
||||
#include "memory_checks.h"
|
||||
#include "ccomp_timer.h"
|
||||
|
||||
#define PRINT_DEBUG_INFO
|
||||
@ -423,23 +424,24 @@ static void print_rsa_details(mbedtls_rsa_context *rsa)
|
||||
}
|
||||
#endif
|
||||
|
||||
/** NOTE:
|
||||
* For ESP32-S3, CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is enabled
|
||||
* by default; allocating a lock of 92 bytes, which is never freed.
|
||||
*
|
||||
* MR !18574 adds the MPI crypto lock for S3 increasing the leakage by
|
||||
* 92 bytes. This caused the RSA UT to fail with a leakage more than
|
||||
* 1024 bytes.
|
||||
*
|
||||
* The allocations made by ESP32-S2 (944 bytes) and ESP32-S3 are the same,
|
||||
* except for the JTAG lock (92 + 944 > 1024).
|
||||
*/
|
||||
#if CONFIG_FREERTOS_SMP // IDF-5260
|
||||
TEST_CASE("test performance RSA key operations", "[bignum][leaks=1088][timeout=60]")
|
||||
TEST_CASE("test performance RSA key operations", "[bignum][timeout=60]")
|
||||
#else
|
||||
TEST_CASE("test performance RSA key operations", "[bignum][leaks=1088]")
|
||||
TEST_CASE("test performance RSA key operations", "[bignum]")
|
||||
#endif
|
||||
{
|
||||
/** NOTE:
|
||||
* For ESP32-S3, CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is enabled
|
||||
* by default; allocating a lock of 92 bytes, which is never freed.
|
||||
*
|
||||
* MR !18574 adds the MPI crypto lock for S3 increasing the leakage by
|
||||
* 92 bytes. This caused the RSA UT to fail with a leakage more than
|
||||
* 1024 bytes.
|
||||
*
|
||||
* The allocations made by ESP32-S2 (944 bytes) and ESP32-S3 are the same,
|
||||
* except for the JTAG lock (92 + 944 > 1024).
|
||||
*/
|
||||
TEST_ESP_OK(test_utils_set_leak_level(1088, ESP_LEAK_TYPE_CRITICAL, ESP_COMP_LEAK_GENERAL));
|
||||
for (int keysize = 2048; keysize <= SOC_RSA_MAX_BIT_LEN; keysize += 1024) {
|
||||
rsa_key_operations(keysize, true, false);
|
||||
}
|
64
components/mbedtls/test_apps/pytest_mbedtls_ut.py
Normal file
64
components/mbedtls/test_apps/pytest_mbedtls_ut.py
Normal file
@ -0,0 +1,64 @@
|
||||
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import pytest
|
||||
from pytest_embedded import Dut
|
||||
|
||||
|
||||
@pytest.mark.supported_targets
|
||||
@pytest.mark.generic
|
||||
def test_mbedtls(dut: Dut) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('*')
|
||||
dut.expect_unity_test_output(timeout=120)
|
||||
|
||||
|
||||
@pytest.mark.esp32
|
||||
@pytest.mark.esp32s2
|
||||
@pytest.mark.esp32s3
|
||||
@pytest.mark.esp32c3
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize(
|
||||
'config',
|
||||
[
|
||||
'aes_no_hw',
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
def test_mbedtls_aes_no_hw(dut: Dut) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('*')
|
||||
dut.expect_unity_test_output(timeout=120)
|
||||
|
||||
|
||||
@pytest.mark.esp32
|
||||
@pytest.mark.esp32s2
|
||||
@pytest.mark.esp32s3
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize(
|
||||
'config',
|
||||
[
|
||||
'psram',
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
def test_mbedtls_psram(dut: Dut) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('*')
|
||||
dut.expect_unity_test_output(timeout=120)
|
||||
|
||||
|
||||
@pytest.mark.esp32
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize(
|
||||
'config',
|
||||
[
|
||||
'psram_esp32',
|
||||
'psram_all_ext',
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
def test_mbedtls_psram_esp32(dut: Dut) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('*')
|
||||
dut.expect_unity_test_output(timeout=120)
|
2
components/mbedtls/test_apps/sdkconfig.ci.aes_no_hw
Normal file
2
components/mbedtls/test_apps/sdkconfig.ci.aes_no_hw
Normal file
@ -0,0 +1,2 @@
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||
CONFIG_MBEDTLS_MPI_USE_INTERRUPT=n
|
0
components/mbedtls/test_apps/sdkconfig.ci.default
Normal file
0
components/mbedtls/test_apps/sdkconfig.ci.default
Normal file
1
components/mbedtls/test_apps/sdkconfig.ci.psram
Normal file
1
components/mbedtls/test_apps/sdkconfig.ci.psram
Normal file
@ -0,0 +1 @@
|
||||
CONFIG_SPIRAM=y
|
4
components/mbedtls/test_apps/sdkconfig.ci.psram_all_ext
Normal file
4
components/mbedtls/test_apps/sdkconfig.ci.psram_all_ext
Normal file
@ -0,0 +1,4 @@
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
|
||||
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0
|
3
components/mbedtls/test_apps/sdkconfig.ci.psram_esp32
Normal file
3
components/mbedtls/test_apps/sdkconfig.ci.psram_esp32
Normal file
@ -0,0 +1,3 @@
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
|
||||
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
|
9
components/mbedtls/test_apps/sdkconfig.defaults
Normal file
9
components/mbedtls/test_apps/sdkconfig.defaults
Normal file
@ -0,0 +1,9 @@
|
||||
# General options for additional checks
|
||||
CONFIG_HEAP_POISONING_COMPREHENSIVE=y
|
||||
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
|
||||
CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y
|
||||
CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y
|
||||
CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
|
||||
CONFIG_COMPILER_STACK_CHECK=y
|
||||
|
||||
CONFIG_ESP_TASK_WDT=n
|
3
components/mbedtls/test_apps/sdkconfig.defaults.esp32
Normal file
3
components/mbedtls/test_apps/sdkconfig.defaults.esp32
Normal file
@ -0,0 +1,3 @@
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||
CONFIG_XTAL_FREQ_AUTO=y
|
||||
CONFIG_SPI_FLASH_SHARE_SPI1_BUS=y
|
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32c2
Normal file
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32c2
Normal file
@ -0,0 +1,2 @@
|
||||
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
|
1
components/mbedtls/test_apps/sdkconfig.defaults.esp32c3
Normal file
1
components/mbedtls/test_apps/sdkconfig.defaults.esp32c3
Normal file
@ -0,0 +1 @@
|
||||
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n
|
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32s2
Normal file
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32s2
Normal file
@ -0,0 +1,2 @@
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n
|
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32s3
Normal file
2
components/mbedtls/test_apps/sdkconfig.defaults.esp32s3
Normal file
@ -0,0 +1,2 @@
|
||||
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
|
||||
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n
|
@ -1,5 +0,0 @@
|
||||
CONFIG_IDF_TARGET="esp32"
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update test_utils
|
||||
TEST_COMPONENTS=mbedtls
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||
CONFIG_MBEDTLS_MPI_USE_INTERRUPT=n
|
@ -1,5 +0,0 @@
|
||||
CONFIG_IDF_TARGET="esp32c3"
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update test_utils
|
||||
TEST_COMPONENTS=mbedtls
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||
CONFIG_MBEDTLS_MPI_USE_INTERRUPT=n
|
@ -1,5 +0,0 @@
|
||||
CONFIG_IDF_TARGET="esp32s2"
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update test_utils
|
||||
TEST_COMPONENTS=mbedtls
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||
CONFIG_MBEDTLS_MPI_USE_INTERRUPT=n
|
@ -1,5 +0,0 @@
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update test_utils
|
||||
TEST_COMPONENTS=mbedtls
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||
CONFIG_MBEDTLS_MPI_USE_INTERRUPT=n
|
@ -1,3 +1,3 @@
|
||||
# This config is split between targets since different component needs to be included
|
||||
CONFIG_IDF_TARGET="esp32c2"
|
||||
TEST_COMPONENTS=app_trace console efuse esp_common esp_eth esp_event esp_hid esp_netif esp_phy esp_ringbuf esp_rom esp_wifi espcoredump hal lwip mbedtls mdns mqtt newlib nvs_flash partition_table sdmmc spiffs
|
||||
TEST_COMPONENTS=app_trace bootloader_support console efuse esp_common esp_eth esp_event esp_hid esp_netif esp_phy esp_ringbuf esp_rom esp_wifi espcoredump hal lwip mdns mqtt newlib nvs_flash partition_table sdmmc spiffs
|
||||
|
@ -1,3 +1,3 @@
|
||||
# This config is split between targets since different component needs to be included
|
||||
CONFIG_IDF_TARGET="esp32c2"
|
||||
TEST_EXCLUDE_COMPONENTS=app_trace console efuse esp_common esp_eth esp_event esp_hid esp_netif esp_phy esp_ringbuf esp_rom esp_wifi espcoredump hal lwip mbedtls mdns mqtt newlib nvs_flash partition_table sdmmc spiffs freertos esp_hw_support esp_ipc esp_system esp_timer driver heap pthread soc spi_flash vfs
|
||||
TEST_EXCLUDE_COMPONENTS=app_trace bootloader_support console efuse esp_common esp_eth esp_event esp_hid esp_netif esp_phy esp_ringbuf esp_rom esp_wifi espcoredump hal lwip mdns mqtt newlib nvs_flash partition_table sdmmc spiffs freertos esp_hw_support esp_ipc esp_system esp_timer driver heap pthread soc spi_flash vfs
|
||||
|
@ -1,5 +1,5 @@
|
||||
CONFIG_IDF_TARGET="esp32"
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update driver esp_hw_support esp_ipc esp_pm esp_system esp_timer mbedtls spi_flash test_utils heap pthread soc experimental_cpp_component freertos sdmmc
|
||||
TEST_EXCLUDE_COMPONENTS=bt app_update driver esp_hw_support esp_ipc esp_pm esp_system esp_timer spi_flash test_utils heap pthread soc experimental_cpp_component esp-tls freertos sdmmc
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
|
||||
CONFIG_SPIRAM_OCCUPY_NO_HOST=y
|
||||
|
@ -1,5 +1,5 @@
|
||||
CONFIG_IDF_TARGET="esp32"
|
||||
TEST_COMPONENTS=esp_hw_support esp_ipc esp_system esp_timer mbedtls spi_flash heap pthread soc
|
||||
TEST_COMPONENTS=esp_hw_support esp_ipc esp_system esp_timer spi_flash heap pthread soc
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
|
||||
CONFIG_SPIRAM_OCCUPY_NO_HOST=y
|
||||
|
@ -1,5 +1,5 @@
|
||||
CONFIG_IDF_TARGET="esp32"
|
||||
TEST_COMPONENTS=heap mbedtls soc spi_flash
|
||||
TEST_COMPONENTS=heap soc spi_flash
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
|
||||
CONFIG_SPIRAM_OCCUPY_NO_HOST=y
|
||||
|
@ -1,3 +1,3 @@
|
||||
CONFIG_IDF_TARGET="esp32s2"
|
||||
TEST_COMPONENTS=esp_hw_support mbedtls esp_system
|
||||
TEST_COMPONENTS=esp_hw_support esp_system
|
||||
CONFIG_SPIRAM=y
|
||||
|
@ -1,3 +1,3 @@
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
||||
TEST_COMPONENTS=esp_hw_support mbedtls esp_system
|
||||
TEST_COMPONENTS=esp_hw_support esp_system
|
||||
CONFIG_SPIRAM=y
|
||||
|
Loading…
Reference in New Issue
Block a user