forked from Mirrors/opensbi
lib: Add SBIUnit testing macros and functions
This patch introduces all of the SBIUnit macros and functions which can be used during the test development process. Also, it defines the 'run_all_tests' function, which is being called during the 'init_coldboot' right after printing the boot hart information. Also, add the CONFIG_SBIUNIT Kconfig entry in order to be able to turn the tests on and off. When the CONFIG_SBIUNIT is disabled, the tests and all related code is excluded completely on the compilation stage. Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
This commit is contained in:
43
lib/sbi/sbi_unit_test.c
Normal file
43
lib/sbi/sbi_unit_test.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Author: Ivan Orlov <ivan.orlov0322@gmail.com>
|
||||
*/
|
||||
#include <sbi/sbi_unit_test.h>
|
||||
#include <sbi/sbi_types.h>
|
||||
#include <sbi/sbi_console.h>
|
||||
|
||||
extern struct sbiunit_test_suite *sbi_unit_tests[];
|
||||
extern unsigned long sbi_unit_tests_size;
|
||||
|
||||
static void run_test_suite(struct sbiunit_test_suite *suite)
|
||||
{
|
||||
struct sbiunit_test_case *s_case;
|
||||
u32 count_pass = 0, count_fail = 0;
|
||||
|
||||
sbi_printf("## Running test suite: %s\n", suite->name);
|
||||
|
||||
s_case = suite->cases;
|
||||
while (s_case->test_func) {
|
||||
s_case->test_func(s_case);
|
||||
if (s_case->failed)
|
||||
count_fail++;
|
||||
else
|
||||
count_pass++;
|
||||
sbi_printf("[%s] %s\n", s_case->failed ? "FAILED" : "PASSED",
|
||||
s_case->name);
|
||||
s_case++;
|
||||
}
|
||||
sbi_printf("%u PASSED / %u FAILED / %u TOTAL\n", count_pass, count_fail,
|
||||
count_pass + count_fail);
|
||||
}
|
||||
|
||||
void run_all_tests(void)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
sbi_printf("\n# Running SBIUNIT tests #\n");
|
||||
|
||||
for (i = 0; i < sbi_unit_tests_size; i++)
|
||||
run_test_suite(sbi_unit_tests[i]);
|
||||
}
|
Reference in New Issue
Block a user