Output the RTEMS version, the build and the version of the tools used to build the kernel and tests. This can be used by rtems-test to manage the test results and provide better reporting.
Close #3217. --- cpukit/libmisc/testsupport/test.h | 95 ++++++++++++++++++++++++++++- cpukit/libmisc/testsupport/testbeginend.c | 22 ++++++- testsuites/Makefile.am | 2 +- testsuites/libtests/capture01/init.c | 2 +- testsuites/libtests/complex/init.c | 2 +- testsuites/libtests/math/init.c | 2 +- testsuites/libtests/mathf/init.c | 2 +- testsuites/libtests/mathl/init.c | 2 +- testsuites/psxtests/include/pmacros.h | 2 +- testsuites/samples/capture/init.c | 2 +- testsuites/samples/hello/init.c | 2 +- testsuites/samples/paranoia/init.c | 2 +- testsuites/smptests/smp05/init.c | 2 +- testsuites/smptests/smp07/init.c | 2 +- testsuites/support/include/buffer_test_io.h | 90 --------------------------- testsuites/support/include/test_io.h | 69 +++++++++++++++++++++ testsuites/support/include/tmacros.h | 2 +- 17 files changed, 196 insertions(+), 106 deletions(-) delete mode 100644 testsuites/support/include/buffer_test_io.h create mode 100644 testsuites/support/include/test_io.h diff --git a/cpukit/libmisc/testsupport/test.h b/cpukit/libmisc/testsupport/test.h index d9ac6caf91..258667a923 100644 --- a/cpukit/libmisc/testsupport/test.h +++ b/cpukit/libmisc/testsupport/test.h @@ -18,6 +18,7 @@ #include <rtems.h> #include <rtems/printer.h> #include <rtems/score/atomic.h> +#include <rtems/score/cpuopts.h> #include <rtems/score/smpbarrier.h> #ifdef __cplusplus @@ -58,6 +59,98 @@ void rtems_test_fatal_extension( { NULL, NULL, NULL, NULL, NULL, NULL, NULL, rtems_test_fatal_extension } /** + * @brief Build of the kernel. Print the test's build state and tools. + */ +#define TEST_BUILD_DEFAULT "default" +#if RTEMS_POSIX + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_POSIX "posix " +#else + #define TEST_BUILD_POSIX +#endif +#if RTEMS_SMP + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_SMP "smp " +#else + #define TEST_BUILD_SMP +#endif +#if RTEMS_MULTIPROCESSING + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_MP "mp " +#else + #define TEST_BUILD_MP +#endif +#if RTEMS_PARAVIRT + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_PARAVIRT "paravirt " +#else + #define TEST_BUILD_PARAVIRT +#endif +#if RTEMS_NETWORKING + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_NETWORKING "legacy-net " +#else + #define TEST_BUILD_NETWORKING +#endif +#if RTEMS_DEBUG + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_DEBUG "debug " +#else + #define TEST_BUILD_DEBUG +#endif +#if RTEMS_PROFILING + #define TEST_BUILD_DEFAULT "" + #define TEST_BUILD_PROFILING "profiling " +#else + #define TEST_BUILD_PROFILING +#endif + +#define TEST_BUILD_STRING \ + "*** TEST BUILD: " TEST_BUILD_DEFAULT \ + TEST_BUILD_POSIX \ + TEST_BUILD_SMP \ + TEST_BUILD_MP \ + TEST_BUILD_PARAVIRT \ + TEST_BUILD_NETWORKING \ + TEST_BUILD_DEBUG \ + TEST_BUILD_PROFILING \ + "\n" + +/** + * @brief Tools being used to build the kernel and tests. + */ +#define TEST_TOOLS_STRING "*** TEST TOOLS: " __VERSION__ "\n" + +/** + * @brief Test states. + */ +#if (TEST_STATE_EXPECTED_FAIL && TEST_STATE_USER_INPUT) || \ + (TEST_STATE_EXPECTED_FAIL && TEST_STATE_INDETERMINATE) || \ + (TEST_STATE_EXPECTED_FAIL && TEST_STATE_BENCHMARK) || \ + (TEST_STATE_USER_INPUT && TEST_STATE_INDETERMINATE) || \ + (TEST_STATE_USER_INPUT && TEST_STATE_BENCHMARK) || \ + (TEST_STATE_INDETERMINATE && TEST_STATE_BENCHMARK) + #error Test states must be unique +#endif + +#if TEST_STATE_EXPECTED_FAIL + #define TEST_STATE_STRING "*** TEST STATE: EXPECTED-FAIL\n" +#elif TEST_STATE_USER_INPUT + #define TEST_STATE_STRING "*** TEST STATE: USER_INPUT\n" +#elif TEST_STATE_INDETERMINATE + #define TEST_STATE_STRING "*** TEST STATE: INDETERMINATE\n" +#elif TEST_STATE_BENCHMARK + #define TEST_STATE_STRING "*** TEST STATE: BENCHMARK\n" +#else + #define TEST_STATE_STRING "*** TEST STATE: EXPECTED-PASS\n" +#endif + +/** + * @brief Version of RTEMS. + */ +#define TEST_VERSION_STRING "*** TEST VERSION: " RTEMS_VERSION "\n" + +/** * @brief Begin of test message format string. */ #define TEST_BEGIN_STRING "\n\n*** BEGIN OF TEST %s ***\n", rtems_test_name @@ -72,7 +165,7 @@ void rtems_test_fatal_extension( * * @returns As specified by printf(). */ -int rtems_test_begin(void); +int rtems_test_begin(const char* state); /** * @brief Prints an end of test message using printf(). diff --git a/cpukit/libmisc/testsupport/testbeginend.c b/cpukit/libmisc/testsupport/testbeginend.c index ff64851c02..47f206804f 100644 --- a/cpukit/libmisc/testsupport/testbeginend.c +++ b/cpukit/libmisc/testsupport/testbeginend.c @@ -23,12 +23,30 @@ rtems_printer rtems_test_printer = { .printer = rtems_printk_printer }; -int rtems_test_begin(void) +int rtems_test_begin(const char* state) { - return rtems_printf( + int l; + l = rtems_printf( &rtems_test_printer, TEST_BEGIN_STRING ); + l += rtems_printf( + &rtems_test_printer, + TEST_VERSION_STRING + ); + l += rtems_printf( + &rtems_test_printer, + TEST_STATE_STRING + ); + l += rtems_printf( + &rtems_test_printer, + TEST_BUILD_STRING + ); + l += rtems_printf( + &rtems_test_printer, + TEST_TOOLS_STRING + ); + return l; } int rtems_test_end(void) diff --git a/testsuites/Makefile.am b/testsuites/Makefile.am index a466996fa4..4c6eaf1d93 100644 --- a/testsuites/Makefile.am +++ b/testsuites/Makefile.am @@ -4,7 +4,7 @@ DISTCLEANFILES = CLEANFILES = noinst_HEADERS = -noinst_HEADERS += support/include/buffer_test_io.h +noinst_HEADERS += support/include/test_io.h noinst_HEADERS += support/include/test_support.h noinst_HEADERS += support/include/tmacros.h noinst_HEADERS += support/include/pritime.h diff --git a/testsuites/libtests/capture01/init.c b/testsuites/libtests/capture01/init.c index a7a8e0c45a..aae3c1e4f7 100644 --- a/testsuites/libtests/capture01/init.c +++ b/testsuites/libtests/capture01/init.c @@ -48,7 +48,7 @@ rtems_task Init( rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); rtems_task_set_priority(RTEMS_SELF, 20, &old_priority); rtems_task_mode(RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode); diff --git a/testsuites/libtests/complex/init.c b/testsuites/libtests/complex/init.c index 5f8ba34799..5a95db96f1 100644 --- a/testsuites/libtests/complex/init.c +++ b/testsuites/libtests/complex/init.c @@ -60,7 +60,7 @@ int main( void ) { #if __rtems__ rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); #endif docomplex(); diff --git a/testsuites/libtests/math/init.c b/testsuites/libtests/math/init.c index fc493e86e7..c0364bdd99 100644 --- a/testsuites/libtests/math/init.c +++ b/testsuites/libtests/math/init.c @@ -62,7 +62,7 @@ int main( void ) { #if __rtems__ rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); #endif domath(); diff --git a/testsuites/libtests/mathf/init.c b/testsuites/libtests/mathf/init.c index a553e25482..12c529d741 100644 --- a/testsuites/libtests/mathf/init.c +++ b/testsuites/libtests/mathf/init.c @@ -60,7 +60,7 @@ int main( void ) { #if __rtems__ rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); #endif domathf(); diff --git a/testsuites/libtests/mathl/init.c b/testsuites/libtests/mathl/init.c index 7e239f3fbe..97a3d5da0c 100644 --- a/testsuites/libtests/mathl/init.c +++ b/testsuites/libtests/mathl/init.c @@ -60,7 +60,7 @@ int main( void ) { #if __rtems__ rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); #endif domathl(); diff --git a/testsuites/psxtests/include/pmacros.h b/testsuites/psxtests/include/pmacros.h index 76e30f5392..13e0e0be12 100644 --- a/testsuites/psxtests/include/pmacros.h +++ b/testsuites/psxtests/include/pmacros.h @@ -20,7 +20,7 @@ #include <unistd.h> #include <tmacros.h> -#include <buffer_test_io.h> +#include <test_io.h> /* * These help manipulate the "struct tm" form of time diff --git a/testsuites/samples/capture/init.c b/testsuites/samples/capture/init.c index 3f2bc848b1..2adb85b209 100644 --- a/testsuites/samples/capture/init.c +++ b/testsuites/samples/capture/init.c @@ -47,7 +47,7 @@ rtems_task Init( rtems_mode old_mode; rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); status = rtems_shell_wait_for_input( STDIN_FILENO, diff --git a/testsuites/samples/hello/init.c b/testsuites/samples/hello/init.c index 216a8b7e06..f67734a0c8 100644 --- a/testsuites/samples/hello/init.c +++ b/testsuites/samples/hello/init.c @@ -29,7 +29,7 @@ rtems_task Init( ) { rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); printf( "Hello World\n" ); rtems_test_end(); exit( 0 ); diff --git a/testsuites/samples/paranoia/init.c b/testsuites/samples/paranoia/init.c index c5110e2722..4847a8606a 100644 --- a/testsuites/samples/paranoia/init.c +++ b/testsuites/samples/paranoia/init.c @@ -36,7 +36,7 @@ rtems_task Init( #endif rtems_print_printer_fprintf_putc(&rtems_test_printer); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); paranoia(1, args); rtems_test_end(); exit( 0 ); diff --git a/testsuites/smptests/smp05/init.c b/testsuites/smptests/smp05/init.c index 7211e8ca88..40c225ef79 100644 --- a/testsuites/smptests/smp05/init.c +++ b/testsuites/smptests/smp05/init.c @@ -50,7 +50,7 @@ rtems_task Init( rtems_status_code status; locked_print_initialize(); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); if ( rtems_get_processor_count() == 1 ) { success(); diff --git a/testsuites/smptests/smp07/init.c b/testsuites/smptests/smp07/init.c index 0dbf70b001..ec38344e11 100644 --- a/testsuites/smptests/smp07/init.c +++ b/testsuites/smptests/smp07/init.c @@ -98,7 +98,7 @@ rtems_task Init( rtems_id Timer; locked_print_initialize(); - rtems_test_begin(); + rtems_test_begin(TEST_STATE_STRING); if ( rtems_get_processor_count() == 1 ) { success(); diff --git a/testsuites/support/include/buffer_test_io.h b/testsuites/support/include/buffer_test_io.h deleted file mode 100644 index 1ff15f6ca8..0000000000 --- a/testsuites/support/include/buffer_test_io.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Support for running the test output through a buffer - */ - -#ifndef __BUFFER_TEST_IO_h -#define __BUFFER_TEST_IO_h - -#include <rtems/test.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Test states. No state string is an expected pass. - */ -#if (TEST_STATE_EXPECTED_FAIL && TEST_STATE_USER_INPUT) || \ - (TEST_STATE_EXPECTED_FAIL && TEST_STATE_INDETERMINATE) || \ - (TEST_STATE_EXPECTED_FAIL && TEST_STATE_BENCHMARK) || \ - (TEST_STATE_USER_INPUT && TEST_STATE_INDETERMINATE) || \ - (TEST_STATE_USER_INPUT && TEST_STATE_BENCHMARK) || \ - (TEST_STATE_INDETERMINATE && TEST_STATE_BENCHMARK) - #error Test states must be unique -#endif - -#if TEST_STATE_EXPECTED_FAIL - #define TEST_STATE_STRING "*** TEST STATE: EXPECTED-FAIL\n" -#elif TEST_STATE_USER_INPUT - #define TEST_STATE_STRING "*** TEST STATE: USER_INPUT\n" -#elif TEST_STATE_INDETERMINATE - #define TEST_STATE_STRING "*** TEST STATE: INDETERMINATE\n" -#elif TEST_STATE_BENCHMARK - #define TEST_STATE_STRING "*** TEST STATE: BENCHMARK\n" -#endif - -#undef printf -#define printf(...) \ - do { \ - rtems_printf( &rtems_test_printer, __VA_ARGS__ ); \ - } while (0) - -#undef puts -#define puts(_s) \ - do { \ - rtems_printf( &rtems_test_printer, "%s\n", _s ); \ - } while (0) - -#undef putchar -#define putchar(_c) \ - do { \ - rtems_printf( &rtems_test_printer, "%c", _c ); \ - } while (0) - -/* Do not call exit() since it closes stdin, etc and pulls in stdio code */ -#define rtems_test_exit(_s) \ - do { \ - rtems_shutdown_executive(0); \ - } while (0) - -#define FLUSH_OUTPUT() \ - do { \ - } while (0) - -#if defined(TEST_STATE_STRING) - #define TEST_BEGIN() \ - do { \ - rtems_printf( &rtems_test_printer, "\n"); \ - rtems_printf( &rtems_test_printer, TEST_BEGIN_STRING ); \ - rtems_printf( &rtems_test_printer, TEST_STATE_STRING ); \ - } while (0) -#else - #define TEST_BEGIN() \ - do { \ - rtems_printf( &rtems_test_printer, "\n" ); \ - rtems_printf( &rtems_test_printer, TEST_BEGIN_STRING ); \ - } while (0) -#endif - -#define TEST_END() \ - do { \ - rtems_printf( &rtems_test_printer, "\n" ); \ - rtems_printf( &rtems_test_printer, TEST_END_STRING ); \ - rtems_printf( &rtems_test_printer, "\n" ); \ - } while (0) - -#ifdef __cplusplus -}; -#endif - -#endif diff --git a/testsuites/support/include/test_io.h b/testsuites/support/include/test_io.h new file mode 100644 index 0000000000..5d9e78e452 --- /dev/null +++ b/testsuites/support/include/test_io.h @@ -0,0 +1,69 @@ +/* + * Support for running the test output through a buffer + */ + +#ifndef __BUFFER_TEST_IO_h +#define __BUFFER_TEST_IO_h + +#include <rtems/test.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#undef printf +#define printf(...) \ + do { \ + rtems_printf( &rtems_test_printer, __VA_ARGS__ ); \ + } while (0) + +#undef puts +#define puts(_s) \ + do { \ + rtems_printf( &rtems_test_printer, "%s\n", _s ); \ + } while (0) + +#undef putchar +#define putchar(_c) \ + do { \ + rtems_printf( &rtems_test_printer, "%c", _c ); \ + } while (0) + +/* Do not call exit() since it closes stdin, etc and pulls in stdio code */ +#define rtems_test_exit(_s) \ + do { \ + rtems_shutdown_executive(0); \ + } while (0) + +#define FLUSH_OUTPUT() \ + do { \ + } while (0) + +#if defined(TEST_STATE_STRING) + #define TEST_BEGIN_STATE_PRINT() rtems_printf( &rtems_test_printer, TEST_STATE_STRING ) +#else + #define TEST_BEGIN_STATE_PRINT() +#endif + +#define TEST_BEGIN() \ +do { \ + rtems_printf( &rtems_test_printer, "\n"); \ + rtems_printf( &rtems_test_printer, TEST_BEGIN_STRING ); \ + rtems_printf( &rtems_test_printer, TEST_VERSION_STRING ); \ + TEST_BEGIN_STATE_PRINT(); \ + rtems_printf( &rtems_test_printer, TEST_BUILD_STRING ); \ + rtems_printf( &rtems_test_printer, TEST_TOOLS_STRING ); \ +} while (0) + +#define TEST_END() \ + do { \ + rtems_printf( &rtems_test_printer, "\n" ); \ + rtems_printf( &rtems_test_printer, TEST_END_STRING ); \ + rtems_printf( &rtems_test_printer, "\n" ); \ + } while (0) + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/testsuites/support/include/tmacros.h b/testsuites/support/include/tmacros.h index 354d4cf60f..934f4c8309 100644 --- a/testsuites/support/include/tmacros.h +++ b/testsuites/support/include/tmacros.h @@ -29,7 +29,7 @@ #include <rtems/test.h> #include <rtems/score/threaddispatch.h> -#include <buffer_test_io.h> +#include <test_io.h> #ifdef __cplusplus extern "C" { -- 2.13.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel