Build: Move test partitions into the corresponding suites folder

TF-M test suites depended on related test services but the suite
code and service code are placed in different folders. This patch
moves test service code into related suite folder. It can make the
dependencies between test suites and test services more clear.

tfm_secure_client_2 and tfm_secure_client_service are required by
multi test suites, they are moved into a specific folder under test
path. tfm_test_manifest_list.yaml is moved at the root of test path.

Signed-off-by: Jianliang Shen <jianliang.shen@arm.com>
Change-Id: I9784bf614832680cf68fd8a19378446cbb2934e0
diff --git a/test/secure_fw/test_services/tfm_secure_client_2/CMakeLists.txt b/test/secure_fw/common_test_services/tfm_secure_client_2/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_2/CMakeLists.txt
rename to test/secure_fw/common_test_services/tfm_secure_client_2/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2.c b/test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2.c
rename to test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2.c
diff --git a/test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2.yaml b/test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2.yaml
rename to test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2.yaml
diff --git a/test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2_api.c b/test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2_api.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2_api.c
rename to test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2_api.c
diff --git a/test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2_api.h b/test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2_api.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_2/tfm_secure_client_2_api.h
rename to test/secure_fw/common_test_services/tfm_secure_client_2/tfm_secure_client_2_api.h
diff --git a/test/secure_fw/test_services/tfm_secure_client_service/CMakeLists.txt b/test/secure_fw/common_test_services/tfm_secure_client_service/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/CMakeLists.txt
rename to test/secure_fw/common_test_services/tfm_secure_client_service/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service.c b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service.c
rename to test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.c
diff --git a/test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service.h b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service.h
rename to test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.h
diff --git a/test/secure_fw/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
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service.yaml
rename to test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml
diff --git a/test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service_api.c b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service_api.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service_api.c
rename to test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service_api.c
diff --git a/test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service_api.h b/test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service_api.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_secure_client_service/tfm_secure_client_service_api.h
rename to test/secure_fw/common_test_services/tfm_secure_client_service/tfm_secure_client_service_api.h
diff --git a/test/secure_fw/secure_tests.cmake b/test/secure_fw/secure_tests.cmake
index 87a5d42..ffb7b6b 100644
--- a/test/secure_fw/secure_tests.cmake
+++ b/test/secure_fw/secure_tests.cmake
@@ -12,14 +12,29 @@
     tfm_toolchain_reload_compiler()
 endif()
 
+# Install directory for non-secure interface API of test services
+# NS can pick up those interface files to build non-secure test cases
+set(TEST_SERVICE_SRC_INSTALL_DIR ${TFM_INSTALL_PATH}/interface/src/test_service)
+set(TEST_SERVICE_INC_INSTALL_DIR ${TFM_INSTALL_PATH}/interface/include/test_service)
+
 # Test services are also required by some NS regression tests.
 # Include test services at first no matter whether secure tests are enabled.
-add_subdirectory(test_services)
+add_subdirectory(suites/attestation/service)
+add_subdirectory(suites/core/service)
+add_subdirectory(suites/spm/ipc/service)
+add_subdirectory(suites/spm/sfn/service)
+add_subdirectory(suites/ps/service)
+add_subdirectory(suites/irq/service)
+add_subdirectory(suites/fpu/service)
 
 if (NOT TEST_FRAMEWORK_S)
     return()
 endif()
 
