[PATCH 2/2] libmisc/testsupport: Add RTEMS version, build and tools to the tests.

Chris Johns chrisj at rtems.org
Sun Nov 5 07:45:10 UTC 2017


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



More information about the devel mailing list