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

Chris Johns chrisj at rtems.org
Mon Nov 6 06:29:07 UTC 2017


On 06/11/2017 17:12, Sebastian Huber wrote:
> On 05/11/17 08:45, Chris Johns wrote:
>> 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>
> 
> This is available via <rtems.h>.
> 

OK.

>>   #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
> 
> These defines are only used in one source file. I would move this to the source
> file.

Do all tests call the begin function in libmisc? Happy to see that happen if the
begin macro goes away. Maybe that can happen after this change?

>> +
>> +#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
> 
> Maybe we should separate the test classification from the actual output and use
> an enum:
> 
> typedef enum {
>   RTEMS_TEST_TYPE_USER_INPUT,
>   RTEMS_TEST_TYPE_BENCHMARK,
>  ...
> } rtems_test_type;
> 

How would the state be passed in as an enum? The test's state is passed on a per
test bases from the .tcfg files structure which is global, and per bsp as
command line defines.

FYI I will be looking to add build qualifiers for tests that do not work on SMP.
I cannot remember which test Joel was looking at that needed this.

Chris


More information about the devel mailing list