+# secure test services are required if any secure test is opened
+add_subdirectory(common_test_services/tfm_secure_client_service)
+add_subdirectory(common_test_services/tfm_secure_client_2)
+
 add_library(tfm_test_framework_s INTERFACE)
 add_library(tfm_s_tests INTERFACE)
 
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/CMakeLists.txt b/test/secure_fw/suites/attestation/service/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/CMakeLists.txt
rename to test/secure_fw/suites/attestation/service/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service.c b/test/secure_fw/suites/attestation/service/tfm_attest_test_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service.c
rename to test/secure_fw/suites/attestation/service/tfm_attest_test_service.c
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service.yaml b/test/secure_fw/suites/attestation/service/tfm_attest_test_service.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service.yaml
rename to test/secure_fw/suites/attestation/service/tfm_attest_test_service.yaml
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_api.h b/test/secure_fw/suites/attestation/service/tfm_attest_test_service_api.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_api.h
rename to test/secure_fw/suites/attestation/service/tfm_attest_test_service_api.h
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_ns_api.c b/test/secure_fw/suites/attestation/service/tfm_attest_test_service_ns_api.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_ns_api.c
rename to test/secure_fw/suites/attestation/service/tfm_attest_test_service_ns_api.c
diff --git a/test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_secure_api.c b/test/secure_fw/suites/attestation/service/tfm_attest_test_service_secure_api.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_attest_test_service/tfm_attest_test_service_secure_api.c
rename to test/secure_fw/suites/attestation/service/tfm_attest_test_service_secure_api.c
diff --git a/test/secure_fw/suites/core/service/CMakeLists.txt b/test/secure_fw/suites/core/service/CMakeLists.txt
new file mode 100644
index 0000000..20af676
--- /dev/null
+++ b/test/secure_fw/suites/core/service/CMakeLists.txt
@@ -0,0 +1,13 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+if (NOT TEST_NS_CORE)
+    return()
+endif()
+
+add_subdirectory(tfm_core_test)
+add_subdirectory(tfm_core_test_2)
diff --git a/test/secure_fw/test_services/tfm_core_test/CMakeLists.txt b/test/secure_fw/suites/core/service/tfm_core_test/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test/CMakeLists.txt
rename to test/secure_fw/suites/core/service/tfm_core_test/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_core_test/core_test_defs.h b/test/secure_fw/suites/core/service/tfm_core_test/core_test_defs.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test/core_test_defs.h
rename to test/secure_fw/suites/core/service/tfm_core_test/core_test_defs.h
diff --git a/test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.c b/test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.c
rename to test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.c
diff --git a/test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.h b/test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.h
rename to test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.h
diff --git a/test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.yaml b/test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test/tfm_ss_core_test.yaml
rename to test/secure_fw/suites/core/service/tfm_core_test/tfm_ss_core_test.yaml
diff --git a/test/secure_fw/test_services/tfm_core_test_2/CMakeLists.txt b/test/secure_fw/suites/core/service/tfm_core_test_2/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test_2/CMakeLists.txt
rename to test/secure_fw/suites/core/service/tfm_core_test_2/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.c b/test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.c
rename to test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.c
diff --git a/test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.h b/test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.h
rename to test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.h
diff --git a/test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.yaml b/test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_core_test_2/tfm_ss_core_test_2.yaml
rename to test/secure_fw/suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.yaml
diff --git a/test/secure_fw/test_services/tfm_fpu_service/CMakeLists.txt b/test/secure_fw/suites/fpu/service/CMakeLists.txt
similarity index 97%
rename from test/secure_fw/test_services/tfm_fpu_service/CMakeLists.txt
rename to test/secure_fw/suites/fpu/service/CMakeLists.txt
index 2a185f5..05ace67 100644
--- a/test/secure_fw/test_services/tfm_fpu_service/CMakeLists.txt
+++ b/test/secure_fw/suites/fpu/service/CMakeLists.txt
@@ -7,6 +7,10 @@
 
 cmake_policy(SET CMP0079 NEW)
 
+if (NOT TEST_S_FPU)
+    return()
+endif()
+
 add_library(tfm_app_rot_partition_fpu_service STATIC)
 
 target_sources(tfm_app_rot_partition_fpu_service
@@ -63,3 +67,4 @@
     INTERFACE
         TEST_PARTITION_FPU_TEST
 )
