use of org.cerberus.exception.CerberusEventException in project cerberus-source by cerberustesting.
the class IdentifierService method checkSikuliIdentifier.
@Override
public void checkSikuliIdentifier(String identifier) throws CerberusEventException {
String[] selectOptionAttributes = { "picture", "text" };
if (!Arrays.asList(selectOptionAttributes).contains(identifier)) {
MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_FAILED_UNKOWN_IDENTIFIER_SIKULI);
message.setDescription(message.getDescription().replace("%IDENTIFIER%", identifier));
throw new CerberusEventException(message);
}
}
use of org.cerberus.exception.CerberusEventException in project cerberus-source by cerberustesting.
the class IdentifierService method checkSQLIdentifier.
@Override
public void checkSQLIdentifier(String identifier) throws CerberusEventException {
String[] selectOptionAttributes = { "script", "procedure" };
if (!Arrays.asList(selectOptionAttributes).contains(identifier)) {
MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_FAILED_UNKOWN_IDENTIFIER_SQL);
message.setDescription(message.getDescription().replace("%IDENTIFIER%", identifier));
throw new CerberusEventException(message);
}
}
use of org.cerberus.exception.CerberusEventException in project cerberus-source by cerberustesting.
the class CalculatePropertyForTestCase method doGet.
@Override
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.BLOCKS);
String type = policy.sanitize(httpServletRequest.getParameter("type"));
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
String result = null;
String description = null;
String system = "";
String property = httpServletRequest.getParameter("property");
String testName = policy.sanitize(httpServletRequest.getParameter("test"));
String testCaseName = policy.sanitize(httpServletRequest.getParameter("testCase"));
String country = policy.sanitize(httpServletRequest.getParameter("country"));
String environment = policy.sanitize(httpServletRequest.getParameter("environment"));
try {
if (type.equals("executeSoapFromLib")) {
IAppServiceService appServiceService = appContext.getBean(AppServiceService.class);
ISoapService soapService = appContext.getBean(ISoapService.class);
IXmlUnitService xmlUnitService = appContext.getBean(IXmlUnitService.class);
AppService appService = appServiceService.findAppServiceByKey(property);
if (appService != null) {
ExecutionUUID executionUUIDObject = appContext.getBean(ExecutionUUID.class);
UUID executionUUID = UUID.randomUUID();
executionUUIDObject.setExecutionUUID(executionUUID.toString(), null);
soapService.callSOAP(appService.getServiceRequest(), appService.getServicePath(), appService.getOperation(), appService.getAttachementURL(), null, null, 60000, system);
result = xmlUnitService.getFromXml(executionUUID.toString(), appService.getAttachementURL());
description = appService.getDescription();
executionUUIDObject.removeExecutionUUID(executionUUID.toString());
LOG.debug("Clean ExecutionUUID");
}
} else {
try {
ITestCaseService testCaseService = appContext.getBean(TestCaseService.class);
IApplicationService applicationService = appContext.getBean(ApplicationService.class);
TestCase testCase = testCaseService.findTestCaseByKey(testName, testCaseName);
if (testCase != null) {
system = applicationService.convert(applicationService.readByKey(testCase.getApplication())).getSystem();
} else {
throw new CerberusException(new MessageGeneral(MessageGeneralEnum.NO_DATA_FOUND));
}
} catch (CerberusException ex) {
LOG.warn(ex);
}
if (system != null) {
String database = policy.sanitize(httpServletRequest.getParameter("database"));
ICountryEnvironmentDatabaseService countryEnvironmentDatabaseService = appContext.getBean(CountryEnvironmentDatabaseService.class);
CountryEnvironmentDatabase countryEnvironmentDatabase;
countryEnvironmentDatabase = countryEnvironmentDatabaseService.convert(countryEnvironmentDatabaseService.readByKey(system, country, environment, database));
String connectionName = countryEnvironmentDatabase.getConnectionPoolName();
if (type.equals("executeSqlFromLib")) {
ISqlLibraryService sqlLibraryService = appContext.getBean(SqlLibraryService.class);
SqlLibrary sl = sqlLibraryService.findSqlLibraryByKey(policy.sanitize(property));
property = sl.getScript();
if (!(StringUtil.isNullOrEmpty(connectionName)) && !(StringUtil.isNullOrEmpty(policy.sanitize(property)))) {
ISQLService sqlService = appContext.getBean(ISQLService.class);
IParameterService parameterService = appContext.getBean(IParameterService.class);
Integer sqlTimeout = parameterService.getParameterIntegerByKey("cerberus_propertyexternalsql_timeout", system, 60);
result = sqlService.queryDatabase(connectionName, policy.sanitize(property), 1, sqlTimeout).get(0);
description = sl.getDescription();
}
}
}
}
} catch (CerberusException ex) {
LOG.warn(ex);
result = ex.getMessageError().getDescription();
description = ex.getMessageError().getDescription();
} catch (CerberusEventException ex) {
LOG.warn(ex);
result = ex.getMessageError().getDescription();
description = ex.getMessageError().getDescription();
}
if (result != null) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("resultList", result);
jsonObject.put("description", description);
httpServletResponse.setContentType("application/json");
httpServletResponse.getWriter().print(jsonObject.toString());
} catch (JSONException exception) {
LOG.warn(exception.toString());
}
}
}
use of org.cerberus.exception.CerberusEventException in project cerberus-source by cerberustesting.
the class SQLService method calculateOnDatabase.
@Override
public TestCaseExecutionData calculateOnDatabase(TestCaseExecutionData testCaseExecutionData, TestCaseCountryProperties testCaseProperties, TestCaseExecution tCExecution) {
String sql = testCaseExecutionData.getValue1();
String db = testCaseProperties.getDatabase();
String connectionName;
CountryEnvironmentDatabase countryEnvironmentDatabase;
MessageEvent mes = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_SQL);
try {
String system = tCExecution.getApplicationObj().getSystem();
String country = testCaseProperties.getCountry();
String environment = tCExecution.getEnvironmentData();
countryEnvironmentDatabase = this.countryEnvironmentDatabaseService.convert(this.countryEnvironmentDatabaseService.readByKey(system, country, environment, db));
if (countryEnvironmentDatabase == null) {
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_DATABASENOTCONFIGURED);
mes.setDescription(mes.getDescription().replace("%SYSTEM%", system).replace("%COUNTRY%", country).replace("%ENV%", environment).replace("%DATABASE%", db));
} else {
connectionName = countryEnvironmentDatabase.getConnectionPoolName();
if (!(StringUtil.isNullOrEmpty(connectionName))) {
try {
Integer sqlTimeout = parameterService.getParameterIntegerByKey("cerberus_propertyexternalsql_timeout", system, 60);
List<String> list = this.queryDatabase(connectionName, sql, testCaseProperties.getRowLimit(), sqlTimeout);
if (list != null && !list.isEmpty()) {
if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_STATIC)) {
testCaseExecutionData.setValue(list.get(0));
} else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_RANDOM)) {
testCaseExecutionData.setValue(this.getRandomStringFromList(list));
mes = new MessageEvent(MessageEventEnum.PROPERTY_SUCCESS_SQL_RANDOM);
} else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_RANDOMNEW)) {
testCaseExecutionData.setValue(this.calculateNatureRandomNew(list, testCaseProperties.getProperty(), tCExecution));
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NATURERANDOMNEW_NOTIMPLEMENTED);
} else if (testCaseProperties.getNature().equalsIgnoreCase(TestCaseCountryProperties.NATURE_NOTINUSE)) {
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NATURENOTINUSE_NOTIMPLEMENTED);
}
} else {
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_NODATA);
}
mes.setDescription(mes.getDescription().replace("%DATABASE%", db));
mes.setDescription(mes.getDescription().replace("%SQL%", sql));
mes.setDescription(mes.getDescription().replace("%JDBCPOOLNAME%", connectionName));
testCaseExecutionData.setPropertyResultMessage(mes);
} catch (CerberusEventException ex) {
mes = ex.getMessageError();
}
} else {
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_EMPTYJDBCPOOL);
mes.setDescription(mes.getDescription().replace("%SYSTEM%", tCExecution.getApplicationObj().getSystem()));
mes.setDescription(mes.getDescription().replace("%COUNTRY%", testCaseProperties.getCountry()));
mes.setDescription(mes.getDescription().replace("%ENV%", tCExecution.getEnvironmentData()));
mes.setDescription(mes.getDescription().replace("%DATABASE%", db));
}
}
} catch (CerberusException ex) {
mes = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_JDBCPOOLNOTCONFIGURED);
mes.setDescription(mes.getDescription().replace("%SYSTEM%", tCExecution.getApplicationObj().getSystem()));
mes.setDescription(mes.getDescription().replace("%COUNTRY%", testCaseProperties.getCountry()));
mes.setDescription(mes.getDescription().replace("%ENV%", tCExecution.getEnvironmentData()));
mes.setDescription(mes.getDescription().replace("%DATABASE%", db));
}
testCaseExecutionData.setPropertyResultMessage(mes);
return testCaseExecutionData;
}
use of org.cerberus.exception.CerberusEventException in project cerberus-source by cerberustesting.
the class SQLService method queryDatabase.
@Override
public List<String> queryDatabase(String connectionName, String sql, int limit, int defaultTimeOut) throws CerberusEventException {
List<String> list = null;
boolean throwEx = false;
int maxSecurityFetch = 100;
int nbFetch = 0;
MessageEvent msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_GENERIC);
msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));
try (Connection connection = this.databaseSpring.connect(connectionName);
PreparedStatement preStat = connection.prepareStatement(sql)) {
preStat.setQueryTimeout(defaultTimeOut);
if (limit > 0 && limit < maxSecurityFetch) {
preStat.setMaxRows(limit);
} else {
preStat.setMaxRows(maxSecurityFetch);
}
/*
ORACLE => * WHERE ROWNUM <= limit *
DB2 => * FETCH FIRST limit ROWS ONLY
MYSQL => * LIMIT 0, limit
SQL SERVER => SELECT TOP limit *
SYBASE => SET ROWCOUNT limit *
if (limit > 0) {
sql.concat(Util.DbLimit(databaseType, limit));
}
*/
try {
LOG.info("Sending to external Database (queryDatabase) : '" + connectionName + "' SQL '" + sql + "'");
ResultSet resultSet = preStat.executeQuery();
list = new ArrayList<String>();
try {
while ((resultSet.next()) && (nbFetch < maxSecurityFetch)) {
list.add(resultSet.getString(1));
nbFetch++;
}
} catch (SQLException exception) {
LOG.warn("Unable to execute query : " + exception.toString());
} finally {
resultSet.close();
}
} catch (SQLTimeoutException exception) {
msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_TIMEOUT);
msg.setDescription(msg.getDescription().replace("%SQL%", sql));
msg.setDescription(msg.getDescription().replace("%TIMEOUT%", String.valueOf(defaultTimeOut)));
msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));
} catch (SQLException exception) {
LOG.warn(exception.toString());
msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);
msg.setDescription(msg.getDescription().replace("%SQL%", sql));
msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));
throwEx = true;
} finally {
preStat.close();
}
} catch (SQLException exception) {
LOG.warn(exception.toString());
msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_ERROR);
msg.setDescription(msg.getDescription().replace("%SQL%", sql));
msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));
throwEx = true;
} catch (NullPointerException exception) {
// TODO check where exception occur
LOG.warn(exception.toString());
msg = new MessageEvent(MessageEventEnum.PROPERTY_FAILED_SQL_CANNOTACCESSJDBC);
msg.setDescription(msg.getDescription().replace("%JDBC%", "jdbc/" + connectionName));
msg.setDescription(msg.getDescription().replace("%EX%", exception.toString()));
throwEx = true;
}
if (throwEx) {
throw new CerberusEventException(msg);
}
return list;
}
Aggregations