Search in sources :

Example 66 with CallableStatement

use of java.sql.CallableStatement in project ats-framework by Axway.

the class DbReadAccess method getCheckpointStatisticDescriptions.

public List<StatisticDescription> getCheckpointStatisticDescriptions(float timeOffset, String testcaseIds, Map<String, String> testcaseAliases) throws DatabaseAccessException {
    List<StatisticDescription> statisticDescriptions = new ArrayList<StatisticDescription>();
    String sqlLog = new SqlRequestFormatter().add("fdate", formatDateFromEpoch(timeOffset)).add("testcase ids", testcaseIds).format();
    Connection connection = getConnection();
    CallableStatement callableStatement = null;
    ResultSet rs = null;
    try {
        callableStatement = connection.prepareCall("{ call sp_get_checkpoint_statistic_descriptions(?, ?) }");
        callableStatement.setString(1, formatDateFromEpoch(timeOffset));
        callableStatement.setString(2, testcaseIds);
        rs = callableStatement.executeQuery();
        int numberRecords = 0;
        while (rs.next()) {
            StatisticDescription statisticDescription = new StatisticDescription();
            statisticDescription.testcaseId = rs.getInt("testcaseId");
            // if user has provided testcase alias - use it instead the original testcase name
            if (testcaseAliases != null) {
                statisticDescription.testcaseName = testcaseAliases.get(String.valueOf(statisticDescription.testcaseId));
            }
            if (statisticDescription.testcaseName == null) {
                statisticDescription.testcaseName = rs.getString("testcaseName");
            }
            statisticDescription.testcaseStarttime = rs.getInt("testcaseStarttime");
            // Checkpoints will be collected and displayed for testcase
            statisticDescription.machineId = 0;
            statisticDescription.machineName = MACHINE_NAME_FOR_ATS_AGENTS;
            statisticDescription.queueName = rs.getString("queueName");
            statisticDescription.numberMeasurements = rs.getInt("statsNumberMeasurements");
            statisticDescription.statisticName = rs.getString("name");
            // "statsUnit" field is null for checkpoint statistics, because the action response times are always measured in "ms"
            statisticDescription.unit = "ms";
            statisticDescriptions.add(statisticDescription);
            numberRecords++;
        }
        logQuerySuccess(sqlLog, "system statistic descriptions", numberRecords);
    } catch (Exception e) {
        throw new DatabaseAccessException("Error when " + sqlLog, e);
    } finally {
        DbUtils.closeResultSet(rs);
        DbUtils.close(connection, callableStatement);
    }
    return statisticDescriptions;
}
Also used : StatisticDescription(com.axway.ats.log.autodb.entities.StatisticDescription) CallableStatement(java.sql.CallableStatement) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) DbConnection(com.axway.ats.core.dbaccess.DbConnection) ResultSet(java.sql.ResultSet) Checkpoint(com.axway.ats.log.autodb.entities.Checkpoint) SQLException(java.sql.SQLException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException)

Example 67 with CallableStatement

use of java.sql.CallableStatement in project ats-framework by Axway.

the class DbReadAccess method getScenariosCount.

public int getScenariosCount(String whereClause) throws DatabaseAccessException {
    String sqlLog = new SqlRequestFormatter().add("where", whereClause).format();
    Connection connection = getConnection();
    CallableStatement callableStatement = null;
    ResultSet rs = null;
    try {
        callableStatement = connection.prepareCall("{ call sp_get_scenarios_count(?) }");
        callableStatement.setString(1, whereClause);
        rs = callableStatement.executeQuery();
        int scenariosCount = 0;
        while (rs.next()) {
            scenariosCount = rs.getInt("scenariosCount");
            logQuerySuccess(sqlLog, "scenarios", scenariosCount);
            break;
        }
        return scenariosCount;
    } catch (Exception e) {
        throw new DatabaseAccessException("Error when " + sqlLog, e);
    } finally {
        DbUtils.closeResultSet(rs);
        DbUtils.close(connection, callableStatement);
    }
}
Also used : CallableStatement(java.sql.CallableStatement) Connection(java.sql.Connection) DbConnection(com.axway.ats.core.dbaccess.DbConnection) ResultSet(java.sql.ResultSet) Checkpoint(com.axway.ats.log.autodb.entities.Checkpoint) SQLException(java.sql.SQLException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException)

