use of org.cerberus.crud.entity.TestCaseExecutionQueue in project cerberus-source by cerberustesting.
the class ReadTestCaseExecution method readExecutionByTagList.
private List<TestCaseExecution> readExecutionByTagList(ApplicationContext appContext, String Tag, int startPosition, int length, String sortInformation, String searchParameter, Map<String, List<String>> individualSearch) throws ParseException, CerberusException {
AnswerList<TestCaseExecution> testCaseExecution;
AnswerList<TestCaseExecutionQueue> testCaseExecutionInQueue;
ITestCaseExecutionService testCaseExecService = appContext.getBean(ITestCaseExecutionService.class);
ITestCaseExecutionQueueService testCaseExecutionInQueueService = appContext.getBean(ITestCaseExecutionQueueService.class);
/**
* Get list of execution by tag, env, country, browser
*/
testCaseExecution = testCaseExecService.readByTagByCriteria(Tag, startPosition, length, sortInformation, searchParameter, individualSearch);
List<TestCaseExecution> testCaseExecutions = testCaseExecution.getDataList();
/**
* Get list of Execution in Queue by Tag
*/
testCaseExecutionInQueue = testCaseExecutionInQueueService.readByTagByCriteria(Tag, startPosition, length, sortInformation, searchParameter, individualSearch);
List<TestCaseExecutionQueue> testCaseExecutionsInQueue = testCaseExecutionInQueue.getDataList();
/**
* Feed hash map with execution from the two list (to get only one by
* test,testcase,country,env,browser)
*/
testCaseExecutions = hashExecution(testCaseExecutions, testCaseExecutionsInQueue);
return testCaseExecutions;
}
use of org.cerberus.crud.entity.TestCaseExecutionQueue in project cerberus-source by cerberustesting.
the class ReadTestCaseExecutionQueue method findExecutionQueueByKeyTech.
private AnswerItem findExecutionQueueByKeyTech(Long queueid, ApplicationContext appContext, boolean userHasPermissions) throws JSONException, CerberusException {
AnswerItem item = new AnswerItem();
JSONObject object = new JSONObject();
ITestCaseExecutionQueueService queueService = appContext.getBean(ITestCaseExecutionQueueService.class);
// finds the project
AnswerItem answer = queueService.readByKey(queueid);
if (answer.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
// if the service returns an OK message then we can get the item and convert it to JSONformat
TestCaseExecutionQueue lib = (TestCaseExecutionQueue) answer.getItem();
JSONObject response = convertTestCaseExecutionInQueueToJSONObject(lib);
int nb = 0;
nb = queueService.getNbEntryToGo(lib.getId(), lib.getPriority());
response.put("nbEntryInQueueToGo", nb);
object.put("contentTable", response);
}
object.put("hasPermissions", userHasPermissions);
item.setItem(object);
item.setResultMessage(answer.getResultMessage());
return item;
}
use of org.cerberus.crud.entity.TestCaseExecutionQueue in project cerberus-source by cerberustesting.
the class ReadTestCaseExecutionQueue method findExecutionInQueueList.
private AnswerItem findExecutionInQueueList(ApplicationContext appContext, boolean userHasPermissions, HttpServletRequest request) throws JSONException {
AnswerItem item = new AnswerItem();
JSONObject object = new JSONObject();
executionService = appContext.getBean(ITestCaseExecutionQueueService.class);
int startPosition = Integer.valueOf(ParameterParserUtil.parseStringParam(request.getParameter("iDisplayStart"), "0"));
int length = Integer.valueOf(ParameterParserUtil.parseStringParam(request.getParameter("iDisplayLength"), "0"));
/*int sEcho = Integer.valueOf(request.getParameter("sEcho"));*/
String searchParameter = ParameterParserUtil.parseStringParam(request.getParameter("sSearch"), "");
int columnToSortParameter = Integer.parseInt(ParameterParserUtil.parseStringParam(request.getParameter("iSortCol_0"), "2"));
String sColumns = ParameterParserUtil.parseStringParam(request.getParameter("sColumns"), "id,test,testcase,country,environment,browser,tag");
String[] columnToSort = sColumns.split(",");
String columnName = columnToSort[columnToSortParameter];
String sort = ParameterParserUtil.parseStringParam(request.getParameter("sSortDir_0"), "desc");
List<String> individualLike = new ArrayList(Arrays.asList(request.getParameter("sLike").split(",")));
Map<String, List<String>> individualSearch = new HashMap<>();
for (int a = 0; a < columnToSort.length; a++) {
if (null != request.getParameter("sSearch_" + a) && !request.getParameter("sSearch_" + a).isEmpty()) {
List<String> search = new ArrayList(Arrays.asList(request.getParameter("sSearch_" + a).split(",")));
if (individualLike.contains(columnToSort[a])) {
individualSearch.put(columnToSort[a] + ":like", search);
} else {
individualSearch.put(columnToSort[a], search);
}
}
}
AnswerList resp = executionService.readByCriteria(startPosition, length, columnName, sort, searchParameter, individualSearch);
JSONArray jsonArray = new JSONArray();
if (resp.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
// the service was able to perform the query, then we should get all values
for (TestCaseExecutionQueue exec : (List<TestCaseExecutionQueue>) resp.getDataList()) {
jsonArray.put(convertTestCaseExecutionInQueueToJSONObject(exec));
}
}
object.put("hasPermissions", userHasPermissions);
object.put("contentTable", jsonArray);
object.put("iTotalRecords", resp.getTotalRows());
object.put("iTotalDisplayRecords", resp.getTotalRows());
item.setItem(object);
item.setResultMessage(resp.getResultMessage());
return item;
}
use of org.cerberus.crud.entity.TestCaseExecutionQueue in project cerberus-source by cerberustesting.
the class CreateTestCaseExecutionQueue method processRequest.
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, CerberusException, JSONException {
JSONObject jsonResponse = new JSONObject();
JSONObject executionQueue = new JSONObject();
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
Answer ans = new Answer();
AnswerItem ansItem = new AnswerItem();
MessageEvent msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", ""));
ans.setResultMessage(msg);
PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS);
String charset = request.getCharacterEncoding();
response.setContentType("application/json");
// Calling Servlet Transversal Util.
ServletUtil.servletStart(request);
/**
* Parsing and securing all required parameters.
*/
// Parameter that are already controled by GUI (no need to decode) --> We SECURE them
String actionState = policy.sanitize(request.getParameter("actionState"));
String actionSave = policy.sanitize(request.getParameter("actionSave"));
String environment = policy.sanitize(request.getParameter("environment"));
String country = policy.sanitize(request.getParameter("country"));
String manualEnvData = policy.sanitize(request.getParameter("manualEnvData"));
// Parameter that needs to be secured --> We SECURE+DECODE them
String test = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("test"), "", charset);
String testcase = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("testCase"), "", charset);
int manualURL = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("manualURL"), 0, charset);
String manualHost = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("manualHost"), "", charset);
String manualContextRoot = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("manualContextRoot"), "", charset);
String manualLoginRelativeURL = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("manualLoginRelativeURL"), "", charset);
String tag = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("tag"), "", charset);
String robot = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("robot"), "", charset);
String robotIP = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("robotIP"), "", charset);
String robotPort = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("robotPort"), "", charset);
String browser = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("browser"), "", charset);
String browserVersion = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("browserVersion"), "", charset);
String platform = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("platform"), "", charset);
String screenSize = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("screenSize"), "", charset);
int verbose = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("verbose"), 1, charset);
int screenshot = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("screenshot"), 0, charset);
int pageSource = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("pageSource"), 0, charset);
int seleniumLog = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("seleniumLog"), 0, charset);
String timeout = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("timeout"), "", charset);
int retries = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter("retries"), 0, charset);
String manualExecution = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("manualExecution"), "", charset);
String debugFlag = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("debugFlag"), "N", charset);
// Parameter that we cannot secure as we need the html --> We DECODE them
String[] myIds = request.getParameterValues("id");
if (myIds == null) {
myIds = new String[1];
myIds[0] = "0";
}
long id = 0;
Integer priority = TestCaseExecutionQueue.PRIORITY_DEFAULT;
boolean prio_error = false;
try {
if (request.getParameter("priority") != null && !request.getParameter("priority").equals("")) {
priority = Integer.valueOf(policy.sanitize(request.getParameter("priority")));
}
} catch (Exception ex) {
prio_error = true;
}
boolean id_error = false;
IExecutionThreadPoolService executionThreadPoolService = appContext.getBean(IExecutionThreadPoolService.class);
// Create Tag when exist.
if (!StringUtil.isNullOrEmpty(tag)) {
// We create or update it.
ITagService tagService = appContext.getBean(ITagService.class);
tagService.createAuto(tag, "", request.getRemoteUser());
}
// Prepare the final answer.
MessageEvent msg1 = new MessageEvent(MessageEventEnum.GENERIC_OK);
Answer finalAnswer = new Answer(msg1);
List<TestCaseExecutionQueue> insertedList = new ArrayList();
for (String myId : myIds) {
id_error = false;
id = 0;
try {
id = Long.valueOf(myId);
} catch (NumberFormatException ex) {
id_error = true;
}
/**
* Checking all constrains before calling the services.
*/
if (id_error) {
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
msg.setDescription(msg.getDescription().replace("%ITEM%", "Execution Queue").replace("%OPERATION%", "Update").replace("%REASON%", "Could not manage to convert id to an integer value."));
ans.setResultMessage(msg);
finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) ans);
} else if (prio_error || priority > 2147483647 || priority < -2147483648) {
msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
msg.setDescription(msg.getDescription().replace("%ITEM%", "Execution Queue").replace("%OPERATION%", "Update").replace("%REASON%", "Could not manage to convert priority to an integer value."));
ans.setResultMessage(msg);
finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) ans);
} else {
try {
/**
* All data seems cleans so we can call the services.
*/
ITestCaseExecutionQueueService executionQueueService = appContext.getBean(ITestCaseExecutionQueueService.class);
IFactoryTestCaseExecutionQueue executionQueueFactory = appContext.getBean(IFactoryTestCaseExecutionQueue.class);
if (actionSave.equals("save")) {
/**
* The service was able to perform the query and confirm
* the object exist, then we can update it.
*/
TestCaseExecutionQueue executionQueueData;
if (id == 0) {
// If id is not defined, we build the execution queue from all request datas.
executionQueueData = executionQueueFactory.create(test, testcase, country, environment, robot, robotIP, robotPort, browser, browserVersion, platform, screenSize, manualURL, manualHost, manualContextRoot, manualLoginRelativeURL, manualEnvData, tag, screenshot, verbose, timeout, pageSource, seleniumLog, 0, retries, manualExecution, priority, request.getRemoteUser(), null, null, null);
executionQueueData.setDebugFlag(debugFlag);
} else {
// If id is defined, we get the execution queue from database.
executionQueueData = executionQueueService.convert(executionQueueService.readByKey(id));
executionQueueData.setState(TestCaseExecutionQueue.State.QUEUED);
executionQueueData.setComment("");
executionQueueData.setDebugFlag("N");
executionQueueData.setPriority(TestCaseExecutionQueue.PRIORITY_DEFAULT);
executionQueueData.setUsrCreated(request.getRemoteUser());
}
ansItem = executionQueueService.create(executionQueueData);
finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) ansItem);
if (ansItem.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
TestCaseExecutionQueue addedExecution = (TestCaseExecutionQueue) ansItem.getItem();
insertedList.add(addedExecution);
}
if (myIds.length <= 1) {
if (ansItem.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
/**
* Update was successful. Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(LogEventService.class);
logEventService.createForPrivateCalls("/CreateTestCaseExecutionQueue", "CREATE", "Created ExecutionQueue : ['" + id + "']", request);
}
}
}
} catch (FactoryCreationException ex) {
LOG.warn(ex);
}
}
}
// Update is done, we now check what action needs to be performed.
if (actionState.equals("toQUEUED")) {
executionThreadPoolService.executeNextInQueueAsynchroneously(false);
}
/**
* Formating and returning the json result.
*/
jsonResponse.put("messageType", finalAnswer.getResultMessage().getMessage().getCodeString());
jsonResponse.put("message", finalAnswer.getResultMessage().getDescription());
if (insertedList.isEmpty()) {
jsonResponse.put("addedEntries", 0);
} else {
JSONArray executionList = new JSONArray();
for (TestCaseExecutionQueue testCaseExecutionQueue : insertedList) {
JSONObject myExecution = new JSONObject();
myExecution.append("id", testCaseExecutionQueue.getId());
executionList.put(myExecution);
}
jsonResponse.put("testCaseExecutionQueueList", executionList);
jsonResponse.put("addedEntries", insertedList.size());
}
response.getWriter().print(jsonResponse);
response.getWriter().flush();
}
use of org.cerberus.crud.entity.TestCaseExecutionQueue in project cerberus-source by cerberustesting.
the class RunTestCase method doGet.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
// Calling Servlet Transversal Util.
ServletUtil.servletStart(request);
/**
* Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(ILogEventService.class);
logEventService.createForPublicCalls("/RunTestCase", "CALL", "RunTestCase called : " + request.getRequestURL(), request);
// Tool
// Selenium IP
String ss_ip = "";
// Selenium Host (optional)
String ss_ip_user = "";
// Selenium Password (optional)
String ss_ip_pass = "";
// Selenium Port
String ss_p = "";
String browser = "";
String robotDecli = "";
String version = "";
String platform = "";
String robot = "";
String active = "";
String timeout = "";
String userAgent = "";
String screenSize = "";
boolean synchroneous = true;
int getPageSource = 0;
int getSeleniumLog = 0;
String manualExecution = "N";
List<RobotCapability> capabilities = null;
// Test
String test = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Test"), "");
String testCase = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("TestCase"), "");
String country = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Country"), "");
String environment = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Environment"), "");
// Test Dev Environment
boolean manualURL = ParameterParserUtil.parseBooleanParam(request.getParameter("manualURL"), false);
String myHost = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myhost"), "");
String myContextRoot = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("mycontextroot"), "");
String myLoginRelativeURL = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myloginrelativeurl"), "");
// TODO find another solution
myLoginRelativeURL = myLoginRelativeURL.replace("=", "=");
String myEnvData = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myenvdata"), "");
// Execution
String tag = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Tag"), "");
String outputFormat = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("outputformat"), "compact");
int screenshot = ParameterParserUtil.parseIntegerParam(request.getParameter("screenshot"), 1);
int verbose = ParameterParserUtil.parseIntegerParam(request.getParameter("verbose"), 0);
timeout = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("timeout"), "");
synchroneous = ParameterParserUtil.parseBooleanParam(request.getParameter("synchroneous"), false);
getPageSource = ParameterParserUtil.parseIntegerParam(request.getParameter("pageSource"), 1);
getSeleniumLog = ParameterParserUtil.parseIntegerParam(request.getParameter("seleniumLog"), 1);
manualExecution = ParameterParserUtil.parseStringParam(request.getParameter("manualExecution"), "N");
int numberOfRetries = ParameterParserUtil.parseIntegerParam(request.getParameter("retries"), 0);
screenSize = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("screenSize"), "");
robot = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("robot"), "");
ss_ip = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("ss_ip"), "");
ss_p = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("ss_p"), "");
browser = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Browser"), ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("browser"), ""));
version = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("version"), "");
platform = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("platform"), "");
// hidden parameters.
long idFromQueue = ParameterParserUtil.parseIntegerParam(request.getParameter("IdFromQueue"), 0);
String executor = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("executor"), ParameterParserUtil.parseStringParamAndSanitize(request.getRemoteUser(), null));
String helpMessage = "\nThis servlet is used to start the execution of a test case.\n" + "Parameter list :\n" + "- Test [mandatory] : Test to execute. [" + test + "]\n" + "- TestCase [mandatory] : Test Case reference to execute. [" + testCase + "]\n" + "- Country [mandatory] : Country where the test case will execute. [" + country + "]\n" + "- Environment : Environment where the test case will execute. This parameter is mandatory only if manualURL is not set to Y. [" + environment + "]\n" + "- robot : robot name on which the test will be executed. [" + robot + "]\n" + "- ss_ip : Host of the Robot where the test will be executed. (Can be overwriten if robot is defined) [" + ss_ip + "]\n" + "- ss_p : Port of the Robot. (Can be overwriten if robot is defined) [" + ss_p + "]\n" + "- browser : Browser to use for the execution. (Can be overwriten if robot is defined) [" + browser + "]\n" + "- version : Version to use for the execution. (Can be overwriten if robot is defined) [" + version + "]\n" + "- platform : Platform to use for the execution. (Can be overwriten if robot is defined) [" + platform + "]\n" + "- screenSize : Size of the screen to set for the execution. [" + screenSize + "]\n" + "- manualURL : Activate or not the Manual URL of the application to execute. If activated the 4 parameters after (myhost, mycontextroot, myloginrelativeurl, myenvdata) are necessary. [" + manualURL + "]\n" + "- myhost : Host of the application to test (only used when manualURL is feed). [" + myHost + "]\n" + "- mycontextroot : Context root of the application to test (only used when manualURL is feed). [" + myContextRoot + "]\n" + "- myloginrelativeurl : Relative login URL of the application (only used when manualURL is feed). [" + myLoginRelativeURL + "]\n" + "- myenvdata : Environment where to get the test data when a manualURL is defined. (only used when manualURL is feed) [" + myEnvData + "]\n" + "- Tag : Tag that will be stored on the execution. [" + tag + "]\n" + "- outputformat : Format of the output of the execution. [" + outputFormat + "]\n" + "- screenshot : Activate or not the screenshots. [" + screenshot + "]\n" + "- verbose : Verbose level of the execution. [" + verbose + "]\n" + "- timeout : Timeout used for the action. If empty, the default value will be the one configured in parameter table. [" + timeout + "]\n" + "- synchroneous : Synchroneous define if the servlet wait for the end of the execution to report its execution. [" + synchroneous + "\n" + "- pageSource : Record Page Source during the execution. [" + getPageSource + "]\n" + "- seleniumLog : Get the SeleniumLog at the end of the execution. [" + getSeleniumLog + "]\n" + "- manualExecution : Execute testcase in manual mode. [" + manualExecution + "]\n" + "- retries : Number of tries if the result is not OK. [" + numberOfRetries + "]\n";
boolean error = false;
String errorMessage = "";
// test, testcase and country parameters are mandatory
if (StringUtils.isBlank(test)) {
errorMessage += "Error - Parameter test is mandatory. ";
error = true;
}
if (StringUtils.isBlank(testCase)) {
errorMessage += "Error - Parameter testCase is mandatory. ";
error = true;
}
if (!StringUtils.isBlank(tag) && tag.length() > 255) {
errorMessage += "Error - Parameter tag value is too big. Tag cannot be larger than 255 Characters. Currently has : " + tag.length();
error = true;
}
if (StringUtils.isBlank(country)) {
errorMessage += "Error - Parameter country is mandatory. ";
error = true;
}
// environment is mandatory when manualURL is not activated.
if (StringUtils.isBlank(environment) && !manualURL) {
errorMessage += "Error - Parameter environment is mandatory (or use the manualURL parameter). ";
error = true;
}
// We check that execution is not desactivated by cerberus_automaticexecution_enable parameter.
IParameterService parameterService = appContext.getBean(IParameterService.class);
if (!(parameterService.getParameterBooleanByKey("cerberus_automaticexecution_enable", "", true))) {
errorMessage += "Error - Execution disable by configuration (cerberus_automaticexecution_enable <> Y). ";
error = true;
LOG.info("Execution request ignored by cerberus_automaticexecution_enable parameter. " + test + " / " + testCase);
}
// If Robot is feeded, we check it exist. If it exist, we overwrite the associated parameters.
if (!StringUtil.isNullOrEmpty(robot)) {
IRobotService robotService = appContext.getBean(IRobotService.class);
try {
Robot robObj = robotService.readByKey(robot);
// If Robot parameter is defined and we can find the robot, we overwrite the corresponding parameters.
ss_ip = ParameterParserUtil.parseStringParam(robObj.getHost(), ss_ip);
ss_ip_user = robObj.getHostUser();
ss_ip_pass = robObj.getHostPassword();
ss_p = ParameterParserUtil.parseStringParam(String.valueOf(robObj.getPort()), ss_p);
browser = ParameterParserUtil.parseStringParam(robObj.getBrowser(), browser);
robotDecli = ParameterParserUtil.parseStringParam(robObj.getRobotDecli(), "");
if (StringUtil.isNullOrEmpty(robotDecli)) {
robotDecli = robObj.getRobot();
}
version = ParameterParserUtil.parseStringParam(robObj.getVersion(), version);
platform = ParameterParserUtil.parseStringParam(robObj.getPlatform(), platform);
active = robObj.getActive();
userAgent = robObj.getUserAgent();
capabilities = robObj.getCapabilities();
screenSize = robObj.getScreenSize();
} catch (CerberusException ex) {
errorMessage += "Error - Robot [" + robot + "] does not exist. ";
error = true;
}
} else {
robotDecli = browser;
}
// We cannot execute a testcase on a desactivated Robot.
if (active.equals("N")) {
errorMessage += "Error - Robot is not Active. ";
error = true;
}
// verify the format of the ScreenSize. It must be 2 integer separated by a *. For example : 1024*768
if (!"".equals(screenSize)) {
if (!screenSize.contains("*")) {
errorMessage += "Error - ScreenSize format is not Correct. It must be 2 Integer separated by a *. ";
error = true;
} else {
try {
String screenWidth = screenSize.split("\\*")[0];
String screenLength = screenSize.split("\\*")[1];
Integer.parseInt(screenWidth);
Integer.parseInt(screenLength);
} catch (Exception e) {
errorMessage += "Error - ScreenSize format is not Correct. It must be 2 Integer separated by a *. ";
error = true;
}
}
}
// check if the test case is to be executed in the specific parameters
try {
ITestCaseCountryService tccService = appContext.getBean(ITestCaseCountryService.class);
TestCaseCountry tcc = tccService.findTestCaseCountryByKey(test, testCase, country);
if (tcc == null) {
error = true;
}
} catch (CerberusException ex) {
error = true;
errorMessage += "Error - Test Case is not selected for country. ";
}
// Create Tag when exist.
if (!StringUtil.isNullOrEmpty(tag)) {
// We create or update it.
ITagService tagService = appContext.getBean(ITagService.class);
tagService.createAuto(tag, "", executor);
}
if (!error) {
// TODO:FN debug messages to be removed
LOG.debug("STARTED: Test " + test + "-" + testCase);
IRunTestCaseService runTestCaseService = appContext.getBean(IRunTestCaseService.class);
IFactoryTestCase factoryTCase = appContext.getBean(IFactoryTestCase.class);
IFactoryTestCaseExecution factoryTCExecution = appContext.getBean(IFactoryTestCaseExecution.class);
IFactoryTestCaseExecutionQueue factoryTCExecutionQueue = appContext.getBean(IFactoryTestCaseExecutionQueue.class);
ITestCaseExecutionService tces = appContext.getBean(ITestCaseExecutionService.class);
ITestCaseService tcs = appContext.getBean(ITestCaseService.class);
TestCase tCase = factoryTCase.create(test, testCase);
// Building Execution Object.
TestCaseExecution tCExecution = factoryTCExecution.create(0, test, testCase, null, null, null, environment, country, browser, version, platform, "", 0, 0, "", "", "", null, ss_ip, null, ss_p, tag, verbose, screenshot, getPageSource, getSeleniumLog, synchroneous, timeout, outputFormat, null, Infos.getInstance().getProjectNameAndVersion(), tCase, null, null, manualURL, myHost, myContextRoot, myLoginRelativeURL, myEnvData, ss_ip, ss_p, null, new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTSTARTED), executor, numberOfRetries, screenSize, capabilities, "", "", "", "", "", manualExecution, userAgent, 0, "", robotDecli);
tCExecution.setSeleniumIPUser(ss_ip_user);
tCExecution.setSeleniumIPPassword(ss_ip_pass);
/**
* Set IdFromQueue
*/
try {
tCExecution.setQueueID(idFromQueue);
TestCaseExecutionQueue queueExecution = factoryTCExecutionQueue.create(idFromQueue, test, testCase, country, environment, robot, ss_ip, ss_p, browser, version, platform, screenSize, 0, myHost, myContextRoot, myLoginRelativeURL, myEnvData, tag, screenshot, verbose, timeout, getPageSource, getSeleniumLog, 0, numberOfRetries, manualExecution, executor, null, null, null);
tCExecution.setTestCaseExecutionQueue(queueExecution);
} catch (FactoryCreationException ex) {
LOG.error(ex);
}
/**
* Set UUID
*/
ExecutionUUID executionUUIDObject = appContext.getBean(ExecutionUUID.class);
UUID executionUUID = UUID.randomUUID();
executionUUIDObject.setExecutionUUID(executionUUID.toString(), tCExecution);
tCExecution.setExecutionUUID(executionUUID.toString());
LOG.info("Execution Requested : UUID=" + executionUUID);
/**
* Execution of the testcase.
*/
LOG.debug("Start execution " + tCExecution.getId());
tCExecution = runTestCaseService.runTestCase(tCExecution);
/**
* Clean memory in case testcase has not been launched(Remove all
* object put in memory)
*/
try {
if (tCExecution.getId() == 0) {
executionUUIDObject.removeExecutionUUID(tCExecution.getExecutionUUID());
LOG.debug("Clean ExecutionUUID");
}
} catch (Exception ex) {
LOG.error("Exception cleaning Memory: ", ex);
}
/**
* Execution is finished we report the result.
*/
long runID = tCExecution.getId();
if (outputFormat.equalsIgnoreCase("gui")) {
// HTML GUI output. either the detailed execution page or an error page when the execution is not created.
if (runID > 0) {
// Execution has been created.
response.sendRedirect("TestCaseExecution.jsp?executionId=" + runID);
} else {
// Execution was not even created.
response.setContentType("text/html");
out.println("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><title>Test Execution Result</title></head>");
out.println("<body>");
out.println("<table>");
out.println("<tr><td>RunID</td><td><span id='RunID'>" + runID + "</span></td></tr>");
out.println("<tr><td>IdFromQueue</td><td><b><span id='IdFromQueue'>" + tCExecution.getQueueID() + "</span></b></td></tr>");
out.println("<tr><td>Test</td><td><span id='Test'>" + test + "</span></td></tr>");
out.println("<tr><td>TestCase</td><td><span id='TestCase'>" + testCase + "</span></td></tr>");
out.println("<tr><td>Country</td><td><span id='Country'>" + country + "</span></td></tr>");
out.println("<tr><td>Environment</td><td><span id='Environment'>" + environment + "</span></td></tr>");
out.println("<tr><td>TimestampStart</td><td><span id='TimestampStart'>" + new Timestamp(tCExecution.getStart()) + "</span></td></tr>");
out.println("<tr><td>TimestampEnd</td><td><span id='TimestampEnd'>" + new Timestamp(tCExecution.getEnd()) + "</span></td></tr>");
out.println("<tr><td>OutputFormat</td><td><span id='OutputFormat'>" + outputFormat + "</span></td></tr>");
out.println("<tr><td>Verbose</td><td><span id='Verbose'>" + verbose + "</span></td></tr>");
out.println("<tr><td>Screenshot</td><td><span id='Screenshot'>" + screenshot + "</span></td></tr>");
out.println("<tr><td>PageSource</td><td><span id='PageSource'>" + getPageSource + "</span></td></tr>");
out.println("<tr><td>SeleniumLog</td><td><span id='SeleniumLog'>" + getSeleniumLog + "</span></td></tr>");
out.println("<tr><td>Robot</td><td><span id='Robot'>" + robot + "</span></td></tr>");
out.println("<tr><td>Selenium Server IP</td><td><span id='SeleniumIP'>" + ss_ip + "</span></td></tr>");
out.println("<tr><td>Selenium Server Port</td><td><span id='SeleniumPort'>" + ss_p + "</span></td></tr>");
out.println("<tr><td>Timeout</td><td><span id='Timeout'>" + timeout + "</span></td></tr>");
out.println("<tr><td>Synchroneous</td><td><span id='Synchroneous'>" + synchroneous + "</span></td></tr>");
out.println("<tr><td>Browser</td><td><span id='Browser'>" + browser + "</span></td></tr>");
out.println("<tr><td>Version</td><td><span id='Version'>" + version + "</span></td></tr>");
out.println("<tr><td>Platform</td><td><span id='Platform'>" + platform + "</span></td></tr>");
out.println("<tr><td>Screen Size</td><td><span id='screenSize'>" + screenSize + "</span></td></tr>");
out.println("<tr><td>Number of Retry</td><td><span id='nbretry'>" + numberOfRetries + "</span></td></tr>");
out.println("<tr><td>ManualURL</td><td><span id='ManualURL'>" + tCExecution.isManualURL() + "</span></td></tr>");
out.println("<tr><td>MyHost</td><td><span id='MyHost'>" + tCExecution.getMyHost() + "</span></td></tr>");
out.println("<tr><td>MyContextRoot</td><td><span id='MyContextRoot'>" + tCExecution.getMyContextRoot() + "</span></td></tr>");
out.println("<tr><td>MyLoginRelativeURL</td><td><span id='MyLoginRelativeURL'>" + tCExecution.getMyLoginRelativeURL() + "</span></td></tr>");
out.println("<tr><td>myEnvironmentData</td><td><span id='myEnvironmentData'>" + tCExecution.getEnvironmentData() + "</span></td></tr>");
out.println("<tr><td>ReturnCode</td><td><b><span id='ReturnCodeDescription'>" + tCExecution.getResultMessage().getCode() + "</span></b></td></tr>");
out.println("<tr><td>ReturnCodeDescription</td><td><b><span id='ReturnCodeDescription'>" + tCExecution.getResultMessage().getDescription() + "</span></b></td></tr>");
out.println("<tr><td>ControlStatus</td><td><b><span id='ReturnCodeMessage'>" + tCExecution.getResultMessage().getCodeString() + "</span></b></td></tr>");
out.println("<tr><td></td><td></td></tr>");
out.println("</table><br><br>");
out.println("<table border>");
out.println("<tr>" + "<td><input id=\"ButtonRetry\" type=\"button\" value=\"Retry\" onClick=\"window.location.reload()\"></td>" + "<td><input id=\"ButtonBack\" type=\"button\" value=\"Go Back\" onClick=\"window.history.back()\"></td>" + "<td><input id=\"ButtonOpenTC\" type=\"button\" value=\"Open Test Case\" onClick=\"window.open('TestCaseScript.jsp?test=" + test + "&testcase=" + testCase + "')\"></td>" + "</tr>");
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
} else if (outputFormat.equalsIgnoreCase("redirectToReport")) {
// Redirect to the reporting page by tag.
response.sendRedirect("./ReportingExecutionByTag.jsp?Tag=" + StringUtil.encodeAsJavaScriptURIComponent(tag));
} else if (outputFormat.equalsIgnoreCase("verbose-txt")) {
// Text verbose output.
response.setContentType("text/plain");
String separator = " = ";
out.println("RunID" + separator + runID);
out.println("QueueID" + separator + idFromQueue);
out.println("Test" + separator + test);
out.println("TestCase" + separator + testCase);
out.println("Country" + separator + country);
out.println("Environment" + separator + environment);
out.println("Time Start" + separator + new Timestamp(tCExecution.getStart()));
out.println("Time End" + separator + new Timestamp(tCExecution.getEnd()));
out.println("OutputFormat" + separator + outputFormat);
out.println("Verbose" + separator + verbose);
out.println("Screenshot" + separator + screenshot);
out.println("PageSource" + separator + getPageSource);
out.println("SeleniumLog" + separator + getSeleniumLog);
out.println("Robot" + separator + robot);
out.println("Selenium Server IP" + separator + ss_ip);
out.println("Selenium Server Port" + separator + ss_p);
out.println("Timeout" + separator + timeout);
out.println("Synchroneous" + separator + synchroneous);
out.println("Browser" + separator + browser);
out.println("Version" + separator + version);
out.println("Platform" + separator + platform);
out.println("ScreenSize" + separator + screenSize);
out.println("Nb Of Retry" + separator + numberOfRetries);
out.println("ManualURL" + separator + tCExecution.isManualURL());
out.println("MyHost" + separator + tCExecution.getMyHost());
out.println("MyContextRoot" + separator + tCExecution.getMyContextRoot());
out.println("MyLoginRelativeURL" + separator + tCExecution.getMyLoginRelativeURL());
out.println("myEnvironmentData" + separator + tCExecution.getEnvironmentData());
out.println("ReturnCode" + separator + tCExecution.getResultMessage().getCode());
out.println("ReturnCodeDescription" + separator + tCExecution.getResultMessage().getDescription());
out.println("ControlStatus" + separator + tCExecution.getResultMessage().getCodeString());
} else if (outputFormat.equalsIgnoreCase("verbose-json")) {
// JSON verbose output.
response.setContentType("application/json");
TestCaseExecution t = (TestCaseExecution) tces.readByKeyWithDependency(tCExecution.getId()).getItem();
out.print(tCExecution.toJson(true).toString());
} else {
// Default behaviour when not outputformat is defined : compact mode.
response.setContentType("text/plain");
DateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_DISPLAY);
out.println(df.format(tCExecution.getStart()) + " - " + runID + " [" + test + "|" + testCase + "|" + country + "|" + environment + "] : '" + tCExecution.getResultMessage().getCodeString() + "' - " + tCExecution.getResultMessage().getCode() + " " + tCExecution.getResultMessage().getDescription());
}
} else {
// Error occured in the servlet.
if (outputFormat.equalsIgnoreCase("verbose-txt")) {
// Text verbose output.
response.setContentType("text/plain");
String separator = " = ";
out.println("RunID" + separator + 0);
out.println("QueueID" + separator + idFromQueue);
out.println("Test" + separator + test);
out.println("TestCase" + separator + testCase);
out.println("Country" + separator + country);
out.println("Environment" + separator + environment);
out.println("OutputFormat" + separator + outputFormat);
out.println("Verbose" + separator + verbose);
out.println("Screenshot" + separator + screenshot);
out.println("PageSource" + separator + getPageSource);
out.println("SeleniumLog" + separator + getSeleniumLog);
out.println("Robot" + separator + robot);
out.println("Selenium Server IP" + separator + ss_ip);
out.println("Selenium Server Port" + separator + ss_p);
out.println("Timeout" + separator + timeout);
out.println("Synchroneous" + separator + synchroneous);
out.println("Browser" + separator + browser);
out.println("Version" + separator + version);
out.println("Platform" + separator + platform);
out.println("ScreenSize" + separator + screenSize);
out.println("Nb Of Retry" + separator + numberOfRetries);
out.println("ManualURL" + separator + manualURL);
out.println("MyHost" + separator + myHost);
out.println("MyContextRoot" + separator + myContextRoot);
out.println("MyLoginRelativeURL" + separator + myLoginRelativeURL);
out.println("myEnvironmentData" + separator + myEnvData);
out.println("ReturnCode" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCode());
out.println("ReturnCodeDescription" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getDescription() + " " + errorMessage);
out.println("ControlStatus" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCodeString());
} else {
// In case of errors, we display the help message.
response.setContentType("text/plain");
DateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_DISPLAY);
String errorMessageFinal = df.format(new Date()) + " - " + 0 + " [" + test + "|" + testCase + "|" + country + "|" + environment + "] : '" + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCodeString() + "' - " + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCode() + " " + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getDescription() + " " + errorMessage;
out.println(errorMessageFinal);
}
}
}
Aggregations