def getTestCaseArgsForGroup(self, idSchedGroup, cMax=None):
        """
        Gets the testcase argument variation w/ testgroup+priority for the given scheduling group.

        Returns an array TestCaseArgsData instance (sorted by group and
        variation id) 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, TestCaseArgs.*\n'
            'FROM     SchedGroupMembers, TestGroups, TestGroupMembers, TestCaseArgs, 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 TestCaseArgs.idTestCase        = TestGroupMembers.idTestCase\n'
            '     AND TestCaseArgs.tsExpire          = \'infinity\'::TIMESTAMP\n'
            '     AND (   TestGroupMembers.aidTestCaseArgs is NULL\n'
            '          OR TestCaseArgs.idTestCaseArgs = ANY(TestGroupMembers.aidTestCaseArgs) )\n'
            '     AND TestCases.idTestCase           = TestCaseArgs.idTestCase\n'
            '     AND TestCases.tsExpire             = \'infinity\'::TIMESTAMP\n'
            '     AND TestCases.fEnabled             = TRUE\n'
            'ORDER BY TestGroupMembers.idTestGroup, TestGroupMembers.idTestCase, TestCaseArgs.idTestCaseArgs\n',
            (idSchedGroup, ))

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

        aoRet = []
        for aoRow in self._oDb.fetchAll():
            oVariation = TestCaseArgsData().initFromDbRow(aoRow[2:])
            oVariation.idTestGroup = aoRow[0]
            oVariation.iSchedPriority = aoRow[1]
            aoRet.append(oVariation)
        return aoRet
示例#2
0
    def getTestCaseArgsForGroup(self, idSchedGroup, cMax = None):
        """
        Gets the testcase argument variation w/ testgroup+priority for the given scheduling group.

        Returns an array TestCaseArgsData instance (sorted by group and
        variation id) 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, TestCaseArgs.*\n'
                          'FROM     SchedGroupMembers, TestGroups, TestGroupMembers, TestCaseArgs, 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 TestCaseArgs.idTestCase        = TestGroupMembers.idTestCase\n'
                          '     AND TestCaseArgs.tsExpire          = \'infinity\'::TIMESTAMP\n'
                          '     AND (   TestGroupMembers.aidTestCaseArgs is NULL\n'
                          '          OR TestCaseArgs.idTestCaseArgs = ANY(TestGroupMembers.aidTestCaseArgs) )\n'
                          '     AND TestCases.idTestCase           = TestCaseArgs.idTestCase\n'
                          '     AND TestCases.tsExpire             = \'infinity\'::TIMESTAMP\n'
                          '     AND TestCases.fEnabled             = TRUE\n'
                          'ORDER BY TestGroupMembers.idTestGroup, TestGroupMembers.idTestCase, TestCaseArgs.idTestCaseArgs\n'
                          , (idSchedGroup,));

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

        aoRet = [];
        for aoRow in self._oDb.fetchAll():
            oVariation = TestCaseArgsData().initFromDbRow(aoRow[2:]);
            oVariation.idTestGroup    = aoRow[0];
            oVariation.iSchedPriority = aoRow[1];
            aoRet.append(oVariation);
        return aoRet;