Example 68 with CallableStatement

use of java.sql.CallableStatement in project ats-framework by Axway.

the class DbReadAccess method getTestcases.

public List<Testcase> getTestcases(int startRecord, int recordsCount, String whereClause, String sortColumn, boolean ascending, boolean dateFormatNoYear) throws DatabaseAccessException {
    List<Testcase> testcases = new ArrayList<Testcase>();
    String sqlLog = new SqlRequestFormatter().add("start record", startRecord).add("records", recordsCount).add("where", whereClause).add("sort by", sortColumn).add("asc", ascending).format();
    Connection connection = getConnection();
    CallableStatement callableStatement = null;
    ResultSet rs = null;
    try {
        callableStatement = connection.prepareCall("{ call sp_get_testcases(?, ?, ?, ?, ?) }");
        callableStatement.setString(1, String.valueOf(startRecord));
        callableStatement.setString(2, String.valueOf(recordsCount));
        callableStatement.setString(3, whereClause);
        callableStatement.setString(4, sortColumn);
        callableStatement.setString(5, (ascending ? "ASC" : "DESC"));
        int numberRecords = 0;
        rs = callableStatement.executeQuery();
        while (rs.next()) {
            Testcase testcase = new Testcase();
            testcase.testcaseId = rs.getString("testcaseId");
            testcase.scenarioId = rs.getString("scenarioId");
            testcase.suiteId = rs.getString("suiteId");
            testcase.name = rs.getString("name");
            if (dateFormatNoYear) {
                testcase.dateStart = formatDateNoYear(rs.getTimestamp("dateStart"));
                testcase.dateEnd = formatDateNoYear(rs.getTimestamp("dateEnd"));
            } else {
                testcase.dateStart = formatDate(rs.getTimestamp("dateStart"));
                testcase.dateEnd = formatDate(rs.getTimestamp("dateEnd"));
            }
            int duration = rs.getInt("duration");
            if (duration < 0) {
                // this may happen when the test case is not ended and the time of the log server
                // is behind with the time of the test executor host
                duration = 0;
            }
            testcase.duration = formatTimeDiffereceFromSecondsToString(duration);
            testcase.result = rs.getInt("result");
            /*
                 *   -- 0 FAILED
                 *   -- 1 PASSED
                 *   -- 2 SKIPPED
                 *   -- 4 RUNNING
                 */
            switch(testcase.result) {
                case 0:
                    testcase.state = "FAILED";
                    break;
                case 1:
                    testcase.state = "PASSED";
                    break;
                case 2:
                    testcase.state = "SKIPPED";
                    break;
                case 4:
                    testcase.state = "RUNNING";
                    break;
                default:
                    //TODO: add warning
                    testcase.state = "unknown";
            }
            testcase.userNote = rs.getString("userNote");
            testcases.add(testcase);
            numberRecords++;
        }
        logQuerySuccess(sqlLog, "test cases", numberRecords);
    } catch (Exception e) {
        throw new DatabaseAccessException("Error when " + sqlLog, e);
    } finally {
        DbUtils.closeResultSet(rs);
        DbUtils.close(connection, callableStatement);
    }
    return testcases;
}
Also used : Testcase(com.axway.ats.log.autodb.entities.Testcase) CallableStatement(java.sql.CallableStatement) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) DbConnection(com.axway.ats.core.dbaccess.DbConnection) ResultSet(java.sql.ResultSet) Checkpoint(com.axway.ats.log.autodb.entities.Checkpoint) SQLException(java.sql.SQLException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException)

Example 69 with CallableStatement

use of java.sql.CallableStatement in project ats-framework by Axway.

the class DbReadAccess method getCheckpointAggregatedStatistics.

