コード例 #1
0
 private boolean roleSettingOperation(
     TestPlanEntity testPlan, Host tester, List<Engine> idleEngines, List<Engine> engineOnTester) {
   Queue<Engine> engineQ = new ArrayDeque<>();
   engineQ.addAll(engineOnTester);
   boolean finished = setUpRemoteEngines(testPlan, engineQ);
   if (!finished) {
     if (engineQ.isEmpty()) {
       engineQ.addAll(idleEngines);
       finished = setUpRemoteEngines(testPlan, engineQ);
       if (!finished) {
         _logger.error(
             String.format(
                 "Testplan: %d can't init. Too many engine role faults", testPlan.getId()));
         return true;
       }
     } else {
       _logger.error(
           String.format(
               "Testplan: %d can't init. Not enough available engines", testPlan.getId()));
       return true;
     }
   } else {
     if (!engineQ.isEmpty()) {
       List<Engine> enginesToBeKicked = engineQ.stream().collect(Collectors.toList());
       _logger.warn(
           String.format("Host: %d has to many engines, should kickout some.", tester.getId()));
       if (!hostService.kickEnginesToRandomHost(enginesToBeKicked, tester)) {
         _logger.warn(String.format("Host: %d kick out failed. please retry", tester.getId()));
         return true;
       }
     }
   }
   return false;
 }