use of org.cerberus.crud.service.ITestCaseExecutionService 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.service.ITestCaseExecutionService 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