How to use getId method of org.cerberus.crud.entity.TestCaseStepExecution class

Best Cerberus-source code snippet using org.cerberus.crud.entity.TestCaseStepExecution.getId

Source:ExecutionRunService.java Github

copy

Full Screen

...148 @Autowired149 private IEmailService emailService;150 @Override151 public TestCaseExecution executeTestCase(TestCaseExecution tCExecution) throws CerberusException {152 long runID = tCExecution.getId();153 String logPrefix = runID + " - ";154 /**155 * Feeding Build Rev of main Application system to156 * testcaseexecutionsysver table. Only if execution is not manual.157 */158 try {159 if (!(tCExecution.isManualURL())) {160 /**161 * Insert SystemVersion in Database162 */163 TestCaseExecutionSysVer myExeSysVer = null;164 try {165 LOG.debug(logPrefix + "Registering Main System Version.");166 myExeSysVer = factoryTestCaseExecutionSysVer.create(runID, tCExecution.getApplicationObj().getSystem(), tCExecution.getBuild(), tCExecution.getRevision());167 testCaseExecutionSysVerService.insertTestCaseExecutionSysVer(myExeSysVer);168 } catch (CerberusException ex) {169 LOG.error(logPrefix + ex.getMessage());170 }171 LOG.debug(logPrefix + "Main System Version Registered.");172 /**173 * For all Linked environment, we also keep track on the174 * build/rev information inside testcaseexecutionsysver table.175 */176 LOG.debug(logPrefix + "Registering Linked System Version.");177 try {178 List<CountryEnvLink> ceLink = null;179 ceLink = countryEnvLinkService.convert(countryEnvLinkService.readByVarious(tCExecution.getApplicationObj().getSystem(), tCExecution.getCountry(), tCExecution.getEnvironment()));180 for (CountryEnvLink myCeLink : ceLink) {181 LOG.debug(logPrefix + "Linked environment found : " + myCeLink.getSystemLink() + myCeLink.getCountryLink() + myCeLink.getEnvironmentLink());182 CountryEnvParam mycountEnvParam;183 try {184 mycountEnvParam = this.countryEnvParamService.convert(this.countryEnvParamService.readByKey(myCeLink.getSystemLink(), myCeLink.getCountryLink(), myCeLink.getEnvironmentLink()));185 myExeSysVer = factoryTestCaseExecutionSysVer.create(runID, myCeLink.getSystemLink(), mycountEnvParam.getBuild(), mycountEnvParam.getRevision());186 testCaseExecutionSysVerService.insertTestCaseExecutionSysVer(myExeSysVer);187 } catch (CerberusException ex) {188 // Referencial Integrity link between countryEnvLink and CountryEnvParam table should secure that exception to never happen.189 LOG.error(logPrefix + ex.getMessage());190 throw new CerberusException(ex.getMessageError());191 }192 }193 } catch (CerberusException ex) {194 LOG.debug(logPrefix + "No Linked environment found.");195 }196 LOG.debug(logPrefix + "Linked System Version Registered.");197 }198 /**199 * Get used SeleniumCapabilities (empty if application is not GUI)200 */201 LOG.debug(logPrefix + "Getting Selenium capabitities for GUI applications.");202 if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_GUI)) {203 try {204 Capabilities caps = this.seleniumServerService.getUsedCapabilities(tCExecution.getSession());205 tCExecution.setBrowserFullVersion(caps.getBrowserName() + " " + caps.getVersion() + " " + caps.getPlatform().toString());206 tCExecution.setVersion(caps.getVersion());207 tCExecution.setPlatform(caps.getPlatform().toString());208 } catch (Exception ex) {209 LOG.error(logPrefix + "Exception on selenium getting Used Capabilities :" + ex.toString());210 }211 LOG.debug(logPrefix + "Selenium capabitities loaded.");212 } else {213 // If Selenium is not needed, the selenium and browser info is set to empty.214 tCExecution.setSeleniumIP("");215 tCExecution.setSeleniumPort("");216 tCExecution.setBrowser("");217 tCExecution.setVersion("");218 tCExecution.setPlatform("");219 tCExecution.setRobotDecli("");220 LOG.debug(logPrefix + "No Selenium capabitities loaded because application not GUI : " + tCExecution.getApplicationObj().getType());221 }222 tCExecution.setRobotDecli(tCExecution.getRobotDecli().replace("%BROWSER%", tCExecution.getBrowser()));223 tCExecution.setRobotDecli(tCExecution.getRobotDecli().replace("%BROWSERVERSION%", tCExecution.getVersion()));224 tCExecution.setRobotDecli(tCExecution.getRobotDecli().replace("%PLATFORM%", tCExecution.getPlatform()));225 /**226 * Load PreTestCase information and set PreTCase to the227 * TestCaseExecution object228 */229 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_LOADINGDETAILEDDATA));230 LOG.debug(logPrefix + "Loading Pre-testcases.");231 List<TestCase> preTests = testCaseService.findTestCaseActiveByCriteria("Pre Testing", tCExecution.getTestCaseObj().getApplication(), tCExecution.getCountry());232 tCExecution.setPreTestCaseList(preTests);233 if (!(preTests == null)) {234 LOG.debug(logPrefix + "Loaded PreTest List. " + tCExecution.getPreTestCaseList().size() + " found.");235 }236 LOG.debug(logPrefix + "Pre-testcases Loaded.");237 /**238 * Load Main TestCase with Step dependencies (Actions/Control)239 */240 LOG.debug(logPrefix + "Loading all Steps information of Main testcase.");241 List<TestCaseStep> testCaseStepList;242 testCaseStepList = this.loadTestCaseService.loadTestCaseStep(tCExecution.getTestCaseObj());243 tCExecution.getTestCaseObj().setTestCaseStep(testCaseStepList);244 LOG.debug(logPrefix + "Steps information of Main testcase Loaded : " + tCExecution.getTestCaseObj().getTestCaseStep().size() + " Step(s) found.");245 /**246 * Load Pre TestCase with Step dependencies (Actions/Control)247 */248 LOG.debug(logPrefix + "Loading all Steps information (Actions & Controls) of all Pre-testcase.");249 List<TestCaseStep> preTestCaseStepList = new ArrayList<TestCaseStep>();250 List<TestCase> preTestCase = new ArrayList<TestCase>();251 for (TestCase myTCase : tCExecution.getPreTestCaseList()) {252 myTCase.setTestCaseStep(this.loadTestCaseService.loadTestCaseStep(myTCase));253 preTestCaseStepList.addAll(myTCase.getTestCaseStep());254 preTestCase.add(myTCase);255 LOG.debug(logPrefix + "Pre testcase : " + myTCase.getTest() + "-" + myTCase.getTestCase() + " Loaded With " + myTCase.getTestCaseStep().size() + " Step(s) found.");256 }257 tCExecution.setPreTestCaseList(preTestCase);258 LOG.debug(logPrefix + "All Steps information (Actions & Controls) of all Pre-testcase Loaded.");259 /**260 * Load All properties of the testcase261 */262 LOG.debug(logPrefix + "Loading all Properties.");263 List<TestCaseCountryProperties> tcProperties = new ArrayList();264 try {265 tcProperties = testCaseCountryPropertiesService.findAllWithDependencies(tCExecution.getTest(), tCExecution.getTestCase(), tCExecution.getCountry());266 tCExecution.setTestCaseCountryPropertyList(tcProperties);267 } catch (CerberusException ex) {268 LOG.warn("Exception getting all the properties : " + ex);269 }270 if (LOG.isDebugEnabled()) {271 LOG.debug(logPrefix + "All Properties Loaded. " + tcProperties.size() + " property(ies) found : " + tcProperties);272 }273 /**274 * Start Execution of the steps/Actions/controls Iterate Steps.275 * mainExecutionTestCaseStepList will contain the list of steps to276 * execute for both pretest and test. This is where we schedule the277 * execution of the steps using mainExecutionTestCaseStepList278 * object.279 */280 LOG.debug(logPrefix + "Starting the execution with step iteration.");281 List<TestCaseStep> mainExecutionTestCaseStepList;282 mainExecutionTestCaseStepList = new ArrayList<TestCaseStep>();283 mainExecutionTestCaseStepList.addAll(preTestCaseStepList);284 mainExecutionTestCaseStepList.addAll(testCaseStepList);285 /**286 * Initialize the global TestCaseExecution Data List.287 */288 // 289 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTEXECUTING));290 try {291 testCaseExecutionService.updateTCExecution(tCExecution);292 } catch (CerberusException ex) {293 LOG.warn(ex);294 }295 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.296 if (tCExecution.isCerberus_featureflipping_activatewebsocketpush()) {297 TestCaseExecutionEndPoint.getInstance().send(tCExecution, true);298 }299 // Evaluate the condition at the step level.300 AnswerItem<Boolean> conditionAnswerTc;301 AnswerItem<String> answerDecode = new AnswerItem();302 boolean conditionDecodeError = false;303 /**304 * If execution is not manual, evaluate the condition at the step305 * level306 */307 if (!tCExecution.getManualExecution().equals("Y")) {308 try {309 answerDecode = variableService.decodeStringCompletly(tCExecution.getConditionVal1(), tCExecution, null, false);310 tCExecution.setConditionVal1((String) answerDecode.getItem());311 if (!(answerDecode.isCodeStringEquals("OK"))) {312 // If anything wrong with the decode --> we stop here with decode message in the action result.313 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITIONDECODE)314 .resolveDescription("MES", answerDecode.getMessageDescription())315 .resolveDescription("FIELD", "TestCase Condition Value1"));316 tCExecution.setEnd(new Date().getTime());317 LOG.debug("TestCase interupted due to decode 'TestCase Condition Value1' Error.");318 conditionDecodeError = true;319 }320 } catch (CerberusEventException cex) {321 LOG.warn(cex);322 }323 try {324 answerDecode = variableService.decodeStringCompletly(tCExecution.getConditionVal2(), tCExecution, null, false);325 tCExecution.setConditionVal2((String) answerDecode.getItem());326 if (!(answerDecode.isCodeStringEquals("OK"))) {327 // If anything wrong with the decode --> we stop here with decode message in the action result.328 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITIONDECODE)329 .resolveDescription("MES", answerDecode.getMessageDescription())330 .resolveDescription("FIELD", "TestCase Condition Value2"));331 tCExecution.setEnd(new Date().getTime());332 LOG.debug("TestCase interupted due to decode 'TestCase Condition Value2' Error.");333 conditionDecodeError = true;334 }335 } catch (CerberusEventException cex) {336 LOG.warn(cex);337 }338 }339 if (!conditionDecodeError) {340 conditionAnswerTc = this.conditionService.evaluateCondition(tCExecution.getConditionOper(), tCExecution.getConditionVal1(), tCExecution.getConditionVal2(), tCExecution);341 boolean execute_TestCase = (boolean) conditionAnswerTc.getItem();342 if (execute_TestCase || tCExecution.getManualExecution().equals("Y")) {343 for (TestCaseStep testCaseStep : mainExecutionTestCaseStepList) {344 // init the index of the step in case we loop.345 int step_index = 1;346 boolean execute_Next_Step = false;347 TestCaseStepExecution testCaseStepExecution;348 int maxloop = parameterService.getParameterIntegerByKey("cerberus_loopstep_max", tCExecution.getApplicationObj().getSystem(), 20);349 do {350 /**351 * Start Execution of TestCaseStep352 */353 LOG.debug("Start execution of testcasestep");354 long startStep = new Date().getTime();355 /**356 * Create and Register TestCaseStepExecution357 */358 MessageEvent stepMess = new MessageEvent(MessageEventEnum.STEP_PENDING)359 .resolveDescription("STEP", String.valueOf(testCaseStep.getSort()))360 .resolveDescription("STEPINDEX", String.valueOf(step_index));361 testCaseStepExecution = factoryTestCaseStepExecution.create(362 runID, testCaseStep.getTest(), testCaseStep.getTestCase(),363 testCaseStep.getStep(), step_index, testCaseStep.getSort(), testCaseStep.getLoop(), testCaseStep.getConditionOper(), testCaseStep.getConditionVal1(), testCaseStep.getConditionVal2(), testCaseStep.getConditionVal1(), testCaseStep.getConditionVal2(), null,364 startStep, 0, startStep, 0, new BigDecimal("0"), null, stepMess, testCaseStep, tCExecution,365 testCaseStep.getUseStep(), testCaseStep.getUseStepTest(), testCaseStep.getUseStepTestCase(), testCaseStep.getUseStepStep(), testCaseStep.getDescription());366 testCaseStepExecution.setLoop(testCaseStep.getLoop());367 testCaseStepExecutionService.insertTestCaseStepExecution(testCaseStepExecution);368 testCaseStepExecution.setExecutionResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTSTARTED));369 /**370 * We populate the TestCaseStep inside the execution371 * List372 */373 tCExecution.addTestCaseStepExecutionList(testCaseStepExecution);374 // determine if step is executed (execute_Step) and if we trigger a new step execution after (execute_Next_Step)375 boolean execute_Step = true;376 boolean conditionStepDecodeError = false;377 boolean conditionStepError = false;378 AnswerItem<Boolean> conditionAnswer = new AnswerItem<>(new MessageEvent(MessageEventEnum.CONDITIONEVAL_FAILED_UNKNOWNCONDITION));379 if (testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_ONCEIFCONDITIONFALSE)380 || testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_ONCEIFCONDITIONTRUE)381 || testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_WHILECONDITIONFALSEDO)382 || testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_WHILECONDITIONTRUEDO)383 || testCaseStepExecution.getLoop().equals("")384 || step_index > 1) {385 // Decode Conditionvalue1 and Conditionvalue2 and Evaluate the condition at the Step level.386 try {387 answerDecode = variableService.decodeStringCompletly(testCaseStepExecution.getConditionVal1(), tCExecution, null, false);388 testCaseStepExecution.setConditionVal1((String) answerDecode.getItem());389 if (!(answerDecode.isCodeStringEquals("OK"))) {390 testCaseStepExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));391 testCaseStepExecution.setStepResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Step Condition Value1"));392 testCaseStepExecution.setReturnMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Step Condition Value1").getDescription());393 testCaseStepExecution.setReturnCode(answerDecode.getResultMessage().getCodeString());394 testCaseStepExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());395 testCaseStepExecution.setEnd(new Date().getTime());396 LOG.debug("Step interupted due to decode 'Step Condition Value1' Error.");397 conditionStepDecodeError = true;398 }399 } catch (CerberusEventException cex) {400 LOG.warn(cex);401 }402 if (!conditionStepDecodeError) {403 try {404 answerDecode = variableService.decodeStringCompletly(testCaseStepExecution.getConditionVal2(), tCExecution, null, false);405 testCaseStepExecution.setConditionVal2((String) answerDecode.getItem());406 if (!(answerDecode.isCodeStringEquals("OK"))) {407 testCaseStepExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));408 testCaseStepExecution.setStepResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Step Condition Value2"));409 testCaseStepExecution.setReturnMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Step Condition Value2").getDescription());410 testCaseStepExecution.setReturnCode(answerDecode.getResultMessage().getCodeString());411 testCaseStepExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());412 testCaseStepExecution.setEnd(new Date().getTime());413 LOG.debug("Step interupted due to decode 'Step Condition Value2' Error.");414 conditionStepDecodeError = true;415 }416 } catch (CerberusEventException cex) {417 LOG.warn(cex);418 }419 }420 if (!(conditionStepDecodeError)) {421 conditionAnswer = this.conditionService.evaluateCondition(testCaseStepExecution.getConditionOper(), testCaseStepExecution.getConditionVal1(), testCaseStepExecution.getConditionVal2(), tCExecution);422 execute_Step = (boolean) conditionAnswer.getItem();423 if (conditionAnswer.getResultMessage().getMessage().getCodeString().equals("PE")) {424 // There were no error when performing the condition evaluation.425 switch (testCaseStepExecution.getLoop()) {426 case TestCaseStep.LOOP_ONCEIFCONDITIONFALSE:427 execute_Step = !execute_Step;428 execute_Next_Step = false;429 break;430 case TestCaseStep.LOOP_ONCEIFCONDITIONTRUE:431 case "":432 execute_Next_Step = false;433 break;434 case TestCaseStep.LOOP_WHILECONDITIONFALSEDO:435 case TestCaseStep.LOOP_DOWHILECONDITIONFALSE:436 execute_Step = !execute_Step;437 execute_Next_Step = execute_Step;438 break;439 case TestCaseStep.LOOP_WHILECONDITIONTRUEDO:440 case TestCaseStep.LOOP_DOWHILECONDITIONTRUE:441 execute_Next_Step = execute_Step;442 break;443 default:444 execute_Next_Step = false;445 }446 } else {447 // Error when performing the condition evaluation. We force no execution (false)448 MessageGeneral mes = new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITION);449 mes.setDescription(mes.getDescription()450 .replace("%AREA%", "step ")451 .replace("%COND%", testCaseStepExecution.getConditionOper())452 .replace("%MES%", conditionAnswer.getResultMessage().getDescription()));453 tCExecution.setResultMessage(mes);454 testCaseStepExecution.setExecutionResultMessage(mes);455 testCaseStepExecution.setStepResultMessage(new MessageEvent(MessageEventEnum.CONDITION_TESTCASESTEP_FAILED)456 .resolveDescription("AREA", "")457 .resolveDescription("COND", testCaseStepExecution.getConditionOper())458 .resolveDescription("MESSAGE", conditionAnswer.getResultMessage().getDescription())459 );460 testCaseStepExecution.setEnd(new Date().getTime());461 LOG.debug("Step interupted due to condition error.");462 conditionStepError = true;463 execute_Next_Step = false;464 execute_Step = false;465 }466 } else {467 // If anything wrong with the decode --> we stop here with decode message in the action result.468 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITIONDECODE)469 .resolveDescription("AREA", "Step ")470 .resolveDescription("MES", answerDecode.getMessageDescription()));471 tCExecution.setEnd(new Date().getTime());472 LOG.debug("TestCase interupted due to decode Condition Error.");473 // There was an error on decode so we stop everything.474 execute_Next_Step = false;475 execute_Step = false;476 }477 } else if (testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_DOWHILECONDITIONFALSE)478 || testCaseStepExecution.getLoop().equals(TestCaseStep.LOOP_DOWHILECONDITIONTRUE)) {479 // First Step execution for LOOP_DOWHILECONDITIONTRUE and LOOP_DOWHILECONDITIONFALSE --> We force the step execution and activate the next step execution.480 execute_Step = true;481 execute_Next_Step = true;482 } else {483 // First Step execution for Unknown Loop --> We force the step execution only once (default behaviour).484 execute_Step = true;485 execute_Next_Step = false;486 conditionAnswer.setResultMessage(new MessageEvent(MessageEventEnum.CONDITIONEVAL_FAILED_UNKNOWNCONDITION));487 }488 /**489 * Execute Step490 */491 LOG.debug(logPrefix + "Executing step : " + testCaseStepExecution.getTest() + " - " + testCaseStepExecution.getTestCase() + " - Step " + testCaseStepExecution.getStep() + " - Index " + testCaseStepExecution.getStep());492 if (execute_Step) {493 /**494 * We execute the step495 */496 testCaseStepExecution = this.executeStep(testCaseStepExecution, tCExecution);497 /**498 * Updating Execution Result Message only if499 * execution result message of the step is not500 * PE or OK.501 */502 if ((!(testCaseStepExecution.getExecutionResultMessage().equals(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTSTARTED))))503 && (!(testCaseStepExecution.getExecutionResultMessage().equals(new MessageGeneral(MessageGeneralEnum.EXECUTION_OK))))) {504 tCExecution.setResultMessage(testCaseStepExecution.getExecutionResultMessage());505 }506 if (testCaseStepExecution.getStepResultMessage().equals(new MessageEvent(MessageEventEnum.STEP_PENDING))) {507 testCaseStepExecution.setStepResultMessage(new MessageEvent(MessageEventEnum.STEP_SUCCESS));508 }509 testCaseStepExecutionService.updateTestCaseStepExecution(testCaseStepExecution);510 if (testCaseStepExecution.isStopExecution()) {511 break;512 }513 } else // We don't execute the step and record a generic execution.514 if ((!conditionStepDecodeError) && (!conditionStepError)) {515 /**516 * Register Step in database517 */518 LOG.debug("Registering Step : " + testCaseStepExecution.getStep());519 // We change the Step message only if the Step is not executed due to condition.520 MessageEvent stepMes = new MessageEvent(MessageEventEnum.CONDITION_TESTCASESTEP_NOTEXECUTED);521 testCaseStepExecution.setStepResultMessage(stepMes);522 testCaseStepExecution.setReturnMessage(testCaseStepExecution.getReturnMessage()523 .replace("%COND%", testCaseStepExecution.getConditionOper())524 .replace("%LOOP%", testCaseStepExecution.getLoop())525 .replace("%MESSAGE%", conditionAnswer.getResultMessage().getDescription())526 );527 testCaseStepExecution.setEnd(new Date().getTime());528 this.testCaseStepExecutionService.updateTestCaseStepExecution(testCaseStepExecution);529 LOG.debug("Registered Step");530 } else {531 // Not executed because decode error or failed condition.532 testCaseStepExecution.setEnd(new Date().getTime());533 testCaseStepExecution.setStopExecution(true);534 this.testCaseStepExecutionService.updateTestCaseStepExecution(testCaseStepExecution);535 LOG.debug("Registered Step");536 }537 /**538 * Log TestCaseStepExecution539 */540 if (tCExecution.getVerbose() > 0) {541 LOG.info(testCaseStepExecution.toJson(false, true));542 }543 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.544 if (tCExecution.isCerberus_featureflipping_activatewebsocketpush()) {545 TestCaseExecutionEndPoint.getInstance().send(tCExecution, false);546 }547 step_index++;548 } while (execute_Next_Step && step_index <= maxloop);549 if (testCaseStepExecution.isStopExecution()) {550 break;551 }552 }553 /**554 * If at that time the execution is still PE, we move it to555 * OK. It means that no issue were met.556 */557 if ((tCExecution.getResultMessage() == null) || (tCExecution.getResultMessage().equals(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTSTARTED)))) {558 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_OK));559 }560 /**561 * We record Selenium log at the end of the execution.562 */563 try {564 tCExecution.addFileList(recorderService.recordSeleniumLog(tCExecution));565 } catch (Exception ex) {566 LOG.error(logPrefix + "Exception Getting Selenium Logs " + tCExecution.getId() + " Exception :" + ex.toString());567 }568 } else { // We don't execute the testcase linked with condition.569 MessageGeneral mes;570 /**571 * Update Execution status from condition572 */573 if (conditionAnswerTc.getResultMessage().getMessage().getCodeString().equals("PE")) {574 mes = new MessageGeneral(MessageGeneralEnum.EXECUTION_NA_CONDITION);575 } else {576 mes = new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITION);577 }578 mes.setDescription(mes.getDescription().replace("%COND%", tCExecution.getConditionOper())579 .replace("%MES%", conditionAnswerTc.getResultMessage().getDescription()));580 tCExecution.setResultMessage(mes);581 }582 }583 } catch (Exception ex) {584 /**585 * If an exception is found, set the execution to FA and print the586 * exception587 */588 tCExecution.setResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_FA));589 tCExecution.setControlMessage(tCExecution.getControlMessage() + " Exception: " + ex);590 LOG.error(logPrefix + "Exception found Executing Test " + tCExecution.getId() + " Exception :" + ex.toString());591 } finally {592 /**593 * We stop the server session here (selenium for ex.).594 */595 try {596 tCExecution = this.stopTestCase(tCExecution);597 } catch (Exception ex) {598 LOG.error(logPrefix + "Exception Stopping Test " + tCExecution.getId() + " Exception :" + ex.toString());599 }600 /**601 * Log Execution602 */603 LOG.info(tCExecution.toJson(false));604 /**605 * Clean memory606 */607 try {608 executionUUID.removeExecutionUUID(tCExecution.getExecutionUUID());609 LOG.debug("Clean ExecutionUUID");610 } catch (Exception ex) {611 LOG.error("Exception cleaning Memory: " + ex.toString());612 }613 /**614 * Log execution is finished615 */616 LOG.info("Execution Finished : UUID=" + tCExecution.getExecutionUUID()617 + "__ID=" + tCExecution.getId() + "__RC=" + tCExecution.getControlStatus() + "__"618 + "TestName=" + tCExecution.getEnvironment() + "." + tCExecution.getCountry() + "."619 + tCExecution.getBuild() + "." + tCExecution.getRevision() + "." + tCExecution.getTest() + "_"620 + tCExecution.getTestCase() + "_" + tCExecution.getTestCaseObj().getDescription().replace(".", ""));621 /**622 * Updating queue to done status only for execution from queue623 */624 if (tCExecution.getQueueID() != 0) {625 executionQueueService.updateToDone(tCExecution.getQueueID(), "", runID);626 }627 /**628 * Retry management, in case the result is not (OK or NE), we629 * execute the job again reducing the retry to 1.630 */631 if (tCExecution.getNumberOfRetries() > 0632 && !tCExecution.getResultMessage().getCodeString().equals("OK")633 && !tCExecution.getResultMessage().getCodeString().equals("NE")) {634 TestCaseExecutionQueue newExeQueue = new TestCaseExecutionQueue();635 if (tCExecution.getQueueID() > 0) {636 // If QueueId exist, we try to get the original execution queue.637 try {638 newExeQueue = executionQueueService.convert(executionQueueService.readByKey(tCExecution.getQueueID()));639 } catch (Exception e) {640 // Unfortunatly the execution no longuer exist so we pick initial value.641 newExeQueue = tCExecution.getTestCaseExecutionQueue();642 }643 } else {644 // Initial Execution does not come from the queue so we pick the value created at the beginning of the execution.645 newExeQueue = tCExecution.getTestCaseExecutionQueue();646 }647 // Forcing init value for that new queue execution : exeid=0, no debugflag and State = QUEUED648 int newRetry = tCExecution.getNumberOfRetries() - 1;649 newExeQueue.setId(0);650 newExeQueue.setDebugFlag("N");651 if (newRetry <= 0) {652 newExeQueue.setComment("Added from Retry. Last attempt to go.");653 } else {654 newExeQueue.setComment("Added from Retry. Still " + newRetry + " attempt(s) to go.");655 }656 newExeQueue.setState(TestCaseExecutionQueue.State.QUEUED);657 newExeQueue.setRetries(newRetry);658 // Insert execution to the Queue.659 executionQueueService.create(newExeQueue);660 }661 /**662 * After every execution finished, <br>663 * if the execution has a tag that has a campaign associated <br>664 * and no more executions are in the queue, <br>665 * we trigger : <br>666 * 1/ The update of the EndExeQueue of the tag <br>667 * 2/ We notify the Distribution List with execution report status668 */669 try {670 if (!StringUtil.isNullOrEmpty(tCExecution.getTag())) {671 Tag currentTag = tagService.convert(tagService.readByKey(tCExecution.getTag()));672 if ((currentTag != null)) {673 if (currentTag.getDateEndQueue().before(Timestamp.valueOf("1980-01-01 01:01:01.000000001"))) {674 AnswerList answerListQueue = new AnswerList();675 answerListQueue = executionQueueService.readQueueOpen(tCExecution.getTag());676 if (answerListQueue.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()) && (answerListQueue.getDataList().isEmpty())) {677 LOG.debug("No More executions in (queue) on tag : " + tCExecution.getTag() + " - " + answerListQueue.getDataList().size() + " " + answerListQueue.getMessageCodeString() + " - ");678 tagService.updateDateEndQueue(tCExecution.getTag(), new Timestamp(new Date().getTime()));679 if (!StringUtil.isNullOrEmpty(currentTag.getCampaign())) {680 // We get the campaig here and potencially send the notification.681 emailService.generateAndSendNotifyEndTagExecution(tCExecution.getTag(), currentTag.getCampaign());682 }683 } else {684 LOG.debug("Still executions in queue on tag : " + tCExecution.getTag() + " - " + answerListQueue.getDataList().size() + " " + answerListQueue.getMessageCodeString());685 }686 } else {687 LOG.debug("Tag is already flaged with recent timstamp. " + currentTag.getDateEndQueue());688 }689 }690 }691 } catch (Exception e) {692 LOG.error(e);693 }694 //695 // After every execution finished we try to trigger more from the queue;-).696 executionThreadPoolService.executeNextInQueueAsynchroneously(false);697 }698 return tCExecution;699 }700 @Override701 public TestCaseExecution stopTestCase(TestCaseExecution tCExecution) {702 /**703 * Stop Execution704 */705 LOG.debug(tCExecution.getId() + " - Stop the execution " + tCExecution.getId() + " UUID:" + tCExecution.getExecutionUUID());706 try {707 //TODO:FN debug messages to be removed708 LOG.debug("[DEBUG] STOP " + "__ID=" + tCExecution.getId());709 this.stopRunTestCase(tCExecution);710 } catch (Exception ex) {711 LOG.warn("Exception Stopping Execution " + tCExecution.getId() + " Exception :" + ex.toString());712 }713 /**714 * Collecting and calculating Statistics.715 */716 try {717// this.collectExecutionStats(tCExecution);718 } catch (Exception ex) {719 LOG.warn("Exception collecting stats for execution " + tCExecution.getId() + " Exception:" + ex.toString());720 }721 /**722 * Saving TestCaseExecution object.723 */724 tCExecution.setEnd(new Date().getTime());725 try {726 testCaseExecutionService.updateTCExecution(tCExecution);727 } catch (CerberusException ex) {728 LOG.warn("Exception updating Execution :" + tCExecution.getId() + " Exception:" + ex.toString());729 }730 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.731 if (tCExecution.isCerberus_featureflipping_activatewebsocketpush()) {732 TestCaseExecutionEndPoint.getInstance().send(tCExecution, true);733 TestCaseExecutionEndPoint.getInstance().end(tCExecution);734 }735 return tCExecution;736 }737 private TestCaseStepExecution executeStep(TestCaseStepExecution testCaseStepExecution, TestCaseExecution tcExecution) {738 long runID = testCaseStepExecution.getId();739 String logPrefix = runID + " - ";740 AnswerItem<String> answerDecode = new AnswerItem();741 // Initialise the Step Data List.742 List<TestCaseExecutionData> myStepDataList = new ArrayList<TestCaseExecutionData>();743 testCaseStepExecution.setTestCaseExecutionDataList(myStepDataList);744 // Initialise the Data List used to enter the action.745 /**746 * Iterate Actions747 */748 List<TestCaseStepAction> testCaseStepActionList = testCaseStepExecution.getTestCaseStep().getTestCaseStepAction();749 LOG.debug("Getting list of actions of the step. " + testCaseStepActionList.size() + " action(s) to perform.");750 for (TestCaseStepAction testCaseStepAction : testCaseStepActionList) {751 /**752 * Start Execution of TestCaseStepAction753 */754 long startAction = new Date().getTime();755 /**756 * Create and Register TestCaseStepActionExecution.757 */758 TestCaseStepActionExecution testCaseStepActionExecution = factoryTestCaseStepActionExecution.create(759 testCaseStepExecution.getId(), testCaseStepAction.getTest(), testCaseStepAction.getTestCase(),760 testCaseStepAction.getStep(), testCaseStepExecution.getIndex(), testCaseStepAction.getSequence(), testCaseStepAction.getSort(), null, null,761 testCaseStepAction.getConditionOper(), testCaseStepAction.getConditionVal1(), testCaseStepAction.getConditionVal2(), testCaseStepAction.getConditionVal1(), testCaseStepAction.getConditionVal2(),762 testCaseStepAction.getAction(), testCaseStepAction.getValue1(), testCaseStepAction.getValue2(), testCaseStepAction.getValue1(), testCaseStepAction.getValue2(),763 testCaseStepAction.getForceExeStatus(), startAction, 0, startAction, 0, new MessageEvent(MessageEventEnum.ACTION_PENDING),764 testCaseStepAction.getDescription(), testCaseStepAction, testCaseStepExecution);765 this.testCaseStepActionExecutionService.insertTestCaseStepActionExecution(testCaseStepActionExecution);766 /**767 * We populate the TestCase Action List768 */769 testCaseStepExecution.addTestCaseStepActionExecutionList(testCaseStepActionExecution);770 /**771 * If execution is not manual, evaluate the condition at the action772 * level773 */774 AnswerItem<Boolean> conditionAnswer;775 boolean conditionDecodeError = false;776 if (!tcExecution.getManualExecution().equals("Y")) {777 try {778 answerDecode = variableService.decodeStringCompletly(testCaseStepActionExecution.getConditionVal1(), tcExecution, null, false);779 testCaseStepActionExecution.setConditionVal1((String) answerDecode.getItem());780 if (!(answerDecode.isCodeStringEquals("OK"))) {781 // If anything wrong with the decode --> we stop here with decode message in the action result.782 testCaseStepActionExecution.setActionResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Action Condition Value1"));783 testCaseStepActionExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));784 testCaseStepActionExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());785 testCaseStepActionExecution.setEnd(new Date().getTime());786 LOG.debug("Action interupted due to decode 'Action Condition Value1' Error.");787 conditionDecodeError = true;788 }789 } catch (CerberusEventException cex) {790 LOG.warn(cex);791 }792 try {793 answerDecode = variableService.decodeStringCompletly(testCaseStepActionExecution.getConditionVal2(), tcExecution, null, false);794 testCaseStepActionExecution.setConditionVal2((String) answerDecode.getItem());795 if (!(answerDecode.isCodeStringEquals("OK"))) {796 // If anything wrong with the decode --> we stop here with decode message in the action result.797 testCaseStepActionExecution.setActionResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Action Condition Value2"));798 testCaseStepActionExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));799 testCaseStepActionExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());800 testCaseStepActionExecution.setEnd(new Date().getTime());801 LOG.debug("Action interupted due to decode 'Action Condition Value2' Error.");802 conditionDecodeError = true;803 }804 } catch (CerberusEventException cex) {805 LOG.warn(cex);806 }807 }808 if (!(conditionDecodeError)) {809 conditionAnswer = this.conditionService.evaluateCondition(testCaseStepActionExecution.getConditionOper(), testCaseStepActionExecution.getConditionVal1(), testCaseStepActionExecution.getConditionVal2(), tcExecution);810 boolean execute_Action = (boolean) conditionAnswer.getItem();811 /**812 * If condition OK or if manual execution, then execute the813 * action814 */815 if (conditionAnswer.getResultMessage().getMessage().getCodeString().equals("PE")816 || tcExecution.getManualExecution().equals("Y")) {817 // Execute or not the action here.818 if (execute_Action || tcExecution.getManualExecution().equals("Y")) {819 LOG.debug("Executing action : " + testCaseStepActionExecution.getAction() + " with val1 : " + testCaseStepActionExecution.getValue1()820 + " and val2 : " + testCaseStepActionExecution.getValue2());821 /**822 * We execute the Action823 */824 testCaseStepActionExecution = this.executeAction(testCaseStepActionExecution, tcExecution);825 /**826 * If Action or property reported to stop the testcase,827 * we stop it and update the step with the message.828 */829 testCaseStepExecution.setStopExecution(testCaseStepActionExecution.isStopExecution());830 if ((!(testCaseStepActionExecution.getExecutionResultMessage().equals(new MessageGeneral(MessageGeneralEnum.EXECUTION_OK))))831 && (!(testCaseStepActionExecution.getExecutionResultMessage().equals(new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTEXECUTING))))) {832 testCaseStepExecution.setExecutionResultMessage(testCaseStepActionExecution.getExecutionResultMessage());833 testCaseStepExecution.setStepResultMessage(testCaseStepActionExecution.getActionResultMessage());834 }835 if (testCaseStepActionExecution.isStopExecution()) {836 break;837 }838 } else { // We don't execute the action and record a generic execution.839 /**840 * Record Screenshot, PageSource841 */842 testCaseStepActionExecution.addFileList(recorderService.recordExecutionInformationAfterStepActionandControl(testCaseStepActionExecution, null));843 LOG.debug("Registering Action : " + testCaseStepActionExecution.getAction());844 // We change the Action message only if the action is not executed due to condition.845 MessageEvent actionMes = new MessageEvent(MessageEventEnum.CONDITION_TESTCASEACTION_NOTEXECUTED);846 testCaseStepActionExecution.setActionResultMessage(actionMes);847 testCaseStepActionExecution.setReturnMessage(testCaseStepActionExecution.getReturnMessage()848 .replace("%COND%", testCaseStepActionExecution.getConditionOper())849 .replace("%MESSAGE%", conditionAnswer.getResultMessage().getDescription())850 );851 testCaseStepActionExecution.setEnd(new Date().getTime());852 this.testCaseStepActionExecutionService.updateTestCaseStepActionExecution(testCaseStepActionExecution);853 LOG.debug("Registered Action");854 }855 } else {856 // Error when performing the condition evaluation. We force no execution (false)857 MessageGeneral mes = new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITION);858 mes.setDescription(mes.getDescription()859 .replace("%COND%", testCaseStepActionExecution.getConditionOper())860 .replace("%AREA%", "action ")861 .replace("%MES%", conditionAnswer.getResultMessage().getDescription()));862 testCaseStepActionExecution.setExecutionResultMessage(mes);863 testCaseStepExecution.setExecutionResultMessage(testCaseStepActionExecution.getExecutionResultMessage());864 testCaseStepExecution.setStopExecution(testCaseStepActionExecution.isStopExecution());865 testCaseStepActionExecution.setActionResultMessage(new MessageEvent(MessageEventEnum.CONDITION_TESTCASEACTION_FAILED)866 .resolveDescription("AREA", "")867 .resolveDescription("COND", testCaseStepActionExecution.getConditionOper())868 .resolveDescription("MESSAGE", conditionAnswer.getResultMessage().getDescription()));869 testCaseStepExecution.setStepResultMessage(new MessageEvent(MessageEventEnum.CONDITION_TESTCASESTEP_FAILED)870 .resolveDescription("AREA", "action ")871 .resolveDescription("COND", testCaseStepActionExecution.getConditionOper())872 .resolveDescription("MESSAGE", conditionAnswer.getResultMessage().getDescription()));873 testCaseStepActionExecution.setEnd(new Date().getTime());874 this.testCaseStepActionExecutionService.updateTestCaseStepActionExecution(testCaseStepActionExecution);875 LOG.debug("Action interupted due to condition error.");876 // We stop any further Action execution.877 break;878 }879 } else {880 testCaseStepActionExecution.setEnd(new Date().getTime());881 testCaseStepExecution.setExecutionResultMessage(testCaseStepActionExecution.getExecutionResultMessage());882 testCaseStepExecution.setStepResultMessage(testCaseStepActionExecution.getActionResultMessage());883 testCaseStepExecution.setStopExecution(testCaseStepActionExecution.isStopExecution());884 this.testCaseStepActionExecutionService.updateTestCaseStepActionExecution(testCaseStepActionExecution);885 LOG.debug("Registered Action");886 if (testCaseStepActionExecution.isStopExecution()) {887 break;888 }889 }890 /**891 * Log TestCaseStepActionExecution892 */893 if (tcExecution.getVerbose() > 0) {894 LOG.info(testCaseStepActionExecution.toJson(false, true));895 }896 }897 testCaseStepExecution.setEnd(new Date().getTime());898 this.testCaseStepExecutionService.updateTestCaseStepExecution(testCaseStepExecution);899 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.900 if (tcExecution.isCerberus_featureflipping_activatewebsocketpush()) {901 TestCaseExecutionEndPoint.getInstance().send(tcExecution, false);902 }903 return testCaseStepExecution;904 }905 private TestCaseStepActionExecution executeAction(TestCaseStepActionExecution testCaseStepActionExecution, TestCaseExecution tcExecution) {906 LOG.debug("Starting execute Action : " + testCaseStepActionExecution.getAction());907 AnswerItem<String> answerDecode = new AnswerItem();908 /**909 * If execution is not manual, do action and record files910 */911 if (!tcExecution.getManualExecution().equals("Y")) {912 testCaseStepActionExecution = this.actionService.doAction(testCaseStepActionExecution);913 /**914 * Record Screenshot, PageSource915 */916 try {917 testCaseStepActionExecution.addFileList(recorderService.recordExecutionInformationAfterStepActionandControl(testCaseStepActionExecution, null));918 } catch (Exception ex) {919 LOG.warn("Unable to record Screenshot/PageSource : " + ex.toString());920 }921 } else {922 /**923 * If execution manual, set Action result message as notExecuted924 */925 testCaseStepActionExecution.setActionResultMessage(new MessageEvent(MessageEventEnum.ACTION_NOTEXECUTED));926 testCaseStepActionExecution.setExecutionResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_NE));927 testCaseStepActionExecution.setEnd(new Date().getTime());928 }929 /**930 * Register Action in database931 */932 LOG.debug("Registering Action : " + testCaseStepActionExecution.getAction());933 this.testCaseStepActionExecutionService.updateTestCaseStepActionExecution(testCaseStepActionExecution);934 LOG.debug("Registered Action");935 if (testCaseStepActionExecution.isStopExecution()) {936 return testCaseStepActionExecution;937 }938 //As controls are associated with an action, the current state for the action is stored in order to restore it939 //if some property is not defined for the country940 MessageEvent actionMessage = testCaseStepActionExecution.getActionResultMessage();941 MessageGeneral excutionResultMessage = testCaseStepActionExecution.getExecutionResultMessage();942 /**943 * Iterate Control944 */945 List<TestCaseStepActionControl> tcsacList = testCaseStepActionExecution.getTestCaseStepAction().getTestCaseStepActionControl();946 for (TestCaseStepActionControl testCaseStepActionControl : tcsacList) {947 /**948 * Start Execution of TestCAseStepActionControl949 */950 long startControl = new Date().getTime();951 /**952 * Create and Register TestCaseStepActionControlExecution953 */954 LOG.debug("Creating TestCaseStepActionControlExecution");955 TestCaseStepActionControlExecution testCaseStepActionControlExecution956 = factoryTestCaseStepActionControlExecution.create(testCaseStepActionExecution.getId(), testCaseStepActionControl.getTest(), testCaseStepActionControl.getTestCase(),957 testCaseStepActionControl.getStep(), testCaseStepActionExecution.getIndex(), testCaseStepActionControl.getSequence(), testCaseStepActionControl.getControlSequence(), testCaseStepActionControl.getSort(),958 null, null,959 testCaseStepActionControl.getConditionOper(), testCaseStepActionControl.getConditionVal1(), testCaseStepActionControl.getConditionVal2(), testCaseStepActionControl.getConditionVal1(), testCaseStepActionControl.getConditionVal2(),960 testCaseStepActionControl.getControl(), testCaseStepActionControl.getValue1(), testCaseStepActionControl.getValue2(), testCaseStepActionControl.getValue1(), testCaseStepActionControl.getValue2(),961 testCaseStepActionControl.getFatal(), startControl, 0, 0, 0,962 testCaseStepActionControl.getDescription(), testCaseStepActionExecution, new MessageEvent(MessageEventEnum.CONTROL_PENDING));963 this.testCaseStepActionControlExecutionService.insertTestCaseStepActionControlExecution(testCaseStepActionControlExecution);964 LOG.debug("Executing control : " + testCaseStepActionControlExecution.getControlSequence() + " type : " + testCaseStepActionControlExecution.getControl());965 /**966 * We populate the TestCase Control List967 */968 testCaseStepActionExecution.addTestCaseStepActionExecutionList(testCaseStepActionControlExecution);969 // Evaluate the condition at the control level.970 AnswerItem<Boolean> conditionAnswer;971 boolean conditionDecodeError = false;972 if (!tcExecution.getManualExecution().equals("Y")) {973 try {974 answerDecode = variableService.decodeStringCompletly(testCaseStepActionControlExecution.getConditionVal1(), tcExecution, null, false);975 testCaseStepActionControlExecution.setConditionVal1((String) answerDecode.getItem());976 if (!(answerDecode.isCodeStringEquals("OK"))) {977 // If anything wrong with the decode --> we stop here with decode message in the action result.978 testCaseStepActionControlExecution.setControlResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Control Condition Value1"));979 testCaseStepActionControlExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));980 testCaseStepActionControlExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());981 testCaseStepActionControlExecution.setEnd(new Date().getTime());982 LOG.debug("Control interupted due to decode 'Control Condition Value1' Error.");983 conditionDecodeError = true;984 }985 } catch (CerberusEventException cex) {986 LOG.warn(cex);987 }988 try {989 answerDecode = variableService.decodeStringCompletly(testCaseStepActionControlExecution.getConditionVal2(), tcExecution, null, false);990 testCaseStepActionControlExecution.setConditionVal2((String) answerDecode.getItem());991 if (!(answerDecode.isCodeStringEquals("OK"))) {992 // If anything wrong with the decode --> we stop here with decode message in the action result.993 testCaseStepActionControlExecution.setControlResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Control Condition Value2"));994 testCaseStepActionControlExecution.setExecutionResultMessage(new MessageGeneral(answerDecode.getResultMessage().getMessage()));995 testCaseStepActionControlExecution.setStopExecution(answerDecode.getResultMessage().isStopTest());996 testCaseStepActionControlExecution.setEnd(new Date().getTime());997 LOG.debug("Control interupted due to decode 'Control Condition Value2' Error.");998 conditionDecodeError = true;999 }1000 } catch (CerberusEventException cex) {1001 LOG.warn(cex);1002 }1003 }1004 if (!(conditionDecodeError)) {1005 conditionAnswer = this.conditionService.evaluateCondition(testCaseStepActionControlExecution.getConditionOper(), testCaseStepActionControlExecution.getConditionVal1(), testCaseStepActionControlExecution.getConditionVal2(), tcExecution);1006 boolean execute_Control = (boolean) conditionAnswer.getItem();1007 /**1008 * If condition OK or if manual execution, then execute the1009 * control1010 */1011 if (conditionAnswer.getResultMessage().getMessage().getCodeString().equals("PE")1012 || tcExecution.getManualExecution().equals("Y")) {1013 if (execute_Control || tcExecution.getManualExecution().equals("Y")) {1014 /**1015 * We execute the control1016 */1017 testCaseStepActionControlExecution = executeControl(testCaseStepActionControlExecution, tcExecution);1018 /**1019 * We update the Action with the execution message and1020 * stop flag from the control. We update the status only1021 * if the control is not OK. This is to prevent moving1022 * the status to OK when it should stay KO when a1023 * control failed previously.1024 */1025 testCaseStepActionExecution.setStopExecution(testCaseStepActionControlExecution.isStopExecution());1026 if (!(testCaseStepActionControlExecution.getControlResultMessage().equals(new MessageEvent(MessageEventEnum.CONTROL_SUCCESS)))) {1027 //NA is a special case of not having success while calculating the property; the action shouldn't be stopped1028 if (testCaseStepActionControlExecution.getControlResultMessage().equals(new MessageEvent(MessageEventEnum.PROPERTY_FAILED_NO_PROPERTY_DEFINITION))) {1029 //restores the messages information if the property is not defined for the country1030 testCaseStepActionExecution.setActionResultMessage(actionMessage);1031 testCaseStepActionExecution.setExecutionResultMessage(excutionResultMessage);1032 } else {1033 testCaseStepActionExecution.setExecutionResultMessage(testCaseStepActionControlExecution.getExecutionResultMessage());1034 testCaseStepActionExecution.setActionResultMessage(testCaseStepActionControlExecution.getControlResultMessage());1035 }1036 }1037 /**1038 * If Control reported to stop the testcase, we stop it.1039 */1040 if (testCaseStepActionControlExecution.isStopExecution()) {1041 break;1042 }1043 } else { // We don't execute the control and record a generic execution.1044 /**1045 * Record Screenshot, PageSource1046 */1047 testCaseStepActionControlExecution.addFileList(recorderService.recordExecutionInformationAfterStepActionandControl(testCaseStepActionControlExecution.getTestCaseStepActionExecution(), testCaseStepActionControlExecution));1048 /**1049 * Register Control in database1050 */1051 LOG.debug("Registering Control : " + testCaseStepActionControlExecution.getControlSequence());1052 // We change the Action message only if the action is not executed due to condition.1053 MessageEvent controlMes = new MessageEvent(MessageEventEnum.CONDITION_TESTCASECONTROL_NOTEXECUTED);1054 testCaseStepActionControlExecution.setControlResultMessage(controlMes);1055 testCaseStepActionControlExecution.setReturnMessage(testCaseStepActionControlExecution.getReturnMessage()1056 .replace("%COND%", testCaseStepActionControlExecution.getConditionOper())1057 .replace("%MESSAGE%", conditionAnswer.getResultMessage().getDescription())1058 );1059 testCaseStepActionControlExecution.setEnd(new Date().getTime());1060 this.testCaseStepActionControlExecutionService.updateTestCaseStepActionControlExecution(testCaseStepActionControlExecution);1061 LOG.debug("Registered Control");1062 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.1063 if (tcExecution.isCerberus_featureflipping_activatewebsocketpush()) {1064 TestCaseExecutionEndPoint.getInstance().send(tcExecution, false);1065 }1066 }1067 } else {1068 // Error when performing the condition evaluation. We force no execution (false)1069 MessageGeneral mes = new MessageGeneral(MessageGeneralEnum.EXECUTION_FA_CONDITION);1070 mes.setDescription(mes.getDescription()1071 .replace("%COND%", testCaseStepActionControlExecution.getConditionOper())1072 .replace("%AREA%", "control ")1073 .replace("%MES%", conditionAnswer.getResultMessage().getDescription()));1074 testCaseStepActionControlExecution.setExecutionResultMessage(mes);1075 testCaseStepActionExecution.setExecutionResultMessage(mes);1076 testCaseStepActionControlExecution.setControlResultMessage(new MessageEvent(MessageEventEnum.CONDITION_TESTCASECONTROL_FAILED)1077 .resolveDescription("AREA", "")1078 .resolveDescription("COND", testCaseStepActionControlExecution.getConditionOper())1079 .resolveDescription("MESSAGE", conditionAnswer.getResultMessage().getDescription()));1080 testCaseStepActionExecution.setActionResultMessage(new MessageEvent(MessageEventEnum.CONDITION_TESTCASEACTION_FAILED)1081 .resolveDescription("AREA", "control ")1082 .resolveDescription("COND", testCaseStepActionControlExecution.getConditionOper())1083 .resolveDescription("MESSAGE", conditionAnswer.getResultMessage().getDescription()));1084 testCaseStepActionControlExecution.setEnd(new Date().getTime());1085 this.testCaseStepActionControlExecutionService.updateTestCaseStepActionControlExecution(testCaseStepActionControlExecution);1086 LOG.debug("Control interupted due to condition error.");1087 // We stop any further Control execution.1088 break;1089 }1090 } else {1091 testCaseStepActionControlExecution.setEnd(new Date().getTime());1092 testCaseStepActionExecution.setExecutionResultMessage(testCaseStepActionControlExecution.getExecutionResultMessage());1093 testCaseStepActionExecution.setActionResultMessage(testCaseStepActionControlExecution.getControlResultMessage());1094 this.testCaseStepActionControlExecutionService.updateTestCaseStepActionControlExecution(testCaseStepActionControlExecution);1095 LOG.debug("Registered Control");1096 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.1097 if (tcExecution.isCerberus_featureflipping_activatewebsocketpush()) {1098 TestCaseExecutionEndPoint.getInstance().send(tcExecution, false);1099 }1100 }1101 /**1102 * Log TestCaseStepActionControlExecution1103 */1104 if (tcExecution.getVerbose() > 0) {1105 LOG.info(testCaseStepActionControlExecution.toJson(false, true));1106 }1107 }1108 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.1109 if (tcExecution.isCerberus_featureflipping_activatewebsocketpush()) {1110 TestCaseExecutionEndPoint.getInstance().send(tcExecution, false);1111 }1112 LOG.debug("Finished execute Action : " + testCaseStepActionExecution.getAction());1113 return testCaseStepActionExecution;1114 }1115 private TestCaseStepActionControlExecution executeControl(TestCaseStepActionControlExecution testCaseStepActionControlExecution, TestCaseExecution tcExecution) {1116 /**1117 * If execution is not manual, do control and record files1118 */1119 if (!tcExecution.getManualExecution().equals("Y")) {1120 testCaseStepActionControlExecution = this.controlService.doControl(testCaseStepActionControlExecution);1121 /**1122 * Record Screenshot, PageSource1123 */1124 testCaseStepActionControlExecution.addFileList(recorderService.recordExecutionInformationAfterStepActionandControl(testCaseStepActionControlExecution.getTestCaseStepActionExecution(), testCaseStepActionControlExecution));1125 } else {1126 /**1127 * If execution manual, set Control result message as notExecuted1128 */1129 testCaseStepActionControlExecution.setControlResultMessage(new MessageEvent(MessageEventEnum.CONTROL_NOTEXECUTED));1130 testCaseStepActionControlExecution.setExecutionResultMessage(new MessageGeneral(MessageGeneralEnum.EXECUTION_NE));1131 testCaseStepActionControlExecution.setEnd(new Date().getTime());1132 }1133 /**1134 * Register Control in database1135 */1136 LOG.debug("Registering Control : " + testCaseStepActionControlExecution.getControlSequence());1137 this.testCaseStepActionControlExecutionService.updateTestCaseStepActionControlExecution(testCaseStepActionControlExecution);1138 LOG.debug("Registered Control");1139 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.1140 if (tcExecution.isCerberus_featureflipping_activatewebsocketpush()) {1141 TestCaseExecutionEndPoint.getInstance().send(tcExecution, false);1142 }1143 return testCaseStepActionControlExecution;1144 }1145 private TestCaseExecution stopRunTestCase(TestCaseExecution tCExecution) {1146 if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_GUI)1147 || tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_APK)1148 || tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_IPA)) {1149 try {1150 this.seleniumServerService.stopServer(tCExecution.getSession());1151 if (LOG.isDebugEnabled()) {1152 LOG.debug("Stop server for execution " + tCExecution.getId());1153 }1154 } catch (WebDriverException exception) {1155 LOG.warn("Selenium didn't manage to close connection for execution " + tCExecution.getId() + " due to " + exception.toString());1156 }1157 }1158 if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_FAT)) {1159 if (LOG.isDebugEnabled()) {1160 LOG.debug("Stop Sikuli server for execution " + tCExecution.getId() + " closing application " + tCExecution.getCountryEnvironmentParameters().getIp());1161 }1162 if (!StringUtil.isNullOrEmpty(tCExecution.getCountryEnvironmentParameters().getIp())) {1163 this.sikuliService.doSikuliActionCloseApp(tCExecution.getSession(), tCExecution.getCountryEnvironmentParameters().getIp());1164 }1165 }1166 // Websocket --> we refresh the corresponding Detail Execution pages attached to this execution.1167 if (tCExecution.isCerberus_featureflipping_activatewebsocketpush()) {1168 TestCaseExecutionEndPoint.getInstance().send(tCExecution, false);1169 }1170 return tCExecution;1171 }1172 @Override1173 @Async1174 public TestCaseExecution executeTestCaseAsynchroneously(TestCaseExecution tCExecution) throws CerberusException {...

Full Screen

Full Screen

getId

Using AI Code Generation

copy

Full Screen

1import org.cerberus.crud.entity.TestCaseStepExecution;2import org.cerberus.crud.entity.TestCaseExecution;3import org.cerberus.crud.entity.TestCaseStep;4import org.cerberus.crud.factory.IFactoryTestCaseStepExecution;5import org.cerberus.crud.factory.IFactoryTestCaseExecution;6import org.cerberus.crud.factory.IFactoryTestCaseStep;7import org.cerberus.crud.service.ITestCaseStepExecutionService;8import org.cerberus.crud.service.ITestCaseExecutionService;9import org.cerberus.crud.service.ITestCaseStepService;10import org.cerberus.crud.service.ITestCaseService;11import java.util.List;12import java.util.ArrayList;13import java.util.logging.Level;14import java.util.logging.Logger;15import org.cerberus.engine.entity.MessageEvent;16import org.cerberus.engine.entity.MessageGeneral;17import org.cerberus.engine.entity.MessageEventEnum;18import org.cerberus.engine.entity.MessageEventFactory;19import org.cerberus.engine.entity.ExecutionUUID;20import org.cerberus.engine.entity.TestDataLibResult;21import org.cerberus.engine.entity.TestDataLibData;22import org.cerberus.engine.entity.TestDataLib;23import org.cerberus.engine.entity.TestDataLibTypeEnum;24import org.cerberus.engine.entity.TestDataLibDataLib;25import org.cerberus.engine.entity.TestDataLibDataFile;26import org.cerberus.engine.entity.TestDataLibDataSQL;27import org.cerberus.engine.entity.TestDataLibDataWS;28import org.cerberus.engine.entity.TestDataLibDataSOAP;29import org.cerberus.engine.entity.TestDataLibDataCSV;30import org.cerberus.engine.entity.TestDataLibDataXML;31import org.cerberus.engine.entity.TestDataLibDataJSON;32import org.cerberus.engine.entity.TestDataLibDataList;33import org.cerberus.engine.entity.TestDataLibDataRandom;34import org.cerberus.engine.entity.TestDataLibDataRandomString;35import org.cerberus.engine.entity.TestDataLibDataRandomNumber;36import org.cerberus.engine.entity.TestDataLibDataRandomDate;37import org.cerberus.engine.entity.TestDataLibDataRandomEmail;38import org.cerberus.engine.entity.TestDataLibDataRandomStringSpecial;39import org.cerberus.engine.entity.TestDataLibData

Full Screen

Full Screen

getId

Using AI Code Generation

copy

Full Screen

1import org.cerberus.crud.entity.TestCaseStepExecution;2import org.cerberus.crud.entity.TestCaseExecution;3import org.cerberus.crud.entity.TestCaseStepActionExecution;4import org.cerberus.crud.entity.TestCaseStepActionControlExecution;5long id = testCaseStepExecution.getId();6long id = testCaseStepExecution.getTestCaseExecution().getId();

Full Screen

Full Screen

getId

Using AI Code Generation

copy

Full Screen

1id = tcse.getId();2tcse.setId(id);3test = tcse.getTest();4tcse.setTest(test);5testcase = tcse.getTestCase();6tcse.setTestCase(testcase);7step = tcse.getStep();8tcse.setStep(step);9sort = tcse.getSort();

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful