VirtualBox

Ignore:
Timestamp:
Dec 18, 2016 2:50:33 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
112364
Message:

testmanager: new result groupings; tab order hack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testmanager/core/testresults.py

    r62484 r64951  
    4040                                                   TMTooManyRows, TMRowNotFound;
    4141from testmanager.core.testgroup             import TestGroupData;
    42 from testmanager.core.build                 import BuildDataEx;
     42from testmanager.core.build                 import BuildDataEx, BuildCategoryData;
    4343from testmanager.core.failurereason         import FailureReasonLogic;
    4444from testmanager.core.testbox               import TestBoxData;
     
    651651    ksResultsGroupingTypeNone       = 'ResultsGroupingTypeNone';
    652652    ksResultsGroupingTypeTestGroup  = 'ResultsGroupingTypeTestGroup';
    653     ksResultsGroupingTypeBuildRev   = 'ResultsGroupingTypeBuild';
     653    ksResultsGroupingTypeBuildCat   = 'ResultsGroupingTypeBuildCat';
     654    ksResultsGroupingTypeBuildRev   = 'ResultsGroupingTypeBuildRev';
    654655    ksResultsGroupingTypeTestBox    = 'ResultsGroupingTypeTestBox';
    655656    ksResultsGroupingTypeTestCase   = 'ResultsGroupingTypeTestCase';
     657    ksResultsGroupingTypeOS         = 'ResultsGroupingTypeOS';
     658    ksResultsGroupingTypeArch       = 'ResultsGroupingTypeArch';
    656659    ksResultsGroupingTypeSchedGroup = 'ResultsGroupingTypeSchedGroup';
    657660
     
    793796        ksResultsGroupingTypeTestBox:    ('', 'TestSets.idTestBox',       None,                      {},),
    794797        ksResultsGroupingTypeTestCase:   ('', 'TestSets.idTestCase',      None,                      {},),
     798        ksResultsGroupingTypeOS:                (
     799            ', TestBoxes',
     800            'TestBoxes.idStrOs',
     801            ' AND TestBoxes.idGenTestBox = TestSets.idGenTestBox',
     802            {},
     803        ),
     804        ksResultsGroupingTypeArch:       (
     805            ', TestBoxes',
     806            'TestBoxes.idStrCpuArch',
     807            ' AND TestBoxes.idGenTestBox = TestSets.idGenTestBox',
     808            {},
     809        ),
     810        ksResultsGroupingTypeBuildCat:   ('', 'TestSets.idBuildCategory', None,                      {},),
    795811        ksResultsGroupingTypeBuildRev: (
    796812            ', Builds',
     
    11861202        return aoRet
    11871203
     1204    def getOSes(self, tsNow, sPeriod):
     1205        """
     1206        Get a list of [idStrOs, sOs] tuples of the OSes that appears in the specified result period.
     1207        """
     1208
     1209        # Note! INNER JOIN TestBoxesWithStrings performs miserable compared to LEFT OUTER JOIN. Doesn't matter for the result
     1210        #       because TestSets.idGenTestBox is a foreign key and unique in TestBoxes.  So, let's do what ever is faster.
     1211        self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrOs, TestBoxesWithStrings.sOs\n'
     1212                          'FROM   ( SELECT idTestBox         AS idTestBox,\n'
     1213                          '                MAX(idGenTestBox) AS idGenTestBox\n'
     1214                          '         FROM   TestSets\n'
     1215                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
     1216                          '         GROUP BY idTestBox\n'
     1217                          '       ) AS TestBoxIDs\n'
     1218                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     1219                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxIDs.idGenTestBox\n'
     1220                          'ORDER BY TestBoxesWithStrings.sOs\n' );
     1221        return self._oDb.fetchAll();
     1222
     1223    def getArchitectures(self, tsNow, sPeriod):
     1224        """
     1225        Get a list of [idStrCpuArch, sCpuArch] tuples of the architecutres
     1226        that appears in the specified result period.
     1227        """
     1228
     1229        # Note! INNER JOIN TestBoxesWithStrings performs miserable compared to LEFT OUTER JOIN. Doesn't matter for the result
     1230        #       because TestSets.idGenTestBox is a foreign key and unique in TestBoxes.  So, let's do what ever is faster.
     1231        self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrCpuArch, TestBoxesWithStrings.sCpuArch\n'
     1232                          'FROM   ( SELECT idTestBox         AS idTestBox,\n'
     1233                          '                MAX(idGenTestBox) AS idGenTestBox\n'
     1234                          '         FROM   TestSets\n'
     1235                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
     1236                          '         GROUP BY idTestBox\n'
     1237                          '       ) AS TestBoxIDs\n'
     1238                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     1239                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxIDs.idGenTestBox\n'
     1240                          'ORDER BY TestBoxesWithStrings.sCpuArch\n' );
     1241        return self._oDb.fetchAll();
     1242
     1243    def getBuildCategories(self, tsNow, sPeriod):
     1244        """
     1245        Get a list of BuildCategoryData that appears in the specified result period.
     1246        """
     1247
     1248        self._oDb.execute('SELECT DISTINCT BuildCategories.*\n'
     1249                          'FROM   ( SELECT DISTINCT idBuildCategory AS idBuildCategory\n'
     1250                          '         FROM   TestSets\n'
     1251                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
     1252                          '       ) AS BuildCategoryIDs\n'
     1253                          '       LEFT OUTER JOIN BuildCategories\n'
     1254                          '                    ON BuildCategories.idBuildCategory = BuildCategoryIDs.idBuildCategory\n'
     1255                          'ORDER BY BuildCategories.sProduct, BuildCategories.sBranch, BuildCategories.sType\n');
     1256        aoRet = [];
     1257        for aoRow in self._oDb.fetchAll():
     1258            aoRet.append(BuildCategoryData().initFromDbRow(aoRow));
     1259        return aoRet;
     1260
    11881261    def getSchedGroups(self, tsNow, sPeriod):
    11891262        """
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