+
diff --git a/test/secure_fw/test_services/tfm_fpu_service/tfm_fpu_service_test.c b/test/secure_fw/suites/fpu/service/tfm_fpu_service_test.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_fpu_service/tfm_fpu_service_test.c
rename to test/secure_fw/suites/fpu/service/tfm_fpu_service_test.c
diff --git a/test/secure_fw/test_services/tfm_fpu_service/tfm_fpu_service_test.yaml b/test/secure_fw/suites/fpu/service/tfm_fpu_service_test.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_fpu_service/tfm_fpu_service_test.yaml
rename to test/secure_fw/suites/fpu/service/tfm_fpu_service_test.yaml
diff --git a/test/secure_fw/suites/irq/service/CMakeLists.txt b/test/secure_fw/suites/irq/service/CMakeLists.txt
new file mode 100644
index 0000000..0233ffe
--- /dev/null
+++ b/test/secure_fw/suites/irq/service/CMakeLists.txt
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+if (TEST_NS_SLIH_IRQ)
+    add_subdirectory(tfm_slih_test_service)
+endif()
+
+if (TEST_NS_FLIH_IRQ)
+    add_subdirectory(tfm_flih_test_service)
+endif()
diff --git a/test/secure_fw/test_services/tfm_flih_test_service/CMakeLists.txt b/test/secure_fw/suites/irq/service/tfm_flih_test_service/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_flih_test_service/CMakeLists.txt
rename to test/secure_fw/suites/irq/service/tfm_flih_test_service/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service.c b/test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service.c
rename to test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service.c
diff --git a/test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service.yaml b/test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service.yaml
rename to test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service.yaml
diff --git a/test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service_types.h b/test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service_types.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_flih_test_service/tfm_flih_test_service_types.h
rename to test/secure_fw/suites/irq/service/tfm_flih_test_service/tfm_flih_test_service_types.h
diff --git a/test/secure_fw/test_services/tfm_slih_test_service/CMakeLists.txt b/test/secure_fw/suites/irq/service/tfm_slih_test_service/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_slih_test_service/CMakeLists.txt
rename to test/secure_fw/suites/irq/service/tfm_slih_test_service/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service.c b/test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service.c
rename to test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service.c
diff --git a/test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service.yaml b/test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service.yaml
rename to test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service.yaml
diff --git a/test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service_types.h b/test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service_types.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_slih_test_service/tfm_slih_test_service_types.h
rename to test/secure_fw/suites/irq/service/tfm_slih_test_service/tfm_slih_test_service_types.h
diff --git a/test/secure_fw/test_services/tfm_ps_test_service/CMakeLists.txt b/test/secure_fw/suites/ps/service/CMakeLists.txt
similarity index 97%
rename from test/secure_fw/test_services/tfm_ps_test_service/CMakeLists.txt
rename to test/secure_fw/suites/ps/service/CMakeLists.txt
index 97194f2..a74d544 100644
--- a/test/secure_fw/test_services/tfm_ps_test_service/CMakeLists.txt
+++ b/test/secure_fw/suites/ps/service/CMakeLists.txt
@@ -6,7 +6,7 @@
 #-------------------------------------------------------------------------------
 cmake_policy(SET CMP0079 NEW)
 
-if (NOT TFM_PARTITION_PROTECTED_STORAGE)
+if (NOT TFM_PARTITION_PROTECTED_STORAGE OR NOT TEST_S_PS)
     return()
 endif()
 
diff --git a/test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service.c b/test/secure_fw/suites/ps/service/tfm_ps_test_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service.c
rename to test/secure_fw/suites/ps/service/tfm_ps_test_service.c
diff --git a/test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service.yaml b/test/secure_fw/suites/ps/service/tfm_ps_test_service.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service.yaml
rename to test/secure_fw/suites/ps/service/tfm_ps_test_service.yaml
diff --git a/test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service_api.c b/test/secure_fw/suites/ps/service/tfm_ps_test_service_api.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service_api.c
rename to test/secure_fw/suites/ps/service/tfm_ps_test_service_api.c
diff --git a/test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service_api.h b/test/secure_fw/suites/ps/service/tfm_ps_test_service_api.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_ps_test_service/tfm_ps_test_service_api.h
rename to test/secure_fw/suites/ps/service/tfm_ps_test_service_api.h
diff --git a/test/secure_fw/suites/spm/CMakeLists.txt b/test/secure_fw/suites/spm/CMakeLists.txt
index 1abf193..2c39078 100755
--- a/test/secure_fw/suites/spm/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2021, Arm Limited. All rights reserved.
+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -7,15 +7,10 @@
 
 cmake_policy(SET CMP0079 NEW)
 
