Kevin Peng | 304e268 | 2023-11-06 14:10:50 +0800 | [diff] [blame^] | 1 | ########### |
| 2 | Build Tests |
| 3 | ########### |
| 4 | |
| 5 | The tests is a TF-M application which verifies TF-M functionality on both SPE and NSPE sides. |
| 6 | Thus, tests require an extension of SPE side with test code and extra functionality |
| 7 | for some Non-Secure test cases. To inject that test code into SPE the |
| 8 | ``CONFIG_TFM_TEST_DIR`` option is used. When SPE build system sees this option |
| 9 | it adds the corresponding folder via ``add_subdirectory(${CONFIG_TFM_TEST_DIR} tf-m-test)`` |
| 10 | and includes it to SPE binary. |
| 11 | Also, test configurations should be passed to SPE build to include building Secure Tests. |
| 12 | |
| 13 | To hide these complexities to developers, TF-M implements a wrapper CMake in **tf-m-tests** |
| 14 | repository to build the SPE for testing rather than building it from the TF-M repository. |
| 15 | |
| 16 | The recommended tf-m-tests repo commit to verify TF-M can be found at |
| 17 | ``<TF-M source dir>/lib/ext/tf-m-tests/version.txt``. |
| 18 | It does not support auto-downloading as builds start from it. |
| 19 | You need to download it manually before building any tests. |
| 20 | |
| 21 | Regression Tests |
| 22 | ================ |
| 23 | For instructions on configuring, building and executing the regression tests |
| 24 | please refer to the documentation in **tf-m-tests** repository (to be added). |
| 25 | The regression test application is located under **/tests_reg** folder. |
| 26 | It is recommended to build both SPE and NSPE from that folder. |
| 27 | |
| 28 | The basic commands for building the regression tests will be: |
| 29 | |
| 30 | .. code-block:: bash |
| 31 | |
| 32 | cd </tf-m-tests/tests_reg> |
| 33 | cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir> |
| 34 | -DTEST_S=ON -DTEST_NS=ON |
| 35 | cmake --build build_spe -- install |
| 36 | |
| 37 | cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns |
| 38 | cmake --build build_test |
| 39 | |
| 40 | Instead of enable all the supported Secure (``TEST_S``) and NS (``TEST_NS`` tests, you can also |
| 41 | enable individual test suites by using ``-DTEST_S_<SUITE>=ON`` or ``-DTEST_NS_<SUITE>=ON``. |
| 42 | For the available test suites, refer to the ``default_s_test_config.cmake`` and |
| 43 | ``default_ns_test_config.cmake`` files in tf-m-tests repo. |
| 44 | |
| 45 | PSA API tests |
| 46 | ============= |
| 47 | PSA API tests from https://github.com/ARM-software/psa-arch-tests use the same |
| 48 | mechanism for SPE extension as the regression tests above utilising ``CONFIG_TFM_TEST_DIR`` option. |
| 49 | PSA API tests are selected by the TEST_PSA_API variable. Enabling both regression tests and |
| 50 | PSA API tests simultaneously is **not** supported. |
| 51 | |
| 52 | TF-M implements a wrapper CMake for PSA API tests as well. |
| 53 | The PSA API test codes are located under **/tests_psa_arch** folder. |
| 54 | |
| 55 | Here is a brief description of the basic flow: |
| 56 | There are 5 different TEST_PSA_API test suites to be run. |
| 57 | |
| 58 | .. code-block:: bash |
| 59 | |
| 60 | -DTEST_PSA_API=INTERNAL_TRUSTED_STORAGE |
| 61 | -DTEST_PSA_API=PROTECTED_STORAGE |
| 62 | -DTEST_PSA_API=STORAGE |
| 63 | -DTEST_PSA_API=CRYPTO |
| 64 | -DTEST_PSA_API=INITIAL_ATTESTATION |
| 65 | |
| 66 | Respectively for the corresponding service. For example, to enable the PSA API |
| 67 | tests for the Crypto service: |
| 68 | |
| 69 | .. code-block:: bash |
| 70 | |
| 71 | cd </tf-m-tests/tests_psa_arch folder> |
| 72 | cmake -S spe -B build_spe -DTFM_PLATFORM=arm/mps2/an521 -DCONFIG_TFM_SOURCE_PATH=<TF-M source dir> |
| 73 | -DTEST_PSA_API=CRYPTO |
| 74 | cmake --build build_spe -- install |
| 75 | |
| 76 | cmake -S . -B build_test -DCONFIG_SPE_PATH=<Absolute path to>/build_spe/api_ns |
| 77 | cmake --build build_test |
| 78 | |
| 79 | -------------- |
| 80 | |
| 81 | *Copyright (c) 2017-2023, Arm Limited. All rights reserved.* |
| 82 | *Copyright (c) 2022, Cypress Semiconductor Corporation. All rights reserved.* |