示例#1
0
    def initFromDbWithGenIdEx(self,
                              oDb,
                              idGenTestCaseArgs,
                              tsConfigEff=None,
                              tsRsrcEff=None):
        """
        Initialize from the database, given the ID of a row.
        """

        oDb.execute(
            'SELECT *, CURRENT_TIMESTAMP FROM TestCaseArgs WHERE idGenTestCaseArgs = %s',
            (idGenTestCaseArgs, ))
        aoRow = oDb.fetchOne()
        TestCaseArgsData.initFromDbRow(self, aoRow)

        tsNow = aoRow[11]
        if tsConfigEff is None: tsConfigEff = tsNow
        if tsRsrcEff is None: tsRsrcEff = tsNow

        self.oTestCase = TestCaseData().initFromDbWithId(
            oDb, self.idTestCase, tsConfigEff)
        self.aoTestCasePreReqs = TestCaseDependencyLogic(oDb).getTestCaseDeps(
            self.idTestCase, tsConfigEff)
        self.aoGlobalRsrc = TestCaseGlobalRsrcDepLogic(oDb).getTestCaseDeps(
            self.idTestCase, tsRsrcEff)

        return self
示例#2
0
    def getTestCasesForGroup(self, idSchedGroup, cMax = None):
        """
        Gets the enabled testcases w/ testgroup+priority for the given scheduling group.

        Returns an array TestCaseData instance (group id, testcase priority and
        testcase ids) with an extra iSchedPriority member.
        May raise exception on DB error or if the result exceeds cMax.
        """

        self._oDb.execute('SELECT   TestGroupMembers.idTestGroup, TestGroupMembers.iSchedPriority, TestCases.*\n'
                          'FROM     SchedGroupMembers, TestGroups, TestGroupMembers, TestCases\n'
                          'WHERE    SchedGroupMembers.idSchedGroup = %s\n'
                          '     AND SchedGroupMembers.tsExpire     = \'infinity\'::TIMESTAMP\n'
                          '     AND TestGroups.idTestGroup         = SchedGroupMembers.idTestGroup\n'
                          '     AND TestGroups.tsExpire            = \'infinity\'::TIMESTAMP\n'
                          '     AND TestGroupMembers.idTestGroup   = TestGroups.idTestGroup\n'
                          '     AND TestGroupMembers.tsExpire      = \'infinity\'::TIMESTAMP\n'
                          '     AND TestCases.idTestCase           = TestGroupMembers.idTestCase\n'
                          '     AND TestCases.tsExpire             = \'infinity\'::TIMESTAMP\n'
                          '     AND TestCases.fEnabled             = TRUE\n'
                          'ORDER BY TestGroupMembers.idTestGroup, TestGroupMembers.iSchedPriority, TestCases.idTestCase\n'
                          , (idSchedGroup,));

        if cMax is not None  and  self._oDb.getRowCount() > cMax:
            raise TMExceptionBase('Too many testcases for scheduling group %s: %s, max %s'
                                  % (idSchedGroup, cMax, self._oDb.getRowCount(),));

        aoRet = [];
        for aoRow in self._oDb.fetchAll():
            oTestCase = TestCaseData().initFromDbRow(aoRow[2:]);
            oTestCase.idTestGroup    = aoRow[0];
            oTestCase.iSchedPriority = aoRow[1];
            aoRet.append(oTestCase);
        return aoRet;
示例#3
0
文件: dbobjcache.py 项目: xagau/vbox
 def getTestCase(self, idTestCase):
     """ Gets the corresponding TestCaseData object. """
     oRet = self._adCache[self.ksObjType_TestCase_idTestCase].get(idTestCase);
     if oRet is None:
         # Load cache entry.
         from testmanager.core.testcase import TestCaseData;
         oRet = TestCaseData();
         try:    oRet.initFromDbWithId(self._oDb, idTestCase, self.tsNow, self.sPeriodBack);
         except: self._handleDbException();
         else:   self._adCache[self.ksObjType_TestCase_idGenTestCase][oRet.idGenTestCase] = oRet;
         self._adCache[self.ksObjType_TestCase_idTestCase][idTestCase] = oRet;
     return oRet;
示例#4
0
    def initFromDbRowEx(self, aoRow, oDb, tsConfigEff = None, tsRsrcEff = None):
        """
        Extended version of initFromDbRow that fills in the rest from the database.
        """
        TestCaseArgsData.initFromDbRow(self, aoRow);

        if tsConfigEff is None: tsConfigEff = oDb.getCurrentTimestamp();
        if tsRsrcEff is None:   tsRsrcEff   = oDb.getCurrentTimestamp();

        self.oTestCase         = TestCaseData().initFromDbWithId(oDb, self.idTestCase, tsConfigEff);
        self.aoTestCasePreReqs = TestCaseDependencyLogic(oDb).getTestCaseDeps(self.idTestCase, tsConfigEff);
        self.aoGlobalRsrc      = TestCaseGlobalRsrcDepLogic(oDb).getTestCaseDeps(self.idTestCase, tsRsrcEff);

        return self;