VirtualBox

Ignore:
Timestamp:
Jan 3, 2017 1:14:29 PM (8 years ago)
Author:
vboxsync
Message:

TestManager: Count occurences of filter criteria; added testcase variations to the filtering (really only useful when selecting a small number of testcases first).

Location:
trunk/src/VBox/ValidationKit/testmanager/core
Files:
2 edited

Legend:

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

    r65074 r65077  
    11581158    """
    11591159
    1160     def __init__(self, oValue, sDesc, fIrrelevant = False):
     1160    def __init__(self, oValue, sDesc, cTimes = None, sHover = None, fIrrelevant = False):
    11611161        self.oValue      = oValue;      ##< Typically the ID of something in the database.
    11621162        self.sDesc       = sDesc;       ##< What to display.
     1163        self.cTimes      = cTimes;      ##< Number of times the value occurs in the result set. None if not given.
     1164        self.sHover      = sHover;      ##< Optional hover/title string.
    11631165        self.fIrrelevant = fIrrelevant; ##< Irrelevant filter option, only present because it's selected
    11641166
  • trunk/src/VBox/ValidationKit/testmanager/core/testresults.py

    r65074 r65077  
    646646    """
    647647
    648     kiTestStatus        = 0;
    649     kiBranches          = 1;
    650     kiSchedGroups       = 2;
    651     kiTestBoxes         = 3;
    652     kiTestCases         = 4;
    653     kiRevisions         = 5;
    654     kiCpuArches         = 6;
    655     kiCpuVendors        = 7;
    656     kiOses              = 8;
    657     kiOsVersions        = 9;
    658     kiFailReasons       = 10;
     648    kiTestStatus        =  0;
     649    kiBranches          =  1;
     650    kiSchedGroups       =  2;
     651    kiTestBoxes         =  3;
     652    kiTestCases         =  4;
     653    kiTestCaseVars      =  5;
     654    kiRevisions         =  6;
     655    kiCpuArches         =  7;
     656    kiCpuVendors        =  8;
     657    kiOses              =  9;
     658    kiOsVersions        = 10;
     659    kiFailReasons       = 11;
    659660
    660661    def __init__(self):
     
    681682        self.aCriteria.append(oCrit);
    682683        assert self.aCriteria[self.kiTestCases] is oCrit;
     684
     685        oCrit = FilterCriterion('Test variations', sVarNm = 'tv', sTable = 'TestSets', sColumn = 'idTestCaseArgs');
     686        self.aCriteria.append(oCrit);
     687        assert self.aCriteria[self.kiTestCaseVars] is oCrit;
    683688
    684689        oCrit = FilterCriterion('Revisions', sVarNm = 'rv', sTable = 'Builds', sColumn = 'iRevision');
     
    14581463            oReportModel = DummyReportModel();
    14591464
    1460         def workerDoFetch(oMissingLogicType, sNameAttr = 'sName', fIdIsName = False):
     1465        def workerDoFetch(oMissingLogicType, sNameAttr = 'sName', fIdIsName = False, idxHover = -1):
    14611466            """ Does the tedious result fetching and handling of missing bits. """
    14621467            dLeft = { oValue: 1 for oValue in oCrit.aoSelected };
    14631468            oCrit.aoPossible = [];
    14641469            for aoRow in self._oDb.fetchAll():
    1465                 oCrit.aoPossible.append(FilterCriterionValueAndDescription(aoRow[0], aoRow[1]));
     1470                oCrit.aoPossible.append(FilterCriterionValueAndDescription(aoRow[0], aoRow[1], aoRow[2],
     1471                                                                           aoRow[idxHover] if idxHover >= 0 else None));
    14661472                if aoRow[0] in dLeft:
    14671473                    del dLeft[aoRow[0]];
     
    14931499        # Scheduling groups (see getSchedGroups).
    14941500        oCrit = oFilter.aCriteria[TestResultFilter.kiSchedGroups];
    1495         self._oDb.execute('SELECT SchedGroups.idSchedGroup, SchedGroups.sName\n'
     1501        self._oDb.execute('SELECT SchedGroups.idSchedGroup, SchedGroups.sName, SchedGroupIDs.cTimes\n'
    14961502                          'FROM   ( SELECT TestSets.idSchedGroup,\n'
    1497                           '                MAX(TestSets.tsCreated) AS tsNow\n'
     1503                          '                MAX(TestSets.tsCreated)   AS tsNow,\n'
     1504                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    14981505                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiSchedGroups) +
    14991506                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15121519        # Testboxes (see getTestBoxes).
    15131520        oCrit = oFilter.aCriteria[TestResultFilter.kiTestBoxes];
    1514         self._oDb.execute('SELECT TestBoxesWithStrings.idTestBox, TestBoxesWithStrings.sName\n'
     1521        self._oDb.execute('SELECT TestBoxesWithStrings.idTestBox,\n'
     1522                          '       TestBoxesWithStrings.sName,\n'
     1523                          '       TestBoxIDs.cTimes\n'
    15151524                          'FROM   ( SELECT TestSets.idTestBox         AS idTestBox,\n'
    1516                           '                MAX(TestSets.idGenTestBox) AS idGenTestBox\n'
     1525                          '                MAX(TestSets.idGenTestBox) AS idGenTestBox,\n'
     1526                          '                COUNT(TestSets.idTestSet)  AS cTimes\n'
    15171527                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestBoxes) +
    15181528                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15291539        # Testbox OSes.
    15301540        oCrit = oFilter.aCriteria[TestResultFilter.kiOses];
    1531         self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrOs, TestBoxesWithStrings.sOs\n'
    1532                           'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
     1541        self._oDb.execute('SELECT TestBoxesWithStrings.idStrOs,\n'
     1542                          '       TestBoxesWithStrings.sOs,\n'
     1543                          '       SUM(TestBoxGenIDs.cTimes)\n'
     1544                          'FROM   ( SELECT TestSets.idGenTestBox,\n'
     1545                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    15331546                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiOses) +
    15341547                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15361549                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiOses) +
    15371550                          oReportModel.getExtraSubjectWhereExpr() +
     1551                          '         GROUP BY TestSets.idGenTestBox\n'
    15381552                          '       ) AS TestBoxGenIDs\n'
    15391553                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
    15401554                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxGenIDs.idGenTestBox\n'
     1555                          'GROUP BY TestBoxesWithStrings.idStrOs, TestBoxesWithStrings.sOs\n'
    15411556                          'ORDER BY TestBoxesWithStrings.sOs\n' );
    15421557        workerDoFetch(TestBoxLogic, 'sOs');
     
    15441559        # Testbox OS versions .
    15451560        oCrit = oFilter.aCriteria[TestResultFilter.kiOsVersions];
    1546         self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrOsVersion, TestBoxesWithStrings.sOsVersion\n'
    1547                           'FROM   ( SELECT DISTINCT TestSets.idGenTestBox AS idGenTestBox\n'
     1561        self._oDb.execute('SELECT TestBoxesWithStrings.idStrOsVersion,\n'
     1562                          '       TestBoxesWithStrings.sOsVersion,\n'
     1563                          '       SUM(TestBoxGenIDs.cTimes)\n'
     1564                          'FROM   ( SELECT TestSets.idGenTestBox     AS idGenTestBox,\n'
     1565                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    15481566                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiOsVersions) +
    15491567                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15511569                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiOsVersions) +
    15521570                          oReportModel.getExtraSubjectWhereExpr() +
     1571                          '         GROUP BY TestSets.idGenTestBox\n'
    15531572                          '       ) AS TestBoxGenIDs\n'
    15541573                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
    15551574                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxGenIDs.idGenTestBox\n'
     1575                          'GROUP BY TestBoxesWithStrings.idStrOsVersion, TestBoxesWithStrings.sOsVersion\n'
    15561576                          'ORDER BY TestBoxesWithStrings.sOsVersion\n' );
    15571577        workerDoFetch(TestBoxLogic, 'sOsVersion');
     
    15591579        # Testbox CPU/OS architectures.
    15601580        oCrit = oFilter.aCriteria[TestResultFilter.kiCpuArches];
    1561         self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrCpuArch, TestBoxesWithStrings.sCpuArch\n'
    1562                           'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
     1581        self._oDb.execute('SELECT TestBoxesWithStrings.idStrCpuArch,\n'
     1582                          '       TestBoxesWithStrings.sCpuArch,\n'
     1583                          '       SUM(TestBoxGenIDs.cTimes)\n'
     1584                          'FROM   ( SELECT TestSets.idGenTestBox,\n'
     1585                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    15631586                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiCpuArches) +
    15641587                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15661589                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiCpuArches) +
    15671590                          oReportModel.getExtraSubjectWhereExpr() +
     1591                          '         GROUP BY TestSets.idGenTestBox\n'
    15681592                          '       ) AS TestBoxGenIDs\n'
    15691593                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
    15701594                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxGenIDs.idGenTestBox\n'
     1595                          'GROUP BY TestBoxesWithStrings.idStrCpuArch, TestBoxesWithStrings.sCpuArch\n'
    15711596                          'ORDER BY TestBoxesWithStrings.sCpuArch\n' );
    15721597        workerDoFetch(TestBoxLogic, 'sCpuArch');
     
    15741599        # Testbox CPU vendors.
    15751600        oCrit = oFilter.aCriteria[TestResultFilter.kiCpuVendors];
    1576         self._oDb.execute('SELECT DISTINCT TestBoxesWithStrings.idStrCpuVendor, TestBoxesWithStrings.sCpuVendor\n'
    1577                           'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
     1601        self._oDb.execute('SELECT TestBoxesWithStrings.idStrCpuVendor,\n'
     1602                          '       TestBoxesWithStrings.sCpuVendor,\n'
     1603                          '       SUM(TestBoxGenIDs.cTimes)\n'
     1604                          'FROM   ( SELECT TestSets.idGenTestBox,\n'
     1605                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    15781606                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiCpuVendors) +
    15791607                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    15811609                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiCpuVendors) +
    15821610                          oReportModel.getExtraSubjectWhereExpr() +
     1611                          '         GROUP BY TestSets.idGEnTestBox'
    15831612                          '       ) AS TestBoxGenIDs\n'
    15841613                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
    15851614                          '                    ON TestBoxesWithStrings.idGenTestBox = TestBoxGenIDs.idGenTestBox\n'
     1615                          'GROUP BY TestBoxesWithStrings.idStrCpuVendor, TestBoxesWithStrings.sCpuVendor\n'
    15861616                          'ORDER BY TestBoxesWithStrings.sCpuVendor\n' );
    15871617        workerDoFetch(TestBoxLogic, 'sCpuVendor');
     
    15891619        # Testcases (see getTestCases).
    15901620        oCrit = oFilter.aCriteria[TestResultFilter.kiTestCases];
    1591         self._oDb.execute('SELECT TestCases.idTestCase, TestCases.sName\n'
     1621        self._oDb.execute('SELECT TestCases.idTestCase, TestCases.sName, TestCasesIDs.cTimes\n'
    15921622                          'FROM   ( SELECT TestSets.idTestCase         AS idTestCase,\n'
    1593                           '                MAX(TestSets.idGenTestCase) AS idGenTestCase\n'
     1623                          '                MAX(TestSets.idGenTestCase) AS idGenTestCase,\n'
     1624                          '                COUNT(TestSets.idTestSet)   AS cTimes\n'
    15941625                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestCases) +
    15951626                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    16031634        workerDoFetch(TestCaseLogic);
    16041635
     1636        # Testcase variations.
     1637        oCrit = oFilter.aCriteria[TestResultFilter.kiTestCaseVars];
     1638        self._oDb.execute('SELECT TestCaseArgsIDs.idTestCaseArgs,\n'
     1639                          '       CASE WHEN TestCaseArgs.sSubName IS NULL OR TestCaseArgs.sSubName = \'\' THEN\n'
     1640                          '           CONCAT(TestCases.sName, \' / #\', TestCaseArgs.idTestCaseArgs)\n'
     1641                          '       ELSE\n'
     1642                          '           CONCAT(TestCases.sName, \' / \', TestCaseArgs.sSubName)\n'
     1643                          '       END,'
     1644                          '       TestCaseArgsIDs.cTimes\n'
     1645                          'FROM   ( SELECT TestSets.idTestCase             AS idTestCase,\n'
     1646                          '                TestSets.idTestCaseArgs         AS idTestCaseArgs,\n'
     1647                          '                MAX(TestSets.idGenTestCase)     AS idGenTestCase,\n'
     1648                          '                MAX(TestSets.idGenTestCaseArgs) AS idGenTestCaseArgs,\n'
     1649                          '                COUNT(TestSets.idTestSet)       AS cTimes\n'
     1650                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestCaseVars) +
     1651                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     1652                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
     1653                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiTestCaseVars) +
     1654                          oReportModel.getExtraSubjectWhereExpr() +
     1655                          '         GROUP BY TestSets.idTestCase, TestSets.idTestCaseArgs\n'
     1656                          '       ) AS TestCaseArgsIDs\n'
     1657                          '       LEFT OUTER JOIN TestCases ON TestCases.idGenTestCase = TestCaseArgsIDs.idGenTestCase\n'
     1658                          '       LEFT OUTER JOIN TestCaseArgs\n'
     1659                          '                    ON TestCaseArgs.idGenTestCaseArgs = TestCaseArgsIDs.idGenTestCaseArgs\n'
     1660                          'ORDER BY TestCases.sName\n' );
     1661        workerDoFetch(TestCaseLogic);
     1662
    16051663        # Build revisions.
    16061664        oCrit = oFilter.aCriteria[TestResultFilter.kiRevisions];
    1607         self._oDb.execute('SELECT Builds.iRevision, CONCAT(\'r\', Builds.iRevision)\n'
     1665        self._oDb.execute('SELECT Builds.iRevision, CONCAT(\'r\', Builds.iRevision), SUM(BuildIDs.cTimes)\n'
    16081666                          'FROM   ( SELECT TestSets.idBuild        AS idBuild,\n'
    1609                           '                MAX(TestSets.tsCreated) AS tsNow\n'
     1667                          '                MAX(TestSets.tsCreated) AS tsNow,\n'
     1668                          '                COUNT(TestSets.idBuild) AS cTimes\n'
    16101669                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiRevisions) +
    16111670                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    16251684        # Build branches.
    16261685        oCrit = oFilter.aCriteria[TestResultFilter.kiBranches];
    1627         self._oDb.execute('SELECT DISTINCT BuildCategories.sBranch, BuildCategories.sBranch\n'
    1628                           'FROM   ( SELECT DISTINCT TestSets.idBuildCategory\n'
     1686        self._oDb.execute('SELECT BuildCategories.sBranch, BuildCategories.sBranch, SUM(BuildCategoryIDs.cTimes)\n'
     1687                          'FROM   ( SELECT TestSets.idBuildCategory,\n'
     1688                          '                COUNT(TestSets.idTestSet) AS cTimes\n'
    16291689                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiBranches) +
    16301690                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
     
    16321692                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiBranches) +
    16331693                          oReportModel.getExtraSubjectWhereExpr() +
     1694                          '         GROUP BY TestSets.idBuildCategory\n'
    16341695                          '       ) AS BuildCategoryIDs\n'
    16351696                          '       INNER JOIN BuildCategories\n'
    16361697                          '               ON BuildCategories.idBuildCategory = BuildCategoryIDs.idBuildCategory\n'
     1698                          'GROUP BY BuildCategories.sBranch\n'
    16371699                          'ORDER BY BuildCategories.sBranch DESC\n' );
    16381700        workerDoFetch(None, fIdIsName = True);
     
    16401702        # Failure reasons.
    16411703        oCrit = oFilter.aCriteria[TestResultFilter.kiFailReasons];
    1642         self._oDb.execute('SELECT FailureReasons.idFailureReason, FailureReasons.sShort\n'
    1643                           'FROM   ( SELECT TestResultFailures.idFailureReason\n'
     1704        self._oDb.execute('SELECT FailureReasons.idFailureReason, FailureReasons.sShort, FailureReasonIDs.cTimes\n'
     1705                          'FROM   ( SELECT TestResultFailures.idFailureReason,\n'
     1706                          '                COUNT(TestSets.idTestSet) as cTimes\n'
    16441707                          '         FROM   TestSets\n'
    16451708                          '         INNER JOIN TestResultFailures\n'
Note: See TracChangeset for help on using the changeset viewer.

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