public List<Statistic> getCheckpointAggregatedStatistics(float timeOffset, String testcaseIds, String actionNames, Set<String> expectedSingleActionUIDs, Set<String> expectedCombinedActionUIDs, int interval, int mode) throws DatabaseAccessException {
    List<Statistic> allStatistics = new ArrayList<Statistic>();
    String sqlLog = new SqlRequestFormatter().add("testcase ids", testcaseIds).add("fdate", formatDateFromEpoch(timeOffset)).add("checkpoint names", actionNames).add("inverval (seconds)", interval).add("mode (AVG-0001,SUM-0010,TOTALS-0100,COUNT-1000)", mode).format();
    Map<String, Integer> fakeStatisticIds = new HashMap<String, Integer>();
    /*
         * The DB does not contain combined statistics, so we must create them.
         * All values of statistic with same name and timestamp are summed into 1 statistic
         */
    Map<String, Statistic> combinedStatistics = new HashMap<String, Statistic>();
    Connection connection = getConnection();
    CallableStatement callableStatement = null;
    ResultSet rs = null;
    try {
        callableStatement = connection.prepareCall("{ call sp_get_checkpoint_aggregated_statistics(?, ?, ?, ?, ?) }");
        callableStatement.setString(1, formatDateFromEpoch(timeOffset));
        callableStatement.setString(2, testcaseIds);
        callableStatement.setString(3, actionNames);
        callableStatement.setInt(4, interval);
        callableStatement.setInt(5, mode);
        int numberRecords = 0;
        Map<String, Float> totalSumValues = new HashMap<String, Float>();
        rs = callableStatement.executeQuery();
        while (rs.next()) {
            Statistic statistic = new Statistic();
            statistic.name = rs.getString("statsName");
            statistic.parentName = rs.getString("queueName");
            // "statsUnit" field is null for checkpoint statistics, because the action response times are always measured in "ms"
            statistic.unit = "ms";
            statistic.avgValue = rs.getFloat("avgValue");
            statistic.sumValue = rs.getFloat("sumValue");
            statistic.countValue = rs.getFloat("countValue");
            if (StatisticAggregatedType.isTotals(mode)) {
                // total sum value
                float totalSumValue = statistic.sumValue;
                if (totalSumValues.containsKey(statistic.name)) {
                    totalSumValue += totalSumValues.get(statistic.name);
                }
                totalSumValues.put(statistic.name, totalSumValue);
                statistic.totalValue = totalSumValue;
            }
            statistic.timestamp = rs.getLong("timestamp");
            // Checkpoints will be collected and displayed for testcase
            statistic.machineId = 0;
            statistic.testcaseId = rs.getInt("testcaseId");
            statistic.statisticTypeId = getStatisticFakeId(START_FAKE_ID_VALUE_FOR_AGGREGATED_CHECKPOINTS, fakeStatisticIds, statistic);
            // add to single statistics
            if (expectedSingleActionUIDs.contains(statistic.getUid())) {
                allStatistics.add(statistic);
            }
            // add to combined statistics
            if (expectedCombinedActionUIDs.contains(statistic.getCombinedStatisticUid())) {
                String statisticTempKey = statistic.timestamp + "->" + statistic.name;
                Statistic combinedStatistic = combinedStatistics.get(statisticTempKey);
                if (combinedStatistic == null) {
                    // create a new combined statistic
                    combinedStatistic = new Statistic();
                    combinedStatistic.name = statistic.name;
                    combinedStatistic.parentName = Statistic.COMBINED_STATISTICS_CONTAINER;
                    combinedStatistic.unit = statistic.unit;
                    combinedStatistic.timestamp = statistic.timestamp;
                    combinedStatistic.machineId = statistic.machineId;
                    combinedStatistic.testcaseId = statistic.testcaseId;
                    combinedStatistic.statisticTypeId = getStatisticFakeId(START_FAKE_ID_VALUE_FOR_AGGREGATED_CHECKPOINTS, fakeStatisticIds, combinedStatistic);
                    combinedStatistics.put(statisticTempKey, combinedStatistic);
                }
                // calculate the combined value
                combinedStatistic.avgValue = combinedStatistic.avgValue + statistic.avgValue;
                combinedStatistic.sumValue = combinedStatistic.sumValue + statistic.sumValue;
                combinedStatistic.countValue = combinedStatistic.countValue + statistic.countValue;
                combinedStatistic.totalValue = combinedStatistic.totalValue + statistic.totalValue;
            }
            numberRecords++;
        }
        if (combinedStatistics.size() > 0) {
            // sort the combined statistics by their timestamps
            List<Statistic> sortedStatistics = new ArrayList<Statistic>(combinedStatistics.values());
            Collections.sort(sortedStatistics, new Comparator<Statistic>() {

                @Override
                public int compare(Statistic stat1, Statistic stat2) {
                    return (int) (stat1.timestamp - stat2.timestamp);
                }
            });
            // add the combined statistics to the others
            allStatistics.addAll(sortedStatistics);
        }
        logQuerySuccess(sqlLog, "checkpoint aggregated statistics", numberRecords);
    } catch (Exception e) {
        throw new DatabaseAccessException("Error when " + sqlLog, e);
    } finally {
        DbUtils.closeResultSet(rs);
        DbUtils.close(connection, callableStatement);
    }
    return allStatistics;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) DbConnection(com.axway.ats.core.dbaccess.DbConnection) Checkpoint(com.axway.ats.log.autodb.entities.Checkpoint) SQLException(java.sql.SQLException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException) Statistic(com.axway.ats.log.autodb.entities.Statistic) CallableStatement(java.sql.CallableStatement) ResultSet(java.sql.ResultSet) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException)