+# Add test suites and test service common library
+add_subdirectory(common/suites)
+add_subdirectory(common/service)
+
 # Add ipc and sfn test suite.
 add_subdirectory(ipc)
 add_subdirectory(sfn)
-
-add_library(spm_test_common INTERFACE)
-
-target_include_directories(spm_test_common
-    INTERFACE
-        common
-        ../../test_services/tfm_spm_test
-        ../../test_services/tfm_spm_test/common
-)
diff --git a/test/secure_fw/suites/spm/common/service/CMakeLists.txt b/test/secure_fw/suites/spm/common/service/CMakeLists.txt
new file mode 100644
index 0000000..5a3c8bf
--- /dev/null
+++ b/test/secure_fw/suites/spm/common/service/CMakeLists.txt
@@ -0,0 +1,15 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+if (TFM_PARTITION_IPC_TEST OR TEST_NS_SFN_BACKEND)
+    add_library(spm_test_service_common INTERFACE)
+
+    target_include_directories(spm_test_service_common
+        INTERFACE
+            .
+    )
+endif()
diff --git a/test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_defs.h b/test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_defs.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_defs.h
rename to test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_defs.h
diff --git a/test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_service.c b/test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_service.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_service.c
rename to test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_service.c
diff --git a/test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_service.h b/test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_service.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/common/tfm_mmiovec_test_service.h
rename to test/secure_fw/suites/spm/common/service/tfm_mmiovec_test_service.h
diff --git a/test/secure_fw/suites/spm/common/suites/CMakeLists.txt b/test/secure_fw/suites/spm/common/suites/CMakeLists.txt
new file mode 100644
index 0000000..79a18c2
--- /dev/null
+++ b/test/secure_fw/suites/spm/common/suites/CMakeLists.txt
@@ -0,0 +1,15 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_library(spm_test_common INTERFACE)
+
+target_include_directories(spm_test_common
+    INTERFACE
+        .
+        ../service
+        ../../sfn/service
+)
diff --git a/test/secure_fw/suites/spm/common/mmiovec_test.c b/test/secure_fw/suites/spm/common/suites/mmiovec_test.c
similarity index 100%
rename from test/secure_fw/suites/spm/common/mmiovec_test.c
rename to test/secure_fw/suites/spm/common/suites/mmiovec_test.c
diff --git a/test/secure_fw/suites/spm/common/mmiovec_test.h b/test/secure_fw/suites/spm/common/suites/mmiovec_test.h
similarity index 100%
rename from test/secure_fw/suites/spm/common/mmiovec_test.h
rename to test/secure_fw/suites/spm/common/suites/mmiovec_test.h
diff --git a/test/secure_fw/suites/spm/ipc/CMakeLists.txt b/test/secure_fw/suites/spm/ipc/CMakeLists.txt
index bc5a664..c4a8a3e 100644
--- a/test/secure_fw/suites/spm/ipc/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/ipc/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -20,7 +20,7 @@
         PRIVATE
             non_secure/ipc_ns_interface_testsuite.c
             $<$<BOOL:${PSA_FRAMEWORK_HAS_MM_IOVEC}>:
