1 /* 2 * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <assert.h> 8 #include <stdio.h> 9 10 #include <mbedtls_common.h> 11 #include <plat/common/platform.h> 12 #include <psa/crypto.h> 13 14 #include "rse_ap_testsuites.h" 15 #include <tc_rse_comms.h> 16 17 static struct test_suite_t test_suites[] = { 18 {.freg = register_testsuite_delegated_attest}, 19 {.freg = register_testsuite_measured_boot}, 20 }; 21 22 /* 23 * Return 0 if we could run all tests. 24 * Note that this does not mean that all tests passed - only that they all run. 25 * One should then look at each individual test result inside the 26 * test_suites[].val field. 27 */ run_tests(void)28static int run_tests(void) 29 { 30 enum test_suite_err_t ret; 31 psa_status_t status; 32 size_t i; 33 34 /* Initialize test environment. */ 35 plat_rse_comms_init(); 36 mbedtls_init(); 37 status = psa_crypto_init(); 38 if (status != PSA_SUCCESS) { 39 printf("\n\npsa_crypto_init failed (status = %d)\n", status); 40 return -1; 41 } 42 43 /* Run all tests. */ 44 for (i = 0; i < ARRAY_SIZE(test_suites); ++i) { 45 struct test_suite_t *suite = &(test_suites[i]); 46 47 suite->freg(suite); 48 ret = run_testsuite(suite); 49 if (ret != TEST_SUITE_ERR_NO_ERROR) { 50 printf("\n\nError during executing testsuite '%s'.\n", suite->name); 51 return -1; 52 } 53 } 54 printf("\nAll tests are run.\n"); 55 56 return 0; 57 } 58 run_platform_tests(void)59int run_platform_tests(void) 60 { 61 size_t i; 62 int ret; 63 int failures = 0; 64 65 ret = run_tests(); 66 if (ret != 0) { 67 /* For some reason, we could not run all tests. */ 68 return ret; 69 } 70 71 printf("\n\n"); 72 73 /* 74 * Print a summary of all the tests that had been run. 75 * Also count the number of tests failure and report that back to the 76 * caller. 77 */ 78 printf("SUMMARY:\n"); 79 for (i = 0; i < ARRAY_SIZE(test_suites); ++i) { 80 81 struct test_suite_t *suite = &(test_suites[i]); 82 83 switch (suite->val) { 84 case TEST_PASSED: 85 printf(" %s PASSED.\n", suite->name); 86 break; 87 case TEST_FAILED: 88 failures++; 89 printf(" %s FAILED.\n", suite->name); 90 break; 91 case TEST_SKIPPED: 92 printf(" %s SKIPPED.\n", suite->name); 93 break; 94 default: 95 assert(false); 96 break; 97 } 98 } 99 100 printf("\n\n"); 101 102 return failures; 103 } 104