Changeset 98c6d50 in rtems for testsuites/support


Ignore:
Timestamp:
Oct 19, 2017, 5:39:16 AM (2 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
master
Children:
36d974ba
Parents:
eeb8d83
git-author:
Chris Johns <chrisj@…> (10/19/17 05:39:16)
git-committer:
Chris Johns <chrisj@…> (10/23/17 05:25:45)
Message:

testsuite: Use printk for all test output where possible.

  • Remove the printf support leaving the direct printk support configured with TESTS_USE_PRINTK and all other output goes via a buffered vsniprintf call to printk.
  • Control the test's single init for functions and global data with TEST_INIT and not CONFIGURE_INIT. They are now separate.

Updates #3170.

Location:
testsuites/support/include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • testsuites/support/include/buffer_test_io.h

    reeb8d83 r98c6d50  
    1212extern "C" {
    1313#endif
    14 
    15 /*
    16  *  Uncomment this to get buffered test output.  When commented out,
    17  *  test output behaves as it always has and is printed using stdio.
    18  */
    19 
    20 /* #define TESTS_BUFFER_OUTPUT */
    21 /* #define TESTS_USE_PRINTK */
    2214
    2315/*
     
    7971
    8072  #if defined(TEST_STATE_STRING)
    81     #define TEST_BEGIN() printk(TEST_BEGIN_STRING); printk(TEST_STATE_STRING);
     73    #define TEST_BEGIN() \
     74    do { \
     75      printk("\n"); \
     76      printk(TEST_BEGIN_STRING); \
     77      printk(TEST_STATE_STRING); \
     78    } while (0)
    8279  #else
    83     #define TEST_BEGIN() printk(TEST_BEGIN_STRING)
     80    #define TEST_BEGIN() \
     81    do { \
     82      printk("\n"); \
     83      printk(TEST_BEGIN_STRING); \
     84    } while (0)
    8485  #endif
    8586
    86   #define TEST_END() printk(TEST_END_STRING)
     87  #define TEST_END() \
     88    do { \
     89       printk( "\n" ); \
     90       printk(TEST_END_STRING); \
     91       printk( "\n" ); \
     92    } while (0)
    8793
    8894/*
    8995 *  BUFFER TEST OUTPUT
    9096 */
    91 #elif defined(TESTS_BUFFER_OUTPUT)
     97#else
    9298
    9399  #include <stdio.h>
    94100  #include <stdlib.h>
    95101
     102  #define TEST_PRINT__FORMAT(_fmtpos, _appos) \
     103              __attribute__((__format__(__printf__, _fmtpos, _appos)))
     104
    96105  #define _TEST_OUTPUT_BUFFER_SIZE 2048
     106
    97107  extern char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
    98   void _test_output_append(char *);
     108
     109  void _test_output_printf(const char *, ...) TEST_PRINT__FORMAT(1, 2);
     110  void _test_output_append(const char *);
    99111  void _test_output_flush(void);
    100112
    101113  #define rtems_test_exit(_s) \
    102114    do { \
     115      fflush(stdout); \
     116      fflush(stderr); \
    103117      _test_output_flush(); \
    104118      exit(_s); \
     
    106120
    107121  #undef printf
    108   #define printf(...) \
    109     do { \
    110        char _buffer[128]; \
    111        sprintf( _buffer, __VA_ARGS__); \
    112        _test_output_append( _buffer ); \
    113     } while (0)
     122  #define printf(...) _test_output_printf( __VA_ARGS__ )
    114123
    115124  #undef puts
    116125  #define puts(_string) \
    117126    do { \
    118        char _buffer[128]; \
    119        sprintf( _buffer, "%s\n", _string ); \
    120        _test_output_append( _buffer ); \
     127       _test_output_append( _string ); \
     128       _test_output_append( "\n" ); \
    121129    } while (0)
    122130
     
    133141  #define FLUSH_OUTPUT() _test_output_flush()
    134142
    135   #if defined(TEST_INIT) || defined(CONFIGURE_INIT)
     143  #if defined(TEST_STATE_STRING)
     144    #define TEST_BEGIN() \
     145    do { \
     146       _test_output_append( "\n" ); \
     147       _test_output_printf(TEST_BEGIN_STRING); \
     148       _test_output_append(TEST_STATE_STRING); \
     149       _test_output_append( "\n" ); \
     150    } while (0)
     151  #else
     152    #define TEST_BEGIN() \
     153      do { \
     154         _test_output_append( "\n" ); \
     155         _test_output_printf(TEST_BEGIN_STRING); \
     156         _test_output_append( "\n" ); \
     157      } while (0)
     158  #endif
     159
     160  #define TEST_END() \
     161    do { \
     162       _test_output_append( "\n" ); \
     163       _test_output_printf(TEST_END_STRING); \
     164       _test_output_append( "\n" ); \
     165    } while (0)
     166
     167  /*
     168   * Inline the tests this way because adding the code to the support directory
     169   * requires all the makefile files to changed.
     170   */
     171  #if defined(TEST_INIT)
    136172
    137173    char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
    138174    int _test_output_buffer_index = 0;
    139175
    140     void _test_output_append(char *_buffer)
     176    void _test_output_printf(const char* format, ...)
    141177    {
    142       char *p;
    143 
    144       for ( p=_buffer ; *p ; p++ ) {
    145         _test_output_buffer[_test_output_buffer_index++] = *p;
    146         _test_output_buffer[_test_output_buffer_index]   = '\0';
    147         #if 0
    148           if ( *p == '\n' ) {
    149             fprintf( stderr, "BUFFER -- %s", _test_output_buffer );
    150             _test_output_buffer_index = 0;
    151            _test_output_buffer[0]   = '\0';
    152           }
    153         #endif
    154         if ( _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) )
    155           _test_output_flush();
    156       }
     178      va_list args;
     179      char*   in;
     180      size_t  size;
     181      bool    lf;
     182      va_start(args, format);
     183      in = _test_output_buffer + _test_output_buffer_index;
     184      size = vsniprintf(in,
     185                        _TEST_OUTPUT_BUFFER_SIZE - _test_output_buffer_index,
     186                        format, args);
     187      lf = memchr(in, '\n', size);
     188      _test_output_buffer_index += size;
     189      if ( lf || _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) )
     190        _test_output_flush();
     191      va_end(args);
    157192    }
    158193
    159     #include <termios.h>
    160     #include <unistd.h>
     194    void _test_output_append(const char *_buffer)
     195    {
     196      char*  in;
     197      size_t size;
     198      bool   lf;
     199      in = _test_output_buffer + _test_output_buffer_index;
     200      size = strlcpy(in, _buffer, _TEST_OUTPUT_BUFFER_SIZE - _test_output_buffer_index);
     201      lf = memchr(in, '\n', size);
     202      if ( lf || _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) )
     203        _test_output_flush();
     204    }
    161205
    162206    void _test_output_flush(void)
    163207    {
    164       fprintf( stderr, "%s", _test_output_buffer );
     208      printk( _test_output_buffer );
    165209      _test_output_buffer_index = 0;
    166       tcdrain( 2 );
     210      _test_output_buffer[0] = '\0';
    167211    }
    168212
    169     #endif
    170 
    171 #elif defined(TESTS_USE_PRINTF)
    172 
    173   #include <stdio.h>
    174   #include <stdlib.h>
    175 
    176   #define rtems_test_exit(_s) \
    177     do { \
    178       exit(_s); \
    179     } while (0)
    180 
    181   #define FLUSH_OUTPUT() \
    182     do { \
    183       fflush(stdout); \
    184     } while (0)
    185 
    186   #if defined(TEST_STATE_STRING)
    187     #define TEST_BEGIN() printf(TEST_BEGIN_STRING); printf(TEST_STATE_STRING)
    188   #else
    189     #define TEST_BEGIN() printf(TEST_BEGIN_STRING)
    190213  #endif
    191 
    192   #define TEST_END() printf(TEST_END_STRING)
    193 
    194 /*
    195  *  USE IPRINT
    196  */
    197 #else
    198 
    199   #include <stdio.h>
    200   #include <stdlib.h>
    201 
    202   /* do not use iprintf if strict ansi mode */
    203   #if defined(_NEWLIB_VERSION) && !defined(__STRICT_ANSI__)
    204     #define asprintf asiprintf
    205     #define asnprintf asniprintf
    206     #define dprintf diprintf
    207     #define fprintf fiprintf
    208     #define sprintf siprintf
    209     #define snprintf sniprintf
    210     #define vasprintf vasiprintf
    211     #define vasnprintf vasniprintf
    212     #define vdprintf vdiprintf
    213     #define vfprintf vfiprintf
    214     #define vprintf viprintf
    215     #define vsprintf vsiprintf
    216     #define vsnprintf vsniprintf
    217 
    218     #undef printf
    219     #define printf(...) \
    220       do { \
    221          fiprintf( stderr, __VA_ARGS__ ); \
    222       } while (0)
    223   #else
    224     #undef printf
    225     #define printf(...) \
    226       do { \
    227          fprintf( stderr, __VA_ARGS__ ); \
    228       } while (0)
    229   #endif
    230 
    231   #undef puts
    232   #define puts(_s) \
    233       do { \
    234          printf( "%s\n", _s ); \
    235       } while (0)
    236 
    237   #undef putchar
    238   #define putchar(_c) \
    239     do { \
    240        printf( "%c", _c ); \
    241     } while (0)
    242 
    243   #define rtems_test_exit(_s) \
    244     do { \
    245       exit(_s); \
    246     } while (0)
    247 
    248   #define FLUSH_OUTPUT() \
    249     do { \
    250       fflush(stdout); \
    251     } while (0)
    252 
    253   #if defined(TEST_STATE_STRING)
    254     #define TEST_BEGIN() fiprintf(stderr, TEST_BEGIN_STRING); fiprintf(stderr, TEST_STATE_STRING)
    255   #else
    256     #define TEST_BEGIN() fiprintf(stderr, TEST_BEGIN_STRING)
    257   #endif
    258 
    259   #define TEST_END()  fiprintf( stderr, TEST_END_STRING)
    260214
    261215#endif
  • testsuites/support/include/tmacros.h

    reeb8d83 r98c6d50  
    3838#define FOREVER 1                  /* infinite loop */
    3939
    40 #ifdef CONFIGURE_INIT
     40#ifdef TEST_INIT
    4141#define TEST_EXTERN
    4242#else
Note: See TracChangeset for help on using the changeset viewer.