VirtualBox

Changeset 65155 in vbox for trunk


Ignore:
Timestamp:
Jan 5, 2017 2:59:42 PM (8 years ago)
Author:
vboxsync
Message:

TestManager: Added a bunch of testcase/var name substring matches that are useful to vbox testing.

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

Legend:

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

    r65154 r65155  
    11931193
    11941194    def __init__(self, sName, sVarNm = None, sType = ksType_UInt, sState = ksState_NotSelected, sKind = ksKind_ElementOfOrNot,
    1195                  sTable = None, sColumn = None, oSub = None):
     1195                 sTable = None, sColumn = None, asTables = None, oSub = None):
    11961196        assert len(sVarNm) == 2;    # required by wuimain.py for filtering.
    11971197        self.sName      = sName;
     
    12041204        self.fInverted  = False;    ##< User input from sInvVarNm. Inverts the operation (-> not an element of).
    12051205        self.aoPossible = [];       ##< type: list[FilterCriterionValueAndDescription]
    1206         self.sTable     = sTable;
    1207         self.sColumn    = sColumn;
     1206        assert (sTable is None and asTables is None) or ((sTable is not None) != (asTables is not None)), \
     1207               '%s %s' % (sTable, asTables);
     1208        self.asTables   = [sTable,] if sTable is not None else asTables;
     1209        assert sColumn is None or len(self.asTables) == 1, '%s %s' % (self.asTables, sColumn);
     1210        self.sColumn    = sColumn;  ##< Normally only applicable if one table.
    12081211        self.fExpanded  = None;     ##< Tristate (None, False, True)
    12091212        self.oSub       = oSub;     ##< type: FilterCriterion
  • trunk/src/VBox/ValidationKit/testmanager/core/testresults.py

    r65154 r65155  
    4444from testmanager.core.failurereason         import FailureReasonLogic;
    4545from testmanager.core.testbox               import TestBoxData, TestBoxLogic;
    46 from testmanager.core.testcase              import TestCaseData, TestCaseLogic;
     46from testmanager.core.testcase              import TestCaseData;
    4747from testmanager.core.schedgroup            import SchedGroupData, SchedGroupLogic;
    4848from testmanager.core.systemlog             import SystemLogData, SystemLogLogic;
     
    651651    kiTestBoxes             =  3;
    652652    kiTestCases             =  4;
    653     kiRevisions             =  5;
    654     kiCpuArches             =  6;
    655     kiCpuVendors            =  7;
    656     kiCpuCounts             =  8;
    657     kiMemory                =  9;
    658     kiMisc                  = 10;
    659     kiOses                  = 11;
    660     kiPythonVersions        = 12;
    661     kiFailReasons           = 13;
    662 
    663     kiMisc_NestedPaging     =  0;
    664     kiMisc_NoNestedPaging   =  1;
    665     kiMisc_RawMode          =  2;
    666     kiMisc_NoRawMode        =  3;
    667     kiMisc_64BitGuest       =  4;
    668     kiMisc_No64BitGuest     =  5;
    669     kiMisc_HwVirt           =  6;
    670     kiMisc_NoHwVirt         =  7;
    671     kiMisc_IoMmu            =  8;
    672     kiMisc_NoIoMmu          =  9;
     653    kiTestCaseMisc          =  5;
     654    kiRevisions             =  6;
     655    kiCpuArches             =  7;
     656    kiCpuVendors            =  8;
     657    kiCpuCounts             =  9;
     658    kiMemory                = 10;
     659    kiTestboxMisc           = 11;
     660    kiOses                  = 12;
     661    kiPythonVersions        = 13;
     662    kiFailReasons           = 14
     663
     664    ## Misc test case / variation name filters.
     665    ## Presented in table order.  The first sub element is the presistent ID.
     666    kaTcMisc = (
     667        (  1, 'x86', ),
     668        (  2, 'amd64', ),
     669        (  3, 'uni', ),
     670        (  4, 'smp', ),
     671        (  5, '-raw', ),
     672        (  6, '-hw', ),
     673        (  7, '-np', ),
     674        (  8, 'Install', ),
     675        (  8, 'Benchmark', ),
     676        (  8, 'USB', ),
     677        (  9, 'Debian', ),
     678        ( 10, 'Fedora', ),
     679        ( 11, 'Oracle', ),
     680        ( 12, 'RHEL', ),
     681        ( 13, 'SUSE', ),
     682        ( 14, 'Ubuntu', ),
     683        ( 15, 'Win', ),
     684    );
     685
     686    kiTbMisc_NestedPaging     =  0;
     687    kiTbMisc_NoNestedPaging   =  1;
     688    kiTbMisc_RawMode          =  2;
     689    kiTbMisc_NoRawMode        =  3;
     690    kiTbMisc_64BitGuest       =  4;
     691    kiTbMisc_No64BitGuest     =  5;
     692    kiTbMisc_HwVirt           =  6;
     693    kiTbMisc_NoHwVirt         =  7;
     694    kiTbMisc_IoMmu            =  8;
     695    kiTbMisc_NoIoMmu          =  9;
    673696
    674697    def __init__(self):
     
    698721        assert self.aCriteria[self.kiTestCases] is oCrit;
    699722
     723        oCrit = FilterCriterion('Test case name', sVarNm = 'cm', sKind = FilterCriterion.ksKind_Special,
     724                                asTables = ('TestCases', 'TestCaseArgs'));
     725        oCrit.aoPossible = [
     726            FilterCriterionValueAndDescription(aoCur[0], 'Include %s' % (aoCur[1],)) for aoCur in self.kaTcMisc
     727        ];
     728        oCrit.aoPossible.extend([
     729            FilterCriterionValueAndDescription(aoCur[0] + 32, 'Exclude %s' % (aoCur[1],)) for aoCur in self.kaTcMisc
     730        ]);
     731        self.aCriteria.append(oCrit);
     732        assert self.aCriteria[self.kiTestCaseMisc] is oCrit;
     733
    700734        oCrit = FilterCriterion('Revisions', sVarNm = 'rv', sTable = 'Builds', sColumn = 'iRevision');
    701735        self.aCriteria.append(oCrit);
     
    720754        assert self.aCriteria[self.kiMemory] is oCrit;
    721755
    722         oCrit = FilterCriterion('Misc', sVarNm = 'cf', sKind = FilterCriterion.ksKind_Special,
    723                                 sTable = 'TestBoxesWithStrings', sColumn = 'it_is_complicated');
     756        oCrit = FilterCriterion('Testbox misc', sVarNm = 'tm', sKind = FilterCriterion.ksKind_Special,
     757                                sTable = 'TestBoxesWithStrings');
    724758        oCrit.aoPossible = [
    725             FilterCriterionValueAndDescription(self.kiMisc_NestedPaging,      "req nested paging"),
    726             FilterCriterionValueAndDescription(self.kiMisc_NoNestedPaging,    "w/o nested paging"),
    727             #FilterCriterionValueAndDescription(self.kiMisc_RawMode,           "req raw-mode"), - not implemented yet.
    728             #FilterCriterionValueAndDescription(self.kiMisc_NoRawMode,         "w/o raw-mode"), - not implemented yet.
    729             FilterCriterionValueAndDescription(self.kiMisc_64BitGuest,        "req 64-bit guests"),
    730             FilterCriterionValueAndDescription(self.kiMisc_No64BitGuest,      "w/o 64-bit guests"),
    731             FilterCriterionValueAndDescription(self.kiMisc_HwVirt,            "req VT-x / AMD-V"),
    732             FilterCriterionValueAndDescription(self.kiMisc_NoHwVirt,          "w/o VT-x / AMD-V"),
    733             #FilterCriterionValueAndDescription(self.kiMisc_IoMmu,             "req I/O MMU"), - not implemented yet.
    734             #FilterCriterionValueAndDescription(self.kiMisc_NoIoMmu,           "w/o I/O MMU"), - not implemented yet.
     759            FilterCriterionValueAndDescription(self.kiTbMisc_NestedPaging,      "req nested paging"),
     760            FilterCriterionValueAndDescription(self.kiTbMisc_NoNestedPaging,    "w/o nested paging"),
     761            #FilterCriterionValueAndDescription(self.kiTbMisc_RawMode,           "req raw-mode"), - not implemented yet.
     762            #FilterCriterionValueAndDescription(self.kiTbMisc_NoRawMode,         "w/o raw-mode"), - not implemented yet.
     763            FilterCriterionValueAndDescription(self.kiTbMisc_64BitGuest,        "req 64-bit guests"),
     764            FilterCriterionValueAndDescription(self.kiTbMisc_No64BitGuest,      "w/o 64-bit guests"),
     765            FilterCriterionValueAndDescription(self.kiTbMisc_HwVirt,            "req VT-x / AMD-V"),
     766            FilterCriterionValueAndDescription(self.kiTbMisc_NoHwVirt,          "w/o VT-x / AMD-V"),
     767            #FilterCriterionValueAndDescription(self.kiTbMisc_IoMmu,             "req I/O MMU"), - not implemented yet.
     768            #FilterCriterionValueAndDescription(self.kiTbMisc_NoIoMmu,           "w/o I/O MMU"), - not implemented yet.
    735769        ];
    736770        self.aCriteria.append(oCrit);
    737         assert self.aCriteria[self.kiMisc] is oCrit;
     771        assert self.aCriteria[self.kiTestboxMisc] is oCrit;
    738772
    739773        oCrit = FilterCriterion('OS / version', sVarNm = 'os', sTable = 'TestBoxesWithStrings', sColumn = 'idStrOs',
     
    753787        ## @todo Add build type, error count, gang counts (if any > 1)...
    754788
    755     kdMiscConditions = {
    756         kiMisc_NestedPaging:    'TestBoxesWithStrings.fCpuNestedPaging IS TRUE',
    757         kiMisc_NoNestedPaging:  'TestBoxesWithStrings.fCpuNestedPaging IS FALSE',
    758         kiMisc_RawMode:         'TestBoxesWithStrings.fRawMode IS TRUE',
    759         kiMisc_NoRawMode:       'TestBoxesWithStrings.fRawMode IS NOT TRUE',
    760         kiMisc_64BitGuest:      'TestBoxesWithStrings.fCpu64BitGuest IS TRUE',
    761         kiMisc_No64BitGuest:    'TestBoxesWithStrings.fCpu64BitGuest IS FALSE',
    762         kiMisc_HwVirt:          'TestBoxesWithStrings.fCpuHwVirt IS TRUE',
    763         kiMisc_NoHwVirt:        'TestBoxesWithStrings.fCpuHwVirt IS FALSE',
    764         kiMisc_IoMmu:           'TestBoxesWithStrings.fChipsetIoMmu IS TRUE',
    765         kiMisc_NoIoMmu:         'TestBoxesWithStrings.fChipsetIoMmu IS FALSE',
     789    kdTbMiscConditions = {
     790        kiTbMisc_NestedPaging:    'TestBoxesWithStrings.fCpuNestedPaging IS TRUE',
     791        kiTbMisc_NoNestedPaging:  'TestBoxesWithStrings.fCpuNestedPaging IS FALSE',
     792        kiTbMisc_RawMode:         'TestBoxesWithStrings.fRawMode IS TRUE',
     793        kiTbMisc_NoRawMode:       'TestBoxesWithStrings.fRawMode IS NOT TRUE',
     794        kiTbMisc_64BitGuest:      'TestBoxesWithStrings.fCpu64BitGuest IS TRUE',
     795        kiTbMisc_No64BitGuest:    'TestBoxesWithStrings.fCpu64BitGuest IS FALSE',
     796        kiTbMisc_HwVirt:          'TestBoxesWithStrings.fCpuHwVirt IS TRUE',
     797        kiTbMisc_NoHwVirt:        'TestBoxesWithStrings.fCpuHwVirt IS FALSE',
     798        kiTbMisc_IoMmu:           'TestBoxesWithStrings.fChipsetIoMmu IS TRUE',
     799        kiTbMisc_NoIoMmu:         'TestBoxesWithStrings.fChipsetIoMmu IS FALSE',
    766800    };
    767801
     
    770804        sQuery = '';
    771805        if oCrit.sState == FilterCriterion.ksState_Selected and iCrit != iOmit:
    772             if iCrit == self.kiMisc:
     806            if iCrit == self.kiTestCaseMisc:
     807                for iValue, sLike in self.kaTcMisc:
     808                    if iValue in oCrit.aoSelected:        sNot = '';
     809                    elif iValue + 32 in oCrit.aoSelected: sNot = 'NOT ';
     810                    else:                                 continue;
     811                    sQuery += '%s   AND %s (TestCases.sName LIKE \'%%%s%%\' OR TestCaseArgs.sSubName LIKE \'%%%s%%\')\n' \
     812                            % (sExtraIndent, sNot, sLike, sLike,);
     813            elif iCrit == self.kiTestboxMisc:
     814                dConditions = self.kdTbMiscConditions;
    773815                for iValue in oCrit.aoSelected:
    774                     if iValue in self.kdMiscConditions:
    775                         sQuery += '%s   AND %s\n' % (sExtraIndent, self.kdMiscConditions[iValue],);
     816                    if iValue in dConditions:
     817                        sQuery += '%s   AND %s\n' % (sExtraIndent, dConditions[iValue],);
    776818            else:
     819                assert len(oCrit.asTables) == 1;
    777820                if iCrit == self.kiMemory:
    778                     sQuery += '%s   AND (%s.%s / 1024)' % (sExtraIndent, oCrit.sTable, oCrit.sColumn,);
     821                    sQuery += '%s   AND (%s.%s / 1024)' % (sExtraIndent, oCrit.asTables[0], oCrit.sColumn,);
    779822                else:
    780                     sQuery += '%s   AND %s.%s' % (sExtraIndent, oCrit.sTable, oCrit.sColumn,);
     823                    sQuery += '%s   AND %s.%s' % (sExtraIndent, oCrit.asTables[0], oCrit.sColumn,);
    781824                if not oCrit.fInverted:
    782825                    sQuery += ' IN (';
     
    813856        for iCrit, oCrit in enumerate(self.aCriteria):
    814857            if    oCrit.sState == FilterCriterion.ksState_Selected \
    815               and oCrit.sTable not in afDone \
    816858              and iCrit != iOmit:
    817                 afDone[oCrit.sTable] = True;
    818                 if oCrit.sTable == 'Builds':
    819                     sQuery += '%sINNER JOIN Builds\n' \
    820                               '%s        ON     Builds.idBuild      = TestSets.idBuild\n' \
    821                               '%s           AND Builds.tsExpire     > TestSets.tsCreated\n' \
    822                               '%s           AND Builds.tsEffective <= TestSets.tsCreated\n' \
    823                             % ( sExtraIndent, sExtraIndent, sExtraIndent, sExtraIndent, );
    824                 elif oCrit.sTable == 'TestResultFailures':
    825                     sQuery += '%sLEFT OUTER JOIN TestResultFailures\n' \
    826                               '%s             ON     TestResultFailures.idTestSet = TestSets.idTestSet\n' \
    827                               '%s                AND TestResultFailures.tsExpire  = \'infinity\'::TIMESTAMP\n' \
    828                             % ( sExtraIndent, sExtraIndent, sExtraIndent, );
    829                 elif oCrit.sTable == 'TestBoxesWithStrings':
    830                     sQuery += '%sLEFT OUTER JOIN TestBoxesWithStrings\n' \
    831                               '%s             ON     TestBoxesWithStrings.idGenTestBox = TestSets.idGenTestBox\n' \
    832                             % ( sExtraIndent, sExtraIndent, );
    833                 elif oCrit.sTable == 'BuildCategories':
    834                     sQuery += '%sINNER JOIN BuildCategories\n' \
    835                               '%s        ON BuildCategories.idBuildCategory = TestSets.idBuildCategory\n' \
    836                             % ( sExtraIndent, sExtraIndent, );
    837                 else:
    838                     assert False, oCrit.sTable;
     859                for sTable in oCrit.asTables:
     860                    if sTable not in afDone:
     861                        afDone[sTable] = True;
     862                        if sTable == 'Builds':
     863                            sQuery += '%sINNER JOIN Builds\n' \
     864                                      '%s        ON     Builds.idBuild      = TestSets.idBuild\n' \
     865                                      '%s           AND Builds.tsExpire     > TestSets.tsCreated\n' \
     866                                      '%s           AND Builds.tsEffective <= TestSets.tsCreated\n' \
     867                                    % ( sExtraIndent, sExtraIndent, sExtraIndent, sExtraIndent, );
     868                        elif sTable == 'TestResultFailures':
     869                            sQuery += '%sLEFT OUTER JOIN TestResultFailures\n' \
     870                                      '%s             ON     TestResultFailures.idTestSet = TestSets.idTestSet\n' \
     871                                      '%s                AND TestResultFailures.tsExpire  = \'infinity\'::TIMESTAMP\n' \
     872                                    % ( sExtraIndent, sExtraIndent, sExtraIndent, );
     873                        elif sTable == 'TestBoxesWithStrings':
     874                            sQuery += '%sLEFT OUTER JOIN TestBoxesWithStrings\n' \
     875                                      '%s             ON     TestBoxesWithStrings.idGenTestBox = TestSets.idGenTestBox\n' \
     876                                    % ( sExtraIndent, sExtraIndent, );
     877                        elif sTable == 'BuildCategories':
     878                            sQuery += '%sINNER JOIN BuildCategories\n' \
     879                                      '%s        ON BuildCategories.idBuildCategory = TestSets.idBuildCategory\n' \
     880                                    % ( sExtraIndent, sExtraIndent, );
     881                        elif sTable == 'TestCases':
     882                            sQuery += '%sINNER JOIN TestCases\n' \
     883                                      '%s        ON TestCases.idGenTestCase = TestSets.idGenTestCase\n' \
     884                                    % ( sExtraIndent, sExtraIndent, );
     885                        elif sTable == 'TestCaseArgs':
     886                            sQuery += '%sINNER JOIN TestCaseArgs\n' \
     887                                      '%s        ON TestCaseArgs.idGenTestCaseArgs = TestSets.idGenTestCaseArgs\n' \
     888                                    % ( sExtraIndent, sExtraIndent, );
     889                        else:
     890                            assert False, sTable;
    839891        return sQuery;
    840892
     
    842894        """ Checks whether getTableJoins already joins with TestResultFailures. """
    843895        for oCrit in self.aCriteria:
    844             if oCrit.sTable == sTable and oCrit.sState == FilterCriterion.ksState_Selected:
     896            if oCrit.sState == FilterCriterion.ksState_Selected and sTable in oCrit.asTables:
    845897                return True;
    846898        return False
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