Test Executables

The Trusted Services project maintains a number of deployments concerned with test. Although there may be some coverage overlap between different deployments, in general, the built test executables corresponding to different deployments serve different purposes. Most test executables may be run either on target hardware or a development PC as a native application. For more information, see: Running Tests.

The following test deployments are currently supported:

component-test

The component-test deployment combines a large set of tests and components into a monolithic image that may be run as a userspace application. The CppUtest test framework is used for running tests and capturing results. The component-test executable may be built and run very quickly to obtain a first pass check for build failures or regressions.

Supported Environments

  • linux-pc
  • arm-linux

Used for

  • Build testing
  • Development support and debug
  • Regression testing

ts-service-test

The ts-service-test deployment combines test suites that exercise service providers via their standard service interfaces where test cases perform the role of service client. Service discovery and RPC messaging is handled by the libts shared library. On real targets, the libts library uses a dynamic discovery mechanism to locate and communicate with real service deployments. For native PC builds, service providers are embedded into the libts library itself, allowing service level testing within a native PC environment.

Supported Environments

  • linux-pc - tests against service providers integrated into libts
  • arm-linux - tests against real service deployments

Used for

  • End-to-end service testing
  • Security testing
  • Development support and debug
  • Regression testing

uefi-test

The uefi-test deployment includes service level tests for UEFI SMM services.

Supported Environments

  • linux-pc - tests against service providers integrated into libts
  • arm-linux - tests against real service deployments using MM_COMMUNICATE

Used for

  • UEFI service level testing
  • Regression testing

psa-api-test

Used for PSA API conformance testing using test suites from: PSA Arch Test project. Tests are integrated with service clients to enable end-to-end testing against deployed service providers. Separate executables are built for each API under test. As with ts-service-test and uefi-test, service discovery and messaging is handled by libts, allowing API tests to be run on real targets or within a native PC environment.

Supported Environments

  • linux-pc - tests against service providers integrated into libts
  • arm-linux - tests against real service deployments

Used for

  • PSA API conformance testing
  • Regression testing

ts-remote-test

The ts-remote-test deployment builds a userspace application that allows a remote test runner to be discovered and controlled. It implements a subset of the the CppUtest command line interface but instead of running tests directly, it communicates with the remote test runner to run tests and collect results. Can be used, for example, to control the running of tests included in the env-test deployment.

Supported Environments

  • linux-pc - tests against test runner service provider integrated into libts
  • arm-linux - tests against real test runner deployment e.g. env-test

Used for

  • Running environment tests

Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.

SPDX-License-Identifier: BSD-3-Clause