modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
| 73 ++----
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java
| 116 +++-------
2 files changed, 63 insertions(+), 126 deletions(-)
New commits:
commit d2a0099003c245e7a0886563759d07a2abac3608
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Nov 29 17:33:23 2012 -0500
adding back support for fetching aggregate data points via CQL
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 c26ab9f..de622a7 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
@@ -48,7 +48,6 @@ import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
-import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import me.prettyprint.cassandra.serializers.CompositeSerializer;
@@ -83,21 +82,21 @@ public class MetricsServer {
DateTime begin = new DateTime(beginTime);
if (dateTimeService.isInRawDataRange(begin)) {
- return findRawDataForContext(scheduleId, beginTime, endTime);
+ return findRawDataForResource(scheduleId, beginTime, endTime);
}
-// if (dateTimeService.isIn1HourDataRange(begin)) {
-// return findAggregateDataForContext(schedule, beginTime, endTime,
ONE_HOUR_METRICS_TABLE);
-// }
-//
-// if (dateTimeService.isIn6HourDataRnage(begin)) {
-// return findAggregateDataForContext(schedule, beginTime, endTime,
SIX_HOUR_METRICS_TABLE);
-// }
+ if (dateTimeService.isIn1HourDataRange(begin)) {
+ return findAggregateDataForResource(scheduleId, beginTime, endTime,
ONE_HOUR_METRICS_TABLE);
+ }
+
+ if (dateTimeService.isIn6HourDataRnage(begin)) {
+ return findAggregateDataForResource(scheduleId, beginTime, endTime,
SIX_HOUR_METRICS_TABLE);
+ }
return null;
}
- private List<MeasurementDataNumericHighLowComposite> findRawDataForContext(int
scheduleId, long beginTime,
+ private List<MeasurementDataNumericHighLowComposite> findRawDataForResource(int
scheduleId, long beginTime,
long endTime) {
MetricsDAO dao = new MetricsDAO(session);
Buckets buckets = new Buckets(beginTime, endTime);
@@ -117,42 +116,24 @@ public class MetricsServer {
return data;
}
- private List<MeasurementDataNumericHighLowComposite>
findAggregateDataForContext(MeasurementSchedule schedule,
- long beginTime, long endTime, String columnFamily) {
-// SliceQuery<Integer, Composite, Double> dataQuery =
HFactory.createSliceQuery(keyspace, IntegerSerializer.get(),
-// CompositeSerializer.get(), DoubleSerializer.get());
-// dataQuery.setColumnFamily(oneHourMetricsDataCF);
-// dataQuery.setKey(schedule.getId());
-//
-// Composite begin = new Composite();
-// begin.addComponent(beginTime, LongSerializer.get(),
ComparatorType.LONGTYPE.getTypeName(), EQUAL);
-//
-// Composite end = new Composite();
-// end.addComponent(endTime, LongSerializer.get(),
ComparatorType.LONGTYPE.getTypeName(), LESS_THAN_EQUAL);
-// dataQuery.setRange(begin, end, true, DEFAULT_PAGE_SIZE);
-//
-// ColumnSliceIterator<Integer, Composite, Double> dataIterator = new
ColumnSliceIterator<Integer, Composite, Double>(
-// dataQuery, begin, end, false);
-// Buckets buckets = new Buckets(beginTime, endTime);
-// HColumn<Composite, Double> column = null;
-//
-// while (dataIterator.hasNext()) {
-// column = dataIterator.next();
-// Composite columnName = column.getName();
-// if (AggregateType.valueOf(columnName.get(1, IntegerSerializer.get())) !=
AggregateType.AVG) {
-// continue;
-// }
-// buckets.insert((Long) columnName.get(0, LongSerializer.get()),
column.getValue());
-// }
-//
-// List<MeasurementDataNumericHighLowComposite> data = new
ArrayList<MeasurementDataNumericHighLowComposite>();
-// for (int i = 0; i < buckets.getNumDataPoints(); ++i) {
-// Buckets.Bucket bucket = buckets.get(i);
-// data.add(new MeasurementDataNumericHighLowComposite(bucket.getStartTime(),
bucket.getAvg(),
-// bucket.getMax(), bucket.getMin()));
-// }
-// return data;
- return null;
+ private List<MeasurementDataNumericHighLowComposite>
findAggregateDataForResource(int scheduleId, long beginTime,
+ long endTime, String columnFamily) {
+ MetricsDAO dao = new MetricsDAO(session);
+ Buckets buckets = new Buckets(beginTime, endTime);
+
+ List<AggregatedNumericMetric> metrics =
dao.findAggregateMetrics(columnFamily, scheduleId,
+ new DateTime(beginTime), new DateTime(endTime));
+ for (AggregatedNumericMetric metric : metrics) {
+ buckets.insert(metric.getTimestamp(), metric.getAvg());
+ }
+
+ List<MeasurementDataNumericHighLowComposite> data = new
ArrayList<MeasurementDataNumericHighLowComposite>();
+ for (int i = 0; i < buckets.getNumDataPoints(); ++i) {
+ Buckets.Bucket bucket = buckets.get(i);
+ data.add(new MeasurementDataNumericHighLowComposite(bucket.getStartTime(),
bucket.getAvg(),
+ bucket.getMax(), bucket.getMin()));
+ }
+ return data;
}
public void addNumericData(Set<MeasurementDataNumeric> dataSet) {
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 c0080f2..c2b1536 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
@@ -395,86 +395,42 @@ public class MetricsServerTest extends CassandraIntegrationTest {
@Test(enabled = ENABLED)
public void find1HourDataComposites() {
-// DateTime beginTime = now().minusDays(11);
-// DateTime endTime = now();
-//
-// Buckets buckets = new Buckets(beginTime, endTime);
-// DateTime bucket0Time = new DateTime(buckets.get(0).getStartTime());
-// DateTime bucket59Time = new DateTime(buckets.get(59).getStartTime());
-//
-// String scheduleName = getClass().getName() + "_SCHEDULE";
-// MeasurementSchedule schedule = new MeasurementSchedule();
-// schedule.setId(123);
-// long interval = MINUTE * 10;
-// boolean enabled = true;
-// DataType dataType = DataType.MEASUREMENT;
-// MeasurementScheduleRequest request = new
MeasurementScheduleRequest(schedule.getId(), scheduleName, interval,
-// enabled, dataType);
-//
-// // insert one hour data to be aggregated
-// Mutator<Integer> oneHourMutator = HFactory.createMutator(keyspace,
IntegerSerializer.get());
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time, AggregateType.MAX, 3.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time, AggregateType.AVG, 2.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time, AggregateType.MIN, 1.0));
-//
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(1), AggregateType.MAX, 6.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(1), AggregateType.AVG, 5.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(1), AggregateType.MIN, 4.0));
-//
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(2), AggregateType.MAX, 3.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(2), AggregateType.AVG, 3.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket0Time.plusHours(2), AggregateType.MIN, 3.0));
-//
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time, AggregateType.MAX, 9.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time, AggregateType.AVG, 5.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time, AggregateType.MIN, 2.0));
-//
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(1), AggregateType.MAX, 6.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(1), AggregateType.AVG, 5.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(1), AggregateType.MIN, 4.0));
-//
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(2), AggregateType.MAX, 3.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(2), AggregateType.AVG, 3.0));
-// oneHourMutator.addInsertion(schedule.getId(), ONE_HOUR_METRIC_DATA_CF,
-// create1HourColumn(bucket59Time.plusHours(2), AggregateType.MIN, 3.0));
-//
-// oneHourMutator.execute();
-//
-// List<MeasurementDataNumericHighLowComposite> actualData =
metricsServer.findDataForResource(null, null,
-// schedule, beginTime.getMillis(), endTime.getMillis());
-//
-// assertEquals(actualData.size(), buckets.getNumDataPoints(), "Expected to
get back 60 data points.");
-//
-// MeasurementDataNumericHighLowComposite expectedBucket0Data = new
MeasurementDataNumericHighLowComposite(
-// buckets.get(0).getStartTime(), (2.0 + 5.0 + 3.0) / 3, 5.0, 2.0);
-// MeasurementDataNumericHighLowComposite expectedBucket59Data = new
MeasurementDataNumericHighLowComposite(
-// buckets.get(59).getStartTime(), (5.0 + 5.0 + 3.0) / 3, 5.0, 3.0);
-// MeasurementDataNumericHighLowComposite expectedBucket29Data = new
MeasurementDataNumericHighLowComposite(
-// buckets.get(29).getStartTime(), Double.NaN, Double.NaN, Double.NaN);
-//
-// assertPropertiesMatch("The data for bucket 0 does not match the expected
values.", expectedBucket0Data,
-// actualData.get(0));
-// assertPropertiesMatch("The data for bucket 59 does not match the expected
values.", expectedBucket59Data,
-// actualData.get(59));
-// assertPropertiesMatch("The data for bucket 29 does not match the expected
values.", expectedBucket29Data,
-// actualData.get(29));
+ DateTime beginTime = now().minusDays(11);
+ DateTime endTime = now();
+
+ Buckets buckets = new Buckets(beginTime, endTime);
+ DateTime bucket0Time = new DateTime(buckets.get(0).getStartTime());
+ DateTime bucket59Time = new DateTime(buckets.get(59).getStartTime());
+
+ int scheduleId = 123;
+ List<AggregatedNumericMetric> metrics = asList(
+ new AggregatedNumericMetric(scheduleId, 2.0, 1.0, 3.0,
bucket0Time.getMillis()),
+ new AggregatedNumericMetric(scheduleId, 5.0, 4.0, 6.0,
bucket0Time.plusHours(1).getMillis()),
+ new AggregatedNumericMetric(scheduleId, 3.0, 3.0, 3.0,
bucket0Time.plusHours(2).getMillis()),
+ new AggregatedNumericMetric(scheduleId, 5.0, 2.0, 9.0,
bucket59Time.getMillis()),
+ 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);
+
+ List<MeasurementDataNumericHighLowComposite> actualData =
metricsServer.findDataForResource(scheduleId,
+ beginTime.getMillis(), endTime.getMillis());
+
+ assertEquals(actualData.size(), buckets.getNumDataPoints(), "Expected to get
back 60 data points.");
+
+ MeasurementDataNumericHighLowComposite expectedBucket0Data = new
MeasurementDataNumericHighLowComposite(
+ buckets.get(0).getStartTime(), (2.0 + 5.0 + 3.0) / 3, 5.0, 2.0);
+ MeasurementDataNumericHighLowComposite expectedBucket59Data = new
MeasurementDataNumericHighLowComposite(
+ buckets.get(59).getStartTime(), (5.0 + 5.0 + 3.0) / 3, 5.0, 3.0);
+ MeasurementDataNumericHighLowComposite expectedBucket29Data = new
MeasurementDataNumericHighLowComposite(
+ buckets.get(29).getStartTime(), Double.NaN, Double.NaN, Double.NaN);
+
+ assertPropertiesMatch("The data for bucket 0 does not match the expected
values.", expectedBucket0Data,
+ actualData.get(0));
+ assertPropertiesMatch("The data for bucket 59 does not match the expected
values.", expectedBucket59Data,
+ actualData.get(59));
+ assertPropertiesMatch("The data for bucket 29 does not match the expected
values.", expectedBucket29Data,
+ actualData.get(29));
}
@Test(enabled = ENABLED)