.classpath | 1 modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java | 67 +++----- modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexEntry.java | 11 - modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexResultSetMapper.java | 5 modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java | 47 ++---- modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsTable.java | 21 ++ modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java | 45 ++--- modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java | 76 ++++------ 8 files changed, 138 insertions(+), 135 deletions(-)
New commits: commit 90d4bfba285ff84d974e2ce5bc07f9f1438c1345 Author: Stefan Negrea snegrea@redhat.com Date: Mon Dec 17 13:45:00 2012 -0600
Refactor tables (column family) names into an enum.
diff --git a/.classpath b/.classpath index 486b1b0..85d43a0 100644 --- a/.classpath +++ b/.classpath @@ -187,6 +187,7 @@ <classpathentry excluding="**" kind="src" path="modules/enterprise/agent/src/test/resources"/> <classpathentry kind="src" path="modules/enterprise/server/server-metrics/src/main/java"/> <classpathentry kind="src" path="modules/common/cassandra-common-itests/src/main/java"/> + <classpathentry kind="src" path="modules/enterprise/server/server-metrics/src/test/java"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> <classpathentry exported="true" kind="var" path="M2_REPO/org/jboss/integration/jboss-profileservice-spi/5.1.0.SP1/jboss-profileservice-spi-5.1.0.SP1.jar"/> <classpathentry exported="true" kind="var" path="M2_REPO/org/jboss/man/jboss-managed/2.1.1.GA/jboss-managed-2.1.1.GA.jar"/> diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java index bef3b14..9c5285f 100644 --- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java +++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java @@ -55,16 +55,6 @@ import org.rhq.core.domain.util.PageOrdering; */ public class MetricsDAO {
- public static final String METRICS_INDEX_TABLE = "metrics_index"; - - public static final String RAW_METRICS_TABLE = "raw_metrics"; - - public static final String ONE_HOUR_METRICS_TABLE = "one_hour_metrics"; - - public static final String SIX_HOUR_METRICS_TABLE = "six_hour_metrics"; - - public static final String TWENTY_FOUR_HOUR_METRICS_TABLE = "twenty_four_hour_metrics"; - // It looks like that there might be a bug in the DataStax driver that will prevent our // using prepared statements for range queries. See https://github.com/datastax/java-driver/issues/3 // for details. @@ -73,26 +63,26 @@ public class MetricsDAO {
private static final String RAW_METRICS_QUERY = "SELECT schedule_id, time, value " + - "FROM " + RAW_METRICS_TABLE + " " + + "FROM " + MetricsTable.RAW + " " + "WHERE schedule_id = ? AND time >= ? AND time < ?";
private static final String RAW_METRICS_WITH_METADATA_QUERY = "SELECT schedule_id, time, value, ttl(value), writetime(value) " + - "FROM " + RAW_METRICS_TABLE + " " + + "FROM " + MetricsTable.RAW + " " + "WHERE schedule_id = ? AND time >= ? AND time < ?";
private static final String INSERT_RAW_METRICS = - "INSERT INTO raw_metrics (schedule_id, time, value) " + + "INSERT INTO "+ MetricsTable.RAW +" (schedule_id, time, value) " + "VALUES (?, ?, ?) USING TTL ? AND TIMESTAMP ?";
private static final String METRICS_INDEX_QUERY = "SELECT time, schedule_id " + - "FROM " + METRICS_INDEX_TABLE + " " + + "FROM " + MetricsTable.INDEX + " " + "WHERE bucket = ? " + "ORDER BY time";
private static final String UPDATE_METRICS_INDEX = - "INSERT INTO " + METRICS_INDEX_TABLE + " (bucket, time, schedule_id, null_col) VALUES (?, ?, ?, ?)"; + "INSERT INTO " + MetricsTable.INDEX + " (bucket, time, schedule_id, null_col) VALUES (?, ?, ?, ?)";
private Session session;
@@ -122,11 +112,11 @@ public class MetricsDAO { } }
- public List<AggregatedNumericMetric> insertAggregates(String bucket, List<AggregatedNumericMetric> metrics, + public List<AggregatedNumericMetric> insertAggregates(MetricsTable table, List<AggregatedNumericMetric> metrics, int ttl) { List<AggregatedNumericMetric> updates = new ArrayList<AggregatedNumericMetric>(); try { - String cql = "INSERT INTO " + bucket + " (schedule_id, time, type, value) VALUES (?, ?, ?, ?) USING TTL " + + String cql = "INSERT INTO " + table + " (schedule_id, time, type, value) VALUES (?, ?, ?, ?) USING TTL " + ttl; PreparedStatement statement = session.prepare(cql);
@@ -155,9 +145,9 @@ public class MetricsDAO { try { List<RawNumericMetric> metrics = new ArrayList<RawNumericMetric>();
- String cql = "SELECT schedule_id, time, value FROM " + RAW_METRICS_TABLE + " WHERE schedule_id = " + - scheduleId + " AND time >= " + startTime.getMillis() + " AND time < " + endTime.getMillis() + - " ORDER BY time"; + String cql = "SELECT schedule_id, time, value FROM " + MetricsTable.RAW + " WHERE schedule_id = " + + scheduleId + " AND time >= " + startTime.getMillis() + " AND time < " + endTime.getMillis() + + " ORDER BY time";
ResultSet resultSet = session.execute(cql); ResultSetMapper<RawNumericMetric> resultSetMapper = new RawNumericMetricMapper(); @@ -174,7 +164,7 @@ public class MetricsDAO { try { List<RawNumericMetric> metrics = new ArrayList<RawNumericMetric>();
- String cql = "SELECT schedule_id, time, value FROM " + RAW_METRICS_TABLE + " WHERE schedule_id = " + + String cql = "SELECT schedule_id, time, value FROM " + MetricsTable.RAW + " WHERE schedule_id = " + scheduleId + " ORDER BY time " + ordering;
if (limit > 0) { @@ -202,7 +192,7 @@ public class MetricsDAO { try { ResultSet resultSet = session.execute( select("schedule_id", "time", "value", "ttl(value), writetime(value)") - .from(RAW_METRICS_TABLE) + .from(MetricsTable.RAW.toString()) .where( eq("schedule_id", scheduleId), gte("time", startTime.toDate()), @@ -243,7 +233,7 @@ public class MetricsDAO { // lt("time", endTime.toDate())) // .getQueryString();
- String cql = "SELECT schedule_id, time, value FROM " + RAW_METRICS_TABLE + " WHERE schedule_id IN (" + + String cql = "SELECT schedule_id, time, value FROM " + MetricsTable.RAW + " WHERE schedule_id IN (" + listToString(scheduleIds) + ") AND time >= " + startTime.getMillis() + " AND time <= " + endTime.getMillis(); ResultSet resultSet = session.execute(cql); @@ -259,11 +249,11 @@ public class MetricsDAO { } }
- public List<AggregatedNumericMetric> findAggregateMetrics(String bucket, int scheduleId) { + public List<AggregatedNumericMetric> findAggregateMetrics(MetricsTable table, int scheduleId) { try { String cql = "SELECT schedule_id, time, type, value " + - "FROM " + bucket + " " + + "FROM " + table + " " + "WHERE schedule_id = " + scheduleId + " " + "ORDER BY time, type"; List<AggregatedNumericMetric> metrics = new ArrayList<AggregatedNumericMetric>(); @@ -280,13 +270,13 @@ public class MetricsDAO { } }
- public List<AggregatedNumericMetric> findAggregateMetrics(String bucket, int scheduleId, DateTime startTime, + public List<AggregatedNumericMetric> findAggregateMetrics(MetricsTable table, int scheduleId, DateTime startTime, DateTime endTime) {
try { String cql = "SELECT schedule_id, time, type, value " + - "FROM " + bucket + " " + + "FROM " + table + " " + "WHERE schedule_id = " + scheduleId + " AND time >= " + startTime.getMillis() + " AND time < " + endTime.getMillis(); List<AggregatedNumericMetric> metrics = new ArrayList<AggregatedNumericMetric>(); @@ -303,12 +293,12 @@ public class MetricsDAO { } }
- public List<AggregatedNumericMetric> findAggregateMetrics(String bucket, List<Integer> scheduleIds, + public List<AggregatedNumericMetric> findAggregateMetrics(MetricsTable table, List<Integer> scheduleIds, DateTime startTime, DateTime endTime) { try { String cql = "SELECT schedule_id, time, type, value " + - "FROM " + bucket + " " + + "FROM " + table + " " + "WHERE schedule_id IN (" + listToString(scheduleIds) + ") AND time >= " + startTime.getMillis() + " AND time < " + endTime.getMillis(); List<AggregatedNumericMetric> metrics = new ArrayList<AggregatedNumericMetric>(); @@ -325,13 +315,14 @@ public class MetricsDAO { } }
- List<AggregatedNumericMetric> findAggregateMetricsWithMetadata(String bucket, int scheduleId, DateTime startTime, + List<AggregatedNumericMetric> findAggregateMetricsWithMetadata(MetricsTable table, int scheduleId, + DateTime startTime, DateTime endTime) {
try { String cql = "SELECT schedule_id, time, type, value, ttl(value), writetime(value) " + - "FROM " + bucket + " " + + "FROM " + table + " " + "WHERE schedule_id = " + scheduleId + " AND time >= " + startTime.getMillis() + " AND time < " + endTime.getMillis(); List<AggregatedNumericMetric> metrics = new ArrayList<AggregatedNumericMetric>(); @@ -348,13 +339,13 @@ public class MetricsDAO { } }
- public List<MetricsIndexEntry> findMetricsIndexEntries(String bucket) { + public List<MetricsIndexEntry> findMetricsIndexEntries(MetricsTable table) { try { PreparedStatement statement = session.prepare(METRICS_INDEX_QUERY); - BoundStatement boundStatement = statement.bind(bucket); + BoundStatement boundStatement = statement.bind(table); ResultSet resultSet = session.execute(boundStatement); List<MetricsIndexEntry> indexEntries = new ArrayList<MetricsIndexEntry>(); - ResultSetMapper<MetricsIndexEntry> resultSetMapper = new MetricsIndexResultSetMapper(bucket); + ResultSetMapper<MetricsIndexEntry> resultSetMapper = new MetricsIndexResultSetMapper(table);
for (Row row : resultSet) { indexEntries.add(resultSetMapper.map(row)); @@ -367,11 +358,11 @@ public class MetricsDAO { } }
- public void updateMetricsIndex(String bucket, Map<Integer, DateTime> updates) { + public void updateMetricsIndex(MetricsTable table, Map<Integer, DateTime> updates) { try { PreparedStatement statement = session.prepare(UPDATE_METRICS_INDEX); for (Integer scheduleId : updates.keySet()) { - BoundStatement boundStatement = statement.bind(bucket, updates.get(scheduleId).toDate(), scheduleId, + BoundStatement boundStatement = statement.bind(table, updates.get(scheduleId).toDate(), scheduleId, false); session.execute(boundStatement); } @@ -380,9 +371,9 @@ public class MetricsDAO { } }
- public void deleteMetricsIndexEntries(String table) { + public void deleteMetricsIndexEntries(MetricsTable table) { try { - String cql = "DELETE FROM " + METRICS_INDEX_TABLE + " WHERE bucket = '" + table + "'"; + String cql = "DELETE FROM " + MetricsTable.INDEX + " WHERE bucket = '" + table + "'"; session.execute(cql); } catch (NoHostAvailableException e) { throw new CQLException(e); diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexEntry.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexEntry.java index 63c93d0..9018ce3 100644 --- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexEntry.java +++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexEntry.java @@ -30,12 +30,13 @@ import java.util.Date; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat;
+ /** * @author John Sanda */ public class MetricsIndexEntry {
- private String bucket; + private MetricsTable bucket;
private int scheduleId;
@@ -44,24 +45,24 @@ public class MetricsIndexEntry { public MetricsIndexEntry () { }
- public MetricsIndexEntry(String bucket, Date time, int scheduleId) { + public MetricsIndexEntry(MetricsTable bucket, Date time, int scheduleId) { this.bucket = bucket; this.scheduleId = scheduleId; this.time = new DateTime(time); }
- public MetricsIndexEntry(String bucket, DateTime time, int scheduleId) { + public MetricsIndexEntry(MetricsTable bucket, DateTime time, int scheduleId) { this.bucket = bucket; this.scheduleId = scheduleId; this.time = time; }
- public String getBucket() { + public MetricsTable getBucket() {
return bucket; }
- public void setBucket(String bucket) { + public void setBucket(MetricsTable bucket) { this.bucket = bucket; }
diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexResultSetMapper.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexResultSetMapper.java index 33f4a0e..3a0db3e 100644 --- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexResultSetMapper.java +++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsIndexResultSetMapper.java @@ -30,14 +30,15 @@ import java.sql.SQLException;
import com.datastax.driver.core.Row;
+ /** * @author John Sanda */ public class MetricsIndexResultSetMapper implements ResultSetMapper<MetricsIndexEntry> {
- private String bucket; + private MetricsTable bucket;
- public MetricsIndexResultSetMapper(String bucket) { + public MetricsIndexResultSetMapper(MetricsTable bucket) { this.bucket = bucket; }
diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java index faa7fac..3772933 100644 --- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java +++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java @@ -27,9 +27,6 @@ package org.rhq.server.metrics;
import static org.rhq.core.domain.util.PageOrdering.DESC; import static org.rhq.server.metrics.DateTimeService.TWO_WEEKS; -import static org.rhq.server.metrics.MetricsDAO.ONE_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.SIX_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.TWENTY_FOUR_HOUR_METRICS_TABLE;
import java.math.BigDecimal; import java.math.MathContext; @@ -93,7 +90,7 @@ public class MetricsServer { return createRawComposites(metrics, beginTime, endTime); }
- String table = getTable(begin); + MetricsTable table = getTable(begin); List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(table, scheduleId, begin, new DateTime(endTime));
@@ -109,7 +106,7 @@ public class MetricsServer { return createRawComposites(metrics, beginTime, endTime); }
- String table = getTable(begin); + MetricsTable table = getTable(begin); List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(table, scheduleIds, begin, new DateTime(endTime));
@@ -124,7 +121,7 @@ public class MetricsServer { return createSummaryRawAggregate(metrics, beginTime); }
- String table = getTable(begin); + MetricsTable table = getTable(begin); List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(table, scheduleId, begin, new DateTime(endTime));
@@ -139,7 +136,7 @@ public class MetricsServer { return createSummaryRawAggregate(metrics, beginTime); }
- String table = getTable(begin); + MetricsTable table = getTable(begin); List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(table, scheduleIds, begin, new DateTime(endTime));
@@ -204,7 +201,7 @@ public class MetricsServer { for (MeasurementDataNumeric rawMetric : rawMetrics) { updates.put(rawMetric.getScheduleId(), new DateTime(rawMetric.getTimestamp()).hourOfDay().roundFloorCopy()); } - dao.updateMetricsIndex(ONE_HOUR_METRICS_TABLE, updates); + dao.updateMetricsIndex(MetricsTable.ONE_HOUR, updates); }
public void calculateAggregates() { @@ -226,25 +223,25 @@ public class MetricsServer {
List<AggregatedNumericMetric> updatedSchedules = aggregateRawData(); if (!updatedSchedules.isEmpty()) { - dao.deleteMetricsIndexEntries(ONE_HOUR_METRICS_TABLE); - updateMetricsIndex(SIX_HOUR_METRICS_TABLE, updatedSchedules, Minutes.minutes(60 * 6)); + dao.deleteMetricsIndexEntries(MetricsTable.ONE_HOUR); + updateMetricsIndex(MetricsTable.SIX_HOUR, updatedSchedules, Minutes.minutes(60 * 6)); }
- updatedSchedules = calculateAggregates(ONE_HOUR_METRICS_TABLE, SIX_HOUR_METRICS_TABLE, Minutes.minutes(60 * 6), + updatedSchedules = calculateAggregates(MetricsTable.ONE_HOUR, MetricsTable.SIX_HOUR, Minutes.minutes(60 * 6), DateTimeService.ONE_MONTH); if (!updatedSchedules.isEmpty()) { - dao.deleteMetricsIndexEntries(SIX_HOUR_METRICS_TABLE); - updateMetricsIndex(TWENTY_FOUR_HOUR_METRICS_TABLE, updatedSchedules, Hours.hours(24).toStandardMinutes()); + dao.deleteMetricsIndexEntries(MetricsTable.SIX_HOUR); + updateMetricsIndex(MetricsTable.TWENTY_FOUR_HOUR, updatedSchedules, Hours.hours(24).toStandardMinutes()); }
- updatedSchedules = calculateAggregates(SIX_HOUR_METRICS_TABLE, TWENTY_FOUR_HOUR_METRICS_TABLE, + updatedSchedules = calculateAggregates(MetricsTable.SIX_HOUR, MetricsTable.TWENTY_FOUR_HOUR, Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_YEAR); if (!updatedSchedules.isEmpty()) { - dao.deleteMetricsIndexEntries(TWENTY_FOUR_HOUR_METRICS_TABLE); + dao.deleteMetricsIndexEntries(MetricsTable.TWENTY_FOUR_HOUR); } }
- private void updateMetricsIndex(String bucket, List<AggregatedNumericMetric> metrics, Minutes interval) { + private void updateMetricsIndex(MetricsTable bucket, List<AggregatedNumericMetric> metrics, Minutes interval) { Map<Integer, DateTime> updates = new TreeMap<Integer, DateTime>(); for (AggregatedNumericMetric metric : metrics) { updates.put(metric.getScheduleId(), dateTimeService.getTimeSlice(new DateTime(metric.getTimestamp()), @@ -254,7 +251,7 @@ public class MetricsServer { }
private List<AggregatedNumericMetric> aggregateRawData() { - List<MetricsIndexEntry> indexEntries = dao.findMetricsIndexEntries(ONE_HOUR_METRICS_TABLE); + List<MetricsIndexEntry> indexEntries = dao.findMetricsIndexEntries(MetricsTable.ONE_HOUR); List<AggregatedNumericMetric> oneHourMetrics = new ArrayList<AggregatedNumericMetric>();
for (MetricsIndexEntry indexEntry : indexEntries) { @@ -267,7 +264,7 @@ public class MetricsServer { oneHourMetrics.add(aggregatedRaw); }
- List<AggregatedNumericMetric> updatedSchedules = dao.insertAggregates(ONE_HOUR_METRICS_TABLE, + List<AggregatedNumericMetric> updatedSchedules = dao.insertAggregates(MetricsTable.ONE_HOUR, oneHourMetrics, TWO_WEEKS); return updatedSchedules; } @@ -300,8 +297,8 @@ public class MetricsServer { return new AggregatedNumericMetric(0, avg, min, max, timestamp); }
- private List<AggregatedNumericMetric> calculateAggregates(String fromColumnFamily, String toColumnFamily, - Minutes nextInterval, int ttl) { + private List<AggregatedNumericMetric> calculateAggregates(MetricsTable fromColumnFamily, + MetricsTable toColumnFamily, Minutes nextInterval, int ttl) {
List<MetricsIndexEntry> indexEntries = dao.findMetricsIndexEntries(toColumnFamily); List<AggregatedNumericMetric> toMetrics = new ArrayList<AggregatedNumericMetric>(); @@ -354,14 +351,14 @@ public class MetricsServer { return new AggregatedNumericMetric(0, avg, min, max, timestamp); }
- private String getTable(DateTime begin) { - String table; + private MetricsTable getTable(DateTime begin) { + MetricsTable table; if (dateTimeService.isIn1HourDataRange(begin)) { - table = ONE_HOUR_METRICS_TABLE; + table = MetricsTable.ONE_HOUR; } else if (dateTimeService.isIn6HourDataRnage(begin)) { - table = SIX_HOUR_METRICS_TABLE; + table = MetricsTable.SIX_HOUR; } else { - table = TWENTY_FOUR_HOUR_METRICS_TABLE; + table = MetricsTable.TWENTY_FOUR_HOUR; } return table; } diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsTable.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsTable.java new file mode 100644 index 0000000..abcd196 --- /dev/null +++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsTable.java @@ -0,0 +1,21 @@ +package org.rhq.server.metrics; + +public enum MetricsTable { + + INDEX("metrics_index"), + RAW("raw_metrics"), + ONE_HOUR("one_hour_metrics"), + SIX_HOUR("six_hour_metrics"), + TWENTY_FOUR_HOUR("twenty_four_hour_metrics"); + + private final String tableName; + + private MetricsTable(String tableName) { + this.tableName = tableName; + } + + @Override + public String toString() { + return this.tableName; + } +} \ No newline at end of file diff --git a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java index 90f09d7..140bc4d 100644 --- a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java +++ b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java @@ -27,11 +27,6 @@ package org.rhq.server.metrics;
import static java.util.Arrays.asList; import static org.rhq.core.domain.util.PageOrdering.DESC; -import static org.rhq.server.metrics.MetricsDAO.METRICS_INDEX_TABLE; -import static org.rhq.server.metrics.MetricsDAO.ONE_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.RAW_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.SIX_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.TWENTY_FOUR_HOUR_METRICS_TABLE; import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -70,11 +65,11 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@BeforeMethod public void resetDB() throws Exception { - session.execute("TRUNCATE " + RAW_METRICS_TABLE); - session.execute("TRUNCATE " + ONE_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + SIX_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + TWENTY_FOUR_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + METRICS_INDEX_TABLE); + session.execute("TRUNCATE " + MetricsTable.RAW); + session.execute("TRUNCATE " + MetricsTable.ONE_HOUR); + session.execute("TRUNCATE " + MetricsTable.SIX_HOUR); + session.execute("TRUNCATE " + MetricsTable.TWENTY_FOUR_HOUR); + session.execute("TRUNCATE " + MetricsTable.INDEX); }
@Test(enabled = ENABLED) @@ -188,7 +183,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest { new AggregatedNumericMetric(456, 2.0, 2.0, 2.0, hour0.getMillis()) ); int ttl = Hours.ONE.getHours(); - List<AggregatedNumericMetric> actualUpdates = dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, ttl); + List<AggregatedNumericMetric> actualUpdates = dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, ttl); List<AggregatedNumericMetric> expectedUpdates = metrics;
assertEquals(actualUpdates, expectedUpdates, "The updates do not match the expected values"); @@ -197,12 +192,12 @@ public class MetricsDAOTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, 3.0, 1.0, 8.0, hour0.getMillis()), new AggregatedNumericMetric(scheduleId, 4.0, 2.0, 10.0, hour0.plusHours(1).getMillis()) ); - List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(ONE_HOUR_METRICS_TABLE, scheduleId); + List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(MetricsTable.ONE_HOUR, scheduleId); assertEquals(actual, expected, "Failed to find one hour metrics");
// verify that the TTL is set List<AggregatedNumericMetric> actualMetricsWithMetadata = dao.findAggregateMetricsWithMetadata( - ONE_HOUR_METRICS_TABLE, scheduleId, hour0, hour0().plusHours(1).plusSeconds(1)); + MetricsTable.ONE_HOUR, scheduleId, hour0, hour0().plusHours(1).plusSeconds(1)); assertAggrgateTTLSet(actualMetricsWithMetadata); }
@@ -221,8 +216,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest { ); int ttl = Hours.ONE.getHours();
- dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, ttl); - List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(ONE_HOUR_METRICS_TABLE, + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, ttl); + List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(MetricsTable.ONE_HOUR, asList(schedule1, schedule2), hour0().plusHours(1), hour0().plusHours(2)); List<AggregatedNumericMetric> expected = asList( new AggregatedNumericMetric(schedule1, 2.1, 2.1, 2.1, hour0().plusHours(1).getMillis()), @@ -245,7 +240,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduledId, 5.0, 5.0, 5.0, hour0.plusHours(3).getMillis()), new AggregatedNumericMetric(nextScheduleId, 1.0, 1.0, 1.0, hour0.plusHours(1).getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, ttl); + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, ttl);
DateTime startTime = hour0.plusHours(1); DateTime endTime = hour0.plusHours(3); @@ -254,7 +249,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduledId, 4.0, 4.0, 4.0, hour0.plusHours(2).getMillis()) );
- List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(ONE_HOUR_METRICS_TABLE, scheduledId, startTime, + List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(MetricsTable.ONE_HOUR, scheduledId, startTime, endTime);
assertEquals(actual, expected, "Failed to find one hour metrics for date range"); @@ -270,11 +265,11 @@ public class MetricsDAOTest extends CassandraIntegrationTest { updates.put(scheduleId1, hour0); updates.put(scheduleId2, hour0);
- dao.updateMetricsIndex(ONE_HOUR_METRICS_TABLE, updates); - List<MetricsIndexEntry> actual = dao.findMetricsIndexEntries(ONE_HOUR_METRICS_TABLE); + dao.updateMetricsIndex(MetricsTable.ONE_HOUR, updates); + List<MetricsIndexEntry> actual = dao.findMetricsIndexEntries(MetricsTable.ONE_HOUR);
- List<MetricsIndexEntry> expected = asList(new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, scheduleId1), - new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, scheduleId2)); + List<MetricsIndexEntry> expected = asList(new MetricsIndexEntry(MetricsTable.ONE_HOUR, hour0, scheduleId1), + new MetricsIndexEntry(MetricsTable.ONE_HOUR, hour0, scheduleId2)); assertCollectionMatchesNoOrder(expected, actual, "Failed to update or retrieve metrics index entries"); }
@@ -288,11 +283,11 @@ public class MetricsDAOTest extends CassandraIntegrationTest { updates.put(scheduleId1, hour0().plusHours(1)); updates.put(scheduleId2, hour0().plusHours(1));
- dao.updateMetricsIndex(ONE_HOUR_METRICS_TABLE, updates); - dao.deleteMetricsIndexEntries(ONE_HOUR_METRICS_TABLE); + dao.updateMetricsIndex(MetricsTable.ONE_HOUR, updates); + dao.deleteMetricsIndexEntries(MetricsTable.ONE_HOUR);
- List<MetricsIndexEntry> index = dao.findMetricsIndexEntries(ONE_HOUR_METRICS_TABLE); - assertEquals(index.size(), 0, "Expected index for " + ONE_HOUR_METRICS_TABLE + " to be empty but found " + + List<MetricsIndexEntry> index = dao.findMetricsIndexEntries(MetricsTable.ONE_HOUR); + assertEquals(index.size(), 0, "Expected index for " + MetricsTable.ONE_HOUR + " to be empty but found " + index); }
diff --git a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java index be841b2..0c478eb 100644 --- a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java +++ b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java @@ -27,11 +27,6 @@ package org.rhq.server.metrics;
import static java.util.Arrays.asList; import static org.joda.time.DateTime.now; -import static org.rhq.server.metrics.MetricsDAO.METRICS_INDEX_TABLE; -import static org.rhq.server.metrics.MetricsDAO.ONE_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.RAW_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.SIX_HOUR_METRICS_TABLE; -import static org.rhq.server.metrics.MetricsDAO.TWENTY_FOUR_HOUR_METRICS_TABLE; import static org.rhq.server.metrics.MetricsServer.RAW_TTL; import static org.rhq.server.metrics.MetricsServer.divide; import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder; @@ -99,11 +94,11 @@ public class MetricsServerTest extends CassandraIntegrationTest { }
private void purgeDB() throws Exception { - session.execute("TRUNCATE " + RAW_METRICS_TABLE); - session.execute("TRUNCATE " + ONE_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + SIX_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + TWENTY_FOUR_HOUR_METRICS_TABLE); - session.execute("TRUNCATE " + METRICS_INDEX_TABLE); + session.execute("TRUNCATE " + MetricsTable.RAW); + session.execute("TRUNCATE " + MetricsTable.ONE_HOUR); + session.execute("TRUNCATE " + MetricsTable.SIX_HOUR); + session.execute("TRUNCATE " + MetricsTable.TWENTY_FOUR_HOUR); + session.execute("TRUNCATE " + MetricsTable.INDEX); }
@Test//(enabled = ENABLED) @@ -134,10 +129,10 @@ public class MetricsServerTest extends CassandraIntegrationTest { assertEquals(actual, expected, "Failed to retrieve raw metric data"); assertColumnMetadataEquals(scheduleId, hour0.plusHours(4), hour0.plusHours(5), RAW_TTL, timestamp);
- List<MetricsIndexEntry> expectedIndex = asList(new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, + List<MetricsIndexEntry> expectedIndex = asList(new MetricsIndexEntry(MetricsTable.ONE_HOUR, hour0.plusHours(4), scheduleId)); - assertMetricsIndexEquals(ONE_HOUR_METRICS_TABLE, expectedIndex, "Failed to update index for " + - ONE_HOUR_METRICS_TABLE); + assertMetricsIndexEquals(MetricsTable.ONE_HOUR, expectedIndex, "Failed to update index for " + + MetricsTable.ONE_HOUR); }
@Test//(enabled = ENABLED) @@ -206,11 +201,11 @@ public class MetricsServerTest extends CassandraIntegrationTest {
// verify that the 6 hour index is updated DateTimeService dateTimeService = new DateTimeService(); - List<MetricsIndexEntry> expected6HourIndex = asList(new MetricsIndexEntry(SIX_HOUR_METRICS_TABLE, + List<MetricsIndexEntry> expected6HourIndex = asList(new MetricsIndexEntry(MetricsTable.SIX_HOUR, dateTimeService.getTimeSlice(hour9, Minutes.minutes(60 * 6)), scheduleId));
- assertMetricsIndexEquals(SIX_HOUR_METRICS_TABLE, expected6HourIndex, "Failed to update index for " + - SIX_HOUR_METRICS_TABLE); + assertMetricsIndexEquals(MetricsTable.SIX_HOUR, expected6HourIndex, "Failed to update index for " + + MetricsTable.SIX_HOUR);
// The 6 hour data should not get aggregated since the current 6 hour time slice // has not passed yet. More specifically, the aggregation job is running at 09:00 @@ -248,12 +243,12 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, avg1, min1, max1, hour7.getMillis()), new AggregatedNumericMetric(scheduleId, avg2, min2, max2, hour8.getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, oneHourMetrics, DateTimeService.TWO_WEEKS); + dao.insertAggregates(MetricsTable.ONE_HOUR, oneHourMetrics, DateTimeService.TWO_WEEKS);
// update the 6 hour queue Map<Integer, DateTime> indexUpdates = new HashMap<Integer, DateTime>(); indexUpdates.put(scheduleId, hour6); - dao.updateMetricsIndex(SIX_HOUR_METRICS_TABLE, indexUpdates); + dao.updateMetricsIndex(MetricsTable.SIX_HOUR, indexUpdates);
// execute the system under test metricsServer.setCurrentHour(hour12); @@ -268,9 +263,9 @@ public class MetricsServerTest extends CassandraIntegrationTest { assert6HourMetricsIndexEmpty(scheduleId);
// verify that the 24 hour queue is updated - assertMetricsIndexEquals(TWENTY_FOUR_HOUR_METRICS_TABLE, asList(new MetricsIndexEntry( - TWENTY_FOUR_HOUR_METRICS_TABLE, hour0, scheduleId)), "Failed to update index for " + - TWENTY_FOUR_HOUR_METRICS_TABLE); + assertMetricsIndexEquals(MetricsTable.TWENTY_FOUR_HOUR, asList(new MetricsIndexEntry( + MetricsTable.TWENTY_FOUR_HOUR, hour0, scheduleId)), "Failed to update index for " + + MetricsTable.TWENTY_FOUR_HOUR);
// verify that 6 hour data is not rolled up into the 24 hour bucket assert24HourDataEmpty(scheduleId); @@ -299,12 +294,12 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, avg1, min1, max1, hour6.getMillis()), new AggregatedNumericMetric(scheduleId, avg2, min2, max2, hour12.getMillis()) ); - dao.insertAggregates(SIX_HOUR_METRICS_TABLE, sixHourMetrics, DateTimeService.ONE_MONTH); + dao.insertAggregates(MetricsTable.SIX_HOUR, sixHourMetrics, DateTimeService.ONE_MONTH);
// update the 24 queue Map<Integer, DateTime> indexUpdates = new HashMap<Integer, DateTime>(); indexUpdates.put(scheduleId, hour0); - dao.updateMetricsIndex(TWENTY_FOUR_HOUR_METRICS_TABLE, indexUpdates); + dao.updateMetricsIndex(MetricsTable.TWENTY_FOUR_HOUR, indexUpdates);
// execute the system under test metricsServer.setCurrentHour(hour24); @@ -430,7 +425,7 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, 5.0, 4.0, 6.0, bucket59Time.plusHours(1).getMillis()), new AggregatedNumericMetric(scheduleId, 3.0, 3.0, 3.0, bucket59Time.plusHours(2).getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, DateTimeService.TWO_WEEKS); + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, DateTimeService.TWO_WEEKS);
AggregatedNumericMetric actual = metricsServer.getSummaryAggregate(scheduleId, beginTime.getMillis(), endTime.getMillis()); @@ -459,7 +454,7 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId1, 5.1, 5.1, 5.1, bucket59Time.getMillis()), new AggregatedNumericMetric(scheduleId2, 5.2, 5.2, 5.2, bucket59Time.getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, DateTimeService.TWO_WEEKS); + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, DateTimeService.TWO_WEEKS);
AggregatedNumericMetric actual = metricsServer.getSummaryAggregate(asList(scheduleId1, scheduleId2), beginTime.getMillis(), endTime.getMillis()); @@ -590,7 +585,7 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, 5.0, 4.0, 6.0, bucket59Time.plusHours(1).getMillis()), new AggregatedNumericMetric(scheduleId, 3.0, 3.0, 3.0, bucket59Time.plusHours(2).getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, DateTimeService.TWO_WEEKS); + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, DateTimeService.TWO_WEEKS);
List<MeasurementDataNumericHighLowComposite> actualData = metricsServer.findDataForResource(scheduleId, beginTime.getMillis(), endTime.getMillis()); @@ -634,7 +629,7 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId1, 4.1, 4.1, 4.1, bucket59Time.getMillis()), new AggregatedNumericMetric(scheduleId2, 4.2, 4.2, 4.2, bucket59Time.getMillis()) ); - dao.insertAggregates(ONE_HOUR_METRICS_TABLE, metrics, DateTimeService.TWO_WEEKS); + dao.insertAggregates(MetricsTable.ONE_HOUR, metrics, DateTimeService.TWO_WEEKS);
List<MeasurementDataNumericHighLowComposite> actual = metricsServer.findDataForGroup( asList(scheduleId1, scheduleId2), beginTime.getMillis(), endTime.getMillis()); @@ -671,7 +666,7 @@ public class MetricsServerTest extends CassandraIntegrationTest { new AggregatedNumericMetric(scheduleId, 5.0, 4.0, 6.0, bucket59Time.plusHours(1).getMillis()), new AggregatedNumericMetric(scheduleId, 3.0, 3.0, 3.0, bucket59Time.plusHours(2).getMillis()) ); - dao.insertAggregates(SIX_HOUR_METRICS_TABLE, metrics, DateTimeService.ONE_MONTH); + dao.insertAggregates(MetricsTable.SIX_HOUR, metrics, DateTimeService.ONE_MONTH);
List<MeasurementDataNumericHighLowComposite> actualData = metricsServer.findDataForResource(scheduleId, beginTime.getMillis(), endTime.getMillis()); @@ -704,57 +699,58 @@ public class MetricsServerTest extends CassandraIntegrationTest { } }
- private void assertMetricsIndexEquals(String columnFamily, List<MetricsIndexEntry> expected, String msg) { + private void assertMetricsIndexEquals(MetricsTable columnFamily, List<MetricsIndexEntry> expected, String msg) { List<MetricsIndexEntry> actual = dao.findMetricsIndexEntries(columnFamily); assertCollectionMatchesNoOrder("Failed to retrieve raw metric data", expected, actual, msg + ": " + columnFamily + " index not match expected values."); }
private void assert1HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) { - assertMetricDataEquals(ONE_HOUR_METRICS_TABLE, scheduleId, expected); + assertMetricDataEquals(MetricsTable.ONE_HOUR, scheduleId, expected); }
private void assert6HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) { - assertMetricDataEquals(SIX_HOUR_METRICS_TABLE, scheduleId, expected); + assertMetricDataEquals(MetricsTable.SIX_HOUR, scheduleId, expected); }
private void assert24HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) { - assertMetricDataEquals(TWENTY_FOUR_HOUR_METRICS_TABLE, scheduleId, expected); + assertMetricDataEquals(MetricsTable.TWENTY_FOUR_HOUR, scheduleId, expected); }
- private void assertMetricDataEquals(String columnFamily, int scheduleId, List<AggregatedNumericMetric> expected) { + private void assertMetricDataEquals(MetricsTable columnFamily, int scheduleId, + List<AggregatedNumericMetric> expected) { List<AggregatedNumericMetric> actual = dao.findAggregateMetrics(columnFamily, scheduleId); assertCollectionMatchesNoOrder(expected, actual, "Metric data for schedule id " + scheduleId + " in table " + columnFamily + " does not match expected values"); }
private void assert6HourDataEmpty(int scheduleId) { - assertMetricDataEmpty(scheduleId, SIX_HOUR_METRICS_TABLE); + assertMetricDataEmpty(scheduleId, MetricsTable.SIX_HOUR); }
private void assert24HourDataEmpty(int scheduleId) { - assertMetricDataEmpty(scheduleId, TWENTY_FOUR_HOUR_METRICS_TABLE); + assertMetricDataEmpty(scheduleId, MetricsTable.TWENTY_FOUR_HOUR); }
- private void assertMetricDataEmpty(int scheduleId, String columnFamily) { + private void assertMetricDataEmpty(int scheduleId, MetricsTable columnFamily) { List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(columnFamily, scheduleId); assertEquals(metrics.size(), 0, "Expected " + columnFamily + " to be empty for schedule id " + scheduleId + " but found " + metrics); }
private void assert1HourMetricsIndexEmpty(int scheduleId) { - assertMetricsIndexEmpty(scheduleId, ONE_HOUR_METRICS_TABLE); + assertMetricsIndexEmpty(scheduleId, MetricsTable.ONE_HOUR); }
private void assert6HourMetricsIndexEmpty(int scheduleId) { - assertMetricsIndexEmpty(scheduleId, SIX_HOUR_METRICS_TABLE); + assertMetricsIndexEmpty(scheduleId, MetricsTable.SIX_HOUR); }
private void assert24HourMetricsIndexEmpty(int scheduleId) { - assertMetricsIndexEmpty(scheduleId, TWENTY_FOUR_HOUR_METRICS_TABLE); + assertMetricsIndexEmpty(scheduleId, MetricsTable.TWENTY_FOUR_HOUR); }
- private void assertMetricsIndexEmpty(int scheduleId, String table) { + private void assertMetricsIndexEmpty(int scheduleId, MetricsTable table) { List<MetricsIndexEntry> index = dao.findMetricsIndexEntries(table); assertEquals(index.size(), 0, "Expected metrics index for " + table + " to be empty but found " + index); }
rhq-commits@lists.fedorahosted.org