Best Cerberus-source code snippet using org.cerberus.crud.entity.TestCaseExecutionData.getDescription
Source:PropertyService.java
...165 /**166 * First create testCaseExecutionData object167 */168 now = new Date().getTime();169 tcExeData = factoryTestCaseExecutionData.create(tCExecution.getId(), eachTccp.getProperty(), 1, eachTccp.getDescription(), null, eachTccp.getType(),170 eachTccp.getValue1(), eachTccp.getValue2(), null, null, now, now, now, now, new MessageEvent(MessageEventEnum.PROPERTY_PENDING),171 eachTccp.getRetryNb(), eachTccp.getRetryPeriod(), eachTccp.getDatabase(), eachTccp.getValue1(), eachTccp.getValue2(), eachTccp.getLength(),172 eachTccp.getLength(), eachTccp.getRowLimit(), eachTccp.getNature(), tCExecution.getApplicationObj().getSystem(), tCExecution.getEnvironment(), tCExecution.getCountry(), "", null, "N");173 tcExeData.setTestCaseCountryProperties(eachTccp);174 tcExeData.settCExecution(tCExecution);175 if (LOG.isDebugEnabled()) {176 LOG.debug("Trying to calculate Property : '" + tcExeData.getProperty() + "' " + tcExeData);177 }178 /* First check if property has already been calculated 179 * if action is calculateProperty, then set isKnownData to false. 180 */181 tcExeData = getExecutionDataFromList(tCExecution.getTestCaseExecutionDataMap(), eachTccp, forceCalculation, tcExeData);182 /**183 * If testcasecountryproperty not defined, set ExecutionData with184 * the same resultMessage185 */186 if (eachTccp.getResult() != null) {187 tcExeData.setPropertyResultMessage(eachTccp.getResult());188 }189 /*190 * If not already calculated, or calculateProperty, then calculate it and insert or update it.191 */192 if (MessageEventEnum.PROPERTY_PENDING.equals(tcExeData.getPropertyResultMessage().getSource())) {193 calculateProperty(tcExeData, tCExecution, testCaseStepActionExecution, eachTccp, forceCalculation);194 msg = tcExeData.getPropertyResultMessage();195 //saves the result 196 try {197 testCaseExecutionDataService.convert(testCaseExecutionDataService.save(tcExeData));198 /**199 * Add TestCaseExecutionData in TestCaseExecutionData List200 * of the TestCaseExecution201 */202 LOG.debug("Adding into Execution data list. Property : '" + tcExeData.getProperty() + "' Index : '" + String.valueOf(tcExeData.getIndex()) + "' Value : '" + tcExeData.getValue() + "'");203 tCExecution.getTestCaseExecutionDataMap().put(tcExeData.getProperty(), tcExeData);204 if (tcExeData.getDataLibRawData() != null) { // If the property is a TestDataLib, we same all rows retreived in order to support nature such as NOTINUSe or RANDOMNEW.205 for (int i = 1; i < (tcExeData.getDataLibRawData().size()); i++) {206 now = new Date().getTime();207 TestCaseExecutionData tcedS = factoryTestCaseExecutionData.create(tcExeData.getId(), tcExeData.getProperty(), (i + 1),208 tcExeData.getDescription(), tcExeData.getDataLibRawData().get(i).get(""), tcExeData.getType(), "", "",209 tcExeData.getRC(), "", now, now, now, now, null, 0, 0, "", "", "", "", "", 0, "", tcExeData.getSystem(), tcExeData.getEnvironment(), tcExeData.getCountry(), tcExeData.getDataLib(), null, "N");210 testCaseExecutionDataService.convert(testCaseExecutionDataService.save(tcedS));211 }212 }213 } catch (CerberusException cex) {214 LOG.error(cex.getMessage(), cex);215 }216 }217 /**218 * After calculation, replace properties by value calculated219 */220 stringToDecode = decodeStringWithAlreadyCalculatedProperties(stringToDecode, tCExecution);221 if (LOG.isDebugEnabled()) {222 LOG.debug("Property " + eachTccp.getProperty() + " calculated with Value = " + tcExeData.getValue() + ", Value1 = " + tcExeData.getValue1() + ", Value2 = " + tcExeData.getValue2());223 }224 /**225 * Log TestCaseExecutionData226 */227 if (tCExecution.getVerbose() > 0) {228 LOG.info(tcExeData.toJson(false, true));229 }230 }231 if (LOG.isDebugEnabled()) {232 LOG.debug("Finished to decode String (property) : '" + stringToDecodeInit + "' to :'" + stringToDecode + "'");233 }234 answer.setResultMessage(msg);235 answer.setItem(stringToDecode);236 return answer;237 }238 /**239 * Auxiliary method that returns the execution data for a property.240 *241 * @param dataList list of execution data242 * @param eachTccp property to be calculated243 * @param forceCalculation indicates whether a property must be244 * re-calculated if it was already computed in previous steps245 * @param tecd execution data for the property246 * @return the updated execution data for the property247 */248 private TestCaseExecutionData getExecutionDataFromList(TreeMap<String, TestCaseExecutionData> hashTemp1, TestCaseCountryProperties eachTccp, boolean forceCalculation, TestCaseExecutionData tecd) {249 LOG.debug("Searching " + eachTccp.getProperty() + " Into list of " + hashTemp1.size());250 try {251 if (hashTemp1.containsKey(eachTccp.getProperty())) {252 if (forceCalculation) {253 LOG.debug("Property has already been calculated but forcing new calculation by removing it : " + hashTemp1.get(eachTccp.getProperty()));254 hashTemp1.remove(eachTccp.getProperty());255 return tecd;256 } else {257 LOG.debug("Property has already been calculated : " + hashTemp1.get(eachTccp.getProperty()));258 return hashTemp1.get(eachTccp.getProperty());259 }260 } else {261 LOG.debug("Property was never calculated.");262 return tecd;263 }264 } catch (Exception ex) {265 LOG.error("Exception catched inside getExecutionDataFromList : " + ex);266 }267 return tecd;268 }269 /**270 * Method that takes the potencial @param property, finds it (or not if it271 * is not a existing property) inside the existing property list @param272 * propertiesOfTestcase and gets the list of all other properties required273 * (contained inside value1 or value2).274 *275 * @param country country used to filter property from propertiesOfTestcase276 * @param property property to be calculated277 * @param crossedProperties List of previously found properties.278 * @param propertiesOfTestcase List of properties defined from the testcase.279 * @return list of TestCaseCountryProperties that are included inside the280 * definition of the @param property281 */282 private List<TestCaseCountryProperties> getListOfPropertiesLinkedToProperty(String country, String property, List<String> crossedProperties,283 List<TestCaseCountryProperties> propertiesOfTestcase) {284 List<TestCaseCountryProperties> result = new ArrayList();285 TestCaseCountryProperties testCaseCountryProperty = null;286 /*287 * Check if property is not already known (recursive case).288 */289 if (crossedProperties.contains(property)) {290 return result;291 }292 crossedProperties.add(property);293 /*294 * Check if property is defined for this testcase295 */296 AnswerItem ansSearch = findMatchingTestCaseCountryProperty(property, country, propertiesOfTestcase);297 testCaseCountryProperty = (TestCaseCountryProperties) ansSearch.getItem();298 if (testCaseCountryProperty == null) {299 return result;300 }301 /* 302 * Check if property value1 and value2 contains internal properties303 */304 List<String> allProperties = new ArrayList();305 // Value1 treatment306 List<String> propertiesValue1 = new ArrayList();307 //check the properties specified in the test308 for (String propNameFromValue1 : this.getPropertiesListFromString(testCaseCountryProperty.getValue1())) {309 for (TestCaseCountryProperties pr : propertiesOfTestcase) {310 if (pr.getProperty().equals(propNameFromValue1)) {311 propertiesValue1.add(propNameFromValue1);312 break;313 }314 }315 }316 allProperties.addAll(propertiesValue1);317 // Value2 treatment :318 List<String> propertiesValue2 = new ArrayList();319 //check the properties specified in the test320 for (String propNameFromValue2 : this.getPropertiesListFromString(testCaseCountryProperty.getValue2())) {321 for (TestCaseCountryProperties pr : propertiesOfTestcase) {322 if (pr.getProperty().equals(propNameFromValue2)) {323 propertiesValue2.add(propNameFromValue2);324 break;325 }326 }327 }328 allProperties.addAll(propertiesValue2);329 for (String internalProperty : allProperties) {330 result.addAll(getListOfPropertiesLinkedToProperty(country, internalProperty, crossedProperties, propertiesOfTestcase));331 }332 result.add(testCaseCountryProperty);333 return result;334 }335 private String decodeStringWithAlreadyCalculatedProperties(String stringToReplace, TestCaseExecution tCExecution) {336 String variableValue = "";337 String variableString1 = "";338 String variableString2 = "";339 TestCaseExecutionData tced;340 for (String key1 : tCExecution.getTestCaseExecutionDataMap().keySet()) {341 tced = tCExecution.getTestCaseExecutionDataMap().get(key1);342 if ((tced.getType() != null) && (tced.getType().equals(TestCaseCountryProperties.TYPE_GETFROMDATALIB))) { // Type could be null in case property do not exist.343 /* Replacement in case of TestDataLib */344 // Key value of the DataLib.345 if (tced.getValue() != null) {346 stringToReplace = stringToReplace.replace("%property." + tced.getProperty() + "%", tced.getValue());347 stringToReplace = stringToReplace.replace("%" + tced.getProperty() + "%", tced.getValue());348 }349 // For each subdata of the getFromDataLib property, we try to replace with PROPERTY(SUBDATA).350 if (!(tced.getDataLibRawData() == null)) {351 int ind = 0;352 for (HashMap<String, String> dataRow : tced.getDataLibRawData()) { // We loop every row result.353 for (String key : dataRow.keySet()) { // We loop every subdata354 if (dataRow.get(key) != null) {355 variableValue = dataRow.get(key);356 variableString1 = tced.getProperty() + "(" + (ind + 1) + ")" + "(" + key + ")";357 stringToReplace = stringToReplace.replace("%property." + variableString1 + "%", variableValue);358 stringToReplace = stringToReplace.replace("%" + variableString1 + "%", variableValue);359 variableString2 = tced.getProperty() + "." + (ind + 1) + "." + key;360 stringToReplace = stringToReplace.replace("%property." + variableString2 + "%", variableValue);361 stringToReplace = stringToReplace.replace("%" + variableString2 + "%", variableValue);362 if (key.equals("")) { // If subdata is empty we can omit the () or .363 variableString1 = tced.getProperty() + "(" + (ind + 1) + ")";364 stringToReplace = stringToReplace.replace("%property." + variableString1 + "%", variableValue);365 stringToReplace = stringToReplace.replace("%" + variableString1 + "%", variableValue);366 variableString2 = tced.getProperty() + "." + (ind + 1);367 stringToReplace = stringToReplace.replace("%property." + variableString2 + "%", variableValue);368 stringToReplace = stringToReplace.replace("%" + variableString2 + "%", variableValue);369 }370 if (ind == 0) { // Dimention of the data is not mandatory for the 1st row.371 variableString1 = tced.getProperty() + "(" + key + ")";372 stringToReplace = stringToReplace.replace("%property." + variableString1 + "%", variableValue);373 stringToReplace = stringToReplace.replace("%" + variableString1 + "%", variableValue);374 variableString2 = tced.getProperty() + "." + key;375 stringToReplace = stringToReplace.replace("%property." + variableString2 + "%", variableValue);376 stringToReplace = stringToReplace.replace("%" + variableString2 + "%", variableValue);377 }378 }379 }380 ind++;381 }382 }383 } else if (tced.getValue() != null) {384 /* Replacement in case of normal PROPERTY */385 stringToReplace = stringToReplace.replace("%property." + tced.getProperty() + "%", tced.getValue());386 stringToReplace = stringToReplace.replace("%" + tced.getProperty() + "%", tced.getValue());387 }388 }389 return stringToReplace;390 }391 /**392 * Gets all properties names contained into the given {@link String}393 *394 * <p>395 * A property is defined by including its name between two '%' character.396 * </p>397 *398 * @param str the {@link String} to get all properties399 * @param variableType400 * @return a list of properties contained into the given {@link String}401 */402 private List<String> getPropertiesListFromString(String str) {403 List<String> properties = new ArrayList<String>();404 LOG.debug("Starting to guess properties from string : " + str);405 if (str == null) {406 LOG.debug("Stoping to guess properties - Empty String ");407 return properties;408 }409 String[] text1 = str.split("%");410 int i = 0;411 for (String rawProperty : text1) {412 if (((i > 0) || (str.startsWith("%"))) && ((i < (text1.length - 1)) || str.endsWith("%"))) { // First and last string from split is not to be considered.413 // Removes "property." string.414 rawProperty = rawProperty.replaceFirst("^property\\.", "");415 // Removes the variable part of the property eg : (subdata)416 String[] ramProp1 = rawProperty.split("\\(");417 // Removes the variable part of the property eg : .subdata418 String[] ramProp2 = ramProp1[0].split("\\.");419 if (!(StringUtil.isNullOrEmpty(ramProp2[0].trim())) // Avoid getting empty Property names.420 && ramProp2[0].trim().length() <= TestCaseCountryProperties.MAX_PROPERTY_LENGTH // Properties cannot be bigger than n caracters.421 && !ramProp2[0].trim().contains("\n")) { // Properties cannot contain \n.422 properties.add(ramProp2[0].trim());423 LOG.debug("Adding string to result " + ramProp2[0].trim());424 } else {425 LOG.debug("Discarding string (empty or too big or contains cariage return).");426 }427 // Avoid getting empty Property names.428 } else {429 LOG.debug("Discarding string (first or last split).");430 }431 i++;432 }433 LOG.debug("Stopping to guess properties - Finished.");434 return properties;435 }436 /**437 * Auxiliary method that verifies if a property is defined in the scope of438 * the test case.439 *440 * @param property - property name441 * @param country - country were the property was implemented442 * @param propertieOfTestcase - list of properties defined for the test case443 * @return an AnswerItem that contains the property in case of success, and444 * null otherwise. also it returns a message indicating error or success.445 */446 private AnswerItem<TestCaseCountryProperties> findMatchingTestCaseCountryProperty(String property, String country, List<TestCaseCountryProperties> propertieOfTestcase) {447 AnswerItem<TestCaseCountryProperties> item = new AnswerItem<TestCaseCountryProperties>();448 boolean propertyDefined = false;449 item.setResultMessage(new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS));450 TestCaseCountryProperties testCaseCountryProperty = null;451 //searches for properties that match the propertyname (even if they use the getFromDataLib syntax)452 for (TestCaseCountryProperties tccp : propertieOfTestcase) {453 if (tccp.getProperty().equals(property)) {454 //property is defined455 propertyDefined = true;456 //check if is defined for country457 if (tccp.getCountry().equals(country)) {458 //if is a sub data access then we create a auxiliary property459 testCaseCountryProperty = tccp;460 if (LOG.isDebugEnabled()) {461 LOG.debug("Property found : " + tccp);462 }463 break;464 }465 }466 }467 /**468 * If property defined on another Country, set a specific message. If469 * property is not defined at all, trigger the end of the testcase.470 */471 if (testCaseCountryProperty == null) {472 MessageEvent msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_NO_PROPERTY_DEFINITION);473 if (!propertyDefined) {474 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_UNKNOWNPROPERTY);475 }476 msg.setDescription(msg.getDescription().replace("%COUNTRY%", country));477 msg.setDescription(msg.getDescription().replace("%PROP%", property));478 item.setResultMessage(msg);479 if (LOG.isDebugEnabled()) {480 LOG.debug(msg.getDescription());481 }482 }483 item.setItem(testCaseCountryProperty);484 return item;485 }486 @Override487 public void calculateProperty(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseStepActionExecution testCaseStepActionExecution,488 TestCaseCountryProperties testCaseCountryProperty, boolean forceRecalculation) {489 testCaseExecutionData.setStart(new Date().getTime());490 MessageEvent res;491 String test = tCExecution.getTest();492 String testCase = tCExecution.getTestCase();493 AnswerItem<String> answerDecode = new AnswerItem();494 if (LOG.isDebugEnabled()) {495 LOG.debug("Starting to calculate Property : '" + testCaseCountryProperty.getProperty() + "'");496 }497 // Checking recursive decode.498 if ((tCExecution.getRecursiveAlreadyCalculatedPropertiesList() != null) && (tCExecution.getRecursiveAlreadyCalculatedPropertiesList().contains(testCaseCountryProperty.getProperty()))) {499 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_RECURSIVE);500 res.setDescription(res.getDescription().replace("%PROPERTY%", testCaseCountryProperty.getProperty())501 .replace("%HISTO%", tCExecution.getRecursiveAlreadyCalculatedPropertiesList().toString()));502 testCaseExecutionData.setPropertyResultMessage(res);503 testCaseExecutionData.setEnd(new Date().getTime());504 LOG.debug("Finished to calculate Property (interupted) : '" + testCaseCountryProperty.getProperty() + "' : " + testCaseExecutionData.getPropertyResultMessage().getDescription());505 return;506 }507 if (tCExecution.getRecursiveAlreadyCalculatedPropertiesList() != null) {508 tCExecution.getRecursiveAlreadyCalculatedPropertiesList().add(testCaseCountryProperty.getProperty());509 }510 try {511 // Check if cache activated and cache entry exist.512 int cacheValue = testCaseCountryProperty.getCacheExpire();513 boolean useCache = false;514 AnswerItem<TestCaseExecutionData> answerData = null;515 if (cacheValue > 0) {516 answerData = testCaseExecutionDataService.readLastCacheEntry(tCExecution.getApplicationObj().getSystem(), tCExecution.getEnvironment(), tCExecution.getCountry(), testCaseCountryProperty.getProperty(), cacheValue);517 if (answerData.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()) && answerData.getItem() != null) {518 useCache = true;519 }520 }521 if (!useCache) {522 /**523 * Decode Property replacing properties encapsulated with %524 */525 if (testCaseCountryProperty.getValue1().contains("%")) {526 answerDecode = variableService.decodeStringCompletly(testCaseCountryProperty.getValue1(), tCExecution, null, false);527 testCaseExecutionData.setValue1((String) answerDecode.getItem());528 if (!(answerDecode.isCodeStringEquals("OK"))) {529 // If anything wrong with the decode --> we stop here with decode message in the property result.530 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Property Value1"));531 testCaseExecutionData.setEnd(new Date().getTime());532 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());533 LOG.debug("Finished to calculate Property (interupted) : '" + testCaseCountryProperty.getProperty() + "' : " + testCaseExecutionData.getPropertyResultMessage().getDescription());534 return;535 }536 }537 if (testCaseCountryProperty.getValue2() != null && testCaseCountryProperty.getValue2().contains("%")) {538 answerDecode = variableService.decodeStringCompletly(testCaseCountryProperty.getValue2(), tCExecution, null, false);539 testCaseExecutionData.setValue2((String) answerDecode.getItem());540 if (!(answerDecode.isCodeStringEquals("OK"))) {541 // If anything wrong with the decode --> we stop here with decode message in the property result.542 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "Property Value2"));543 testCaseExecutionData.setEnd(new Date().getTime());544 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());545 LOG.debug("Finished to calculate Property (interupted) : '" + testCaseCountryProperty.getProperty() + "' : " + testCaseExecutionData.getPropertyResultMessage().getDescription());546 return;547 }548 }549 // cache not activated or no entry exist.550 int execution_count = 0;551 int retries = testCaseCountryProperty.getRetryNb();552 int periodms = testCaseCountryProperty.getRetryPeriod();553 LOG.debug("Init Retries : " + retries + " Period : " + periodms);554 /**555 * Controling that retrynb and retryperiod are correctly feeded.556 * <br>557 * This is to avoid that <br>558 * 1/ retry is greater than cerberus_property_maxretry <br>559 * 2/ total duration of property calculation is longuer than560 * cerberus_property_maxretrytotalduration561 */562 boolean forced_retry = false;563 String forced_retry_message = "";564 if (!(retries == 0)) {565 int maxretry = parameterService.getParameterIntegerByKey("cerberus_property_maxretry", "", 50);566 if (retries > maxretry) {567 retries = maxretry;568 forced_retry = true;569 }570 int maxtotalduration = parameterService.getParameterIntegerByKey("cerberus_property_maxretrytotalduration", "", 1800000);571 if (periodms > maxtotalduration) {572 periodms = maxtotalduration;573 forced_retry = true;574 }575 if (retries * periodms > maxtotalduration) {576 retries = (int) maxtotalduration / periodms;577 forced_retry = true;578 }579 if (forced_retry) {580 forced_retry_message = "WARNING : Forced Retries : " + testCaseCountryProperty.getRetryNb() + "-->" + retries + " and Period : " + testCaseCountryProperty.getRetryPeriod() + "-->" + periodms + " (in order to respect the constrains cerberus_property_maxretry " + maxretry + " & cerberus_property_maxtotalduration " + maxtotalduration + ")";581 LOG.debug("Forced Retries : " + retries + " Period : " + periodms + " in order to respect the constrains cerberus_property_maxretry " + maxretry + " & cerberus_property_maxtotalduration " + maxtotalduration);582 }583 }584 /**585 * Looping on calculating the action until result is OK or reach586 * the max retry.587 */588 while (execution_count <= retries && !(testCaseExecutionData.getPropertyResultMessage().getCodeString().equals("OK"))) {589 LOG.debug("Attempt #" + execution_count + " " + testCaseCountryProperty.getProperty() + " " + testCaseCountryProperty.getValue1());590 if (execution_count >= 1) { // We only wait the period if not on the very first calculation.591 try {592 Thread.sleep(periodms);593 LOG.debug("Attempt #" + execution_count + " " + testCaseCountryProperty.getProperty() + " " + testCaseCountryProperty.getValue1() + " Waiting " + periodms + " ms");594 } catch (InterruptedException ex) {595 LOG.error(ex.toString());596 }597 }598 /**599 * Calculate Property regarding the type600 */601 switch (testCaseCountryProperty.getType()) {602 case TestCaseCountryProperties.TYPE_TEXT:603 testCaseExecutionData = this.property_calculateText(testCaseExecutionData, testCaseCountryProperty, forceRecalculation);604 break;605 case TestCaseCountryProperties.TYPE_GETFROMDATALIB:606 testCaseExecutionData = this.property_getFromDataLib(testCaseExecutionData, tCExecution, testCaseStepActionExecution, testCaseCountryProperty, forceRecalculation);607 break;608 case TestCaseCountryProperties.TYPE_GETFROMSQL:609 testCaseExecutionData = this.property_getFromSql(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);610 break;611 case TestCaseCountryProperties.TYPE_GETFROMHTML:612 testCaseExecutionData = this.property_getFromHtml(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);613 break;614 case TestCaseCountryProperties.TYPE_GETFROMHTMLVISIBLE:615 testCaseExecutionData = this.property_getFromHtmlVisible(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);616 break;617 case TestCaseCountryProperties.TYPE_GETFROMJS:618 testCaseExecutionData = this.property_getFromJS(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);619 break;620 case TestCaseCountryProperties.TYPE_GETATTRIBUTEFROMHTML:621 testCaseExecutionData = this.property_getAttributeFromHtml(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);622 break;623 case TestCaseCountryProperties.TYPE_GETFROMCOOKIE:624 testCaseExecutionData = this.property_getFromCookie(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);625 break;626 case TestCaseCountryProperties.TYPE_GETFROMXML:627 testCaseExecutionData = this.property_getFromXml(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);628 break;629 case TestCaseCountryProperties.TYPE_GETDIFFERENCESFROMXML:630 testCaseExecutionData = this.property_getDifferencesFromXml(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);631 break;632 case TestCaseCountryProperties.TYPE_GETFROMJSON:633 testCaseExecutionData = this.property_getFromJson(testCaseExecutionData, tCExecution, forceRecalculation);634 break;635 case TestCaseCountryProperties.TYPE_GETFROMGROOVY:636 testCaseExecutionData = this.property_getFromGroovy(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceRecalculation);637 break;638 case TestCaseCountryProperties.TYPE_EXECUTESOAPFROMLIB: // DEPRECATED639 testCaseExecutionData = this.property_executeSoapFromLib(testCaseExecutionData, tCExecution, testCaseStepActionExecution, testCaseCountryProperty, forceRecalculation);640 res = testCaseExecutionData.getPropertyResultMessage();641 res.setDescription(MESSAGE_DEPRECATED + " " + res.getDescription());642 testCaseExecutionData.setPropertyResultMessage(res);643 logEventService.createForPrivateCalls("ENGINE", TestCaseCountryProperties.TYPE_EXECUTESOAPFROMLIB, MESSAGE_DEPRECATED + " Deprecated Property triggered by TestCase : ['" + test + "|" + testCase + "']");644 LOG.warn(MESSAGE_DEPRECATED + " Deprecated Property " + TestCaseCountryProperties.TYPE_EXECUTESOAPFROMLIB + " triggered by TestCase : ['" + test + "'|'" + testCase + "']");645 break;646 case TestCaseCountryProperties.TYPE_EXECUTESQLFROMLIB: // DEPRECATED647 testCaseExecutionData = this.property_executeSqlFromLib(testCaseExecutionData, testCaseCountryProperty, tCExecution, forceRecalculation);648 res = testCaseExecutionData.getPropertyResultMessage();649 res.setDescription(MESSAGE_DEPRECATED + " " + res.getDescription());650 testCaseExecutionData.setPropertyResultMessage(res);651 logEventService.createForPrivateCalls("ENGINE", TestCaseCountryProperties.TYPE_EXECUTESQLFROMLIB, MESSAGE_DEPRECATED + " Deprecated Property triggered by TestCase : ['" + test + "|" + testCase + "']");652 LOG.warn(MESSAGE_DEPRECATED + " Deprecated Property " + TestCaseCountryProperties.TYPE_EXECUTESQLFROMLIB + " triggered by TestCase : ['" + test + "'|'" + testCase + "']");653 break;654 default:655 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_UNKNOWNPROPERTY);656 res.setDescription(res.getDescription().replace("%PROPERTY%", testCaseCountryProperty.getType()));657 testCaseExecutionData.setPropertyResultMessage(res);658 }659 execution_count++;660 }661 if (execution_count >= 2) { // If there were at least 1 retry, we notify it in the result message.662 res = testCaseExecutionData.getPropertyResultMessage();663 res.setDescription("Retried " + (execution_count - 1) + " time(s) with " + periodms + "ms period - " + res.getDescription());664 testCaseExecutionData.setPropertyResultMessage(res);665 }666 if (forced_retry) { // If the retry and period parameter was changed, we notify it in the result message.667 res = testCaseExecutionData.getPropertyResultMessage();668 res.setDescription(forced_retry_message + " - " + res.getDescription());669 testCaseExecutionData.setPropertyResultMessage(res);670 }671 } else {672 // cache activated and entry exist. We set the current value with cache entry data and notify the result from the messsage.673 TestCaseExecutionData testCaseExecutionDataFromCache = (TestCaseExecutionData) answerData.getItem();674 testCaseExecutionData.setFromCache("Y");675 testCaseExecutionData.setDataLib(testCaseExecutionDataFromCache.getDataLib());676 testCaseExecutionData.setValue(testCaseExecutionDataFromCache.getValue());677 testCaseExecutionData.setJsonResult(testCaseExecutionDataFromCache.getJsonResult());678 DateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_DISPLAY);679 res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_FROMCACHE).resolveDescription("ID", String.valueOf(testCaseExecutionDataFromCache.getId())).resolveDescription("DATE", df.format(testCaseExecutionDataFromCache.getStart()));680 testCaseExecutionData.setPropertyResultMessage(res);681 if (!StringUtil.isNullOrEmpty(testCaseExecutionDataFromCache.getJsonResult())) {682 // Convert json to HashMap.683 List<HashMap<String, String>> result = null;684 result = new ArrayList();685 try {686 LOG.debug("Converting Json : " + testCaseExecutionDataFromCache.getJsonResult());687 JSONArray json = new JSONArray(testCaseExecutionDataFromCache.getJsonResult());688 for (int i = 0; i < json.length(); i++) {689 JSONObject explrObject = json.getJSONObject(i);690 LOG.debug(explrObject.toString());691 HashMap<String, String> resultHash = new HashMap<String, String>();692 Iterator<String> nameItr = explrObject.keys();693 while (nameItr.hasNext()) {694 String name = nameItr.next();695 if (name.equals("KEY")) {696 resultHash.put("", explrObject.getString(name));697 } else {698 resultHash.put(name, explrObject.getString(name));699 }700 }701 result.add(resultHash);702 }703 } catch (JSONException ex) {704 java.util.logging.Logger.getLogger(PropertyService.class.getName()).log(Level.SEVERE, null, ex);705 LOG.error(ex);706 }707 testCaseExecutionData.setDataLibRawData(result);708 //Record result in filessytem.709 recorderService.recordTestDataLibProperty(tCExecution.getId(), testCaseCountryProperty.getProperty(), 1, result);710 }711 }712 } catch (CerberusEventException ex) {713 LOG.error(ex.toString());714 testCaseExecutionData.setEnd(new Date().getTime());715 testCaseExecutionData.setPropertyResultMessage(ex.getMessageError());716 }717 testCaseExecutionData.setEnd(new Date().getTime());718 if (LOG.isDebugEnabled()) {719 LOG.debug("Finished to calculate Property : '" + testCaseCountryProperty.getProperty() + "'");720 }721 }722 private TestCaseExecutionData property_executeSqlFromLib(TestCaseExecutionData testCaseExecutionData, TestCaseCountryProperties testCaseCountryProperty, TestCaseExecution tCExecution, boolean forceCalculation) {723 try {724 String script = this.sqlLibraryService.findSqlLibraryByKey(testCaseExecutionData.getValue1()).getScript();725 testCaseExecutionData.setValue1(script); //TODO use the new library 726 } catch (CerberusException ex) {727 LOG.warn(ex);728 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_SQLLIB_NOTEXIT);729 res.setDescription(res.getDescription().replace("%SQLLIB%", testCaseExecutionData.getValue1()));730 testCaseExecutionData.setPropertyResultMessage(res);731 testCaseExecutionData.setEnd(732 new Date().getTime());733 return testCaseExecutionData;734 }735 testCaseExecutionData = this.property_getFromSql(testCaseExecutionData, tCExecution, testCaseCountryProperty, forceCalculation);736 return testCaseExecutionData;737 }738 private TestCaseExecutionData property_getFromSql(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {739 return sQLService.calculateOnDatabase(testCaseExecutionData, testCaseCountryProperty, tCExecution);740 }741 private TestCaseExecutionData property_calculateText(TestCaseExecutionData testCaseExecutionData, TestCaseCountryProperties testCaseCountryProperty, boolean forceRecalculation) {742 if (TestCaseCountryProperties.NATURE_RANDOM.equals(testCaseCountryProperty.getNature())743 //TODO CTE Voir avec B. Civel "RANDOM_NEW"744 || (testCaseCountryProperty.getNature().equals(TestCaseCountryProperties.NATURE_RANDOMNEW))) {745 if (testCaseCountryProperty.getLength().equals("0")) {746 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_TEXTRANDOMLENGHT0);747 testCaseExecutionData.setPropertyResultMessage(res);748 } else {749 String charset;750 if (testCaseExecutionData.getValue1() != null && !"".equals(testCaseExecutionData.getValue1().trim())) {751 charset = testCaseExecutionData.getValue1();752 } else {753 charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";754 }755 String value = StringUtil.getRandomString(ParameterParserUtil.parseIntegerParam(testCaseCountryProperty.getLength(), 0), charset);756 testCaseExecutionData.setValue(value);757 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_RANDOM);758 res.setDescription(res.getDescription().replace("%FORCED%", forceRecalculation == true ? "Re-" : ""));759 res.setDescription(res.getDescription().replace("%VALUE%", ParameterParserUtil.securePassword(value, testCaseCountryProperty.getProperty())));760 testCaseExecutionData.setPropertyResultMessage(res);761// if (testCaseCountryProperty.getNature().equals("RANDOM_NEW")) {762// //TODO check if value exist on DB ( used in another test case of the revision )763// }764 }765 } else {766 LOG.debug("Setting value : " + testCaseExecutionData.getValue1());767 String value = testCaseExecutionData.getValue1();768 testCaseExecutionData.setValue(value);769 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_TEXT);770 res.setDescription(res.getDescription().replace("%VALUE%", ParameterParserUtil.securePassword(value, testCaseCountryProperty.getProperty())));771 testCaseExecutionData.setPropertyResultMessage(res);772 }773 return testCaseExecutionData;774 }775 private TestCaseExecutionData property_getFromHtmlVisible(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {776 try {777 Identifier identifier = identifierService.convertStringToIdentifier(testCaseExecutionData.getValue1());778 String valueFromHTML = this.webdriverService.getValueFromHTMLVisible(tCExecution.getSession(), identifier);779 if (valueFromHTML != null) {780 testCaseExecutionData.setValue(valueFromHTML);781 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_HTMLVISIBLE);782 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));783 res.setDescription(res.getDescription().replace("%VALUE%", valueFromHTML));784 testCaseExecutionData.setPropertyResultMessage(res);785 } else {786 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_HTMLVISIBLE_ELEMENTDONOTEXIST);787 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));788 testCaseExecutionData.setPropertyResultMessage(res);789 }790 } catch (NoSuchElementException exception) {791 LOG.debug(exception.toString());792 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_HTMLVISIBLE_ELEMENTDONOTEXIST);793 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));794 testCaseExecutionData.setPropertyResultMessage(res);795 }796 return testCaseExecutionData;797 }798 private TestCaseExecutionData property_getFromHtml(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {799 if (tCExecution.getApplicationObj().getType().equals(Application.TYPE_APK)800 || tCExecution.getApplicationObj().getType().equals(Application.TYPE_IPA)801 || tCExecution.getApplicationObj().getType().equals(Application.TYPE_GUI)) {802 try {803 Identifier identifier = identifierService.convertStringToIdentifier(testCaseExecutionData.getValue1());804 String valueFromHTML = this.webdriverService.getValueFromHTML(tCExecution.getSession(), identifier);805 if (valueFromHTML != null) {806 testCaseExecutionData.setValue(valueFromHTML);807 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_HTML);808 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));809 res.setDescription(res.getDescription().replace("%VALUE%", valueFromHTML));810 testCaseExecutionData.setPropertyResultMessage(res);811 }812 } catch (NoSuchElementException exception) {813 LOG.debug(exception.toString());814 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_HTML_ELEMENTDONOTEXIST);815 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));816 testCaseExecutionData.setPropertyResultMessage(res);817 }818 } else {819 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_FEATURENOTSUPPORTED);820 res.setDescription(res.getDescription().replace("%APPTYPE%", tCExecution.getApplicationObj().getType()));821 res.setDescription(res.getDescription().replace("%PROPTYPE%", testCaseExecutionData.getType()));822 }823 return testCaseExecutionData;824 }825 private TestCaseExecutionData property_getFromJS(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {826 String script = testCaseExecutionData.getValue1();827 String valueFromJS;828 String message = "";829 try {830 valueFromJS = this.webdriverService.getValueFromJS(tCExecution.getSession(), script);831 } catch (Exception e) {832 message = e.getMessage().split("\n")[0];833 LOG.debug("Exception Running JS Script :" + message);834 valueFromJS = null;835 }836 if (valueFromJS != null) {837 testCaseExecutionData.setValue(valueFromJS);838 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_JS);839 res.setDescription(res.getDescription().replace("%SCRIPT%", script));840 res.setDescription(res.getDescription().replace("%VALUE%", valueFromJS));841 testCaseExecutionData.setPropertyResultMessage(res);842 } else {843 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_JS_EXCEPTION);844 res.setDescription(res.getDescription().replace("%EXCEPTION%", message));845 testCaseExecutionData.setPropertyResultMessage(res);846 }847 return testCaseExecutionData;848 }849 private TestCaseExecutionData property_getFromGroovy(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {850 // Check if script has been correctly defined851 String script = testCaseExecutionData.getValue1();852 if (script == null || script.isEmpty()) {853 testCaseExecutionData.setPropertyResultMessage(new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMGROOVY_NULL));854 return testCaseExecutionData;855 }856 // Try to evaluate Groovy script857 try {858 String valueFromGroovy = groovyService.eval(script);859 testCaseExecutionData.setValue(valueFromGroovy);860 testCaseExecutionData.setPropertyResultMessage(new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETFROMGROOVY)861 .resolveDescription("VALUE", valueFromGroovy));862 } catch (IGroovyService.IGroovyServiceException e) {863 LOG.debug("Exception Running Grrovy Script :" + e.getMessage());864 testCaseExecutionData.setPropertyResultMessage(new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMGROOVY_EXCEPTION).resolveDescription("REASON", e.getMessage()));865 }866 return testCaseExecutionData;867 }868 private TestCaseExecutionData property_getAttributeFromHtml(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {869 MessageEvent res;870 try {871 Identifier identifier = identifierService.convertStringToIdentifier(testCaseExecutionData.getValue1());872 String valueFromHTML = this.webdriverService.getAttributeFromHtml(tCExecution.getSession(), identifier, testCaseExecutionData.getValue2());873 if (valueFromHTML != null) {874 testCaseExecutionData.setValue(valueFromHTML);875 res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETATTRIBUTEFROMHTML);876 res.setDescription(res.getDescription().replace("%VALUE%", valueFromHTML));877 } else {878 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_HTML_ATTRIBUTEDONOTEXIST);879 }880 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));881 res.setDescription(res.getDescription().replace("%ATTRIBUTE%", testCaseExecutionData.getValue2()));882 } catch (NoSuchElementException exception) {883 LOG.debug(exception.toString());884 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_HTMLVISIBLE_ELEMENTDONOTEXIST);885 res.setDescription(res.getDescription().replace("%ELEMENT%", testCaseExecutionData.getValue1()));886 }887 testCaseExecutionData.setPropertyResultMessage(res);888 return testCaseExecutionData;889 }890 private TestCaseExecutionData property_executeSoapFromLib(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseStepActionExecution testCaseStepActionExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {891 String result = null;892 AnswerItem<String> answerDecode = new AnswerItem();893 try {894 AppService appService = this.appServiceService.findAppServiceByKey(testCaseExecutionData.getValue1());895 if (appService != null) {896 String decodedEnveloppe = appService.getServiceRequest();897 String decodedServicePath = appService.getServicePath();898 String decodedMethod = appService.getOperation();899 String decodedAttachement = appService.getAttachementURL();900 if (appService.getServiceRequest().contains("%")) {901 answerDecode = variableService.decodeStringCompletly(appService.getServiceRequest(), tCExecution, testCaseStepActionExecution, false);902 decodedEnveloppe = (String) answerDecode.getItem();903 if (!(answerDecode.isCodeStringEquals("OK"))) {904 // If anything wrong with the decode --> we stop here with decode message in the action result.905 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "SOAP Service Request"));906 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());907 LOG.debug("Property interupted due to decode 'SOAP Service Request' Error.");908 return testCaseExecutionData;909 }910 }911 if (appService.getServicePath().contains("%")) {912 answerDecode = variableService.decodeStringCompletly(appService.getServicePath(), tCExecution, testCaseStepActionExecution, false);913 decodedServicePath = (String) answerDecode.getItem();914 if (!(answerDecode.isCodeStringEquals("OK"))) {915 // If anything wrong with the decode --> we stop here with decode message in the action result.916 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "SOAP Service Path"));917 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());918 LOG.debug("Property interupted due to decode 'SOAP Service Path.");919 return testCaseExecutionData;920 }921 }922 if (appService.getOperation().contains("%")) {923 answerDecode = variableService.decodeStringCompletly(appService.getOperation(), tCExecution, testCaseStepActionExecution, false);924 decodedMethod = (String) answerDecode.getItem();925 if (!(answerDecode.isCodeStringEquals("OK"))) {926 // If anything wrong with the decode --> we stop here with decode message in the action result.927 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "SOAP Operation"));928 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());929 LOG.debug("Property interupted due to decode 'SOAP Operation.");930 return testCaseExecutionData;931 }932 }933 if (appService.getAttachementURL().contains("%")) {934 answerDecode = variableService.decodeStringCompletly(appService.getAttachementURL(), tCExecution, testCaseStepActionExecution, false);935 decodedAttachement = (String) answerDecode.getItem();936 if (!(answerDecode.isCodeStringEquals("OK"))) {937 // If anything wrong with the decode --> we stop here with decode message in the action result.938 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "SOAP Attachement URL"));939 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());940 LOG.debug("Property interupted due to decode 'SOAP Attachement URL.");941 return testCaseExecutionData;942 }943 }944 //Call Soap and set LastSoapCall of the testCaseExecution.945 AnswerItem soapCall = soapService.callSOAP(decodedEnveloppe, decodedServicePath, decodedMethod, decodedAttachement, null, null, 60000, tCExecution.getApplicationObj().getSystem());946 AppService se1 = (AppService) soapCall.getItem();947// tCExecution.setLastSOAPCalled(soapCall);948 if (soapCall.isCodeEquals(200)) {949// SOAPExecution lastSoapCalled = (SOAPExecution) tCExecution.getLastSOAPCalled().getItem();950 String xmlResponse = se1.getResponseHTTPBody();951 result = xmlUnitService.getFromXml(xmlResponse, appService.getAttachementURL());952 }953 if (result != null) {954 testCaseExecutionData.setValue(result);955 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_SOAP);956 testCaseExecutionData.setPropertyResultMessage(res);957 } else {958 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SOAPFROMLIB_NODATA);959 testCaseExecutionData.setPropertyResultMessage(res);960 }961 }962 } catch (CerberusException exception) {963 LOG.error(exception.toString());964 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_TESTDATA_PROPERTYDONOTEXIST);965 res.setDescription(res.getDescription().replace("%PROPERTY%", testCaseExecutionData.getValue1()));966 testCaseExecutionData.setPropertyResultMessage(res);967 } catch (CerberusEventException ex) {968 LOG.error(ex.toString());969 MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSOAP);970 message.setDescription(message.getDescription().replace("%SOAPNAME%", testCaseExecutionData.getValue1()));971 message.setDescription(message.getDescription().replace("%DESCRIPTION%", ex.getMessageError().getDescription()));972 testCaseExecutionData.setPropertyResultMessage(message);973 }974 return testCaseExecutionData;975 }976 private TestCaseExecutionData property_getFromXml(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {977 // 1. Get XML value to parse978 String xmlToParse = null;979 // If value2 is defined, then take it as XML value to parse980 if (!(StringUtil.isNullOrEmpty(testCaseExecutionData.getValue2()))) {981 xmlToParse = testCaseExecutionData.getValue2();982 } // Else try to get the last known response from service call983 else if (tCExecution.getLastServiceCalled() != null) {984 xmlToParse = tCExecution.getLastServiceCalled().getResponseHTTPBody();985 } // If XML to parse is still null, then there is an error in XML value definition986 else if (xmlToParse == null) {987 testCaseExecutionData.setPropertyResultMessage(988 new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMXML)989 .resolveDescription("VALUE1", testCaseExecutionData.getValue1())990 .resolveDescription("VALUE2", testCaseExecutionData.getValue2()));991 return testCaseExecutionData;992 }993 // Else we can try to parse it thanks to the dedicated service994 try {995 String valueFromXml = xmlUnitService.getFromXml(xmlToParse, testCaseExecutionData.getValue1());996 if (valueFromXml != null) {997 testCaseExecutionData.setValue(valueFromXml);998 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETFROMXML);999 res.setDescription(res.getDescription().replace("%VALUE%", valueFromXml));1000 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1001 testCaseExecutionData.setPropertyResultMessage(res);1002 } else {1003 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMXML);1004 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1005 res.setDescription(res.getDescription().replace("%VALUE2%", testCaseExecutionData.getValue2()));1006 testCaseExecutionData.setPropertyResultMessage(res);1007 }1008 } catch (Exception ex) {1009 LOG.debug(ex.toString());1010 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMXML);1011 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1012 res.setDescription(res.getDescription().replace("%VALUE2%", testCaseExecutionData.getValue2()));1013 testCaseExecutionData.setPropertyResultMessage(res);1014 }1015 return testCaseExecutionData;1016 }1017 private TestCaseExecutionData property_getFromCookie(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {1018 try {1019 String valueFromCookie = this.webdriverService.getFromCookie(tCExecution.getSession(), testCaseExecutionData.getValue1(), testCaseExecutionData.getValue2());1020 if (valueFromCookie != null) {1021 if (!valueFromCookie.equals("cookieNotFound")) {1022 testCaseExecutionData.setValue(valueFromCookie);1023 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETFROMCOOKIE);1024 res.setDescription(res.getDescription().replace("%COOKIE%", testCaseExecutionData.getValue1()));1025 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue2()));1026 res.setDescription(res.getDescription().replace("%VALUE%", valueFromCookie));1027 testCaseExecutionData.setPropertyResultMessage(res);1028 } else {1029 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMCOOKIE_COOKIENOTFOUND);1030 res.setDescription(res.getDescription().replace("%COOKIE%", testCaseExecutionData.getValue1()));1031 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue2()));1032 testCaseExecutionData.setPropertyResultMessage(res);1033 }1034 } else {1035 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMCOOKIE_PARAMETERNOTFOUND);1036 res.setDescription(res.getDescription().replace("%COOKIE%", testCaseExecutionData.getValue1()));1037 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue2()));1038 testCaseExecutionData.setPropertyResultMessage(res);1039 }1040 } catch (Exception exception) {1041 LOG.debug(exception.toString());1042 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMCOOKIE_COOKIENOTFOUND);1043 res.setDescription(res.getDescription().replace("%COOKIE%", testCaseExecutionData.getValue1()));1044 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue2()));1045 testCaseExecutionData.setPropertyResultMessage(res);1046 }1047 return testCaseExecutionData;1048 }1049 private TestCaseExecutionData property_getDifferencesFromXml(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceCalculation) {1050 try {1051 LOG.debug("Computing differences between " + testCaseExecutionData.getValue1() + " and " + testCaseExecutionData.getValue2());1052 String differences = xmlUnitService.getDifferencesFromXml(testCaseExecutionData.getValue1(), testCaseExecutionData.getValue2());1053 if (differences != null) {1054 LOG.debug("Computing done.");1055 testCaseExecutionData.setValue(differences);1056 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETDIFFERENCESFROMXML);1057 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1058 res.setDescription(res.getDescription().replace("%VALUE2%", testCaseExecutionData.getValue2()));1059 testCaseExecutionData.setPropertyResultMessage(res);1060 } else {1061 LOG.debug("Computing failed.");1062 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETDIFFERENCESFROMXML);1063 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1064 res.setDescription(res.getDescription().replace("%VALUE2%", testCaseExecutionData.getValue2()));1065 testCaseExecutionData.setPropertyResultMessage(res);1066 }1067 } catch (Exception ex) {1068 LOG.debug(ex.toString());1069 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETDIFFERENCESFROMXML);1070 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1071 res.setDescription(res.getDescription().replace("%VALUE2%", testCaseExecutionData.getValue2()));1072 testCaseExecutionData.setPropertyResultMessage(res);1073 }1074 return testCaseExecutionData;1075 }1076 private TestCaseExecutionData property_getFromJson(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution, boolean forceRecalculation) {1077 String jsonResponse = "";1078 try {1079 /**1080 * If tCExecution LastServiceCalled exist, get the response;1081 */1082 if (null != tCExecution.getLastServiceCalled()) {1083 jsonResponse = tCExecution.getLastServiceCalled().getResponseHTTPBody();1084 }1085 String newUrl = null;1086 if (!(StringUtil.isNullOrEmpty(testCaseExecutionData.getValue2()))) {1087 newUrl = testCaseExecutionData.getValue2();1088 }1089 String valueFromJson = this.jsonService.getFromJson(jsonResponse, newUrl, testCaseExecutionData.getValue1());1090 if (valueFromJson != null) {1091 if (!"".equals(valueFromJson)) {1092 testCaseExecutionData.setValue(valueFromJson);1093 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETFROMJSON);1094 res.setDescription(res.getDescription().replace("%URL%", testCaseExecutionData.getValue2()));1095 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue1()));1096 res.setDescription(res.getDescription().replace("%VALUE%", valueFromJson));1097 testCaseExecutionData.setPropertyResultMessage(res);1098 } else {1099 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMJSON_PARAMETERNOTFOUND);1100 res.setDescription(res.getDescription().replace("%URL%", testCaseExecutionData.getValue2()));1101 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue1()));1102 testCaseExecutionData.setPropertyResultMessage(res);1103 }1104 } else {1105 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMJSON_PARAMETERNOTFOUND);1106 res.setDescription(res.getDescription().replace("%URL%", testCaseExecutionData.getValue2()));1107 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue1()));1108 testCaseExecutionData.setPropertyResultMessage(res);1109 }1110 } catch (Exception exception) {1111 if (LOG.isDebugEnabled()) {1112 LOG.error(exception.toString());1113 }1114 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMJSON_PARAMETERNOTFOUND);1115 res.setDescription(res.getDescription().replace("%URL%", testCaseExecutionData.getValue2()));1116 res.setDescription(res.getDescription().replace("%PARAM%", testCaseExecutionData.getValue1()));1117 res.setDescription(res.getDescription().replace("%ERROR%", exception.toString()));1118 testCaseExecutionData.setPropertyResultMessage(res);1119 }1120 return testCaseExecutionData;1121 }1122 private TestCaseExecutionData property_getFromDataLib(TestCaseExecutionData testCaseExecutionData, TestCaseExecution tCExecution,1123 TestCaseStepActionExecution testCaseStepActionExecution, TestCaseCountryProperties testCaseCountryProperty, boolean forceRecalculation) {1124 MessageEvent res = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_GETFROMDATALIB);1125 TestDataLib testDataLib;1126 List<HashMap<String, String>> result = null;1127 AnswerItem<String> answerDecode = new AnswerItem();1128 // We get here the correct TestDataLib entry from the Value1 (name) that better match the context on system, environment and country.1129 AnswerItem<TestDataLib> answer = testDataLibService.readByNameBySystemByEnvironmentByCountry(testCaseExecutionData.getValue1(),1130 tCExecution.getApplicationObj().getSystem(), tCExecution.getEnvironmentData(),1131 tCExecution.getCountry());1132 if (answer.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()) && answer.getItem() != null) {1133 testDataLib = (TestDataLib) answer.getItem();1134 AnswerList serviceAnswer;1135 //check if there are properties defined in the data specification1136 try {1137 if (testDataLib.getType().equals(TestDataLib.TYPE_SQL)) {1138 //check if the script contains properties that neeed to be calculated1139 answerDecode = variableService.decodeStringCompletly(testDataLib.getScript(), tCExecution, testCaseStepActionExecution, false);1140 String decodedScript = (String) answerDecode.getItem();1141 testDataLib.setScript(decodedScript);1142 if (!(answerDecode.isCodeStringEquals("OK"))) {1143 // If anything wrong with the decode --> we stop here with decode message in the action result.1144 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "SQL Script"));1145 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());1146 LOG.debug("Property interupted due to decode 'SQL Script'.");1147 return testCaseExecutionData;1148 }1149 }1150 } catch (CerberusEventException cex) {1151 LOG.error(cex.toString());1152 }1153 String decodedLength = null;1154 // Here, we try to decode testCaseCountryProperty field `length` to get the value of property if needed1155 try {1156 answerDecode = variableService.decodeStringCompletly(testCaseCountryProperty.getLength(), tCExecution, testCaseStepActionExecution, false);1157 decodedLength = (String) answerDecode.getItem();1158 if (!(answerDecode.isCodeStringEquals("OK"))) {1159 testCaseExecutionData.setPropertyResultMessage(answerDecode.getResultMessage().resolveDescription("FIELD", "length"));1160 testCaseExecutionData.setStopExecution(answerDecode.getResultMessage().isStopTest());1161 LOG.debug("Property interupted due to decode 'Length field'.");1162 return testCaseExecutionData;1163 }1164 } catch (CerberusEventException cex) {1165 LOG.error(cex.toString());1166 }1167 // We cast from string to integer ((String)testcasecountryproperty field `length` -> (Integer)testcaseexecutiondata field `length`)1168 // if we can't, testCaseExecutionData field `length` will be equal to 01169 // if we can, we set the value of testCaseExecutionData field `length` to the casted value1170 if (decodedLength != null) {1171 try {1172 Integer.parseInt(decodedLength);1173 testCaseExecutionData.setLength(decodedLength);1174 } catch (NumberFormatException e) {1175 LOG.error(e.toString());1176 MessageEvent msg = new MessageEvent(MessageEventEnum.CASTING_OPERATION_FAILED);1177 msg.setDescription(msg.getDescription().replace("%ERROR%", e.toString()));1178 msg.setDescription(msg.getDescription().replace("%FIELD%", "field length"));1179 testCaseExecutionData.setPropertyResultMessage(msg);1180 testCaseExecutionData.setStopExecution(msg.isStopTest());1181 return testCaseExecutionData;1182 }1183 }1184 //we need to recalculate the result for the lib1185 serviceAnswer = dataLibService.getFromDataLib(testDataLib, testCaseCountryProperty, tCExecution, testCaseExecutionData);1186 testCaseExecutionData.setDataLib(testDataLib.getName());1187 res = serviceAnswer.getResultMessage();1188 result = (List<HashMap<String, String>>) serviceAnswer.getDataList(); //test data library returned by the service1189 if (result != null) {1190 // Keeping raw data to testCaseExecutionData object.1191 testCaseExecutionData.setDataLibRawData(result);1192 // Value of testCaseExecutionData object takes the master subdata entry "".1193 String value = (String) result.get(0).get("");1194 if (value == null) {1195 testCaseExecutionData.setValue(VALUE_NULL);1196 } else {1197 testCaseExecutionData.setValue(value);1198 // Converting HashMap to json.1199 String jsonText = "";1200 JSONArray jsonResult = null;1201 try {1202 jsonResult = dataLibService.convertToJSONObject(result);1203 jsonText = jsonResult.toString();1204 } catch (JSONException ex) {1205 java.util.logging.Logger.getLogger(PropertyService.class.getName()).log(Level.SEVERE, null, ex);1206 }1207 testCaseExecutionData.setJsonResult(jsonText);1208 }1209 //Record result in filessytem.1210 recorderService.recordTestDataLibProperty(tCExecution.getId(), testCaseCountryProperty.getProperty(), 1, result);1211 }1212 res.setDescription(res.getDescription().replace("%ENTRY%", testDataLib.getName()).replace("%ENTRYID%", String.valueOf(testDataLib.getTestDataLibID())));1213 } else {//no TestDataLib found was returned1214 //the library does not exist at all1215 AnswerList nameExistsAnswer = testDataLibService.readNameListByName(testCaseExecutionData.getValue1(), 1, false);1216 if (nameExistsAnswer.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()) && nameExistsAnswer.getTotalRows() > 0) {1217 //if the library name exists but was not available or does not exist for the current specification but exists for other countries/environments/systems1218 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMDATALIB_NOT_FOUND_ERROR);1219 res.setDescription(res.getDescription().replace("%ITEM%", testCaseExecutionData.getValue1()).1220 replace("%COUNTRY%", tCExecution.getCountryEnvironmentParameters().getCountry()).1221 replace("%ENVIRONMENT%", tCExecution.getCountryEnvironmentParameters().getEnvironment()).1222 replace("%SYSTEM%", tCExecution.getCountryEnvironmentParameters().getSystem()));1223 } else {1224 res = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_GETFROMDATALIB_NOT_EXIST_ERROR);1225 res.setDescription(res.getDescription().replace("%ITEM%", testCaseExecutionData.getValue1()));1226 }1227 }1228 res.setDescription(res.getDescription().replace("%VALUE1%", testCaseExecutionData.getValue1()));1229 testCaseExecutionData.setPropertyResultMessage(res);1230 return testCaseExecutionData;1231 }1232}...
Source:SQLService.java
...83 String environment = tCExecution.getEnvironmentData();84 countryEnvironmentDatabase = this.countryEnvironmentDatabaseService.convert(this.countryEnvironmentDatabaseService.readByKey(system, country, environment, db));85 if (countryEnvironmentDatabase == null) {86 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_DATABASENOTCONFIGURED);87 mes.setDescription(mes.getDescription().replace("%SYSTEM%", system).replace("%COUNTRY%", country).replace("%ENV%", environment).replace("%DATABASE%", db));88 } else {89 connectionName = countryEnvironmentDatabase.getConnectionPoolName();90 if (!(StringUtil.isNullOrEmpty(connectionName))) {91 try {92 Integer sqlTimeout = parameterService.getParameterIntegerByKey("cerberus_propertyexternalsql_timeout", system, 60);93 List<String> list = this.queryDatabase(connectionName, sql, testCaseProperties.getRowLimit(), sqlTimeout);94 if (list != null && !list.isEmpty()) {95 if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_STATIC)) {96 testCaseExecutionData.setValue(list.get(0));97 } else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_RANDOM)) {98 testCaseExecutionData.setValue(this.getRandomStringFromList(list));99 mes = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_SQL_RANDOM);100 } else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_RANDOMNEW)) {101 testCaseExecutionData.setValue(this.calculateNatureRandomNew(list, testCaseProperties.getProperty(), tCExecution));102 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NATURERANDOMNEW_NOTIMPLEMENTED);103 } else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_NOTINUSE)) {104 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NATURENOTINUSE_NOTIMPLEMENTED);105 }106 } else {107 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NODATA);108 }109 mes.setDescription(mes.getDescription().replace("%DATABASE%", db));110 mes.setDescription(mes.getDescription().replace("%SQL%", sql));111 mes.setDescription(mes.getDescription().replace("%JDBCPOOLNAME%", connectionName));112 testCaseExecutionData.setPropertyResultMessage(mes);113 } catch (CerberusEventException ex) {114 mes = ex.getMessageError();115 }116 } else {117 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_EMPTYJDBCPOOL);118 mes.setDescription(mes.getDescription().replace("%SYSTEM%", tCExecution.getApplicationObj().getSystem()));119 mes.setDescription(mes.getDescription().replace("%COUNTRY%", testCaseProperties.getCountry()));120 mes.setDescription(mes.getDescription().replace("%ENV%", tCExecution.getEnvironmentData()));121 mes.setDescription(mes.getDescription().replace("%DATABASE%", db));122 }123 }124 } catch (CerberusException ex) {125 mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_JDBCPOOLNOTCONFIGURED);126 mes.setDescription(mes.getDescription().replace("%SYSTEM%", tCExecution.getApplicationObj().getSystem()));127 mes.setDescription(mes.getDescription().replace("%COUNTRY%", testCaseProperties.getCountry()));128 mes.setDescription(mes.getDescription().replace("%ENV%", tCExecution.getEnvironmentData()));129 mes.setDescription(mes.getDescription().replace("%DATABASE%", db));130 }131 testCaseExecutionData.setPropertyResultMessage(mes);132 return testCaseExecutionData;133 }134 private String getRandomStringFromList(List<String> list) {135 Random random = new Random();136 if (!list.isEmpty()) {137 return list.get(random.nextInt(list.size()));138 }139 return null;140 }141 private String calculateNatureRandomNew(List<String> list, String propName, TestCaseExecution tCExecution) {142 //TODO clean code143 List<String> pastValues = this.testCaseExecutionDataService.getPastValuesOfProperty(tCExecution.getId(), propName, tCExecution.getTest(),144 tCExecution.getTestCase(), tCExecution.getCountryEnvParam().getBuild(), tCExecution.getEnvironmentData(),145 tCExecution.getCountry());146 if (!pastValues.isEmpty()) {147 for (String value : list) {148 if (!pastValues.contains(value)) {149 return value;150 }151 }152 } else {153 return list.get(0);154 }155 return null;156 }157 @Override158 public List<String> queryDatabase(String connectionName, String sql, int limit, int defaultTimeOut) throws CerberusEventException {159 List<String> list = null;160 boolean throwEx = false;161 int maxSecurityFetch = 100;162 int nbFetch = 0;163 MessageEvent msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_GENERIC);164 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));165 try(Connection connection = this.databaseSpring.connect(connectionName);166 PreparedStatement preStat = connection.prepareStatement(sql);) {167 preStat.setQueryTimeout(defaultTimeOut);168 if (limit > 0 && limit < maxSecurityFetch) {169 preStat.setMaxRows(limit);170 } else {171 preStat.setMaxRows(maxSecurityFetch);172 }173 //TODO add limit of select174 /*175 ORACLE => * WHERE ROWNUM <= limit *176 DB2 => * FETCH FIRST limit ROWS ONLY177 MYSQL => * LIMIT 0, limit178 SQL SERVER => SELECT TOP limit *179 SYBASE => SET ROWCOUNT limit *180 if (limit > 0) {181 sql.concat(Util.DbLimit(databaseType, limit));182 }183 */184 try {185 LOG.info("Sending to external Database (queryDatabase) : '" + connectionName + "' SQL '" + sql + "'");186 ResultSet resultSet = preStat.executeQuery();187 list = new ArrayList<String>();188 try {189 while ((resultSet.next()) && (nbFetch < maxSecurityFetch)) {190 list.add(resultSet.getString(1));191 nbFetch++;192 }193 } catch (SQLException exception) {194 LOG.warn("Unable to execute query : " + exception.toString());195 } finally {196 resultSet.close();197 }198 } catch (SQLTimeoutException exception) {199 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_TIMEOUT);200 msg.setDescription(msg.getDescription().replace("%SQL%", sql));201 msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(defaultTimeOut)));202 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));203 } catch (SQLException exception) {204 LOG.warn(exception.toString());205 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);206 msg.setDescription(msg.getDescription().replace("%SQL%", sql));207 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));208 throwEx = true;209 } finally {210 preStat.close();211 }212 } catch (SQLException exception) {213 LOG.warn(exception.toString());214 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);215 msg.setDescription(msg.getDescription().replace("%SQL%", sql));216 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));217 throwEx = true;218 } catch (NullPointerException exception) {219 //TODO check where exception occur220 LOG.warn(exception.toString());221 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_CANNOTACCESSJDBC);222 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));223 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));224 throwEx = true;225 } 226 if (throwEx) {227 throw new CerberusEventException(msg);228 }229 return list;230 }231 @Override232 public MessageEvent executeUpdate(String system, String country, String environment, String database, String sql) {233 String connectionName;234 CountryEnvironmentDatabase countryEnvironmentDatabase;235 MessageEvent msg = new MessageEvent(MessageEventEnum.ACTION_FAILED);236 try {237 countryEnvironmentDatabase = this.countryEnvironmentDatabaseService.convert(this.countryEnvironmentDatabaseService.readByKey(system,238 country, environment, database));239 if (countryEnvironmentDatabase != null) {240 connectionName = countryEnvironmentDatabase.getConnectionPoolName();241 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_GENERIC);242 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));243 if (!(StringUtil.isNullOrEmpty(connectionName))) {244 if (connectionName.equals("cerberus" + System.getProperty("org.cerberus.environment"))) {245 return new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_AGAINST_CERBERUS);246 } else {247 try(Connection connection = this.databaseSpring.connect(connectionName);248 PreparedStatement preStat = connection.prepareStatement(sql);) {249 Integer sqlTimeout = parameterService.getParameterIntegerByKey("cerberus_actionexecutesqlupdate_timeout", system, 60);250 preStat.setQueryTimeout(sqlTimeout);251 try {252 LOG.info("Sending to external Database (executeUpdate) : '" + connectionName + "' SQL '" + sql + "'");253 preStat.executeUpdate();254 int nbUpdate = preStat.getUpdateCount();255 msg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_EXECUTESQLUPDATE)256 .resolveDescription("NBROWS", String.valueOf(nbUpdate))257 .resolveDescription("JDBC", connectionName).resolveDescription("SQL", sql);258 } catch (SQLTimeoutException exception) {259 LOG.warn(exception.toString());260 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_TIMEOUT);261 msg.setDescription(msg.getDescription().replace("%SQL%", sql));262 msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(sqlTimeout)));263 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));264 } catch (SQLException exception) {265 LOG.warn(exception.toString());266 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_ERROR);267 msg.setDescription(msg.getDescription().replace("%SQL%", sql));268 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));269 } 270 } catch (SQLException exception) {271 LOG.warn(exception.toString());272 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_ERROR);273 msg.setDescription(msg.getDescription().replace("%SQL%", sql));274 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));275 } catch (NullPointerException exception) {276 LOG.warn(exception.toString());277 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_CANNOTACCESSJDBC);278 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));279 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));280 }281 }282 } else {283 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_DATABASECONFIGUREDBUTJDBCPOOLEMPTY);284 msg.setDescription(msg.getDescription().replace("%SYSTEM%", system));285 msg.setDescription(msg.getDescription().replace("%COUNTRY%", country));286 msg.setDescription(msg.getDescription().replace("%ENV%", environment));287 msg.setDescription(msg.getDescription().replace("%DATABASE%", database));288 }289 } else {290 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_DATABASENOTCONFIGURED);291 msg.setDescription(msg.getDescription().replace("%SYSTEM%", system));292 msg.setDescription(msg.getDescription().replace("%COUNTRY%", country));293 msg.setDescription(msg.getDescription().replace("%ENV%", environment));294 msg.setDescription(msg.getDescription().replace("%DATABASE%", database));295 }296 } catch (CerberusException ex) {297 LOG.error(ex.toString());298 }299 return msg;300 }301 @Override302 public MessageEvent executeCallableStatement(String system, String country, String environment, String database, String sql) {303 String connectionName;304 CountryEnvironmentDatabase countryEnvironmentDatabase;305 MessageEvent msg = new MessageEvent(MessageEventEnum.ACTION_FAILED);306 try {307 countryEnvironmentDatabase = this.countryEnvironmentDatabaseService.convert(this.countryEnvironmentDatabaseService.readByKey(system,308 country, environment, database));309 if (countryEnvironmentDatabase != null) {310 connectionName = countryEnvironmentDatabase.getConnectionPoolName();311 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_GENERIC);312 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));313 if (!(StringUtil.isNullOrEmpty(connectionName))) {314 if (connectionName.contains("cerberus")) {315 return new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_AGAINST_CERBERUS);316 } else {317 try(Connection connection = this.databaseSpring.connect(connectionName);318 CallableStatement cs = connection.prepareCall(sql);) {319 320 Integer sqlTimeout = parameterService.getParameterIntegerByKey("cerberus_actionexecutesqlstoredprocedure_timeout", system, 60);321 cs.setQueryTimeout(sqlTimeout);322 try {323 cs.execute();324 int nbUpdate = cs.getUpdateCount();325 msg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_EXECUTESQLSTOREDPROCEDURE)326 .resolveDescription("NBROWS", String.valueOf(nbUpdate))327 .resolveDescription("JDBC", connectionName).resolveDescription("SQL", sql);328 } catch (SQLTimeoutException exception) {329 LOG.warn(exception.toString());330 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_TIMEOUT);331 msg.setDescription(msg.getDescription().replace("%SQL%", sql));332 msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(sqlTimeout)));333 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));334 } catch (SQLException exception) {335 LOG.warn(exception.toString());336 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_ERROR);337 msg.setDescription(msg.getDescription().replace("%SQL%", sql));338 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));339 } finally {340 cs.close();341 }342 } catch (SQLException exception) {343 LOG.warn(exception.toString());344 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_ERROR);345 msg.setDescription(msg.getDescription().replace("%SQL%", sql));346 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));347 } catch (NullPointerException exception) {348 LOG.warn(exception.toString());349 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_CANNOTACCESSJDBC);350 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));351 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));352 }353 }354 } else {355 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_DATABASECONFIGUREDBUTJDBCPOOLEMPTY);356 msg.setDescription(msg.getDescription().replace("%SYSTEM%", system));357 msg.setDescription(msg.getDescription().replace("%COUNTRY%", country));358 msg.setDescription(msg.getDescription().replace("%ENV%", environment));359 msg.setDescription(msg.getDescription().replace("%DATABASE%", database));360 }361 } else {362 msg = new MessageEvent(MessageEventEnum.ACTION_FAILED_SQL_DATABASENOTCONFIGURED);363 msg.setDescription(msg.getDescription().replace("%SYSTEM%", system));364 msg.setDescription(msg.getDescription().replace("%COUNTRY%", country));365 msg.setDescription(msg.getDescription().replace("%ENV%", environment));366 msg.setDescription(msg.getDescription().replace("%DATABASE%", database));367 }368 } catch (CerberusException ex) {369 LOG.error(ex.toString());370 }371 return msg;372 }373 @Override374 public AnswerList queryDatabaseNColumns(String connectionName, String sql, int rowLimit, int defaultTimeOut, String system, HashMap<String, String> columnsToGet) {375 AnswerList listResult = new AnswerList();376 List<HashMap<String, String>> list;377 int maxSecurityFetch = parameterService.getParameterIntegerByKey("cerberus_testdatalib_fetchmax", system, 100);378 int maxFetch;379 if (rowLimit > 0 && rowLimit < maxSecurityFetch) {380 maxFetch = rowLimit;381 } else {382 maxFetch = maxSecurityFetch;383 }384 int nbFetch = 0;385 int nbColMatch = 0;386 String error_desc = "";387 MessageEvent msg = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS);388 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));389 390 try(Connection connection = this.databaseSpring.connect(connectionName);391 PreparedStatement preStat = connection.prepareStatement(sql);) {392 preStat.setQueryTimeout(defaultTimeOut);393 try {394 LOG.info("Sending to external Database (queryDatabaseNColumns) : '" + connectionName + "' SQL '" + sql + "'");395 ResultSet resultSet = preStat.executeQuery();396 int nrColumns = resultSet.getMetaData().getColumnCount();397 list = new ArrayList<HashMap<String, String>>();398 try {399 while ((resultSet.next()) && (nbFetch < maxFetch)) {400 nbColMatch = 0;401 HashMap<String, String> row = new HashMap<String, String>();402 for (Map.Entry<String, String> entry : columnsToGet.entrySet()) {403 String column = entry.getValue();404 String name = entry.getKey();405 try {406 String valueSQL = resultSet.getString(column);407 if (valueSQL == null) { // If data is null from the database, we convert it to the static string <NULL>. 408 valueSQL = "<NULL>";409 }410 row.put(name, valueSQL); // We put the result of the subData.411 nbColMatch++;412 } catch (SQLException exception) {413 if (nbFetch == 0) {414 if ("".equals(error_desc)) {415 error_desc = column;416 } else {417 error_desc = error_desc + ", " + column;418 }419 }420 }421 }422 list.add(row);423 nbFetch++;424 }425 listResult.setDataList(list);426 listResult.setTotalRows(list.size());427 if (list.isEmpty()) { // No data was fetched.428 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NODATA);429 } else if (nbColMatch == 0) { // None of the columns could be match.430 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NOCOLUMNMATCH);431 msg.setDescription(msg.getDescription().replace("%BADCOLUMNS%", error_desc));432 } else if (!("".equals(error_desc))) { // At least a column could not be parsed433 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_COLUMNNOTMATCHING);434 msg.setDescription(msg.getDescription().replace("%BADCOLUMNS%", error_desc));435 }436 } catch (SQLTimeoutException exception) {437 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_TIMEOUT);438 msg.setDescription(msg.getDescription().replace("%SQL%", sql));439 msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(defaultTimeOut)));440 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));441 } catch (SQLException exception) {442 LOG.warn("Unable to execute query : " + exception.toString());443 } finally {444 if (resultSet != null) {445 resultSet.close();446 }447 }448 } catch (SQLTimeoutException exception) {449 LOG.warn("TimeOut " + exception.toString());450 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_TIMEOUT);451 msg.setDescription(msg.getDescription().replace("%SQL%", sql));452 msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(defaultTimeOut)));453 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));454 } catch (SQLException exception) {455 LOG.warn(exception.toString());456 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);457 msg.setDescription(msg.getDescription().replace("%SQL%", sql));458 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));459 } 460 } catch (SQLException exception) {461 LOG.warn(exception.toString());462 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);463 msg.setDescription(msg.getDescription().replace("%SQL%", sql));464 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));465 } catch (NullPointerException exception) {466 //TODO check where exception occur467 LOG.warn(exception.toString());468 msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_CANNOTACCESSJDBC);469 msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));470 msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));471 }472 listResult.setResultMessage(msg);473 return listResult;474 }475}...
getDescription
Using AI Code Generation
1package org.cerberus.crud.entity;2import org.cerberus.crud.entity.TestCaseExecutionData;3import org.junit.Test;4public class TestCaseExecutionDataTest {5 public void testGetDescription() {6 TestCaseExecutionData instance = new TestCaseExecutionData();7 String expResult = "description";8 instance.setDescription(expResult);9 String result = instance.getDescription();10 assertEquals(expResult, result);11 }12}13package org.cerberus.crud.entity;14import org.cerberus.crud.entity.TestCaseExecutionData;15import org.junit.Test;16public class TestCaseExecutionDataTest {17 public void testGetTestCaseExecutionDataPK() {18 TestCaseExecutionData instance = new TestCaseExecutionData();19 TestCaseExecutionDataPK expResult = null;20 instance.setTestCaseExecutionDataPK(expResult);21 TestCaseExecutionDataPK result = instance.getTestCaseExecutionDataPK();22 assertEquals(expResult, result);23 }24}25package org.cerberus.crud.entity;26import org.cerberus.crud.entity.TestCaseExecutionData;27import org.junit.Test;28public class TestCaseExecutionDataTest {29 public void testGetTestData() {30 TestCaseExecutionData instance = new TestCaseExecutionData();31 String expResult = "testdata";32 instance.setTestData(expResult);33 String result = instance.getTestData();34 assertEquals(expResult, result);35 }36}37package org.cerberus.crud.entity;38import org.cerberus.crud.entity.TestCaseExecutionData;39import org.junit.Test;40public class TestCaseExecutionDataTest {41 public void testGetSubData() {42 TestCaseExecutionData instance = new TestCaseExecutionData();43 String expResult = "subdata";44 instance.setSubData(expResult);45 String result = instance.getSubData();46 assertEquals(expResult, result);47 }48}
getDescription
Using AI Code Generation
1public class Test {2 public static void main(String[] args) {3 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();4 testCaseExecutionData.setDescription("Description");5 System.out.println(testCaseExecutionData.getDescription());6 }7}8package org.cerberus.crud.entity;9public class TestCaseExecutionData {10 private String description;11 public String getDescription() {12 return description;13 }14 public void setDescription(String description) {15 this.description = description;16 }17}
getDescription
Using AI Code Generation
1public class 3 {2 public static void main(String[] args) {3 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();4 testCaseExecutionData.setDescription("test");5 String result = testCaseExecutionData.getDescription();6 System.out.println(result);7 }8}9public class 4 {10 public static void main(String[] args) {11 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();12 testCaseExecutionData.setDescription("test");13 String result = testCaseExecutionData.getDescription();14 System.out.println(result);15 }16}17public class 5 {18 public static void main(String[] args) {19 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();20 testCaseExecutionData.setDescription("test");21 String result = testCaseExecutionData.getDescription();22 System.out.println(result);23 }24}25public class 6 {26 public static void main(String[] args) {27 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();28 testCaseExecutionData.setDescription("test");29 String result = testCaseExecutionData.getDescription();30 System.out.println(result);31 }32}33public class 7 {34 public static void main(String[] args) {35 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();36 testCaseExecutionData.setDescription("test");37 String result = testCaseExecutionData.getDescription();38 System.out.println(result);39 }40}41public class 8 {42 public static void main(String[] args) {43 TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();44 testCaseExecutionData.setDescription("test");45 String result = testCaseExecutionData.getDescription();46 System.out.println(result);47 }48}
getDescription
Using AI Code Generation
1package org.cerberus.crud.entity;2public class TestCaseExecutionData {3 public String getDescription() {4 return "This is a description";5 }6}7package org.cerberus.crud.entity;8public class TestCaseExecutionData {9 public String getDescription() {10 return "This is a description";11 }12}13package org.cerberus.crud.entity;14public class TestCaseExecutionData {15 public String getDescription() {16 return "This is a description";17 }18}19package org.cerberus.crud.entity;20public class TestCaseExecutionData {21 public String getDescription() {22 return "This is a description";23 }24}25package org.cerberus.crud.entity;26public class TestCaseExecutionData {27 public String getDescription() {28 return "This is a description";29 }30}31package org.cerberus.crud.entity;32public class TestCaseExecutionData {33 public String getDescription() {34 return "This is a description";35 }36}37package org.cerberus.crud.entity;38public class TestCaseExecutionData {39 public String getDescription() {40 return "This is a description";41 }42}43package org.cerberus.crud.entity;44public class TestCaseExecutionData {45 public String getDescription() {46 return "This is a description";47 }48}49package org.cerberus.crud.entity;50public class TestCaseExecutionData {
getDescription
Using AI Code Generation
1package org.cerberus.crud.entity;2public class TestCaseExecutionData {3 private String test;4 private String testCase;5 private String description;6 private String descriptionTest;7 private String descriptionTestCase;8 private String descriptionTestcaseExecutionData;9 private String descriptionTestcaseExecutionData2;10 private String descriptionTestcaseExecutionData3;11 private String descriptionTestcaseExecutionData4;12 private String descriptionTestcaseExecutionData5;13 private String descriptionTestcaseExecutionData6;14 private String descriptionTestcaseExecutionData7;15 private String descriptionTestcaseExecutionData8;16 private String descriptionTestcaseExecutionData9;17 private String descriptionTestcaseExecutionData10;18 private String descriptionTestcaseExecutionData11;19 private String descriptionTestcaseExecutionData12;20 private String descriptionTestcaseExecutionData13;21 private String descriptionTestcaseExecutionData14;22 private String descriptionTestcaseExecutionData15;23 private String descriptionTestcaseExecutionData16;24 private String descriptionTestcaseExecutionData17;25 private String descriptionTestcaseExecutionData18;26 private String descriptionTestcaseExecutionData19;27 private String descriptionTestcaseExecutionData20;28 private String descriptionTestcaseExecutionData21;29 private String descriptionTestcaseExecutionData22;30 private String descriptionTestcaseExecutionData23;31 private String descriptionTestcaseExecutionData24;32 private String descriptionTestcaseExecutionData25;33 private String descriptionTestcaseExecutionData26;34 private String descriptionTestcaseExecutionData27;35 private String descriptionTestcaseExecutionData28;36 private String descriptionTestcaseExecutionData29;37 private String descriptionTestcaseExecutionData30;38 private String descriptionTestcaseExecutionData31;39 private String descriptionTestcaseExecutionData32;40 private String descriptionTestcaseExecutionData33;41 private String descriptionTestcaseExecutionData34;42 private String descriptionTestcaseExecutionData35;43 private String descriptionTestcaseExecutionData36;44 private String descriptionTestcaseExecutionData37;45 private String descriptionTestcaseExecutionData38;46 private String descriptionTestcaseExecutionData39;47 private String descriptionTestcaseExecutionData40;48 private String descriptionTestcaseExecutionData41;49 private String descriptionTestcaseExecutionData42;50 private String descriptionTestcaseExecutionData43;51 private String descriptionTestcaseExecutionData44;52 private String descriptionTestcaseExecutionData45;
getDescription
Using AI Code Generation
1TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();2testCaseExecutionData.setDescription("Description of TestCaseExecutionData");3TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();4testCaseExecutionData.setDescription("Description of TestCaseExecutionData");5TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();6testCaseExecutionData.setDescription("Description of TestCaseExecutionData");7TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();8testCaseExecutionData.setDescription("Description of TestCaseExecutionData");9TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();10testCaseExecutionData.setDescription("Description of TestCaseExecutionData");11TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();12testCaseExecutionData.setDescription("Description of TestCaseExecutionData");13TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();14testCaseExecutionData.setDescription("Description of TestCaseExecutionData");15TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();16testCaseExecutionData.setDescription("Description of TestCaseExecutionData");17TestCaseExecutionData testCaseExecutionData = new TestCaseExecutionData();18testCaseExecutionData.setDescription("
getDescription
Using AI Code Generation
1package org.cerberus.crud.entity;2import org.cerberus.crud.entity.TestCaseExecutionData;3public class TestCaseExecutionData {4 private String description;5 public String getDescription() {6 return description;7 }8}9package org.cerberus.crud.entity;10import org.cerberus.crud.entity.TestCaseExecutionData;11public class TestCaseExecutionData {12 private String description;13 public String getDescription() {14 return description;15 }16}17package org.cerberus.crud.entity;18import org.cerberus.crud.entity.TestCaseExecutionData;19public class TestCaseExecutionData {20 private String description;21 public String getDescription() {22 return description;23 }24}25package org.cerberus.crud.entity;26import org.cerberus.crud.entity.TestCaseExecutionData;27public class TestCaseExecutionData {28 private String description;29 public String getDescription() {30 return description;31 }32}33package org.cerberus.crud.entity;34import org.cerberus.crud.entity.TestCaseExecutionData;35public class TestCaseExecutionData {36 private String description;37 public String getDescription() {38 return description;39 }40}41package org.cerberus.crud.entity;42import org.cerberus.crud.entity.TestCaseExecutionData;43public class TestCaseExecutionData {44 private String description;45 public String getDescription() {46 return description;47 }48}49package org.cerberus.crud.entity;50import org.cerberus.crud.entity.TestCaseExecutionData;51public class TestCaseExecutionData {52 private String description;53 public String getDescription() {54 return description;55 }56}57package org.cerberus.crud.entity;58import org.cerberus.crud.entity.TestCaseExecutionData;59public class TestCaseExecutionData {60 private String description;61 public String getDescription() {62 return description;63 }64}65package org.cerberus.crud.entity;66import org.cerberus.crud.entity.TestCaseExecutionData;67public class TestCaseExecutionData {68 private String description;69 public String getDescription() {
getDescription
Using AI Code Generation
1package org.cerberus.crud.service;2import org.cerberus.crud.entity.TestCaseExecutionData;3import org.cerberus.crud.factory.IFactoryTestCaseExecutionData;4import org.cerberus.crud.service.impl.TestCaseExecutionDataService;5import org.cerberus.crud.service.impl.TestCaseExecutionInQueueService;6import org.cerberus.engine.entity.MessageEvent;7import org.cerberus.engine.entity.MessageGeneral;8import org.cerberus.exception.CerberusException;9import org.cerberus.log.MyLogger;10import org.cerberus.util.answer.AnswerList;11import org.springframework.beans.factory.annotation.Autowired;12import org.springframework.stereotype.Service;13import java.util.List;14public class TestCaseExecutionDataService implements ITestCaseExecutionDataService {15 private IFactoryTestCaseExecutionData factoryTestCaseExecutionData;16 private ITestCaseExecutionInQueueService testCaseExecutionInQueueService;17 private ITestCaseExecutionService testCaseExecutionService;18 private ITestCaseExecutionFileService testCaseExecutionFileService;19 private ITestCaseExecutionHttpStatService testCaseExecutionHttpStatService;20 private ITestCaseExecutionHttpService testCaseExecutionHttpService;21 private ITestCaseExecutionHttpStatService testCaseExecutionHttpStatService;22 private ITestCaseExecutionHttpService testCaseExecutionHttpService;23 private ITestCaseExecutionHttpStatService testCaseExecutionHttpStatService;24 private ITestCaseExecutionHttpService testCaseExecutionHttpService;25 private ITestCaseExecutionHttpStatService testCaseExecutionHttpStatService;26 private ITestCaseExecutionHttpService testCaseExecutionHttpService;27 public TestCaseExecutionData findTestCaseExecutionDataByKey(long id) throws CerberusException {28 return testCaseExecutionDataService.findTestCaseExecutionDataByKey(id);29 }30 public List<TestCaseExecutionData> findTestCaseExecutionDataByTestTestCase(String test, String testCase) throws CerberusException {31 return testCaseExecutionDataService.findTestCaseExecutionDataByTestTestCase(test, testCase);32 }
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!