Search in sources :

Example 6 with ITestCaseExecutionService

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());
    }
}
Also used : TestCaseExecution(org.cerberus.crud.entity.TestCaseExecution) CerberusException(org.cerberus.exception.CerberusException) PolicyFactory(org.owasp.html.PolicyFactory) JSONException(org.json.JSONException) IParameterService(org.cerberus.crud.service.IParameterService) ITestCaseExecutionService(org.cerberus.crud.service.ITestCaseExecutionService) Timestamp(java.sql.Timestamp) ApplicationContext(org.springframework.context.ApplicationContext) JSONObject(org.json.JSONObject) ILogEventService(org.cerberus.crud.service.ILogEventService) PrintWriter(java.io.PrintWriter)

Example 7 with ITestCaseExecutionService

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());
    }
}
Also used : TestCaseExecution(org.cerberus.crud.entity.TestCaseExecution) CerberusException(org.cerberus.exception.CerberusException) PolicyFactory(org.owasp.html.PolicyFactory) JSONException(org.json.JSONException) IParameterService(org.cerberus.crud.service.IParameterService) ITestCaseExecutionService(org.cerberus.crud.service.ITestCaseExecutionService) Timestamp(java.sql.Timestamp) ApplicationContext(org.springframework.context.ApplicationContext) JSONObject(org.json.JSONObject) ILogEventService(org.cerberus.crud.service.ILogEventService) ParseException(java.text.ParseException)

Aggregations

ITestCaseExecutionService (org.cerberus.crud.service.ITestCaseExecutionService)7 TestCaseExecution (org.cerberus.crud.entity.TestCaseExecution)6 CerberusException (org.cerberus.exception.CerberusException)5 ApplicationContext (org.springframework.context.ApplicationContext)5 PrintWriter (java.io.PrintWriter)4 ILogEventService (org.cerberus.crud.service.ILogEventService)4 Timestamp (java.sql.Timestamp)3 IParameterService (org.cerberus.crud.service.IParameterService)3 PolicyFactory (org.owasp.html.PolicyFactory)3 IOException (java.io.IOException)2 ServletException (javax.servlet.ServletException)2 TestCaseExecutionQueue (org.cerberus.crud.entity.TestCaseExecutionQueue)2 ITagService (org.cerberus.crud.service.ITagService)2 JSONException (org.json.JSONException)2 JSONObject (org.json.JSONObject)2 DateFormat (java.text.DateFormat)1 ParseException (java.text.ParseException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 UUID (java.util.UUID)1