Changeset fc6f1ce in rtems-testing


Ignore:
Timestamp:
May 21, 2010, 8:14:30 PM (9 years ago)
Author:
Jennifer Averett <Jennifer.Averett@…>
Branches:
4.11, 8895273c193787f84c4585a10f6d6aceb3b25dc4
Children:
75254fe
Parents:
29a9485
Message:

2010-05-21 Jennifer.Averett@…

Location:
rtems-coverage
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • rtems-coverage/ChangeLog

    r29a9485 rfc6f1ce  
     12010-05-21      Jennifer.Averett@OARcorp.com
     2
     3        * ConfigFile.cc, Makefile, ReportsBase.cc, ReportsBase.h,
     4        ReportsHtml.cc, ReportsHtml.h, ReportsText.cc, ReportsText.h,
     5        TraceConverter.cc, app_common.cc, app_common.h, configFile.txt,
     6        configfile_test.cc, covoar.cc, covoar.css, do_coverage,
     7        rtems_config.in: Added ProjectName and timestamp to report heading.
     8        Modified configuration to handle spaces in project name.
     9
    1102010-05-21      Joel Sherrill <joel.sherrilL@OARcorp.com>
    211
  • rtems-coverage/ConfigFile.cc

    r29a9485 rfc6f1ce  
    1313#include <string.h>
    1414#include <stdio.h>
     15#include <ctype.h>
    1516
    1617namespace Configuration {
     
    3233  {
    3334    #define METHOD "FileReader::processFile - "
    34     FILE *in;
    35     char  line[256];
    36     char  option[256];
    37     char  value[256];
    38     int   line_no;
     35    FILE *  in;
     36    char    line[256];
     37    char    option[256];
     38    char    value[256];
     39    int     line_no;
     40    int     i;
     41    int     j;
    3942
    4043    if ( file == NULL ) {
     
    5154    line_no = 0;
    5255    while (fgets(line, sizeof(line), in) != NULL) {
     56      size_t length;
    5357
    5458      line_no++;
    5559
    56       /* Ignore empty lines and comments */
    57       if (line[0] == '#' || line[0] == '\n')
    58         continue;
    59 
    60       if (sscanf(line, "%s = %[^ \r\n#]", option, value) != 2) {
    61         fprintf(
    62           stderr,
    63           "%s: line %d is invalid: %s",
     60      length = strlen( line );
     61      if ( line[length - 1] != '\n' ) {
     62        fprintf(
     63          stderr,
     64          "%s: line %d is too long",
     65          file,
     66          line_no
     67        );
     68        continue;
     69      }
     70
     71      line[length - 1] = '\0';
     72      length--;
     73
     74      /*
     75       *  Strip off comments at end of line
     76       *
     77       *      LHS = RHS   # comment
     78       */
     79      for (i=0 ; i<length ; i++ ) {
     80        if ( line[i] == '#' ) {
     81          line[i] = '\0';
     82          length = i;
     83          break;
     84        }
     85      }
     86
     87      /*
     88       *  Strip off trailing white space
     89       */
     90      for (i=length-1 ; i>=0 && isspace(line[i]) ; i-- )
     91        ;
     92
     93      line[i+1] = '\0';
     94      length = i+1;
     95
     96      /* Ignore empty lines.  We have stripped
     97       * all comments and blanks therefore, only
     98       * an empty string needs to be checked.
     99       */
     100      if (line[0] == '\0')
     101        continue;
     102
     103      if (sscanf(line, "%s", option) != 1) {
     104        fprintf(
     105          stderr,
     106          "%s: line %d is invalid: %s\n",
     107          file,
     108          line_no,
     109          line
     110        );
     111        continue;
     112      }
     113
     114      for (i=0; ((line[i] != '=') && (i<length)); i++)
     115        ;
     116
     117      if (i == length) {
     118        fprintf(
     119          stderr,
     120          "%s: line %d is invalid: %s\n",
     121          file,
     122          line_no,
     123          line
     124        );
     125        continue;
     126      }
     127
     128      i++;
     129      value[0] = '\0';
     130      while ( isspace(line[i]) )
     131        i++;
     132      for (j=0; line[i] != '\0'; i++, j++ )
     133        value[j] = line[i];
     134      value[j] = '\0';
     135      if (value[0] == '\0') {
     136        fprintf(
     137          stderr,
     138          "%s: line %d is invalid: %s\n",
    64139          file,
    65140          line_no,
  • rtems-coverage/Makefile

    r29a9485 rfc6f1ce  
    5858INSTALLED= \
    5959    ../bin/qemu-dump-trace \
    60     ../bin/trace-converter
     60    ../bin/trace-converter \
     61    ../bin/covoar
    6162
    6263all: $(PROGRAMS) ${INSTALL_DIR} $(INSTALLED)
     
    7172../bin/trace-converter: trace-converter ${INSTALL_DIR}
    7273        cp trace-converter ../bin
     74
     75../bin/covoar: covoar ${INSTALL_DIR}
     76        cp covoar ../bin
    7377
    7478#  EXECUTABLES
  • rtems-coverage/ReportsBase.cc

    r29a9485 rfc6f1ce  
    2121namespace Coverage {
    2222
    23 ReportsBase::ReportsBase():
    24   reportExtension_m("")
     23ReportsBase::ReportsBase( time_t timestamp ):
     24  reportExtension_m(""),
     25  timestamp_m( timestamp )
    2526{
    2627}
     
    422423}
    423424
     425
    424426void GenerateReports()
    425427{
     
    431433  ReportsBase*           reports;
    432434
    433   reports = new ReportsText();
     435  time_t timestamp;
     436
     437 
     438  timestamp = time(NULL); /* get current cal time */
     439  reports = new ReportsText(timestamp);
    434440  reportList.push_back(reports);
    435   reports = new ReportsHtml();
     441  reports = new ReportsHtml(timestamp);
    436442  reportList.push_back(reports);
    437443
  • rtems-coverage/ReportsBase.h

    r29a9485 rfc6f1ce  
    1616#include <stdint.h>
    1717#include <string>
     18#include <time.h>
    1819#include "DesiredSymbols.h"
    1920
     
    2829
    2930  public:
    30     ReportsBase();
     31    ReportsBase( time_t timestamp );
    3132    ~ReportsBase();
    3233
     
    116117
    117118    /*!
     119     *  This member variable contains the timestamp for the report.
     120     */
     121    time_t timestamp_m;
     122
     123    /*!
    118124     *  This method Opens a report file and verifies that it opened
    119125     *  correctly.  Upon failure NULL is returned.
  • rtems-coverage/ReportsHtml.cc

    r29a9485 rfc6f1ce  
    3434namespace Coverage {
    3535
    36   ReportsHtml::ReportsHtml():
    37     ReportsBase()
     36  ReportsHtml::ReportsHtml( time_t timestamp ):
     37    ReportsBase( timestamp )
    3838  {
    3939    reportExtension_m = ".html";
     
    6565    aFile = OpenFile( fileName );
    6666
    67     fprintf( aFile, "<strong>Reports Available</strong>\n" );
     67    fprintf(
     68      aFile,
     69      "<title>Index</title>\n"
     70      "<div class=\"heading-title\">"
     71    );
     72
     73    if (projectName)
     74      fprintf(
     75        aFile,
     76         "%s</br>",
     77         projectName
     78      );
     79
     80    fprintf(
     81      aFile,
     82      "Coverage Analysis Reports</div>\n"
     83      "<div class =\"datetime\">%s</div>\n",
     84      asctime( localtime(&timestamp_m) )
     85    );
     86
    6887    fprintf( aFile, "<ul>\n" );
    6988
     
    123142      aFile,
    124143      "<title>Annotated Report</title>\n"
    125       "<pre class=\"heading-title\">Annotated Report</pre>\n"
     144      "<div class=\"heading-title\">"
     145    );
     146
     147    if (projectName)
     148      fprintf(
     149        aFile,
     150         "%s</br>",
     151         projectName
     152      );
     153
     154    fprintf(
     155      aFile,
     156      "Annotated Report</div>\n"
     157      "<div class =\"datetime\">%s</div>\n"
    126158      "<body>\n"
    127       "<pre class=\"code\">\n"
     159      "<pre class=\"code\">\n",
     160      asctime( localtime(&timestamp_m) )
    128161    );
    129162
     
    146179        aFile,
    147180        "<title>Branch Report</title\n"
    148         "<pre class=\"heading-title\">Branch Report</pre>\n"
     181        "<div class=\"heading-title\">"
     182      );
     183
     184      if (projectName)
     185        fprintf(
     186          aFile,
     187          "%s</br>",
     188          projectName
     189        );
     190
     191      fprintf(
     192        aFile,
     193        "Branch Report</div>\n"
     194        "<div class =\"datetime\">%s</div>\n"
    149195        "<body>\n"
    150          "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
     196        "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
    151197           TABLE_HEADER_CLASS "\">\n"
    152198        "<thead>\n"
     
    160206        "</tr>\n"
    161207        "</thead>\n"
    162         "<tbody>\n"
     208        "<tbody>\n",
     209        asctime( localtime(&timestamp_m) )
    163210      );
    164211    }
     
    180227      aFile,
    181228        "<title>Coverage Report</title>\n"
    182         "<pre class=\"heading-title\">Coverage Report</pre>\n"
    183         "<body>\n"
    184       "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
     229        "<div class=\"heading-title\">"
     230    );
     231
     232    if (projectName)
     233      fprintf(
     234        aFile,
     235        "%s</br>",
     236        projectName
     237      );
     238
     239    fprintf(
     240      aFile,
     241       "Coverage Report</div>\n"
     242       "<div class =\"datetime\">%s</div>\n"
     243       "<body>\n"
     244       "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
    185245           TABLE_HEADER_CLASS "\">\n"
    186246      "<thead>\n"
     
    194254      "</tr>\n"
    195255      "</thead>\n"
    196       "<tbody>\n"
     256      "<tbody>\n",
     257        asctime( localtime(&timestamp_m) )
     258
    197259     );
    198260
     
    213275      aFile,
    214276        "<title> Report</title>\n"
    215         "<pre class=\"heading-title\">No Range Report</pre>\n"
     277        "<div class=\"heading-title\">"
     278    );
     279
     280    if (projectName)
     281      fprintf(
     282        aFile,
     283        "%s</br>",
     284        projectName
     285      );
     286
     287    fprintf(
     288      aFile,
     289       "No Range Report</div>\n"
     290       "<div class =\"datetime\">%s</div>\n"
    216291        "<body>\n"
    217292      "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
     
    222297      "</tr>\n"
    223298      "</thead>\n"
    224       "<tbody>\n"
     299      "<tbody>\n",
     300        asctime( localtime(&timestamp_m) )
     301
    225302     );
    226303
     
    243320      aFile,
    244321      "<title>Size Report</title>\n"
    245       "<pre class=\"heading-title\">Size Report</pre>\n"
     322        "<div class=\"heading-title\">"
     323    );
     324
     325    if (projectName)
     326      fprintf(
     327        aFile,
     328        "%s</br>",
     329        projectName
     330      );
     331
     332    fprintf(
     333      aFile,
     334      "Size Report</div>\n"
     335       "<div class =\"datetime\">%s</div>\n"
    246336      "<body>\n"
    247337      "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
     
    254344      "</tr>\n"
    255345      "</thead>\n"
    256       "<tbody>\n"
     346      "<tbody>\n",
     347        asctime( localtime(&timestamp_m) )
     348
    257349    );
    258350    return aFile;
     
    272364      aFile,
    273365      "<title>Symbol Summary Report</title>\n"
    274       "<pre class=\"heading-title\">Symbol Summary Report</pre>\n"
     366      "<div class=\"heading-title\">"
     367    );
     368
     369    if (projectName)
     370      fprintf(
     371        aFile,
     372        "%s</br>",
     373        projectName
     374      );
     375
     376    fprintf(
     377      aFile,
     378      "Symbol Summary Report</div>\n"
     379       "<div class =\"datetime\">%s</div>\n"
    275380      "<body>\n"
    276381      "<table class=\"covoar table-autosort:0 table-autofilter table-stripeclass:covoar-tr-odd"
     
    291396      "</tr>\n"
    292397      "</thead>\n"
    293       "<tbody>\n"
     398      "<tbody>\n",
     399        asctime( localtime(&timestamp_m) )
     400
    294401    );
    295402    return aFile;
  • rtems-coverage/ReportsHtml.h

    r29a9485 rfc6f1ce  
    2727
    2828  public:
    29     ReportsHtml();
     29    ReportsHtml( time_t timestamp );
    3030   ~ReportsHtml();
    3131
  • rtems-coverage/ReportsText.cc

    r29a9485 rfc6f1ce  
    1616namespace Coverage {
    1717
    18 ReportsText::ReportsText():
    19   ReportsBase()
     18ReportsText::ReportsText( time_t timestamp ):
     19  ReportsBase( timestamp )
    2020{
    2121  reportExtension_m = ".txt";
  • rtems-coverage/ReportsText.h

    r29a9485 rfc6f1ce  
    2626
    2727  public:
    28     ReportsText();
     28    ReportsText( time_t timestamp );
    2929   ~ReportsText();
    3030
  • rtems-coverage/TraceConverter.cc

    r29a9485 rfc6f1ce  
    2424#include "TargetFactory.h"
    2525
    26 const char* dynamicLibrary = NULL;
    2726char*       progname;
    2827
  • rtems-coverage/app_common.cc

    r29a9485 rfc6f1ce  
    3333bool                        BranchInfoAvailable = false;
    3434Target::TargetBase*         TargetInfo          = NULL;
     35const char*                 dynamicLibrary      = NULL;
     36const char*                 projectName         = NULL;
     37
    3538
    3639bool FileIsNewer(
  • rtems-coverage/app_common.h

    r29a9485 rfc6f1ce  
    1919extern bool                         BranchInfoAvailable;
    2020extern Target::TargetBase*          TargetInfo;
     21extern const char*                  dynamicLibrary;
     22extern const char*                  projectName;
     23
    2124
    2225bool FileIsNewer( const char *f1, const char *f2 );
  • rtems-coverage/configFile.txt

    r29a9485 rfc6f1ce  
    44#  $Id$
    55#
     6
     7projectName = RTEMS 4.10
     8
    69verbose = no   
    710
     
    1013verbose     yes   
    1114
    12 bad_option no
     15bad_option  = no
    1316
     17verbose = yes   # comment
     18
     19verbose = no # comment
     20
     21  verbose   =   yes   
     22# next line is filled with spaces
     23                       
     24                  # comment
  • rtems-coverage/configfile_test.cc

    r29a9485 rfc6f1ce  
    77
    88Configuration::Options_t Options[] = {
    9   { "verbose",  NULL },
    10   { NULL,       NULL }
     9  { "projectName", NULL },
     10  { "verbose",     NULL },
     11  { NULL,          NULL }
    1112};
    1213
  • rtems-coverage/covoar.cc

    r29a9485 rfc6f1ce  
    3535Coverage::CoverageFormats_t          coverageFormat;
    3636Coverage::CoverageReaderBase*        coverageReader = NULL;
    37 const char*                          dynamicLibrary = NULL;
    3837char*                                executable = NULL;
    3938const char*                          executableExtension = NULL;
     
    6665    "  -e EXE_EXTENSION          - extension of the executables to analyze\n"
    6766    "  -c COVERAGEFILE_EXTENSION - extension of the coverage files to analyze\n"
     67    "  -p PROJECT_NAME           - name of the project\n"
    6868    "  -C ConfigurationFileName  - name of configuration file\n"
    6969    "  -O Output_Directory       - name of output directory (default=."
     
    9292  { "target",               NULL },
    9393  { "verbose",              NULL },
     94  { "projectName",          NULL },
    9495  { NULL,                   NULL }
    9596};
     
    128129  GET_STRING( "executableExtension",  executableExtension );
    129130  GET_STRING( "coverageExtension",    coverageFileExtension );
     131  GET_STRING( "projectName",          projectName );
    130132
    131133  // Now calculate some values
     
    160162  progname = argv[0];
    161163
    162   while ((opt = getopt(argc, argv, "C:1:L:e:c:E:f:s:T:O:v")) != -1) {
     164  while ((opt = getopt(argc, argv, "C:1:L:e:c:E:f:s:T:O:p:v")) != -1) {
    163165    switch (opt) {
    164166      case 'C': CoverageConfiguration->processFile( optarg ); break;
     
    173175      case 'O': outputDirectory       = optarg; break;
    174176      case 'v': Verbose               = true;   break;
     177      case 'p': projectName           = optarg; break;
    175178      default: /* '?' */
    176179        usage();
  • rtems-coverage/covoar.css

    r29a9485 rfc6f1ce  
    234234    text-align:  center;
    235235    color: rgb(0,0,0);
    236     font-size: 4.0em;
     236    font-size: 3.5em;
    237237    font-weight: bold;
    238238    line-height: 0.9;
     
    245245.datetime {
    246246    color: rgb(55,55,55);
    247     font-size: 0.8em;
     247    font-size: 1.0em;
    248248    padding-top: 5px;
    249249    padding-left: 0px;
  • rtems-coverage/do_coverage

    r29a9485 rfc6f1ce  
    4343        -t        -- save the results locally (default=no)
    4444        -O        -- output directory (default=BSP-CONF-YYYYMMDD-HHMM)
     45        -p        -- project name (default empty)
    4546
    4647Notes:  + There are currently NO checks at each step to determine if
     
    348349      -e "s/@EXECUTABLE_EXTENSION@/exe/" \
    349350      -e "s/@COVERAGE_EXTENSION@/${RTEMSEXT}.${COVEXT}/" \
     351      -e "s/@PROJECT_NAME@/RTEMS ${RTEMS_VERSION}/" \
    350352      <${COVBASE}/rtems_config.in \
    351353      >${BASEDIR}/${BSP}-tests/config
     
    354356  rm -rf ${results_dir}
    355357  mkdir  ${results_dir}
    356   ${COVBASE}/covoar -C ${BASEDIR}/${BSP}-tests/config \
     358  covoar -C ${BASEDIR}/${BSP}-tests/config \
    357359    *.exe > ${results_dir}/summary.txt
    358360  check_status $? "covoar failed"
  • rtems-coverage/rtems_config.in

    r29a9485 rfc6f1ce  
    2626executableExtension = @EXECUTABLE_EXTENSION@
    2727
     28# This is the project name.
     29projectName = @PROJECT_NAME@
    2830
Note: See TracChangeset for help on using the changeset viewer.