VirtualBox

Ignore:
Timestamp:
Dec 23, 2019 8:54:32 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135538
Message:

TestManager/wuireport.py: Graph optimizations and special stuff for the google variant.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py

    r82646 r82649  
    176176        fTailoredForGoogleCharts = True;
    177177
     178        #
     179        # Get the data and check if we have anything in the 'skipped' category.
     180        #
    178181        adPeriods = self._oModel.getSuccessRates();
    179182
    180         sReport = '';
    181 
    182         oTable = WuiHlpGraphDataTable('When', [ 'Succeeded', 'Skipped', 'Failed' ]);
    183 
    184         #for i in range(len(adPeriods) - 1, -1, -1):
     183        cTotalSkipped = 0;
     184        for dStatuses in adPeriods:
     185            cTotalSkipped += dStatuses[ReportModelBase.ksTestStatus_Skipped];
     186
     187        #
     188        # Output some general stats before the graphs.
     189        #
     190        cTotalNow   = adPeriods[0][ReportModelBase.ksTestStatus_Success];
     191        cTotalNow  += adPeriods[0][ReportModelBase.ksTestStatus_Skipped];
     192        cSuccessNow = cTotalNow;
     193        cTotalNow  += adPeriods[0][ReportModelBase.ksTestStatus_Failure];
     194
     195        sReport = '<p>Current success rate: ';
     196        if cTotalNow > 0:
     197            cSkippedNow = adPeriods[0][ReportModelBase.ksTestStatus_Skipped];
     198            if cSkippedNow > 0:
     199                sReport += '%s (thereof %s skipped)</p>\n' \
     200                         % (self.fmtPct(cSuccessNow, cTotalNow), self.fmtPct(cSkippedNow, cTotalNow),);
     201            else:
     202                sReport += '%s (none skipped)</p>\n' % (self.fmtPct(cSuccessNow, cTotalNow),);
     203        else:
     204            sReport += 'N/A</p>\n'
     205
     206        #
     207        # Create the data table.
     208        #
     209        if fTailoredForGoogleCharts:
     210            if cTotalSkipped > 0:
     211                oTable = WuiHlpGraphDataTable(None, [ 'Succeeded', 'Skipped', 'Failed' ]);
     212            else:
     213                oTable = WuiHlpGraphDataTable(None, [ 'Succeeded', 'Failed' ]);
     214        else:
     215            if cTotalSkipped > 0:
     216                oTable = WuiHlpGraphDataTable('When', [ 'Succeeded', 'Skipped', 'Failed' ]);
     217            else:
     218                oTable = WuiHlpGraphDataTable('When', [ 'Succeeded', 'Failed' ]);
     219
    185220        for i, dStatuses in enumerate(adPeriods):
    186221            cSuccesses = dStatuses[ReportModelBase.ksTestStatus_Success];
     
    192227            sPeriod   = self._oModel.getPeriodDesc(i);
    193228            if fTailoredForGoogleCharts:
    194                 oTable.addRow(sPeriod,
    195                               [ cSuccesses * 100 // cTotal if cTotal else 0,
    196                                 cSkipped   * 100 // cTotal if cTotal else 0,
    197                                 cFailures  * 100 // cTotal if cTotal else 0, ],
    198                               [ self.fmtPct(cSuccesses, cTotal) if cSuccesses else None,
    199                                 self.fmtPct(cSkipped,   cTotal) if cSkipped   else None,
    200                                 self.fmtPct(cFailures,  cTotal) if cFailures  else None, ]);
    201 
    202             else:
    203                 if cTotal > 0:
     229                if cTotalSkipped > 0:
     230                    oTable.addRow(sPeriod,
     231                                  [ cSuccesses * 100 // cTotal if cTotal else 0,
     232                                    cSkipped   * 100 // cTotal if cTotal else 0,
     233                                    cFailures  * 100 // cTotal if cTotal else 0, ],
     234                                  [ self.fmtPct(cSuccesses, cTotal) if cSuccesses else None,
     235                                    self.fmtPct(cSkipped,   cTotal) if cSkipped   else None,
     236                                    self.fmtPct(cFailures,  cTotal) if cFailures  else None, ]);
     237                else:
     238                    oTable.addRow(sPeriod,
     239                                  [ cSuccesses * 100 // cTotal if cTotal else 0,
     240                                    cFailures  * 100 // cTotal if cTotal else 0, ],
     241                                  [ self.fmtPct(cSuccesses, cTotal) if cSuccesses else None,
     242                                    self.fmtPct(cFailures,  cTotal) if cFailures  else None, ]);
     243            elif cTotal > 0:
     244                if cTotalSkipped > 0:
    204245                    oTable.addRow(sPeriod,
    205246                                  [ cSuccesses * 100 // cTotal,
     
    210251                                    self.fmtPctWithHits(cFailures, cTotal), ]);
    211252                else:
    212                     oTable.addRow(sPeriod, [ 0, 0, 0 ], [ '0%', '0%', '0%' ]);
    213 
    214         cTotalNow  = adPeriods[0][ReportModelBase.ksTestStatus_Success];
    215         cTotalNow += adPeriods[0][ReportModelBase.ksTestStatus_Skipped];
    216         cSuccessNow = cTotalNow;
    217         cTotalNow += adPeriods[0][ReportModelBase.ksTestStatus_Failure];
    218         sReport += '<p>Current success rate: ';
    219         if cTotalNow > 0:
    220             sReport += '%s%% (thereof %s%% skipped)</p>\n' \
    221                      % ( cSuccessNow * 100 // cTotalNow, adPeriods[0][ReportModelBase.ksTestStatus_Skipped] * 100 // cTotalNow);
    222         else:
    223             sReport += 'N/A</p>\n'
    224 
     253                    oTable.addRow(sPeriod,
     254                                  [ cSuccesses * 100 // cTotal,
     255                                    cFailures * 100 // cTotal, ],
     256                                  [ self.fmtPctWithHits(cSuccesses, cTotal),
     257                                    self.fmtPctWithHits(cFailures, cTotal), ]);
     258            elif cTotalSkipped > 0:
     259                oTable.addRow(sPeriod, [ 0, 0, 0 ], [ '0%', '0%', '0%' ]);
     260            else:
     261                oTable.addRow(sPeriod, [ 0, 0 ], [ '0%', '0%' ]);
     262
     263        #
     264        # Render the graph.
     265        #
    225266        oGraph = WuiHlpBarGraph('success-rate', oTable, self._oDisp);
    226267        oGraph.setRangeMax(100);
     
    231272        #
    232273        if fTailoredForGoogleCharts:
    233             oTable = WuiHlpGraphDataTable(None, [ 'Succeeded', 'Skipped', 'Failed' ]);
     274            if cTotalSkipped > 0:
     275                oTable = WuiHlpGraphDataTable(None, [ 'Succeeded', 'Skipped', 'Failed' ]);
     276            else:
     277                oTable = WuiHlpGraphDataTable(None, [ 'Succeeded', 'Failed' ]);
    234278            for i, dStatuses in enumerate(adPeriods):
    235279                cSuccesses = dStatuses[ReportModelBase.ksTestStatus_Success];
     
    237281                cSkipped   = dStatuses[ReportModelBase.ksTestStatus_Skipped];
    238282
    239                 oTable.addRow(self._oModel.getPeriodDesc(i),
    240                               [ cSuccesses, cSkipped, cFailures, ],
    241                               [ str(cSuccesses) if cSuccesses > 0 else None,
    242                                 str(cSkipped) if cSkipped > 0 else None,
    243                                 str(cFailures) if cFailures > 0 else None, ]);
     283                if cTotalSkipped > 0:
     284                    oTable.addRow(None, #self._oModel.getPeriodDesc(i),
     285                                  [ cSuccesses, cSkipped, cFailures, ],
     286                                  [ str(cSuccesses) if cSuccesses > 0 else None,
     287                                    str(cSkipped) if cSkipped > 0 else None,
     288                                    str(cFailures) if cFailures > 0 else None, ]);
     289                else:
     290                    oTable.addRow(None, #self._oModel.getPeriodDesc(i),
     291                                  [ cSuccesses, cFailures, ],
     292                                  [ str(cSuccesses) if cSuccesses > 0 else None,
     293                                    str(cFailures) if cFailures > 0 else None, ]);
    244294            oGraph = WuiHlpBarGraph('success-numbers', oTable, self._oDisp);
     295            oGraph.invertYDirection();
    245296            sReport += oGraph.renderGraph();
    246297
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette