def _recreateQueueItems(self, oData): # # Prepare the input data for the loop below. We compress the priority # to reduce the number of loops we need to executes below. # # Note! For BECI test group priority only applies to the ordering of # test groups, which has been resolved by the done sorting in the # base class. # iMinPriority = 0x7fff iMaxPriority = 0 for oTestGroup in oData.aoTestGroups: for oTestCase in oTestGroup.aoTestCases: iPrio = oTestCase.iSchedPriority assert iPrio in range(32) iPrio = iPrio / 4 assert iPrio in range(8) if iPrio > iMaxPriority: iMaxPriority = iPrio if iPrio < iMinPriority: iMinPriority = iPrio oTestCase.iBeciPrio = iPrio oTestCase.iNextVariation = -1 assert iMinPriority in range(8) assert iMaxPriority in range(8) assert iMinPriority <= iMaxPriority # # Generate the # cMaxItems = len(oData.aoArgsVariations) * 64 if cMaxItems > 1048576: cMaxItems = 1048576 aoItems = list() cNotAtEnd = len(oData.aoTestCases) while len(aoItems) < cMaxItems: self.msgDebug('outer loop: %s items' % (len(aoItems), )) for iPrio in range(iMaxPriority, iMinPriority - 1, -1): #self.msgDebug('prio loop: %s' % (iPrio,)); for oTestGroup in oData.aoTestGroups: #self.msgDebug('testgroup loop: %s' % (oTestGroup,)); for oTestCase in oTestGroup.aoTestCases: #self.msgDebug('testcase loop: idTestCase=%s' % (oTestCase.idTestCase,)); if iPrio <= oTestCase.iBeciPrio and oTestCase.aoArgsVariations: # Get variation. iNext = oTestCase.iNextVariation if iNext != 0: if iNext == -1: iNext = 0 cNotAtEnd -= 1 oArgsVariation = oTestCase.aoArgsVariations[iNext] # Update next variation. iNext = (iNext + 1) % len( oTestCase.aoArgsVariations) cNotAtEnd += iNext != 0 oTestCase.iNextVariation = iNext # Create queue item and append it. oItem = SchedQueueData() oItem.initFromValues( idSchedGroup=self._oSchedGrpData.idSchedGroup, idGenTestCaseArgs=oArgsVariation. idGenTestCaseArgs, idTestGroup=oTestGroup.idTestGroup, aidTestGroupPreReqs=oTestGroup. aidTestGroupPreReqs, bmHourlySchedule=oTestGroup.bmHourlySchedule, cMissingGangMembers=oArgsVariation. cGangMembers, offQueue=len(aoItems)) aoItems.append(oItem) # Done? if cNotAtEnd == 0: self.msgDebug('returns %s items' % (len(aoItems), )) return aoItems return aoItems
def _recreateQueueItems(self, oData): # # Prepare the input data for the loop below. We compress the priority # to reduce the number of loops we need to executes below. # # Note! For BECI test group priority only applies to the ordering of # test groups, which has been resolved by the done sorting in the # base class. # iMinPriority = 0x7fff; iMaxPriority = 0; for oTestGroup in oData.aoTestGroups: for oTestCase in oTestGroup.aoTestCases: iPrio = oTestCase.iSchedPriority; assert iPrio in range(32); iPrio = iPrio / 4; assert iPrio in range(8); if iPrio > iMaxPriority: iMaxPriority = iPrio; if iPrio < iMinPriority: iMinPriority = iPrio; oTestCase.iBeciPrio = iPrio; oTestCase.iNextVariation = -1; assert iMinPriority in range(8); assert iMaxPriority in range(8); assert iMinPriority <= iMaxPriority; # # Generate the # cMaxItems = len(oData.aoArgsVariations) * 64; if cMaxItems > 1048576: cMaxItems = 1048576; aoItems = list(); cNotAtEnd = len(oData.aoTestCases); while len(aoItems) < cMaxItems: self.msgDebug('outer loop: %s items' % (len(aoItems),)); for iPrio in range(iMaxPriority, iMinPriority - 1, -1): #self.msgDebug('prio loop: %s' % (iPrio,)); for oTestGroup in oData.aoTestGroups: #self.msgDebug('testgroup loop: %s' % (oTestGroup,)); for oTestCase in oTestGroup.aoTestCases: #self.msgDebug('testcase loop: idTestCase=%s' % (oTestCase.idTestCase,)); if iPrio <= oTestCase.iBeciPrio and len(oTestCase.aoArgsVariations) > 0: # Get variation. iNext = oTestCase.iNextVariation; if iNext != 0: if iNext == -1: iNext = 0; cNotAtEnd -= 1; oArgsVariation = oTestCase.aoArgsVariations[iNext]; # Update next variation. iNext = (iNext + 1) % len(oTestCase.aoArgsVariations); cNotAtEnd += iNext != 0; oTestCase.iNextVariation = iNext; # Create queue item and append it. oItem = SchedQueueData(); oItem.initFromValues(idSchedGroup = self._oSchedGrpData.idSchedGroup, idGenTestCaseArgs = oArgsVariation.idGenTestCaseArgs, idTestGroup = oTestGroup.idTestGroup, aidTestGroupPreReqs = oTestGroup.aidTestGroupPreReqs, bmHourlySchedule = oTestGroup.bmHourlySchedule, cMissingGangMembers = oArgsVariation.cGangMembers, offQueue = len(aoItems)); aoItems.append(oItem); # Done? if cNotAtEnd == 0: self.msgDebug('returns %s items' % (len(aoItems),)); return aoItems; return aoItems;