-                ${CMAKE_CURRENT_SOURCE_DIR}/../common/mmiovec_test.c>
+                ${CMAKE_CURRENT_SOURCE_DIR}/../common/suites/mmiovec_test.c>
     )
 
     target_include_directories(tfm_test_suite_ipc_ns
diff --git a/test/secure_fw/suites/spm/ipc/service/CMakeLists.txt b/test/secure_fw/suites/spm/ipc/service/CMakeLists.txt
new file mode 100644
index 0000000..69bd29a
--- /dev/null
+++ b/test/secure_fw/suites/spm/ipc/service/CMakeLists.txt
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+cmake_policy(SET CMP0079 NEW)
+
+# Add ipc test service.
+if (TFM_PARTITION_IPC_TEST)
+    add_subdirectory(tfm_ipc_client)
+    add_subdirectory(tfm_ipc_service)
+endif()
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/CMakeLists.txt b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/CMakeLists.txt
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/tfm_ipc_client_test.c b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/tfm_ipc_client_test.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/tfm_ipc_client_test.c
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/tfm_ipc_client_test.c
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/tfm_ipc_client_test.yaml b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/tfm_ipc_client_test.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_client/tfm_ipc_client_test.yaml
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_client/tfm_ipc_client_test.yaml
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/CMakeLists.txt b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/CMakeLists.txt
similarity index 95%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/CMakeLists.txt
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/CMakeLists.txt
index a24eec8..9cb531f 100644
--- a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/CMakeLists.txt
@@ -20,7 +20,7 @@
         $<$<BOOL:${TFM_PSA_API}>:
             ${CMAKE_BINARY_DIR}/generated/secure_fw/test_services/tfm_ipc_service/auto_generated/intermedia_tfm_ipc_service_test.c>
         $<$<BOOL:${PSA_FRAMEWORK_HAS_MM_IOVEC}>:
-            ${CMAKE_CURRENT_SOURCE_DIR}/../common/tfm_mmiovec_test_service.c>
+            ${CMAKE_CURRENT_SOURCE_DIR}/../../../common/service/tfm_mmiovec_test_service.c>
 )
 
 target_sources(tfm_partitions
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/tfm_ipc_service_test.c b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/tfm_ipc_service_test.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/tfm_ipc_service_test.c
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/tfm_ipc_service_test.c
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/tfm_ipc_service_test.yaml b/test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/tfm_ipc_service_test.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_ipc_service/tfm_ipc_service_test.yaml
rename to test/secure_fw/suites/spm/ipc/service/tfm_ipc_service/tfm_ipc_service_test.yaml
diff --git a/test/secure_fw/suites/spm/sfn/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/CMakeLists.txt
index 2805f04..924e893 100644
--- a/test/secure_fw/suites/spm/sfn/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/sfn/CMakeLists.txt
@@ -16,7 +16,7 @@
         PRIVATE
             non_secure/sfn_backend_ns_testsuite.c
             $<$<BOOL:${PSA_FRAMEWORK_HAS_MM_IOVEC}>:
-                ${CMAKE_CURRENT_SOURCE_DIR}/../common/mmiovec_test.c>
+                ${CMAKE_CURRENT_SOURCE_DIR}/../common/suites/mmiovec_test.c>
     )
 
     target_include_directories(tfm_test_suite_sfn_ns
diff --git a/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt
new file mode 100644
index 0000000..825f851
--- /dev/null
+++ b/test/secure_fw/suites/spm/sfn/service/CMakeLists.txt
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+cmake_policy(SET CMP0079 NEW)
+
+# Add sfn test service.
+if (TEST_NS_SFN_BACKEND)
+    add_subdirectory(sfn_partition1)
+    add_subdirectory(sfn_partition2)
+endif()
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition1/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/service/sfn_partition1/CMakeLists.txt
similarity index 91%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition1/CMakeLists.txt
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition1/CMakeLists.txt
index 42d9260..4413dd6 100644
--- a/test/secure_fw/test_services/tfm_spm_test/sfn_partition1/CMakeLists.txt
+++ b/test/secure_fw/suites/spm/sfn/service/sfn_partition1/CMakeLists.txt
@@ -13,7 +13,7 @@
     PRIVATE
         sfn_partition1.c
         $<$<BOOL:${PSA_FRAMEWORK_HAS_MM_IOVEC}>:
-            ${CMAKE_CURRENT_SOURCE_DIR}/../common/tfm_mmiovec_test_service.c>
+            ${CMAKE_CURRENT_SOURCE_DIR}/../../../common/service/tfm_mmiovec_test_service.c>
 )
 
 target_include_directories(tfm_partitions
@@ -35,6 +35,7 @@
     PRIVATE
         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
         ${CMAKE_BINARY_DIR}/generated/test_services/sfn_partition1
+        ${CMAKE_CURRENT_SOURCE_DIR}/../../../common/service
         ${CMAKE_CURRENT_SOURCE_DIR}/../
 )
 
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition1/sfn_partition1.c b/test/secure_fw/suites/spm/sfn/service/sfn_partition1/sfn_partition1.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition1/sfn_partition1.c
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition1/sfn_partition1.c
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition1/sfn_partition1.yaml b/test/secure_fw/suites/spm/sfn/service/sfn_partition1/sfn_partition1.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition1/sfn_partition1.yaml
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition1/sfn_partition1.yaml
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition2/CMakeLists.txt b/test/secure_fw/suites/spm/sfn/service/sfn_partition2/CMakeLists.txt
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition2/CMakeLists.txt
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition2/CMakeLists.txt
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition2/sfn_partition2.c b/test/secure_fw/suites/spm/sfn/service/sfn_partition2/sfn_partition2.c
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition2/sfn_partition2.c
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition2/sfn_partition2.c
diff --git a/test/secure_fw/test_services/tfm_spm_test/sfn_partition2/sfn_partition2.yaml b/test/secure_fw/suites/spm/sfn/service/sfn_partition2/sfn_partition2.yaml
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/sfn_partition2/sfn_partition2.yaml
rename to test/secure_fw/suites/spm/sfn/service/sfn_partition2/sfn_partition2.yaml
diff --git a/test/secure_fw/test_services/tfm_spm_test/tfm_sfn_test_defs.h b/test/secure_fw/suites/spm/sfn/service/tfm_sfn_test_defs.h
similarity index 100%
rename from test/secure_fw/test_services/tfm_spm_test/tfm_sfn_test_defs.h
rename to test/secure_fw/suites/spm/sfn/service/tfm_sfn_test_defs.h
diff --git a/test/secure_fw/test_services/CMakeLists.txt b/test/secure_fw/test_services/CMakeLists.txt
deleted file mode 100644
index fffd736..0000000
--- a/test/secure_fw/test_services/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2020-2022, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-# Install directory for non-secure interface API of test services
-# NS can pick up those interface files to build non-secure test cases
-set(TEST_SERVICE_SRC_INSTALL_DIR ${TFM_INSTALL_PATH}/interface/src/test_service)
-set(TEST_SERVICE_INC_INSTALL_DIR ${TFM_INSTALL_PATH}/interface/include/test_service)
-
-if (TFM_PARTITION_ATTESTATION_TEST)
-    add_subdirectory(tfm_attest_test_service)
-endif()
-
-if (TEST_NS_CORE)
-    add_subdirectory(tfm_core_test)
-    add_subdirectory(tfm_core_test_2)
-endif()
-
-if (TFM_PARTITION_IPC_TEST OR TEST_NS_SFN_BACKEND)
-    add_subdirectory(tfm_spm_test)
-endif()
-
-if (TEST_S_PS)
-    add_subdirectory(tfm_ps_test_service)
-endif()
-
-if (TEST_FRAMEWORK_S)
-    add_subdirectory(tfm_secure_client_service)
-    add_subdirectory(tfm_secure_client_2)
-endif()
-
-if (TEST_NS_SLIH_IRQ)
-    add_subdirectory(tfm_slih_test_service)
-endif()
-
-if (TEST_NS_FLIH_IRQ)
-    add_subdirectory(tfm_flih_test_service)
-endif()
-
-if (TEST_PARTITION_FPU_TEST)
-    add_subdirectory(tfm_fpu_service)
-endif()
diff --git a/test/secure_fw/test_services/tfm_spm_test/CMakeLists.txt b/test/secure_fw/test_services/tfm_spm_test/CMakeLists.txt
deleted file mode 100644
index d39cbba..0000000
--- a/test/secure_fw/test_services/tfm_spm_test/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2021, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-cmake_policy(SET CMP0079 NEW)
-
-# Add ipc and sfn test service.
-if (TFM_PARTITION_IPC_TEST)
-    add_subdirectory(tfm_ipc_client)
-    add_subdirectory(tfm_ipc_service)
-endif()
-
-if (TEST_NS_SFN_BACKEND)
-    add_subdirectory(sfn_partition1)
-    add_subdirectory(sfn_partition2)
-endif()
-
-add_library(spm_test_service_common INTERFACE)
-
-target_include_directories(spm_test_service_common
-    INTERFACE
-        common
-)
diff --git a/test/secure_fw/test_services/tfm_test_manifest_list.yaml b/test/secure_fw/tfm_test_manifest_list.yaml
similarity index 83%
rename from test/secure_fw/test_services/tfm_test_manifest_list.yaml
rename to test/secure_fw/tfm_test_manifest_list.yaml
index 0bf8245..9175fbb 100644
--- a/test/secure_fw/test_services/tfm_test_manifest_list.yaml
+++ b/test/secure_fw/tfm_test_manifest_list.yaml
@@ -14,7 +14,7 @@
     {
       "name": "TFM Core Test Service",
       "short_name": "TFM_SP_CORE_TEST",
-      "manifest": "tfm_core_test/tfm_ss_core_test.yaml",
+      "manifest": "suites/core/service/tfm_core_test/tfm_ss_core_test.yaml",
       "output_path": "secure_fw/test_services/tfm_core_test",
       "conditional": "@TEST_NS_CORE@",
       "version_major": 0,
@@ -29,7 +29,7 @@
     {
       "name": "TFM Core Test Service 2",
       "short_name": "TFM_SP_CORE_TEST_2",
-      "manifest": "tfm_core_test_2/tfm_ss_core_test_2.yaml",
+      "manifest": "suites/core/service/tfm_core_test_2/tfm_ss_core_test_2.yaml",
       "output_path": "secure_fw/test_services/tfm_core_test_2",
       "conditional": "@TEST_NS_CORE@",
       "version_major": 0,
@@ -44,7 +44,7 @@
     {
       "name": "TFM Secure Client Service",
       "short_name": "TFM_SP_SECURE_TEST_PARTITION",
-      "manifest": "tfm_secure_client_service/tfm_secure_client_service.yaml",
+      "manifest": "common_test_services/tfm_secure_client_service/tfm_secure_client_service.yaml",
       "output_path": "secure_fw/test_services/tfm_secure_client_service",
       "conditional": "@TEST_FRAMEWORK_S@",
       "version_major": 0,
@@ -59,7 +59,7 @@
     {
       "name": "TFM IPC Service Test",
       "short_name": "TFM_SP_IPC_SERVICE_TEST",
-      "manifest": "tfm_spm_test/tfm_ipc_service/tfm_ipc_service_test.yaml",
+      "manifest": "suites/spm/ipc/service/tfm_ipc_service/tfm_ipc_service_test.yaml",
       "output_path": "secure_fw/test_services/tfm_ipc_service",
       "conditional": "@TFM_PARTITION_IPC_TEST@",
       "version_major": 0,
@@ -74,7 +74,7 @@
     {
       "name": "TFM IPC Client Service",
       "short_name": "TFM_SP_IPC_CLIENT_TEST",
-      "manifest": "tfm_spm_test/tfm_ipc_client/tfm_ipc_client_test.yaml",
+      "manifest": "suites/spm/ipc/service/tfm_ipc_client/tfm_ipc_client_test.yaml",
       "output_path": "secure_fw/test_services/tfm_ipc_client",
       "conditional": "@TFM_PARTITION_IPC_TEST@",
       "version_major": 0,
@@ -89,7 +89,7 @@
     {
       "name": "TF-M PS Test Service",
       "short_name": "TFM_SP_PS_TEST",
-      "manifest": "tfm_ps_test_service/tfm_ps_test_service.yaml",
+      "manifest": "suites/ps/service/tfm_ps_test_service.yaml",
       "output_path": "secure_fw/test_services/tfm_ps_test_service",
       "conditional": "@TEST_S_PS@",
       "version_major": 0,
@@ -104,7 +104,7 @@
     {
       "name": "TF-M Secure Client 2 Service",
       "short_name": "TFM_SP_SECURE_CLIENT_2",
-      "manifest": "tfm_secure_client_2/tfm_secure_client_2.yaml",
+      "manifest": "common_test_services/tfm_secure_client_2/tfm_secure_client_2.yaml",
       "output_path": "secure_fw/test_services/tfm_secure_client_2",
       "conditional": "@TEST_FRAMEWORK_S@",
       "version_major": 0,
@@ -119,7 +119,7 @@
     {
       "name": "TFM Initial Attestation Test Service",
       "short_name": "TFM_ATTEST_TEST_SERVICE",
-      "manifest": "tfm_attest_test_service/tfm_attest_test_service.yaml",
+      "manifest": "suites/attestation/service/tfm_attest_test_service.yaml",
       "output_path": "secure_fw/test_services/tfm_attest_test_service",
       "conditional": "@TFM_PARTITION_ATTESTATION_TEST@",
       "version_major": 0,
@@ -134,7 +134,7 @@
     {
       "name": "TFM SLIH Test Service",
       "short_name": "TFM_SP_SLIH_TEST",
-      "manifest": "tfm_slih_test_service/tfm_slih_test_service.yaml",
+      "manifest": "suites/irq/service/tfm_slih_test_service/tfm_slih_test_service.yaml",
       "output_path": "secure_fw/test_services/tfm_slih_test_service",
       "conditional": "@TEST_NS_SLIH_IRQ@",
       "version_major": 0,
@@ -149,7 +149,7 @@
     {
       "name": "TFM FLIH Test Service",
       "short_name": "TFM_SP_FLIH_TEST",
-      "manifest": "tfm_flih_test_service/tfm_flih_test_service.yaml",
+      "manifest": "suites/irq/service/tfm_flih_test_service/tfm_flih_test_service.yaml",
       "output_path": "secure_fw/test_services/tfm_flih_test_service",
       "conditional": "@TEST_NS_FLIH_IRQ@",
       "version_major": 0,
@@ -164,7 +164,7 @@
     {
       "name": "TFM FPU Test Service",
       "short_name": "TFM_SP_FPU_SERVICE_TEST",
-      "manifest": "tfm_fpu_service/tfm_fpu_service_test.yaml",
+      "manifest": "suites/fpu/service/tfm_fpu_service_test.yaml",
       "output_path": "secure_fw/test_services/tfm_fpu_service",
       "conditional": "@TEST_PARTITION_FPU_TEST@",
       "version_major": 0,
@@ -179,7 +179,7 @@
     {
       "name": "TFM SFN Partition1 Service",
       "short_name": "TFM_SFN_SP1",
-      "manifest": "tfm_spm_test/sfn_partition1/sfn_partition1.yaml",
+      "manifest": "suites/spm/sfn/service/sfn_partition1/sfn_partition1.yaml",
       "output_path": "secure_fw/test_services/sfn_partition1",
       "conditional": "@TEST_NS_SFN_BACKEND@",
       "version_major": 0,
@@ -194,7 +194,7 @@
     {
       "name": "TFM SFN Partition2 Service",
       "short_name": "TFM_SFN_SP2",
-      "manifest": "tfm_spm_test/sfn_partition2/sfn_partition2.yaml",
+      "manifest": "suites/spm/sfn/service/sfn_partition2/sfn_partition2.yaml",
       "output_path": "secure_fw/test_services/sfn_partition2",
       "conditional": "@TEST_NS_SFN_BACKEND@",
       "version_major": 0,