VirtualBox

Changeset 65226 in vbox


Ignore:
Timestamp:
Jan 10, 2017 3:36:36 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
112734
Message:

TestManager: Hacked up some basic testbox sorting during the weekly meeting.

Location:
trunk/src/VBox/ValidationKit/testmanager
Files:
17 edited

Legend:

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

    r65053 r65226  
    152152        self.dCache = None;
    153153
    154     def fetchForListing(self, iStart, cMaxRows, tsNow):
     154    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    155155        """
    156156        Fetches testboxes for listing.
     
    515515    #
    516516
    517     def fetchForListing(self, iStart, cMaxRows, tsNow):
     517    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    518518        """
    519519        Fetches builds for listing.
     
    522522        Raises exception on error.
    523523        """
     524        _ = aiSortColumns;
     525
    524526        if tsNow is None:
    525527            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/buildblacklist.py

    r65040 r65226  
    128128        self.dCache = None;
    129129
    130     def fetchForListing(self, iStart, cMaxRows, tsNow):
     130    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    131131        """
    132132        Fetches Build Blacklist records.
     
    135135        Raises exception on error.
    136136        """
     137        _ = aiSortColumns;
    137138
    138139        if tsNow is None:
  • trunk/src/VBox/ValidationKit/testmanager/core/buildsource.py

    r65040 r65226  
    163163    #
    164164
    165     def fetchForListing(self, iStart, cMaxRows, tsNow):
     165    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    166166        """
    167167        Fetches build sources.
     
    170170        Raises exception on error.
    171171        """
     172        _ = aiSortColumns;
     173
    172174        if tsNow is None:
    173175            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/failurecategory.py

    r62484 r65226  
    111111        self.dCache = None;
    112112
    113     def fetchForListing(self, iStart, cMaxRows, tsNow):
     113    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    114114        """
    115115        Fetches Failure Category records.
     
    118118        Raises exception on error.
    119119        """
     120        _ = aiSortColumns;
    120121
    121122        if tsNow is None:
  • trunk/src/VBox/ValidationKit/testmanager/core/failurereason.py

    r65040 r65226  
    149149        self.oUserAccountLogic = None;
    150150
    151     def fetchForListing(self, iStart, cMaxRows, tsNow):
     151    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    152152        """
    153153        Fetches Failure Category records.
     
    156156        Raises exception on error.
    157157        """
     158        _ = aiSortColumns;
    158159        self._ensureCachesPresent();
    159160
     
    188189        return aoRows
    189190
    190     def fetchForListingInCategory(self, iStart, cMaxRows, tsNow, idFailureCategory):
     191    def fetchForListingInCategory(self, iStart, cMaxRows, tsNow, idFailureCategory, aiSortColumns = None):
    191192        """
    192193        Fetches Failure Category records.
     
    195196        Raises exception on error.
    196197        """
     198        _ = aiSortColumns;
    197199        self._ensureCachesPresent();
    198200
  • trunk/src/VBox/ValidationKit/testmanager/core/globalresource.py

    r65040 r65226  
    124124        self.dCache = None;
    125125
    126     def fetchForListing(self, iStart, cMaxRows, tsNow):
     126    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    127127        """
    128128        Returns an array (list) of FailureReasonData items, empty list if none.
    129129        Raises exception on error.
    130130        """
     131        _ = aiSortColumns;
    131132
    132133        if tsNow is None:
  • trunk/src/VBox/ValidationKit/testmanager/core/schedgroup.py

    r65040 r65226  
    434434    #
    435435
    436     def fetchForListing(self, iStart, cMaxRows, tsNow):
     436    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    437437        """
    438438        Fetches build sources.
     
    441441        Raises exception on error.
    442442        """
     443        _ = aiSortColumns;
    443444
    444445        if tsNow is None:
  • trunk/src/VBox/ValidationKit/testmanager/core/systemchangelog.py

    r65211 r65226  
    128128
    129129
    130     def fetchForListingEx(self, iStart, cMaxRows, tsNow, cDaysBack):
     130    def fetchForListingEx(self, iStart, cMaxRows, tsNow, cDaysBack, aiSortColumns = None):
    131131        """
    132132        Fetches SystemLog entries.
     
    135135        Raises exception on error.
    136136        """
     137        _ = aiSortColumns;
    137138
    138139        #
  • trunk/src/VBox/ValidationKit/testmanager/core/systemlog.py

    r62484 r65226  
    103103        ModelLogicBase.__init__(self, oDb);
    104104
    105     def fetchForListing(self, iStart, cMaxRows, tsNow):
     105    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    106106        """
    107107        Fetches SystemLog entries.
     
    110110        Raises exception on error.
    111111        """
     112        _ = aiSortColumns;
    112113        if tsNow is None:
    113114            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/testbox.py

    r65094 r65226  
    671671    """
    672672
     673    kiSortColumn_sName              =  0;
     674    kiSortColumn_sOs                =  1;
     675    kiSortColumn_sOsVersion         =  2;
     676    kiSortColumn_sCpuVendor         =  3;
     677    kiSortColumn_sCpuArch           =  4;
     678    kiSortColumn_lCpuRevision       =  5;
     679    kiSortColumn_cCpus              =  6;
     680    kiSortColumn_cMbMemory          =  7;
     681    kiSortColumn_cMbScratch         =  8;
     682    kiSortColumn_fNestedPaging      =  9;
     683    kiSortColumn_iTestBoxScriptRev  = 10;
     684    kiSortColumn_iPythonHexVersion  = 11;
     685    kcMaxSortColumns                = 12;
     686    kdSortColumnMap                 = {
     687        kiSortColumn_sName:             'TestBoxesWithStrings.sName',
     688        kiSortColumn_sOs:               'TestBoxesWithStrings.sOs',
     689        kiSortColumn_sOsVersion:        'TestBoxesWithStrings.sOsVersion',
     690        kiSortColumn_sCpuVendor:        'TestBoxesWithStrings.sCpuVendor',
     691        kiSortColumn_sCpuArch:          'TestBoxesWithStrings.sCpuArch',
     692        kiSortColumn_lCpuRevision:      'TestBoxesWithStrings.lCpuRevision',
     693        kiSortColumn_cCpus:             'TestBoxesWithStrings.cCpus',
     694        kiSortColumn_cMbMemory:         'TestBoxesWithStrings.cMbMemory',
     695        kiSortColumn_cMbScratch:        'TestBoxesWithStrings.cMbScratch',
     696        kiSortColumn_fNestedPaging:     'TestBoxesWithStrings.fNestedPaging',
     697        kiSortColumn_iTestBoxScriptRev: 'TestBoxesWithStrings.iTestBoxScriptRev',
     698        kiSortColumn_iPythonHexVersion: 'TestBoxesWithStrings.iPythonHexVersion',
     699    };
    673700
    674701    def __init__(self, oDb):
     
    694721        return oData;
    695722
    696     def fetchForListing(self, iStart, cMaxRows, tsNow):
     723    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    697724        """
    698725        Fetches testboxes for listing.
     
    713740
    714741        from testmanager.core.testboxstatus import TestBoxStatusData;
     742
     743        if aiSortColumns is None or len(aiSortColumns) == 0:
     744            aiSortColumns = [self.kiSortColumn_sName,];
    715745
    716746        if tsNow is None:
     
    721751                              '                      ON TestBoxStatuses.idTestBox = TestBoxesWithStrings.idTestBox\n'
    722752                              'WHERE    TestBoxesWithStrings.tsExpire = \'infinity\'::TIMESTAMP\n'
    723                               'ORDER BY TestBoxesWithStrings.sName\n'
     753                              'ORDER BY ' + (', '.join([self.kdSortColumnMap[i] for i in aiSortColumns])) + '\n'
    724754                              'LIMIT %s OFFSET %s\n'
    725755                              , (cMaxRows, iStart,));
     
    732762                              'WHERE    tsExpire     > %s\n'
    733763                              '     AND tsEffective <= %s\n'
    734                               'ORDER BY TestBoxesWithStrings.sName\n'
     764                              'ORDER BY ' + (', '.join([self.kdSortColumnMap[i] for i in aiSortColumns])) + '\n'
    735765                              'LIMIT %s OFFSET %s\n'
    736766                              , ( tsNow, tsNow, cMaxRows, iStart,));
  • trunk/src/VBox/ValidationKit/testmanager/core/testcase.py

    r62484 r65226  
    965965        return aoRet
    966966
    967     def fetchForListing(self, iStart, cMaxRows, tsNow):
     967    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    968968        """
    969969        Fetches test cases.
     
    972972        Raises exception on error.
    973973        """
     974        _ = aiSortColumns;
    974975        if tsNow is None:
    975976            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/testgroup.py

    r65040 r65226  
    380380    #
    381381
    382     def fetchForListing(self, iStart, cMaxRows, tsNow):
     382    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    383383        """
    384384        Fetches test groups.
     
    387387        Raises exception on error.
    388388        """
     389        _ = aiSortColumns;
    389390        if tsNow is None:
    390391            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/useraccount.py

    r62484 r65226  
    123123        self.dCache = None;
    124124
    125     def fetchForListing(self, iStart, cMaxRows, tsNow):
     125    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    126126        """
    127127        Fetches user accounts.
     
    130130        Raises exception on error.
    131131        """
     132        _ = aiSortColumns;
    132133        if tsNow is None:
    133134            self._oDb.execute('SELECT   *\n'
  • trunk/src/VBox/ValidationKit/testmanager/core/vcsrevisions.py

    r62484 r65226  
    113113    #
    114114
    115     def fetchForListing(self, iStart, cMaxRows, tsNow):
     115    def fetchForListing(self, iStart, cMaxRows, tsNow, aiSortColumns = None):
    116116        """
    117117        Fetches VCS revisions for listing.
     
    120120        Raises exception on error.
    121121        """
    122         _ = tsNow;
     122        _ = tsNow; _ = aiSortColumns;
    123123        self._oDb.execute('SELECT   *\n'
    124124                          'FROM     VcsRevisions\n'
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py

    r64986 r65226  
    3939from testmanager.core.db                import TMDatabaseConnection;
    4040from testmanager.core.schedgroup        import SchedGroupLogic, SchedGroupData;
    41 from testmanager.core.testbox           import TestBoxData, TestBoxDataEx;
     41from testmanager.core.testbox           import TestBoxData, TestBoxDataEx, TestBoxLogic;
    4242from testmanager.core.testset           import TestSetData;
    4343from testmanager.core.db                import isDbTimestampInfinity;
     
    192192                                       '', '', '', 'align="left"', 'align="right"', 'align="right"', 'align="right"',
    193193                                       'align="center"' ]);
     194        self._aaiColumnSorting.extend([
     195            (TestBoxLogic.kiSortColumn_sName,),
     196            None, # LOM
     197            None, # Status
     198            None, # Cmd
     199            None, # Note
     200            (TestBoxLogic.kiSortColumn_iTestBoxScriptRev,),
     201            (TestBoxLogic.kiSortColumn_iPythonHexVersion,),
     202            None, # Group
     203            (TestBoxLogic.kiSortColumn_sOs, TestBoxLogic.kiSortColumn_sOsVersion, TestBoxLogic.kiSortColumn_sCpuArch,),
     204            (TestBoxLogic.kiSortColumn_sCpuVendor, TestBoxLogic.kiSortColumn_lCpuRevision,),
     205            (TestBoxLogic.kiSortColumn_fNestedPaging,),
     206            (TestBoxLogic.kiSortColumn_cCpus,),
     207            (TestBoxLogic.kiSortColumn_cMbMemory,),
     208            (TestBoxLogic.kiSortColumn_cMbScratch,),
     209            None, # Actions
     210        ]);
     211        assert len(self._aaiColumnSorting) == len(self._asColumnHeaders);
    194212        self._aoActions     = list(self.kasTestBoxActionDescs);
    195213        self._sAction       = oDisp.ksActionTestBoxListPost;
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py

    r65086 r65226  
    8282    ## The name of the list-action parameter (WuiListContentWithActionBase).
    8383    ksParamListAction    = 'ListAction';
     84
     85    ## One or more columns to sort by.
     86    ksParamSortColumns   = 'SortBy';
    8487
    8588    ## The name of the change log enabled/disabled parameter.
     
    801804        cItemsPerPage   = self.getIntParam(self.ksParamItemsPerPage, iMin = 2, iMax =   9999, iDefault = 300);
    802805        iPage           = self.getIntParam(self.ksParamPageNo,       iMin = 0, iMax = 999999, iDefault = 0);
     806        aiSortColumnsDup = self.getListOfIntParams(self.ksParamSortColumns, iMin = 0,
     807                                                   iMax = getattr(oLogicType, 'kcMaxSortColumns', 0), aiDefaults = []);
     808        aiSortColumns   = [];
     809        for iSortColumn in aiSortColumnsDup:
     810            if iSortColumn not in aiSortColumns:
     811                aiSortColumns.append(iSortColumn);
    803812        self._checkForUnknownParameters();
    804813
    805         aoEntries  = oLogicType(self._oDb).fetchForListing(iPage * cItemsPerPage, cItemsPerPage + 1, tsEffective);
     814        aoEntries  = oLogicType(self._oDb).fetchForListing(iPage * cItemsPerPage, cItemsPerPage + 1, tsEffective, aiSortColumns);
    806815        oContent   = oListContentType(aoEntries, iPage, cItemsPerPage, tsEffective,
    807816                                      fnDPrint = self._oSrvGlue.dprint, oDisp = self);
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py

    r65052 r65226  
    749749        self._asColumnHeaders   = [];
    750750        self._asColumnAttribs   = [];
     751        self._aaiColumnSorting  = [];   ##< list of list of integers
    751752
    752753    def _formatCommentCell(self, sComment, cMaxLines = 3, cchMaxLine = 63):
     
    944945
    945946        sHtml  = '  <thead class="tmheader"><tr>';
    946         for oHeader in self._asColumnHeaders:
     947        for iHeader, oHeader in enumerate(self._asColumnHeaders):
    947948            if isinstance(oHeader, WuiHtmlBase):
    948949                sHtml += '<th>' + oHeader.toHtml() + '</th>';
     950            elif iHeader < len(self._aaiColumnSorting) and self._aaiColumnSorting[iHeader] is not None:
     951                sHtml += '<th>'
     952                sHtml += '<a href="javascript:ahrefActionSortByColumns(\'%s\', [%s]);">' \
     953                       % (WuiDispatcherBase.ksParamSortColumns, ','.join([str(i) for i in self._aaiColumnSorting[iHeader]]));
     954                sHtml += webutils.escapeElem(oHeader) + '</a></th>';
    949955            else:
    950956                sHtml += '<th>' + webutils.escapeElem(oHeader) + '</th>';
     
    10241030                                             % ('' if sId is None else sId)), ];
    10251031        self._asColumnAttribs = [ 'align="center"', ];
     1032        self._aaiColumnSorting = [ None, ];
    10261033
    10271034    def _getCheckBoxColumn(self, iEntry, sValue):
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