VirtualBox

Ignore:
Timestamp:
Jan 3, 2017 11:50:44 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
112576
Message:

TestManager: Check filter string input and do subject filter option filtering for reports.

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

Legend:

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

    r65053 r65074  
    12411241            elif oCriterion.sType == FilterCriterion.ksType_String:
    12421242                oCriterion.aoSelected = oDisp.getListOfStrParams(oCriterion.sVarNm, asDefaults = []);
     1243                if len(oCriterion.aoSelected) > 100:
     1244                    raise TMExceptionBase('Variable %s has %u value, max allowed is 100!'
     1245                                          % (oCriterion.sVarNm, len(oCriterion.aoSelected)));
     1246                for sValue in oCriterion.aoSelected:
     1247                    if   len(sValue) > 64 \
     1248                      or '\'' in sValue \
     1249                      or sValue[-1] == '\\':
     1250                        raise TMExceptionBase('Variable %s has an illegal value "%s"!' % (oCriterion.sVarNm, sValue));
    12431251            else:
    12441252                assert False;
  • trunk/src/VBox/ValidationKit/testmanager/core/report.py

    r65054 r65074  
    864864        Fetches possible filtering options.
    865865        """
    866         return TestResultLogic(self._oDb).fetchPossibleFilterOptions(oFilter, tsNow, sPeriod);
     866        return TestResultLogic(self._oDb).fetchPossibleFilterOptions(oFilter, tsNow, sPeriod, oReportModel = self);
    867867
    868868
  • trunk/src/VBox/ValidationKit/testmanager/core/testresults.py

    r65054 r65074  
    4141                                                   TMExceptionBase, TMTooManyRows, TMRowNotFound;
    4242from testmanager.core.testgroup             import TestGroupData;
    43 from testmanager.core.build                 import BuildDataEx, BuildCategoryData, BuildLogic, BuildCategoryLogic;
     43from testmanager.core.build                 import BuildDataEx, BuildCategoryData, BuildLogic;
    4444from testmanager.core.failurereason         import FailureReasonLogic;
    4545from testmanager.core.testbox               import TestBoxData, TestBoxLogic;
     
    14381438            return None
    14391439
    1440     def fetchPossibleFilterOptions(self, oFilter, tsNow, sPeriod):
     1440    def fetchPossibleFilterOptions(self, oFilter, tsNow, sPeriod, oReportModel = None):
    14411441        """
    14421442        Fetches the available filter criteria, given the current filtering.
     
    14451445        """
    14461446        assert isinstance(oFilter, TestResultFilter);
     1447
     1448        # Hack to avoid lot's of conditionals or duplicate this code.
     1449        if oReportModel is None:
     1450            class DummyReportModel(object):
     1451                """ Dummy """
     1452                def getExtraSubjectTables(self):
     1453                    """ Dummy """
     1454                    return [];
     1455                def getExtraSubjectWhereExpr(self):
     1456                    """ Dummy """
     1457                    return '';
     1458            oReportModel = DummyReportModel();
    14471459
    14481460        def workerDoFetch(oMissingLogicType, sNameAttr = 'sName', fIdIsName = False):
     
    14711483        self._oDb.execute('SELECT TestSets.enmStatus, TestSets.enmStatus, COUNT(TestSets.idTestSet)\n'
    14721484                          'FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestStatus) +
     1485                          ''.join('        , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    14731486                          'WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod) +
    14741487                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiTestStatus) +
     1488                          oReportModel.getExtraSubjectWhereExpr() +
    14751489                          'GROUP BY TestSets.enmStatus\n'
    14761490                          'ORDER BY TestSets.enmStatus\n');
     
    14831497                          '                MAX(TestSets.tsCreated) AS tsNow\n'
    14841498                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiSchedGroups) +
     1499                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    14851500                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '         ') +
    14861501                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiSchedGroups) +
     1502                          oReportModel.getExtraSubjectWhereExpr() +
    14871503                          '         GROUP BY TestSets.idSchedGroup\n'
    14881504                          '       ) AS SchedGroupIDs\n'
     
    15001516                          '                MAX(TestSets.idGenTestBox) AS idGenTestBox\n'
    15011517                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestBoxes) +
     1518                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15021519                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15031520                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiTestBoxes) +
     1521                          oReportModel.getExtraSubjectWhereExpr() +
    15041522                          '         GROUP BY TestSets.idTestBox\n'
    15051523                          '       ) AS TestBoxIDs\n'
     
    15141532                          'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
    15151533                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiOses) +
     1534                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15161535                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15171536                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiOses) +
     1537                          oReportModel.getExtraSubjectWhereExpr() +
    15181538                          '       ) AS TestBoxGenIDs\n'
    15191539                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     
    15271547                          'FROM   ( SELECT DISTINCT TestSets.idGenTestBox AS idGenTestBox\n'
    15281548                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiOsVersions) +
     1549                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15291550                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15301551                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiOsVersions) +
     1552                          oReportModel.getExtraSubjectWhereExpr() +
    15311553                          '       ) AS TestBoxGenIDs\n'
    15321554                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     
    15401562                          'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
    15411563                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiCpuArches) +
     1564                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15421565                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15431566                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiCpuArches) +
     1567                          oReportModel.getExtraSubjectWhereExpr() +
    15441568                          '       ) AS TestBoxGenIDs\n'
    15451569                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     
    15531577                          'FROM   ( SELECT DISTINCT TestSets.idGenTestBox\n'
    15541578                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiCpuVendors) +
     1579                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15551580                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15561581                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiCpuVendors) +
     1582                          oReportModel.getExtraSubjectWhereExpr() +
    15571583                          '       ) AS TestBoxGenIDs\n'
    15581584                          '       LEFT OUTER JOIN TestBoxesWithStrings\n'
     
    15671593                          '                MAX(TestSets.idGenTestCase) AS idGenTestCase\n'
    15681594                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiTestCases) +
     1595                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15691596                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15701597                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiTestCases) +
     1598                          oReportModel.getExtraSubjectWhereExpr() +
    15711599                          '         GROUP BY TestSets.idTestCase\n'
    15721600                          '       ) AS TestCasesIDs\n'
     
    15811609                          '                MAX(TestSets.tsCreated) AS tsNow\n'
    15821610                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiRevisions) +
     1611                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    15831612                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    15841613                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiRevisions) +
     1614                          oReportModel.getExtraSubjectWhereExpr() +
    15851615                          '         GROUP BY TestSets.idBuild\n'
    15861616                          '       ) AS BuildIDs\n'
     
    15981628                          'FROM   ( SELECT DISTINCT TestSets.idBuildCategory\n'
    15991629                          '         FROM   TestSets\n' + oFilter.getTableJoins(iOmit = TestResultFilter.kiBranches) +
     1630                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    16001631                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    16011632                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiBranches) +
     1633                          oReportModel.getExtraSubjectWhereExpr() +
    16021634                          '       ) AS BuildCategoryIDs\n'
    16031635                          '       INNER JOIN BuildCategories\n'
     
    16151647                          '                    AND TestResultFailures.tsExpire  = \'infinity\'::TIMESTAMP\n' +
    16161648                          oFilter.getTableJoins(iOmit = TestResultFilter.kiFailReasons) +
     1649                          ''.join('                , %s\n' % (sTable,) for sTable in oReportModel.getExtraSubjectTables()) +
    16171650                          '         WHERE  ' + self._getTimePeriodQueryPart(tsNow, sPeriod, '        ') +
    16181651                          oFilter.getWhereConditions(iOmit = TestResultFilter.kiFailReasons) +
     1652                          oReportModel.getExtraSubjectWhereExpr() +
    16191653                          '         GROUP BY TestResultFailures.idFailureReason\n'
    16201654                          '       ) AS FailureReasonIDs\n'
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