use of org.cerberus.crud.entity.TestCaseExecution in project cerberus-source by cerberustesting.
the class TestCaseExecutionDAO method readLastByCriteria.
@Override
public AnswerItem readLastByCriteria(String application) {
AnswerItem ans = new AnswerItem();
TestCaseExecution result = null;
MessageEvent msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", ""));
StringBuilder searchSQL = new StringBuilder();
StringBuilder query = new StringBuilder();
// SQL_CALC_FOUND_ROWS allows to retrieve the total number of columns by disrearding the limit clauses that
// were applied -- used for pagination p
query.append("select * from testcaseexecution exe ");
searchSQL.append(" where 1=1 ");
if (!StringUtil.isNullOrEmpty(application)) {
searchSQL.append(" and (`application` = ? )");
}
query.append(searchSQL);
query.append(" order by id DESC limit 1 ");
// Debug message on SQL.
if (LOG.isDebugEnabled()) {
LOG.debug("SQL : " + query);
}
Connection connection = this.databaseSpring.connect();
try {
PreparedStatement preStat = connection.prepareStatement(query.toString());
try {
int i = 1;
if (!StringUtil.isNullOrEmpty(application)) {
preStat.setString(i++, application);
}
ResultSet resultSet = preStat.executeQuery();
try {
if (resultSet.first()) {
result = loadFromResultSet(resultSet);
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_OK);
msg.setDescription(msg.getDescription().replace("%ITEM%", OBJECT_NAME).replace("%OPERATION%", "SELECT"));
ans.setItem(result);
} else {
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_NO_DATA_FOUND);
}
} catch (SQLException exception) {
LOG.error("Unable to execute query : " + exception.toString());
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", exception.toString()));
} finally {
resultSet.close();
}
} catch (SQLException exception) {
LOG.error("Unable to execute query : " + exception.toString());
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", exception.toString()));
} finally {
preStat.close();
}
} catch (SQLException exception) {
LOG.error("Unable to execute query : " + exception.toString());
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", exception.toString()));
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException exception) {
LOG.warn("Unable to close connection : " + exception.toString());
}
}
// sets the message
ans.setResultMessage(msg);
return ans;
}
use of org.cerberus.crud.entity.TestCaseExecution in project cerberus-source by cerberustesting.
the class TestCaseExecutionQueueService method convertToTestCaseExecution.
@Override
public TestCaseExecution convertToTestCaseExecution(TestCaseExecutionQueue testCaseExecutionInQueue) {
String test = testCaseExecutionInQueue.getTest();
String testCase = testCaseExecutionInQueue.getTestCase();
String environment = testCaseExecutionInQueue.getEnvironment();
String country = testCaseExecutionInQueue.getCountry();
String browser = testCaseExecutionInQueue.getBrowser();
String robotDecli = testCaseExecutionInQueue.getRobot();
if (StringUtil.isNullOrEmpty(robotDecli)) {
if (!StringUtil.isNullOrEmpty(browser)) {
robotDecli = browser;
} else {
robotDecli = "";
}
}
String version = testCaseExecutionInQueue.getBrowserVersion();
String platform = testCaseExecutionInQueue.getPlatform();
long start = testCaseExecutionInQueue.getRequestDate() != null ? testCaseExecutionInQueue.getRequestDate().getTime() : 0;
long end = 0;
String controlStatus = TestCaseExecution.CONTROLSTATUS_QU;
String controlMessage = "Queued with State : " + testCaseExecutionInQueue.getState().name() + " - " + testCaseExecutionInQueue.getComment();
Application applicationObj = testCaseExecutionInQueue.getApplicationObj();
String application = testCaseExecutionInQueue.getApplicationObj() != null ? testCaseExecutionInQueue.getApplicationObj().getApplication() : "";
String ip = testCaseExecutionInQueue.getRobotIP();
String port = testCaseExecutionInQueue.getRobotPort();
String tag = testCaseExecutionInQueue.getTag();
int verbose = testCaseExecutionInQueue.getVerbose();
int screenshot = testCaseExecutionInQueue.getScreenshot();
int pageSource = testCaseExecutionInQueue.getPageSource();
int seleniumLog = testCaseExecutionInQueue.getSeleniumLog();
int retry = testCaseExecutionInQueue.getRetries();
boolean synchroneous = true;
String timeout = testCaseExecutionInQueue.getTimeout();
String outputFormat = "";
TestCase tCase = testCaseExecutionInQueue.getTestCaseObj();
boolean manualURL = (testCaseExecutionInQueue.getManualURL() >= 1);
String manualExecution = testCaseExecutionInQueue.getManualExecution();
String myHost = testCaseExecutionInQueue.getManualHost();
String myContextRoot = testCaseExecutionInQueue.getManualContextRoot();
String myLoginRelativeURL = testCaseExecutionInQueue.getManualLoginRelativeURL();
String myEnvData = testCaseExecutionInQueue.getManualEnvData();
String seleniumIP = testCaseExecutionInQueue.getRobotIP();
String seleniumPort = testCaseExecutionInQueue.getRobotPort();
String description = "";
if ((testCaseExecutionInQueue.getTestCaseObj() != null) && (testCaseExecutionInQueue.getTestCaseObj().getDescription() != null)) {
description = testCaseExecutionInQueue.getTestCaseObj().getDescription();
}
TestCaseExecution result = factoryTestCaseExecution.create(0, test, testCase, description, null, null, environment, country, browser, version, platform, browser, start, end, controlStatus, controlMessage, application, applicationObj, ip, "", port, tag, verbose, screenshot, pageSource, seleniumLog, synchroneous, timeout, outputFormat, "", "", tCase, null, null, manualURL, myHost, myContextRoot, myLoginRelativeURL, myEnvData, seleniumIP, seleniumPort, null, null, null, retry, "", null, "", "", "", "", "", manualExecution, "", 0, "", robotDecli);
result.setQueueID(testCaseExecutionInQueue.getId());
result.setQueueState(testCaseExecutionInQueue.getState().name());
result.setId(testCaseExecutionInQueue.getExeId());
return result;
}
use of org.cerberus.crud.entity.TestCaseExecution in project cerberus-source by cerberustesting.
the class GetReportData method hashExecution.
// </editor-fold>
private List<TestCaseExecution> hashExecution(List<TestCaseExecution> testCaseExecutions, List<TestCaseExecutionQueue> testCaseExecutionsInQueue) throws ParseException {
Map<String, TestCaseExecution> testCaseExecutionsList = new LinkedHashMap();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
for (TestCaseExecution testCaseExecution : testCaseExecutions) {
String key = testCaseExecution.getBrowser() + "_" + testCaseExecution.getCountry() + "_" + testCaseExecution.getEnvironment() + "_" + testCaseExecution.getTest() + "_" + testCaseExecution.getTestCase();
testCaseExecutionsList.put(key, testCaseExecution);
}
for (TestCaseExecutionQueue testCaseExecutionInQueue : testCaseExecutionsInQueue) {
TestCaseExecution testCaseExecution = testCaseExecutionInQueueService.convertToTestCaseExecution(testCaseExecutionInQueue);
String key = testCaseExecution.getBrowser() + "_" + testCaseExecution.getCountry() + "_" + testCaseExecution.getEnvironment() + "_" + testCaseExecution.getTest() + "_" + testCaseExecution.getTestCase();
if ((testCaseExecutionsList.containsKey(key) && testCaseExecutionsList.get(key).getStart() < testCaseExecution.getStart()) || !testCaseExecutionsList.containsKey(key)) {
testCaseExecutionsList.put(key, testCaseExecution);
}
}
List<TestCaseExecution> result = new ArrayList<TestCaseExecution>(testCaseExecutionsList.values());
return result;
}
use of org.cerberus.crud.entity.TestCaseExecution in project cerberus-source by cerberustesting.
the class ResultCIV001 method processRequest.
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS);
response.setContentType("application/json");
response.setCharacterEncoding("utf8");
// Calling Servlet Transversal Util.
ServletUtil.servletStart(request);
/**
* Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(ILogEventService.class);
logEventService.createForPublicCalls("/ResultCIV001", "CALL", "ResultCIV001 called : " + request.getRequestURL(), request);
try {
JSONObject jsonResponse = new JSONObject();
String tag = policy.sanitize(request.getParameter("tag"));
String helpMessage = "This servlet is used to provide a json object with various execution counters as well as a global OK or KO status based on the number and status of the execution done on a specific tag. " + "The number of executions are ponderated by parameters by priority from cerberus_ci_okcoefprio1 to cerberus_ci_okcoefprio4. " + "Formula used is the following : " + "Nb Exe Prio 1 testcases * cerberus_ci_okcoefprio1 + Nb Exe Prio 2 testcases * cerberus_ci_okcoefprio2 + " + "Nb Exe Prio 3 testcases * cerberus_ci_okcoefprio3 + Nb Exe Prio 4 testcases * cerberus_ci_okcoefprio4." + "If no executions are found, the result is KO." + "With at least 1 execution, if result is < 1 then global servlet result is OK. If not, it is KO." + "All execution needs to have a status equal to KO, FA, NA or PE." + "Parameter list :" + "- tag [mandatory] : Execution Tag to filter the test cases execution. [" + tag + "]";
boolean error = false;
String error_message = "";
// Checking the parameter validity. Tag is a mandatory parameter
if (StringUtils.isBlank(tag)) {
error_message = "Error - Parameter tag is mandatory.";
error = true;
}
if (!error) {
ITestCaseExecutionService MyTestExecutionService = appContext.getBean(TestCaseExecutionService.class);
List<TestCaseExecution> myList;
int nbok = 0;
int nbko = 0;
int nbfa = 0;
int nbpe = 0;
int nbna = 0;
int nbca = 0;
int nbtotal = 0;
int nbkop1 = 0;
int nbkop2 = 0;
int nbkop3 = 0;
int nbkop4 = 0;
String exeStart = "";
long longStart = 0;
String exeEnd = "";
long longEnd = 0;
try {
myList = MyTestExecutionService.convert(MyTestExecutionService.readByTag(tag));
for (TestCaseExecution curExe : myList) {
if (longStart == 0) {
longStart = curExe.getStart();
}
if (curExe.getStart() < longStart) {
longStart = curExe.getStart();
}
if (longEnd == 0) {
longEnd = curExe.getEnd();
}
if (curExe.getEnd() > longEnd) {
longEnd = curExe.getEnd();
}
nbtotal++;
switch(curExe.getControlStatus()) {
case TestCaseExecution.CONTROLSTATUS_KO:
nbko++;
break;
case TestCaseExecution.CONTROLSTATUS_OK:
nbok++;
break;
case TestCaseExecution.CONTROLSTATUS_FA:
nbfa++;
break;
case TestCaseExecution.CONTROLSTATUS_NA:
nbna++;
break;
case TestCaseExecution.CONTROLSTATUS_CA:
nbca++;
break;
case TestCaseExecution.CONTROLSTATUS_PE:
nbpe++;
break;
}
if (!(curExe.getControlStatus().equals("OK"))) {
switch(curExe.getTestCaseObj().getPriority()) {
case 1:
nbkop1++;
break;
case 2:
nbkop2++;
break;
case 3:
nbkop3++;
break;
case 4:
nbkop4++;
break;
}
}
}
} catch (CerberusException ex) {
LOG.warn(ex);
}
IParameterService parameterService = appContext.getBean(IParameterService.class);
float pond1 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio1", "", 0);
float pond2 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio2", "", 0);
float pond3 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio3", "", 0);
float pond4 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio4", "", 0);
String result;
float resultCal = (nbkop1 * pond1) + (nbkop2 * pond2) + (nbkop3 * pond3) + (nbkop4 * pond4);
if ((resultCal < 1) && (nbtotal > 0)) {
result = "OK";
} else {
result = "KO";
}
jsonResponse.put("messageType", "OK");
jsonResponse.put("message", "CI result calculated with success.");
jsonResponse.put("CI_OK_prio1", pond1);
jsonResponse.put("CI_OK_prio2", pond2);
jsonResponse.put("CI_OK_prio3", pond3);
jsonResponse.put("CI_OK_prio4", pond4);
jsonResponse.put("CI_finalResult", resultCal);
jsonResponse.put("NonOK_prio1_nbOfExecution", nbkop1);
jsonResponse.put("NonOK_prio2_nbOfExecution", nbkop2);
jsonResponse.put("NonOK_prio3_nbOfExecution", nbkop3);
jsonResponse.put("NonOK_prio4_nbOfExecution", nbkop4);
jsonResponse.put("status_OK_nbOfExecution", nbok);
jsonResponse.put("status_KO_nbOfExecution", nbko);
jsonResponse.put("status_FA_nbOfExecution", nbfa);
jsonResponse.put("status_PE_nbOfExecution", nbpe);
jsonResponse.put("status_NA_nbOfExecution", nbna);
jsonResponse.put("status_CA_nbOfExecution", nbca);
jsonResponse.put("TOTAL_nbOfExecution", nbtotal);
jsonResponse.put("result", result);
jsonResponse.put("ExecutionStart", String.valueOf(new Timestamp(longStart)));
jsonResponse.put("ExecutionEnd", String.valueOf(new Timestamp(longEnd)));
response.getWriter().print(jsonResponse.toString());
// Log the result with calculation detail.
logEventService.createForPublicCalls("/ResultCIV001", "CALLRESULT", "ResultCIV001 calculated with result [" + result + "] : " + nbkop1 + "*" + pond1 + " + " + nbkop2 + "*" + pond2 + " + " + nbkop3 + "*" + pond3 + " + " + nbkop4 + "*" + pond4 + " = " + resultCal, request);
} else {
jsonResponse.put("messageType", "KO");
jsonResponse.put("message", error_message);
jsonResponse.put("helpMessage", helpMessage);
response.getWriter().print(jsonResponse.toString());
}
} catch (JSONException e) {
LOG.warn(e);
// returns a default error message with the json format that is able to be parsed by the client-side
response.getWriter().print(AnswerUtil.createGenericErrorAnswer());
}
}
use of org.cerberus.crud.entity.TestCaseExecution in project cerberus-source by cerberustesting.
the class ResultCIV002 method processRequest.
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS);
// Calling Servlet Transversal Util.
ServletUtil.servletStart(request);
/**
* Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(ILogEventService.class);
logEventService.createForPublicCalls("/ResultCIV002", "CALL", "ResultCIV002 called : " + request.getRequestURL(), request);
try {
JSONObject jsonResponse = new JSONObject();
String tag = policy.sanitize(request.getParameter("tag"));
String outputFormat = policy.sanitize(request.getParameter("outputFormat"));
String helpMessage = "This servlet is used to provide various execution counters as well as a global OK or KO status based on the number and status of the execution done on a specific tag. " + "The number of executions are ponderated by parameters by priority from cerberus_ci_okcoefprio1 to cerberus_ci_okcoefprio4. " + "Formula used is the following : " + "Nb Exe Prio 1 testcases * cerberus_ci_okcoefprio1 + Nb Exe Prio 2 testcases * cerberus_ci_okcoefprio2 + " + "Nb Exe Prio 3 testcases * cerberus_ci_okcoefprio3 + Nb Exe Prio 4 testcases * cerberus_ci_okcoefprio4." + "If no executions are found, the result is KO." + "With at least 1 execution, if result is < 1 then global servlet result is OK. If not, it is KO." + "All execution needs to have a status equal to KO, FA, NA, PE or NE." + "If at least 1 PE or 1 NE if found, global status will be PE" + "Output format is json by default, or SVG if outputFormat=svg is defined" + "Parameter list :" + "- tag [mandatory] : Execution Tag to filter the test cases execution. [" + tag + "]" + "- outputFormat : ['json', 'svg']. Output format of the result. [" + outputFormat + "]";
boolean error = false;
String error_message = "";
// Checking the parameter validity. Tag is a mandatory parameter
if (StringUtils.isBlank(tag)) {
error_message = "Error - Parameter tag is mandatory.";
error = true;
}
// Checking the parameter validity. outputFormat can be empty, or equals to json or svg
if (!StringUtils.isBlank(outputFormat) && !outputFormat.equals("json") && !outputFormat.equals("svg")) {
error_message = "Error - Value of parameter outputFormat is not recognized.";
error = true;
}
if (!error) {
ITestCaseExecutionService testExecutionService = appContext.getBean(TestCaseExecutionService.class);
List<TestCaseExecution> myList;
int nbok = 0;
int nbko = 0;
int nbfa = 0;
int nbpe = 0;
int nbne = 0;
int nbna = 0;
int nbca = 0;
int nbqu = 0;
int nbtotal = 0;
int nbkop1 = 0;
int nbkop2 = 0;
int nbkop3 = 0;
int nbkop4 = 0;
long longStart = 0;
long longEnd = 0;
try {
myList = testExecutionService.readLastExecutionAndExecutionInQueueByTag(tag);
for (TestCaseExecution curExe : myList) {
if (longStart == 0) {
longStart = curExe.getStart();
}
if (curExe.getStart() < longStart) {
longStart = curExe.getStart();
}
if (longEnd == 0) {
longEnd = curExe.getEnd();
}
if (curExe.getEnd() > longEnd) {
longEnd = curExe.getEnd();
}
nbtotal++;
switch(curExe.getControlStatus()) {
case TestCaseExecution.CONTROLSTATUS_KO:
nbko++;
break;
case TestCaseExecution.CONTROLSTATUS_OK:
nbok++;
break;
case TestCaseExecution.CONTROLSTATUS_FA:
nbfa++;
break;
case TestCaseExecution.CONTROLSTATUS_NA:
nbna++;
break;
case TestCaseExecution.CONTROLSTATUS_CA:
nbca++;
break;
case TestCaseExecution.CONTROLSTATUS_PE:
nbpe++;
break;
case TestCaseExecution.CONTROLSTATUS_NE:
nbne++;
break;
case TestCaseExecution.CONTROLSTATUS_QU:
nbqu++;
break;
}
if (!curExe.getControlStatus().equals("OK") && !curExe.getControlStatus().equals("NE") && !curExe.getControlStatus().equals("PE") && !curExe.getControlStatus().equals("QU")) {
switch(curExe.getTestCaseObj().getPriority()) {
case 1:
nbkop1++;
break;
case 2:
nbkop2++;
break;
case 3:
nbkop3++;
break;
case 4:
nbkop4++;
break;
}
}
}
} catch (CerberusException ex) {
LOG.warn(ex);
} catch (ParseException ex) {
LOG.warn(ex);
}
IParameterService parameterService = appContext.getBean(IParameterService.class);
float pond1 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio1", "", 0);
float pond2 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio2", "", 0);
float pond3 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio3", "", 0);
float pond4 = parameterService.getParameterFloatByKey("cerberus_ci_okcoefprio4", "", 0);
String result;
float resultCal = (nbkop1 * pond1) + (nbkop2 * pond2) + (nbkop3 * pond3) + (nbkop4 * pond4);
if ((nbtotal > 0) && nbqu + nbne + nbpe > 0) {
result = "PE";
} else if ((resultCal < 1) && (nbtotal > 0)) {
result = "OK";
} else {
result = "KO";
}
jsonResponse.put("messageType", "OK");
jsonResponse.put("message", "CI result calculated with success.");
jsonResponse.put("tag", tag);
jsonResponse.put("CI_OK_prio1", pond1);
jsonResponse.put("CI_OK_prio2", pond2);
jsonResponse.put("CI_OK_prio3", pond3);
jsonResponse.put("CI_OK_prio4", pond4);
jsonResponse.put("CI_finalResult", resultCal);
jsonResponse.put("NonOK_prio1_nbOfExecution", nbkop1);
jsonResponse.put("NonOK_prio2_nbOfExecution", nbkop2);
jsonResponse.put("NonOK_prio3_nbOfExecution", nbkop3);
jsonResponse.put("NonOK_prio4_nbOfExecution", nbkop4);
jsonResponse.put("status_OK_nbOfExecution", nbok);
jsonResponse.put("status_KO_nbOfExecution", nbko);
jsonResponse.put("status_FA_nbOfExecution", nbfa);
jsonResponse.put("status_PE_nbOfExecution", nbpe);
jsonResponse.put("status_NA_nbOfExecution", nbna);
jsonResponse.put("status_CA_nbOfExecution", nbca);
jsonResponse.put("status_NE_nbOfExecution", nbne);
jsonResponse.put("status_QU_nbOfExecution", nbqu);
jsonResponse.put("TOTAL_nbOfExecution", nbtotal);
jsonResponse.put("result", result);
jsonResponse.put("ExecutionStart", String.valueOf(new Timestamp(longStart)));
jsonResponse.put("ExecutionEnd", String.valueOf(new Timestamp(longEnd)));
generateResponse(response, outputFormat, jsonResponse, false);
// Log the result with calculation detail.
logEventService.createForPublicCalls("/ResultCIV002", "CALLRESULT", "ResultCIV002 calculated with result [" + result + "] : " + nbkop1 + "*" + pond1 + " + " + nbkop2 + "*" + pond2 + " + " + nbkop3 + "*" + pond3 + " + " + nbkop4 + "*" + pond4 + " = " + resultCal, request);
} else {
jsonResponse.put("messageType", "KO");
jsonResponse.put("message", error_message);
jsonResponse.put("helpMessage", helpMessage);
generateResponse(response, outputFormat, jsonResponse, true);
}
} catch (JSONException e) {
LOG.warn(e);
// returns a default error message with the json format that is able to be parsed by the client-side
response.getWriter().print(AnswerUtil.createGenericErrorAnswer());
}
}
Aggregations