Test: Add Secure SFN Backend test
This patch adds Secure SFN Backend test (PSA API tests):
- Adding a new TEST_S_SFN_BACKEND_TEST config and enable by default
for TEST_S
- Adding Secure test source and CMakeLists
Change-Id: Ife229c2c7c5abbf84effc18b0951f6a4eb5acace
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/test/config/check_config.cmake b/test/config/check_config.cmake
index 0c8d964..0b1c725 100644
--- a/test/config/check_config.cmake
+++ b/test/config/check_config.cmake
@@ -36,6 +36,7 @@
message(STATUS "TEST_S_PLATFORM is set as ${TEST_S_PLATFORM}")
message(STATUS "TEST_S_FWU is set as ${TEST_S_FWU}")
message(STATUS "TEST_S_IPC is set as ${TEST_S_IPC}")
+message(STATUS "TEST_S_SFN_BACKEND is set as ${TEST_S_SFN_BACKEND}")
message(STATUS "TEST_S_FPU is set as ${TEST_S_FPU}")
message(STATUS "---------- Display TEST Configuration - stop ---------------")
@@ -49,10 +50,13 @@
tfm_invalid_config((NOT TFM_PARTITION_PLATFORM AND NOT FORWARD_PROT_MSG) AND (TEST_NS_PLATFORM OR TEST_S_PLATFORM))
tfm_invalid_config(NOT TFM_PARTITION_FIRMWARE_UPDATE AND (TEST_NS_FWU OR TEST_S_FWU))
tfm_invalid_config(NOT TFM_PARTITION_AUDIT_LOG AND (TEST_NS_AUDIT OR TEST_S_AUDIT))
-tfm_invalid_config((TFM_LIB_MODEL) AND (TEST_NS_IPC OR TEST_S_IPC OR TEST_NS_SLIH_IRQ OR TEST_NS_FLIH_IRQ))
-tfm_invalid_config(CONFIG_TFM_SPM_BACKEND_SFN AND (TEST_NS_IPC OR TEST_S_IPC OR TEST_NS_CORE OR TEST_NS_SLIH_IRQ OR TEST_NS_FLIH_IRQ))
+
+tfm_invalid_config((TEST_NS_IPC OR TEST_S_IPC OR TEST_NS_SLIH_IRQ OR TEST_NS_FLIH_IRQ) AND (TFM_LIB_MODEL))
+tfm_invalid_config((TEST_NS_IPC OR TEST_S_IPC OR TEST_NS_CORE OR TEST_NS_SLIH_IRQ OR TEST_NS_FLIH_IRQ) AND CONFIG_TFM_SPM_BACKEND_SFN)
+tfm_invalid_config(TEST_S_SFN_BACKEND AND CONFIG_TFM_SPM_BACKEND_IPC)
+
tfm_invalid_config(CONFIG_TFM_FP STREQUAL "soft" AND (TEST_S_FPU OR TEST_NS_FPU))
-tfm_invalid_config(TFM_LIB_MODEL AND (TEST_S_FPU OR TEST_NS_FPU))
+tfm_invalid_config(TFM_LIB_MODEL AND (TEST_S_FPU OR TEST_NS_FPU OR TEST_S_SFN_BACKEND))
tfm_invalid_config((NOT TFM_MULTI_CORE_TOPOLOGY) AND TEST_NS_MULTI_CORE)
tfm_invalid_config(TEST_NS_T_COSE AND SYMMETRIC_INITIAL_ATTESTATION)
tfm_invalid_config((NOT TFM_NS_MANAGE_NSID) AND TEST_NS_MANAGE_NSID)
diff --git a/test/config/default_s_test_config.cmake b/test/config/default_s_test_config.cmake
index 05ad57a..dfb103c 100644
--- a/test/config/default_s_test_config.cmake
+++ b/test/config/default_s_test_config.cmake
@@ -20,4 +20,5 @@
set(TEST_S_FWU OFF CACHE BOOL "Whether to build S regression FWU tests")
set(TEST_S_IPC OFF CACHE BOOL "Whether to build S regression IPC tests")
+set(TEST_S_SFN_BACKEND OFF CACHE BOOL "Whether to build S regression SFN tests")
set(TEST_S_FPU OFF CACHE BOOL "Whether to build S regression FPU tests")
diff --git a/test/config/default_test_config.cmake b/test/config/default_test_config.cmake
index dbc32dd..62ac4a0 100644
--- a/test/config/default_test_config.cmake
+++ b/test/config/default_test_config.cmake
@@ -43,6 +43,7 @@
set(TEST_S_PLATFORM OFF CACHE BOOL "Whether to build S regression Platform tests")
set(TEST_S_FWU OFF CACHE BOOL "Whether to build S regression FWU tests")
set(TEST_S_IPC OFF CACHE BOOL "Whether to build S regression IPC tests")
+set(TEST_S_SFN_BACKEND OFF CACHE BOOL "Whether to build S regression SFN tests")
################################## PS Tests ####################################
diff --git a/test/config/set_config.cmake b/test/config/set_config.cmake
index 455406d..1fe94a8 100644
--- a/test/config/set_config.cmake
+++ b/test/config/set_config.cmake
@@ -132,6 +132,10 @@
set(TEST_NS_SFN_BACKEND ON CACHE BOOL "Whether to build NS regression SFN backend tests")
endif()
+if (CONFIG_TFM_SPM_BACKEND_SFN AND TEST_S)
+ set(TEST_S_SFN_BACKEND ON CACHE BOOL "Whether to build S regression SFN backend tests")
+endif()
+
######################### Library Model Specific Tests #########################
if (TFM_LIB_MODEL AND TEST_NS)
set(TEST_NS_CORE ON CACHE BOOL "Whether to build NS regression Core tests")
@@ -160,6 +164,12 @@
set(TFM_PARTITION_IPC_TEST OFF)
endif()
+if (TEST_NS_SFN_BACKEND OR TEST_S_SFN_BACKEND)
+ set(TFM_PARTITION_SFN_BACKEND_TEST ON)
+else()
+ set(TFM_PARTITION_SFN_BACKEND_TEST OFF)
+endif()
+
if ((TEST_NS_ATTESTATION OR TEST_S_ATTESTATION)
# This initial attestation test service provide a secure API to enable tests to
# fetch Initial Attestation public key.
diff --git a/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml
index dc036b8..6ce9998 100644
--- a/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml
+++ b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml
@@ -67,6 +67,8 @@
"IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM",
"IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM",
"IPC_CLIENT_TEST_MEM_CHECK",
- "IPC_CLIENT_TEST_RETRIEVE_APP_MEM"
+ "IPC_CLIENT_TEST_RETRIEVE_APP_MEM",
+ "SFN_TEST_STATELESS",
+ "SFN_TEST_CONNECTION_BASED",
]
}
diff --git a/test/secure_fw/secure_suites.c b/test/secure_fw/secure_suites.c
index 674144e..3d7536b 100644
--- a/test/secure_fw/secure_suites.c
+++ b/test/secure_fw/secure_suites.c
@@ -28,13 +28,15 @@
#ifdef TEST_S_PLATFORM
#include "platform_s_tests.h"
#endif
-#ifdef TEST_S_IPC
-#include "ipc_s_tests.h"
-#else
#ifdef TEST_S_AUDIT
#include "audit_s_tests.h"
#endif
-#endif /* TFM_PSA_API */
+#ifdef TEST_S_IPC
+#include "ipc_s_tests.h"
+#endif
+#ifdef TEST_S_SFN_BACKEND
+#include "sfn_s_tests.h"
+#endif
#if defined (TEST_S_FPU)
#include "fpu_s_tests.h"
#endif
@@ -88,6 +90,11 @@
{®ister_testsuite_s_ipc_interface, 0, 0, 0},
#endif
+#ifdef TEST_S_SFN_BACKEND
+ /* Secure SFN backend test cases */
+ {®ister_testsuite_s_sfn_interface, 0, 0, 0},
+#endif
+
#ifdef TEST_S_FPU
/* Secure FPU test cases */
{®ister_testsuite_s_fpu_interface, 0, 0, 0},
diff --git a/test/secure_fw/suites/spm/sfn/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/CMakeLists.txt
index b5acfc1..186f038 100644
--- a/test/secure_fw/suites/spm/sfn/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/sfn/CMakeLists.txt
@@ -44,3 +44,39 @@
tfm_test_suite_sfn_ns
)
endif()
+
+########################### Secure #############################################
+
+if (TEST_S_SFN_BACKEND)
+ add_library(tfm_test_suite_sfn_s STATIC EXCLUDE_FROM_ALL)
+
+ target_sources(tfm_test_suite_sfn_s
+ PRIVATE
+ secure/sfn_backend_s_testsuite.c
+ sfn_backend_tests.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../common/suites/client_api_tests.c
+ $<$<BOOL:${PSA_FRAMEWORK_HAS_MM_IOVEC}>:
+ ${CMAKE_CURRENT_SOURCE_DIR}/../common/suites/mmiovec_test.c>
+ )
+
+ target_include_directories(tfm_test_suite_sfn_s
+ PUBLIC
+ secure
+ )
+
+ target_compile_definitions(tfm_test_suite_sfn_s
+ INTERFACE
+ TEST_S_SFN_BACKEND
+ )
+
+ target_link_libraries(tfm_test_suite_sfn_s
+ PRIVATE
+ tfm_test_framework_s
+ spm_test_common
+ )
+
+ target_link_libraries(tfm_s_tests
+ INTERFACE
+ tfm_test_suite_sfn_s
+ )
+endif()
diff --git a/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c b/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c
new file mode 100644
index 0000000..8e918ac
--- /dev/null
+++ b/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include <stdint.h>
+
+#include "sfn_s_tests.h"
+#include "../sfn_backend_tests.h"
+
+#include "psa/framework_feature.h"
+
+static struct test_t sfn_backend_s_tests[] = {
+ {&tfm_sfn_test_1001, "TFM_S_SFN_TEST_1001",
+ "Get PSA framework version"},
+ {&tfm_sfn_test_1002, "TFM_S_SFN_TEST_1002",
+ "Get version of an RoT Service"},
+ {&tfm_sfn_test_1003, "TFM_S_SFN_TEST_1003",
+ "Request a connection-based RoT Service"},
+ {&tfm_sfn_test_1004, "TFM_S_SFN_TEST_1004",
+ "Request a stateless RoT Service"},
+#if PSA_FRAMEWORK_HAS_MM_IOVEC
+ {&tfm_sfn_test_1005, "TFM_S_SFN_TEST_1005",
+ "Mapping input vectors and unmapping them. "},
+ {&tfm_sfn_test_1006, "TFM_S_SFN_TEST_1006",
+ "Mapping output vectors and unmapping them. "},
+ {&tfm_sfn_test_1007, "TFM_S_SFN_TEST_1007",
+ "Mapping output vectors and not unmapping them. "},
+#endif
+};
+
+void register_testsuite_s_sfn_interface(struct test_suite_t *p_test_suite)
+{
+ uint32_t list_size;
+
+ list_size = (sizeof(sfn_backend_s_tests) / sizeof(sfn_backend_s_tests[0]));
+
+ set_testsuite("SFN Backend Secure test (TFM_S_SFN_TEST_1XXX)",
+ sfn_backend_s_tests, list_size, p_test_suite);
+}
diff --git a/test/secure_fw/suites/spm/sfn/secure/sfn_s_tests.h b/test/secure_fw/suites/spm/sfn/secure/sfn_s_tests.h
new file mode 100644
index 0000000..3fa5439
--- /dev/null
+++ b/test/secure_fw/suites/spm/sfn/secure/sfn_s_tests.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __SFN_S_TESTS_H__
+#define __SFN_S_TESTS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "test_framework.h"
+
+/**
+ * \brief Register testsuite for sfn Secure interface.
+ *
+ * \param[in] p_test_suite The test suite to be executed.
+ */
+void register_testsuite_s_sfn_interface(struct test_suite_t *p_test_suite);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SFN_S_TESTS_H__ */
diff --git a/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt
index bf0b528..d613ae1 100644
--- a/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt
@@ -8,6 +8,6 @@
cmake_policy(SET CMP0079 NEW)
# Add sfn test service.
-if (TEST_NS_SFN_BACKEND)
+if (TFM_PARTITION_SFN_BACKEND_TEST)
add_subdirectory(sfn_backend_test_partition)
endif()
diff --git a/test/secure_fw/tfm_test_manifest_list.yaml b/test/secure_fw/tfm_test_manifest_list.yaml
index 9db35df..640d162 100644
--- a/test/secure_fw/tfm_test_manifest_list.yaml
+++ b/test/secure_fw/tfm_test_manifest_list.yaml
@@ -181,7 +181,7 @@
"short_name": "SFN_BACKEND_TEST",
"manifest": "suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.yaml",
"output_path": "secure_fw/test_services/sfn_backend_test_partition",
- "conditional": "@TEST_NS_SFN_BACKEND@",
+ "conditional": "@TFM_PARTITION_SFN_BACKEND_TEST@",
"version_major": 0,
"version_minor": 1,
"pid": 3011,