- Timestamp:
- Dec 29, 2016 10:27:33 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/testmanager/core/schedulerbase.py
r62484 r65031 1291 1291 1292 1292 @staticmethod 1293 def _pickSchedGroup(oTestBoxDataEx, iWorkItem ):1293 def _pickSchedGroup(oTestBoxDataEx, iWorkItem, dIgnoreSchedGroupIds): 1294 1294 """ 1295 1295 Picks the next scheduling group for the given testbox. … … 1297 1297 if len(oTestBoxDataEx.aoInSchedGroups) == 1: 1298 1298 oSchedGroup = oTestBoxDataEx.aoInSchedGroups[0].oSchedGroup; 1299 if oSchedGroup.fEnabled and oSchedGroup.idBuildSrc is not None: 1299 if oSchedGroup.fEnabled \ 1300 and oSchedGroup.idBuildSrc is not None \ 1301 and oSchedGroup.idSchedGroup not in dIgnoreSchedGroupIds: 1300 1302 return (oSchedGroup, 0); 1301 1303 … … 1330 1332 1331 1333 # Pick the next one. 1332 iWorkItem += 1; 1333 if iWorkItem >= len(aoFlat): 1334 iWorkItem = 0; 1335 if iWorkItem < len(aoFlat): 1336 return (aoFlat[iWorkItem], iWorkItem); 1334 cLeft = len(aoFlat); 1335 while cLeft > 0: 1336 cLeft -= 1; 1337 iWorkItem += 1; 1338 if iWorkItem >= len(aoFlat) or iWorkItem < 0: 1339 iWorkItem = 0; 1340 if aoFlat[iWorkItem].idSchedGroup not in dIgnoreSchedGroupIds: 1341 return (aoFlat[iWorkItem], iWorkItem); 1337 1342 1338 1343 # No active group. … … 1375 1380 and oTestBoxDataEx.idGenTestBox == oTestBoxData.idGenTestBox: 1376 1381 1377 # Now, pick the scheduling group. 1378 (oSchedGroup, iWorkItem) = SchedulerBase._pickSchedGroup(oTestBoxDataEx, iWorkItem); 1379 if oSchedGroup is not None: 1382 # We may have to skip scheduling groups that are out of work (e.g. 'No build'). 1383 dIgnoreSchedGroupIds = []; 1384 while True: 1385 # Now, pick the scheduling group. 1386 (oSchedGroup, iWorkItem) = SchedulerBase._pickSchedGroup(oTestBoxDataEx, iWorkItem, dIgnoreSchedGroupIds); 1387 if oSchedGroup is None: 1388 break; 1380 1389 assert oSchedGroup.fEnabled and oSchedGroup.idBuildSrc is not None; 1381 1390 1382 #1383 1391 # Instantiate the specified scheduler and let it do the rest. 1384 #1385 1392 oScheduler = SchedulerBase._instantiate(oDb, oSchedGroup, iVerbosity, tsSecStart); 1386 1393 dResponse = oScheduler.scheduleNewTaskWorker(oTestBoxDataEx, tsNow, sBaseUrl); … … 1389 1396 oDb.commit(); 1390 1397 return dResponse; 1398 dIgnoreSchedGroupIds[oSchedGroup.idSchedGroup] = oSchedGroup; 1391 1399 except: 1392 1400 oDb.rollback();
Note:
See TracChangeset
for help on using the changeset viewer.