Example 70 with CallableStatement

use of java.sql.CallableStatement in project ats-framework by Axway.

the class DbReadAccess method getSuiteMessagesCount.

public int getSuiteMessagesCount(String whereClause) throws DatabaseAccessException {
    String sqlLog = new SqlRequestFormatter().add("where", whereClause).format();
    Connection connection = getConnection();
    CallableStatement callableStatement = null;
    ResultSet rs = null;
    try {
        callableStatement = connection.prepareCall("{ call sp_get_suite_messages_count(?) }");
        callableStatement.setString(1, whereClause);
        rs = callableStatement.executeQuery();
        int messagesCount = 0;
        if (rs.next()) {
            messagesCount = rs.getInt("messagesCount");
        }
        logQuerySuccess(sqlLog, "suite messages count", messagesCount);
        return messagesCount;
    } catch (Exception e) {
        throw new DatabaseAccessException("Error when " + sqlLog, e);
    } finally {
        DbUtils.closeResultSet(rs);
        DbUtils.close(connection, callableStatement);
    }
}
Also used : CallableStatement(java.sql.CallableStatement) Connection(java.sql.Connection) DbConnection(com.axway.ats.core.dbaccess.DbConnection) ResultSet(java.sql.ResultSet) Checkpoint(com.axway.ats.log.autodb.entities.Checkpoint) SQLException(java.sql.SQLException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException) DatabaseAccessException(com.axway.ats.log.autodb.exceptions.DatabaseAccessException)

Aggregations

CallableStatement (java.sql.CallableStatement)273 SQLException (java.sql.SQLException)138 Connection (java.sql.Connection)125 ResultSet (java.sql.ResultSet)60 DatabaseAccessException (com.axway.ats.log.autodb.exceptions.DatabaseAccessException)45 DbConnection (com.axway.ats.core.dbaccess.DbConnection)28 Checkpoint (com.axway.ats.log.autodb.entities.Checkpoint)22 ArrayList (java.util.ArrayList)22 PreparedStatement (java.sql.PreparedStatement)21 CouldntSaveDataException (com.google.security.zynamics.binnavi.Database.Exceptions.CouldntSaveDataException)20 Timestamp (java.sql.Timestamp)18 Test (org.junit.Test)16 CouldntDeleteException (com.google.security.zynamics.binnavi.Database.Exceptions.CouldntDeleteException)15 Statement (java.sql.Statement)14 HashMap (java.util.HashMap)10 CConnection (com.google.security.zynamics.binnavi.Database.CConnection)8 MockCallableStatement (com.alibaba.druid.mock.MockCallableStatement)7 MaybeNullException (com.google.security.zynamics.binnavi.Exceptions.MaybeNullException)6 BigInteger (java.math.BigInteger)6 OracleCallableStatement (oracle.jdbc.OracleCallableStatement)6