[rhq] modules/plugins
by Thomas Segismont
modules/plugins/platform/src/main/java/org/rhq/plugins/platform/ProcessComponent.java | 12 ++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 2ec8d54cba53b668761c044937419a0e458d5a86
Author: Thomas SEGISMONT <tsegismo(a)redhat.com>
Date: Tue Nov 27 17:15:19 2012 +0100
[BZ-879583] Monitoring : process availability gives wrong status (SIGAR)
Remixed inital fix after review with Lukas
diff --git a/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/ProcessComponent.java b/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/ProcessComponent.java
index 9e9b95f..c85ec42 100644
--- a/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/ProcessComponent.java
+++ b/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/ProcessComponent.java
@@ -107,12 +107,16 @@ public class ProcessComponent implements ResourceComponent, MeasurementFacet {
}
private ProcessInfo getProcess() throws Exception {
+ if (this.process != null && this.process.isRunning()) {
+ // Refresh existing ProcessInfo when underlying process is apparently running.
+ // ProcessInfo may hold stale data.
+ // SIGAR objects do not get updated when a process goes down.
+ this.process.refresh();
+ }
if (this.process == null || !this.process.isRunning()) {
+ // Create ProcessInfo for the first time or when the underlying process is no longer running.
+ // When a process is no longer running we need to make a new PIQL or pid file discovery.
this.process = getProcessForConfiguration();
- } else {
- // Refresh previously existing ProcessInfo as it may hold stale data.
- // SIGAR objects do not get updated when, for example, a process goes down.
- process.refresh();
}
return this.process;
}
11 years, 7 months
[rhq] Branch 'rhq-on-as7' - modules/enterprise
by Jay Shaughnessy
modules/enterprise/server/itests-2/pom.xml | 26 ++++++++------------------
1 file changed, 8 insertions(+), 18 deletions(-)
New commits:
commit a14ee4d0b2fa606aff020ad32edd5af0a91f3eb5
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Tue Nov 27 10:32:28 2012 -0500
I have a feeling that we're not getting the translations we
expect due to the "default-value" syntax here. These properties
should be set anyway, so eliminate the defaults.
diff --git a/modules/enterprise/server/itests-2/pom.xml b/modules/enterprise/server/itests-2/pom.xml
index d22d090..f0c179f 100644
--- a/modules/enterprise/server/itests-2/pom.xml
+++ b/modules/enterprise/server/itests-2/pom.xml
@@ -481,10 +481,8 @@
</datasource>
<!-- FOR RHQ TESTING -->
<datasource jta="false" jndi-name="java:jboss/datasources/NoTxRHQDS" pool-name="NoTxRHQDS" enabled="true" use-java-context="true">
- <connection-url>${rhq.test.ds.connection-url:jdbc:postgresql://127.0.0.1:5432/rhq}</connection-url>
- <connection-property name="char.encoding">
- UTF-8
- </connection-property>
+ <connection-url>${rhq.test.ds.connection-url}</connection-url>
+ <connection-property name="char.encoding">UTF-8</connection-property>
<driver>postgres</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
@@ -507,15 +505,9 @@
</statement>
</datasource>
<xa-datasource jta="true" jndi-name="java:jboss/datasources/RHQDS" pool-name="RHQDS" enabled="true" use-java-context="true">
- <xa-datasource-property name="DatabaseName">
- ${rhq.test.ds.db-name:rhq}
- </xa-datasource-property>
- <xa-datasource-property name="PortNumber">
- ${rhq.test.ds.port:5432}
- </xa-datasource-property>
- <xa-datasource-property name="ServerName">
- ${rhq.test.ds.server-name:127.0.0.1}
- </xa-datasource-property>
+ <xa-datasource-property name="DatabaseName">${rhq.test.ds.db-name}</xa-datasource-property>
+ <xa-datasource-property name="PortNumber">${rhq.test.ds.port}</xa-datasource-property>
+ <xa-datasource-property name="ServerName">${rhq.test.ds.server-name}</xa-datasource-property>
<driver>postgres</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<xa-pool>
@@ -566,10 +558,8 @@
</datasource>
<!-- FOR RHQ TESTING -->
<datasource jta="false" jndi-name="java:jboss/datasources/NoTxRHQDS" pool-name="NoTxRHQDS" enabled="true" use-java-context="true">
- <connection-url>${rhq.test.ds.connection-url:jdbc:oracle:thin:@127.0.0.1:1521:XE}</connection-url>
- <connection-property name="char.encoding">
- UTF-8
- </connection-property>
+ <connection-url>${rhq.test.ds.connection-url}</connection-url>
+ <connection-property name="char.encoding">UTF-8</connection-property>
<driver>oracle</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
@@ -593,7 +583,7 @@
</statement>
</datasource>
<xa-datasource jta="true" jndi-name="java:jboss/datasources/RHQDS" pool-name="RHQDS" enabled="true" use-java-context="true">
- <xa-datasource-property name="URL">${rhq.test.ds.connection-url:jdbc:oracle:thin:@127.0.0.1:1521:XE}</xa-datasource-property>
+ <xa-datasource-property name="URL">${rhq.test.ds.connection-url}</xa-datasource-property>
<xa-datasource-property name="ConnectionProperties">SetBigStringTryClob=true</xa-datasource-property>
<driver>oracle</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
11 years, 7 months
[rhq] Branch 'refs/tags/RHQ_4_4_0_JON312CI' - modules/plugins
by rhqci
modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
New commits:
commit c38b8eb1fd584a8412d6c7d3213d1c3a036c1d7d
Author: Heiko W. Rupp <hwr(a)pilhuhn.de>
Date: Mon Nov 26 11:41:38 2012 +0100
BZ 859417 - disable the Connections available trait by default.
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index 43216bd..654261b 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -9,9 +9,9 @@
<!ENTITY datasourceAndConnectionFactoryMetrics '
<!-- Traits -->
- <metric property="custom.connectionAvailable" displayType="summary" displayName="Connection Available?"
- dataType="trait" category="availability" defaultInterval="900000"
- description="could a connection to the underlying data provider be obtained?"/>
+ <metric property="custom.connectionAvailable" displayType="detail" displayName="Connection Available?"
+ dataType="trait" category="availability" defaultInterval="900000" defaultOn="false"
+ description="could a connection to the underlying data provider be obtained? Please see the documentation before enabling this metric"/>
'>
<!ENTITY datasourceAndConnectionFactoryOperations '
11 years, 7 months
[rhq] Branch 'rhq-on-as7' - modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/installer/pom.xml | 16 ++++++++++++++++
modules/enterprise/server/itests-2/pom.xml | 9 +++++++++
2 files changed, 25 insertions(+)
New commits:
commit 88571559a63a7cd9d6ae92e0bf059c05d33f07e1
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Mon Nov 26 17:15:03 2012 -0500
make sure surefire has the necessary db env vars since test
execution may be forked and lose the context of the original
process.
diff --git a/modules/enterprise/gui/installer/pom.xml b/modules/enterprise/gui/installer/pom.xml
index 93e3f79..81fda8e 100644
--- a/modules/enterprise/gui/installer/pom.xml
+++ b/modules/enterprise/gui/installer/pom.xml
@@ -167,6 +167,22 @@
<plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemPropertyVariables>
+ <rhq.test.ds.type-mapping>${rhq.test.ds.type-mapping}</rhq.test.ds.type-mapping>
+ <rhq.test.ds.server-name>${rhq.test.ds.server-name}</rhq.test.ds.server-name>
+ <rhq.test.ds.db-name>${rhq.test.ds.db-name}</rhq.test.ds.db-name>
+ <rhq.test.ds.connection-url>${rhq.test.ds.connection-url}</rhq.test.ds.connection-url>
+ <rhq.db.admin.username>${rhq.db.admin.username}</rhq.db.admin.username>
+ <rhq.db.admin.password>${rhq.db.admin.password}</rhq.db.admin.password>
+ <rhq.test.ds.user-name>${rhq.test.ds.user-name}</rhq.test.ds.user-name>
+ <rhq.test.ds.password>${rhq.test.ds.password}</rhq.test.ds.password>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
diff --git a/modules/enterprise/server/itests-2/pom.xml b/modules/enterprise/server/itests-2/pom.xml
index 463250a..d22d090 100644
--- a/modules/enterprise/server/itests-2/pom.xml
+++ b/modules/enterprise/server/itests-2/pom.xml
@@ -651,6 +651,15 @@
<clean.db>${clean.db}</clean.db>
<log4j.configDebug>false</log4j.configDebug>
<project.version>${project.version}</project.version>
+
+ <rhq.test.ds.type-mapping>${rhq.test.ds.type-mapping}</rhq.test.ds.type-mapping>
+ <rhq.test.ds.server-name>${rhq.test.ds.server-name}</rhq.test.ds.server-name>
+ <rhq.test.ds.db-name>${rhq.test.ds.db-name}</rhq.test.ds.db-name>
+ <rhq.test.ds.connection-url>${rhq.test.ds.connection-url}</rhq.test.ds.connection-url>
+ <rhq.db.admin.username>${rhq.db.admin.username}</rhq.db.admin.username>
+ <rhq.db.admin.password>${rhq.db.admin.password}</rhq.db.admin.password>
+ <rhq.test.ds.user-name>${rhq.test.ds.user-name}</rhq.test.ds.user-name>
+ <rhq.test.ds.password>${rhq.test.ds.password}</rhq.test.ds.password>
</systemPropertyVariables>
<additionalClasspathElements>
<!-- The below is required for tests to run against Oracle. -->
11 years, 7 months
[rhq] Branch 'feature/cassandra-backend' - 3 commits - modules/enterprise
by John Sanda
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/Buckets.java | 2
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java | 193 +-------
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java | 217 ++--------
3 files changed, 78 insertions(+), 334 deletions(-)
New commits:
commit 2078d9ba52dbf39ce408f28f6ec00578fc25e8f2
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 16:34:57 2012 -0500
refactor findRawDataForContext method to use MetricsDAO
diff --git a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/Buckets.java b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/Buckets.java
index f3cc37f..bcac61a 100644
--- a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/Buckets.java
+++ b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/Buckets.java
@@ -74,7 +74,7 @@ public class Buckets {
if (count == 0) {
return Double.NaN;
}
- return sum / count;
+ return MetricsServer.divide(sum, count);
}
public double getMax() {
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 26601f9..d6d2ad3 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
@@ -33,9 +33,6 @@ import static org.rhq.server.metrics.MetricsDAO.TWENTY_FOUR_HOUR_METRICS_TABLE;
import java.math.BigDecimal;
import java.math.MathContext;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -69,7 +66,6 @@ import me.prettyprint.hector.api.beans.Composite;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.factory.HFactory;
-import me.prettyprint.hector.api.mutation.MutationResult;
import me.prettyprint.hector.api.query.SliceQuery;
/**
@@ -215,20 +211,13 @@ public class MetricsServer {
private List<MeasurementDataNumericHighLowComposite> findRawDataForContext(MeasurementSchedule schedule,
long beginTime, long endTime) {
- SliceQuery<Integer, Long, Double> rawDataQuery = HFactory.createSliceQuery(keyspace, IntegerSerializer.get(),
- LongSerializer.get(), DoubleSerializer.get());
- rawDataQuery.setColumnFamily(rawMetricsDataCF);
- rawDataQuery.setKey(schedule.getId());
- rawDataQuery.setRange(beginTime, endTime, false, DEFAULT_PAGE_SIZE);
-
- ColumnSliceIterator<Integer, Long, Double> rawDataIterator = new ColumnSliceIterator<Integer, Long, Double>(
- rawDataQuery, beginTime, endTime, false);
+ MetricsDAO dao = new MetricsDAO(cassandraDS);
Buckets buckets = new Buckets(beginTime, endTime);
- HColumn<Long, Double> rawColumn = null;
- while (rawDataIterator.hasNext()) {
- rawColumn = rawDataIterator.next();
- buckets.insert(rawColumn.getName(), rawColumn.getValue());
+ List<RawNumericMetric> rawMetrics = dao.findRawMetrics(schedule.getId(), new DateTime(beginTime),
+ new DateTime(endTime));
+ for (RawNumericMetric rawMetric : rawMetrics) {
+ buckets.insert(rawMetric.getTimestamp(), rawMetric.getValue());
}
List<MeasurementDataNumericHighLowComposite> data = new ArrayList<MeasurementDataNumericHighLowComposite>();
@@ -458,54 +447,6 @@ public class MetricsServer {
// public void addCallTimeData(Set<CallTimeData> callTimeDatas) {
// }
- private MutationResult updateMetricsQueue(String columnFamily, Map<Integer, DateTime> updates) {
-// Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());
-//
-// for (Integer scheduleId : updates.keySet()) {
-// DateTime collectionTime = new DateTime(updates.get(scheduleId));
-// Composite composite = new Composite();
-// composite.addComponent(collectionTime.getMillis(), LongSerializer.get());
-// composite.addComponent(scheduleId, IntegerSerializer.get());
-// HColumn<Composite, Integer> column = HFactory.createColumn(composite, 0, CompositeSerializer.get(),
-// IntegerSerializer.get());
-// mutator.addInsertion(columnFamily, metricsQueueCF, column);
-// }
-//
-// return mutator.execute();
- Connection connection = null;
- String errorMsg = "Cannot update " + columnFamily + " index for schedule ids " + updates.keySet();
- try {
- connection = cassandraDS.getConnection();
- } catch (SQLException e) {
- log.error("Failed to obtain connection", e);
- log.warn(errorMsg);
- return null;
- }
- String sql = "INSERT INTO " + metricsIndex + " (bucket, time, schedule_id, null_col) VALUES (?, ?, ?, ?)";
- PreparedStatement statement = null;
- try {
- statement = connection.prepareStatement(sql);
- } catch (SQLException e) {
- log.error("Failed to create prepared statement [" + sql + "]", e);
- log.warn(errorMsg);
- return null;
- }
- for (Integer scheduleId : updates.keySet()) {
- try {
- statement.setString(1, columnFamily);
- statement.setDate(2, new java.sql.Date(updates.get(scheduleId).getMillis()));
- statement.setInt(3, scheduleId);
- statement.setBoolean(4, false);
-
- statement.executeUpdate();
- } catch (SQLException e) {
- log.warn("Failed to update " + columnFamily + " index for " + scheduleId + " at time slice " +
- updates.get(scheduleId));
- }
- }
- return null;
- }
-
static double divide(double dividend, int divisor) {
return new BigDecimal(Double.toString(dividend)).divide(new BigDecimal(Integer.toString(divisor)),
MathContext.DECIMAL64).doubleValue();
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 af6ddf3..854d0b0 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
@@ -362,35 +362,29 @@ public class MetricsServerTest extends CassandraIntegrationTest {
assert24HourMetricsIndexEmpty(scheduleId);
}
- @Test(enabled = ENABLED)
+ @Test//(enabled = ENABLED)
public void findRawDataComposites() {
DateTime beginTime = now().minusHours(4);
DateTime endTime = now();
-
Buckets buckets = new Buckets(beginTime, endTime);
-
- 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);
+ int scheduleId = 123;
Set<MeasurementDataNumeric> data = new HashSet<MeasurementDataNumeric>();
- data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 10, request, 1.1));
- data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 20, request, 2.2));
- data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 30, request, 3.3));
- data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 10, request, 4.4));
- data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 20, request, 5.5));
- data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 30, request, 6.6));
+ data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 10, scheduleId, 1.1));
+ data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 20, scheduleId, 2.2));
+ data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() + 30, scheduleId, 3.3));
+ data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 10, scheduleId, 4.4));
+ data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 20, scheduleId, 5.5));
+ data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + 30, scheduleId, 6.6));
// add some data outside the range
- data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() - 100, request, 1.23));
- data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + buckets.getInterval() + 50, request,
+ data.add(new MeasurementDataNumeric(buckets.get(0).getStartTime() - 100, scheduleId, 1.23));
+ data.add(new MeasurementDataNumeric(buckets.get(59).getStartTime() + buckets.getInterval() + 50, scheduleId,
4.56));
+ MeasurementSchedule schedule = new MeasurementSchedule();
+ schedule.setId(scheduleId);
+
metricsServer.addNumericData(data);
List<MeasurementDataNumericHighLowComposite> actualData = metricsServer.findDataForContext(null, null,
schedule, beginTime.getMillis(), endTime.getMillis());
@@ -398,9 +392,9 @@ public class MetricsServerTest extends CassandraIntegrationTest {
assertEquals(actualData.size(), buckets.getNumDataPoints(), "Expected to get back 60 data points.");
MeasurementDataNumericHighLowComposite expectedBucket0Data = new MeasurementDataNumericHighLowComposite(
- buckets.get(0).getStartTime(), (1.1 + 2.2 + 3.3) / 3, 3.3, 1.1);
+ buckets.get(0).getStartTime(), divide(1.1 + 2.2 + 3.3, 3), 3.3, 1.1);
MeasurementDataNumericHighLowComposite expectedBucket59Data = new MeasurementDataNumericHighLowComposite(
- buckets.get(59).getStartTime(), (4.4 + 5.5 + 6.6) / 3, 6.6, 4.4);
+ buckets.get(59).getStartTime(), divide(4.4 + 5.5 + 6.6, 3), 6.6, 4.4);
MeasurementDataNumericHighLowComposite expectedBucket29Data = new MeasurementDataNumericHighLowComposite(
buckets.get(29).getStartTime(), Double.NaN, Double.NaN, Double.NaN);
commit 8eb7515259b59ae863e0db976e1b5e1bbf2bdd77
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 16:10:50 2012 -0500
minor refactor to remove unused method param
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 6f2eec6..26601f9 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
@@ -317,15 +317,15 @@ public class MetricsServer {
updateMetricsIndex(SIX_HOUR_METRICS_TABLE, updatedSchedules, Minutes.minutes(60 * 6));
}
- updatedSchedules = calculateAggregates(ONE_HOUR_METRICS_TABLE, SIX_HOUR_METRICS_TABLE, Minutes.minutes(60),
- Minutes.minutes(60 * 6), DateTimeService.ONE_MONTH);
+ updatedSchedules = calculateAggregates(ONE_HOUR_METRICS_TABLE, SIX_HOUR_METRICS_TABLE, 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());
}
updatedSchedules = calculateAggregates(SIX_HOUR_METRICS_TABLE, TWENTY_FOUR_HOUR_METRICS_TABLE,
- Hours.hours(24).toStandardMinutes(), Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_YEAR);
+ Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_YEAR);
if (!updatedSchedules.isEmpty()) {
dao.deleteMetricsIndexEntries(TWENTY_FOUR_HOUR_METRICS_TABLE);
}
@@ -383,7 +383,7 @@ public class MetricsServer {
}
private List<AggregatedNumericMetric> calculateAggregates(String fromColumnFamily, String toColumnFamily,
- Minutes interval, Minutes nextInterval, int ttl) {
+ Minutes nextInterval, int ttl) {
MetricsDAO dao = new MetricsDAO(cassandraDS);
List<MetricsIndexEntry> indexEntries = dao.findMetricsIndexEntries(toColumnFamily);
commit bac3d35002494251f088bfe50dce025ddd7da933
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 16:01:46 2012 -0500
more updates to aggregation related tests to use CQL/MetricsDAO
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 88c63fd..6f2eec6 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
@@ -29,6 +29,7 @@ import static me.prettyprint.hector.api.beans.AbstractComposite.ComponentEqualit
import static me.prettyprint.hector.api.beans.AbstractComposite.ComponentEquality.LESS_THAN_EQUAL;
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;
@@ -48,6 +49,7 @@ import org.apache.commons.logging.LogFactory;
import org.joda.time.DateTime;
import org.joda.time.DateTimeComparator;
import org.joda.time.Days;
+import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.rhq.core.domain.auth.Subject;
@@ -303,19 +305,30 @@ public class MetricsServer {
// issues in the future. The last step in the work flow is to update the metrics
// index for the newly persisted aggregates.
+ // TODO deleteMetricsIndexEntries should take a list of schedule ids
+ // MetricsDAO.deleteMetricsIndexEntries deletes the entire row, but we probably do
+ // not want to delete each column unless and until we verify that the data for the
+ // schedule id in that column has in fact been aggregated. It might be better for
+ // deleteMetricsIndexEntries to take a list of schedule ids to purge.
+
List<AggregatedNumericMetric> updatedSchedules = aggregateRawData();
- dao.deleteMetricsIndexEntries(ONE_HOUR_METRICS_TABLE);
- updateMetricsIndex(SIX_HOUR_METRICS_TABLE, updatedSchedules, Minutes.minutes(60 * 6));
+ if (!updatedSchedules.isEmpty()) {
+ dao.deleteMetricsIndexEntries(ONE_HOUR_METRICS_TABLE);
+ updateMetricsIndex(SIX_HOUR_METRICS_TABLE, updatedSchedules, Minutes.minutes(60 * 6));
+ }
-// updatedSchedules = calculateAggregates(oneHourMetricsDataCF, sixHourMetricsDataCF, Minutes.minutes(60 * 6),
-// Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_MONTH);
- updatedSchedules = calculateAggregates(oneHourMetricsDataCF, sixHourMetricsDataCF, Minutes.minutes(60),
+ updatedSchedules = calculateAggregates(ONE_HOUR_METRICS_TABLE, SIX_HOUR_METRICS_TABLE, Minutes.minutes(60),
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());
+ }
-// updateMetricsQueue(twentyFourHourMetricsDataCF, updatedSchedules);
-//
-// calculateAggregates(sixHourMetricsDataCF, twentyFourHourMetricsDataCF, Hours.hours(24).toStandardMinutes(),
-// Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_YEAR);
+ updatedSchedules = calculateAggregates(SIX_HOUR_METRICS_TABLE, TWENTY_FOUR_HOUR_METRICS_TABLE,
+ Hours.hours(24).toStandardMinutes(), Hours.hours(24).toStandardMinutes(), DateTimeService.ONE_YEAR);
+ if (!updatedSchedules.isEmpty()) {
+ dao.deleteMetricsIndexEntries(TWENTY_FOUR_HOUR_METRICS_TABLE);
+ }
}
private void updateMetricsIndex(String bucket, List<AggregatedNumericMetric> metrics, Minutes interval) {
@@ -414,95 +427,6 @@ public class MetricsServer {
List<AggregatedNumericMetric> updatedSchedules = dao.insertAggregates(toColumnFamily, toMetrics);
return updatedSchedules;
-
-// SliceQuery<String, Composite, Integer> queueQuery = HFactory.createSliceQuery(keyspace, StringSerializer.get(),
-// new CompositeSerializer().get(), IntegerSerializer.get());
-// queueQuery.setColumnFamily(metricsIndex);
-// queueQuery.setKey(toColumnFamily);
-//
-// ColumnSliceIterator<String, Composite, Integer> queueIterator = new ColumnSliceIterator<String, Composite, Integer>(
-// queueQuery, (Composite) null, (Composite) null, false);
-//
-// Mutator<Integer> mutator = HFactory.createMutator(keyspace, IntegerSerializer.get());
-// Mutator<String> queueMutator = HFactory.createMutator(keyspace, StringSerializer.get());
-//
-// while (queueIterator.hasNext()) {
-// HColumn<Composite, Integer> queueColumn = queueIterator.next();
-// Integer scheduleId = queueColumn.getName().get(1, IntegerSerializer.get());
-// Long timestamp = queueColumn.getName().get(0, LongSerializer.get());
-// DateTime startTime = new DateTime(timestamp);
-// DateTime endTime = new DateTime(timestamp).plus(interval);
-//
-// if (dateTimeComparator.compare(currentHour, endTime) < 0) {
-// continue;
-// }
-//
-// Composite startColKey = new Composite();
-// startColKey.addComponent(startTime.getMillis(), LongSerializer.get());
-//
-// Composite endColKey = new Composite();
-// endColKey.addComponent(endTime.getMillis(), LongSerializer.get());
-//
-// SliceQuery<Integer, Composite, Double> fromColumnFamilyQuery = HFactory.createSliceQuery(keyspace,
-// IntegerSerializer.get(), CompositeSerializer.get(), DoubleSerializer.get());
-// fromColumnFamilyQuery.setColumnFamily(fromColumnFamily);
-// fromColumnFamilyQuery.setKey(scheduleId);
-//
-// ColumnSliceIterator<Integer, Composite, Double> fromColumnFamilyIterator = new ColumnSliceIterator<Integer, Composite, Double>(
-// fromColumnFamilyQuery, startColKey, endColKey, false);
-// fromColumnFamilyIterator.hasNext();
-//
-// HColumn<Composite, Double> fromColumn = null;
-// double min = 0;
-// double max = 0;
-// double sum = 0;
-// int avgCount = 0;
-// int minCount = 0;
-// int maxCount = 0;
-//
-// while (fromColumnFamilyIterator.hasNext()) {
-// fromColumn = fromColumnFamilyIterator.next();
-// AggregateType type = AggregateType.valueOf(fromColumn.getName().get(1, IntegerSerializer.get()));
-//
-// switch (type) {
-// case AVG:
-// sum += fromColumn.getValue();
-// avgCount++;
-// break;
-// case MIN:
-// if (minCount == 0) {
-// min = fromColumn.getValue();
-// } else if (fromColumn.getValue() < min) {
-// min = fromColumn.getValue();
-// }
-// minCount++;
-// break;
-// case MAX:
-// if (maxCount == 0) {
-// max = fromColumn.getValue();
-// } else if (fromColumn.getValue() > max) {
-// max = fromColumn.getValue();
-// }
-// maxCount++;
-// break;
-// }
-// }
-//
-//// double avg = sum / avgCount;
-// double avg = divide(sum, avgCount);
-//
-// mutator.addInsertion(scheduleId, toColumnFamily, createAvgColumn(startTime, avg, ttl));
-// mutator.addInsertion(scheduleId, toColumnFamily, createMaxColumn(startTime, max, ttl));
-// mutator.addInsertion(scheduleId, toColumnFamily, createMinColumn(startTime, min, ttl));
-//
-// updatedSchedules.put(scheduleId, dateTimeService.getTimeSlice(startTime, nextInterval));
-//
-// queueMutator.addDeletion(toColumnFamily, metricsIndex, queueColumn.getName(), CompositeSerializer.get());
-// }
-// mutator.execute();
-// queueMutator.execute();
-//
-// return updatedSchedules;
}
// public void addTraitData(Set<MeasurementDataTrait> 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 826b8cf..af6ddf3 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
@@ -82,7 +82,6 @@ import me.prettyprint.hector.api.query.SliceQuery;
/**
* @author John Sanda
*/
-//(a)Listeners({CassandraClusterManager.class})
public class MetricsServerTest extends CassandraIntegrationTest {
private static final boolean ENABLED = false;
@@ -131,38 +130,20 @@ public class MetricsServerTest extends CassandraIntegrationTest {
@BeforeMethod
public void initServer() throws Exception {
-// Cluster cluster = HFactory.getOrCreateCluster("rhq", "127.0.0.1:9160");
-// keyspace = HFactory.createKeyspace("rhq", cluster);
-//
metricsServer = new MetricsServerStub();
-// metricsServer.setCluster(cluster);
-// metricsServer.setKeyspace(keyspace);
-// metricsServer.setRawMetricsDataCF(RAW_METRIC_DATA_CF);
-// metricsServer.setOneHourMetricsDataCF(ONE_HOUR_METRIC_DATA_CF);
-// metricsServer.setSixHourMetricsDataCF(SIX_HOUR_METRIC_DATA_CF);
-// metricsServer.setTwentyFourHourMetricsDataCF(TWENTY_FOUR_HOUR_METRIC_DATA_CF);
-// metricsServer.setMetricsIndex(METRICS_INDEX);
-// metricsServer.setTraitsCF(TRAITS_CF);
-// metricsServer.setResourceTraitsCF(RESOURCE_TRAITS_CF);
metricsServer.setCassandraDS(dataSource);
dao = new MetricsDAO(dataSource);
- //purgeDB();
+ purgeDB();
}
private void purgeDB() throws SQLException {
-// deleteAllRows(METRICS_INDEX, StringSerializer.get());
-// deleteAllRows(RAW_METRIC_DATA_CF, IntegerSerializer.get());
-// deleteAllRows(ONE_HOUR_METRIC_DATA_CF, IntegerSerializer.get());
-// deleteAllRows(SIX_HOUR_METRIC_DATA_CF, IntegerSerializer.get());
-// deleteAllRows(TWENTY_FOUR_HOUR_METRIC_DATA_CF, IntegerSerializer.get());
-// deleteAllRows(TRAITS_CF, IntegerSerializer.get());
-// deleteAllRows(RESOURCE_TRAITS_CF, IntegerSerializer.get());
Statement statement = connection.createStatement();
statement.executeUpdate("TRUNCATE " + RAW_METRICS_TABLE);
statement.executeUpdate("TRUNCATE " + ONE_HOUR_METRICS_TABLE);
statement.executeUpdate("TRUNCATE " + SIX_HOUR_METRICS_TABLE);
+ statement.executeUpdate("TRUNCATE " + TWENTY_FOUR_HOUR_METRICS_TABLE);
statement.executeUpdate("TRUNCATE " + METRICS_INDEX_TABLE);
statement.close();
@@ -225,11 +206,11 @@ public class MetricsServerTest extends CassandraIntegrationTest {
// verify that one hour metric data is updated
List<AggregatedNumericMetric> expected = asList(new AggregatedNumericMetric(scheduleId,
divide((3.9 + 3.2 + 2.6), 3), 2.6, 3.9, lastHour.getMillis()));
- assertMetricDataEquals(ONE_HOUR_METRICS_TABLE, scheduleId, expected);
+ assert1HourDataEquals(scheduleId, expected);
// verify that 6 hour metric data is updated
- assertMetricDataEquals(SIX_HOUR_METRICS_TABLE, scheduleId, asList(new AggregatedNumericMetric(scheduleId,
- divide((3.9 + 3.2 + 2.6), 3), 2.6, 3.9, hour0.getMillis())));
+ assert6HourDataEquals(scheduleId, asList(new AggregatedNumericMetric(scheduleId, divide((3.9 + 3.2 + 2.6), 3),
+ 2.6, 3.9, hour0.getMillis())));
// TODO verify that 24 hour data is *not* updated
// TODO verify metrics index for 24 hour data is updated
@@ -256,18 +237,15 @@ public class MetricsServerTest extends CassandraIntegrationTest {
rawMetrics.add(new MeasurementDataNumeric(secondMetricTime.getMillis(), scheduleId, secondValue));
rawMetrics.add(new MeasurementDataNumeric(thirdMetricTime.getMillis(), scheduleId, thirdValue));
- long timestamp = System.currentTimeMillis();
- Set<MeasurementDataNumeric> insertedRawMetrics = dao.insertRawMetrics(rawMetrics, RAW_TTL, timestamp);
+ Set<MeasurementDataNumeric> insertedRawMetrics = dao.insertRawMetrics(rawMetrics, RAW_TTL);
metricsServer.updateMetricsIndex(insertedRawMetrics);
metricsServer.setCurrentHour(hour9);
metricsServer.calculateAggregates();
// verify that the 1 hour aggregates are calculated
- assertMetricDataEquals(ONE_HOUR_METRICS_TABLE, scheduleId, asList(
- new AggregatedNumericMetric(scheduleId, divide((1.1 + 2.2 + 3.3), 3), firstValue, thirdValue,
- hour8.getMillis())
- ));
+ assert1HourDataEquals(scheduleId, asList(new AggregatedNumericMetric(scheduleId, divide((1.1 + 2.2 + 3.3), 3),
+ firstValue, thirdValue, hour8.getMillis())));
// verify that the 6 hour index is updated
DateTimeService dateTimeService = new DateTimeService();
@@ -289,7 +267,7 @@ public class MetricsServerTest extends CassandraIntegrationTest {
assert1HourMetricsIndexEmpty(scheduleId);
}
- @Test(enabled = ENABLED)
+ @Test//(enabled = ENABLED)
public void aggregate1HourDataDuring12thHour() {
// set up the test fixture
int scheduleId = 123;
@@ -309,20 +287,6 @@ public class MetricsServerTest extends CassandraIntegrationTest {
double max2 = 6.6;
// insert one hour data to be aggregated
-// Mutator<Integer> oneHourMutator = HFactory.createMutator(keyspace, IntegerSerializer.get());
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour7, AggregateType.MAX,
-// max1));
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour7, AggregateType.MIN,
-// min1));
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour7, AggregateType.AVG,
-// avg1));
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour8, AggregateType.MAX,
-// max2));
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour8, AggregateType.MIN,
-// min2));
-// oneHourMutator.addInsertion(scheduleId, ONE_HOUR_METRIC_DATA_CF, create1HourColumn(hour8, AggregateType.AVG,
-// avg2));
-// oneHourMutator.execute();
List<AggregatedNumericMetric> oneHourMetrics = asList(
new AggregatedNumericMetric(scheduleId, avg1, min1, max1, hour7.getMillis()),
new AggregatedNumericMetric(scheduleId, avg2, min2, max2, hour8.getMillis())
@@ -330,13 +294,6 @@ public class MetricsServerTest extends CassandraIntegrationTest {
dao.insertAggregates(ONE_HOUR_METRICS_TABLE, oneHourMetrics);
// update the 6 hour queue
-// Mutator<String> queueMutator = HFactory.createMutator(keyspace, StringSerializer.get());
-// Composite key = createQueueColumnName(hour6, scheduleId);
-// HColumn<Composite, Integer> sixHourQueueColumn = HFactory.createColumn(key, 0, CompositeSerializer.get(),
-// IntegerSerializer.get());
-// queueMutator.addInsertion(SIX_HOUR_METRIC_DATA_CF, METRICS_INDEX, sixHourQueueColumn);
-//
-// queueMutator.execute();
Map<Integer, DateTime> indexUpdates = new HashMap<Integer, DateTime>();
indexUpdates.put(scheduleId, hour6);
dao.updateMetricsIndex(SIX_HOUR_METRICS_TABLE, indexUpdates);
@@ -347,31 +304,26 @@ public class MetricsServerTest extends CassandraIntegrationTest {
// verify the results
// verify that the one hour data has been aggregated
-// assert6HourDataEquals(scheduleId, asList(
-// create6HourColumn(hour6, AggregateType.MAX, max1),
-// create6HourColumn(hour6, AggregateType.MIN, min1),
-// create6HourColumn(hour6, AggregateType.AVG, (avg1 + avg2) / 2)
-// ));
- assertMetricDataEquals(SIX_HOUR_METRICS_TABLE, scheduleId, asList(new AggregatedNumericMetric(scheduleId,
- divide((avg1 + avg2), 2), min1, max1, hour6.getMillis())));
+ assert6HourDataEquals(scheduleId, asList(new AggregatedNumericMetric(scheduleId, divide((avg1 + avg2), 2), min1,
+ max1, hour6.getMillis())));
// verify that the 6 hour queue has been updated
-// assert6HourMetricsIndexEmpty(scheduleId);
+ assert6HourMetricsIndexEmpty(scheduleId);
// verify that the 24 hour queue is updated
-// assert24HourMetricsQueueEquals(asList(HFactory.createColumn(createQueueColumnName(hour0, scheduleId), 0,
-// CompositeSerializer.get(), IntegerSerializer.get())));
+ 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);
// verify that 6 hour data is not rolled up into the 24 hour bucket
-// assert24HourDataEmpty(scheduleId);
+ assert24HourDataEmpty(scheduleId);
}
- @Test(enabled = ENABLED)
+ @Test//(enabled = ENABLED)
public void aggregate6HourDataDuring24thHour() {
// set up the test fixture
int scheduleId = 123;
- DateTime now = new DateTime();
DateTime hour0 = hour0();
DateTime hour12 = hour0.plusHours(12);
DateTime hour6 = hour0.plusHours(6);
@@ -386,29 +338,16 @@ public class MetricsServerTest extends CassandraIntegrationTest {
double max2 = 6.6;
// insert 6 hour data to be aggregated
- Mutator<Integer> sixHourMutator = HFactory.createMutator(keyspace, IntegerSerializer.get());
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour6, AggregateType.MAX,
- max1));
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour6, AggregateType.MIN,
- min1));
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour6, AggregateType.AVG,
- avg1));
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour12, AggregateType.MAX,
- max2));
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour12, AggregateType.MIN,
- min2));
- sixHourMutator.addInsertion(scheduleId, SIX_HOUR_METRIC_DATA_CF, create6HourColumn(hour12, AggregateType.AVG,
- avg2));
- sixHourMutator.execute();
+ List<AggregatedNumericMetric> sixHourMetrics = asList(
+ new AggregatedNumericMetric(scheduleId, avg1, min1, max1, hour6.getMillis()),
+ new AggregatedNumericMetric(scheduleId, avg2, min2, max2, hour12.getMillis())
+ );
+ dao.insertAggregates(SIX_HOUR_METRICS_TABLE, sixHourMetrics);
// update the 24 queue
- Mutator<String> queueMutator = HFactory.createMutator(keyspace, StringSerializer.get());
- Composite key = createQueueColumnName(hour0, scheduleId);
- HColumn<Composite, Integer> twentyFourHourQueueColumn = HFactory.createColumn(key, 0, CompositeSerializer.get(),
- IntegerSerializer.get());
- queueMutator.addInsertion(TWENTY_FOUR_HOUR_METRIC_DATA_CF, METRICS_INDEX, twentyFourHourQueueColumn);
-
- queueMutator.execute();
+ Map<Integer, DateTime> indexUpdates = new HashMap<Integer, DateTime>();
+ indexUpdates.put(scheduleId, hour0);
+ dao.updateMetricsIndex(TWENTY_FOUR_HOUR_METRICS_TABLE, indexUpdates);
// execute the system under test
metricsServer.setCurrentHour(hour24);
@@ -416,11 +355,8 @@ public class MetricsServerTest extends CassandraIntegrationTest {
// verify the results
// verify that the 6 hour data is aggregated
- assert24HourDataEquals(scheduleId, asList(
- create24HourColumn(hour0, AggregateType.MAX, max2),
- create24HourColumn(hour0, AggregateType.MIN, min1),
- create24HourColumn(hour0, AggregateType.AVG, (avg1 + avg2) / 2)
- ));
+ assert24HourDataEquals(scheduleId, asList(new AggregatedNumericMetric(scheduleId, divide(avg1 + avg2, 2),
+ min1, max2, hour0.getMillis())));
// verify that the 24 hour queue is updated
assert24HourMetricsIndexEmpty(scheduleId);
@@ -723,16 +659,16 @@ public class MetricsServerTest extends CassandraIntegrationTest {
}
}
- private void assert1HourDataEquals(int scheduleId, List<HColumn<Composite, Double>> expected) {
- assertMetricDataEquals(scheduleId, ONE_HOUR_METRIC_DATA_CF, expected);
+ private void assert1HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) {
+ assertMetricDataEquals(ONE_HOUR_METRICS_TABLE, scheduleId, expected);
}
- private void assert6HourDataEquals(int scheduleId, List<HColumn<Composite, Double>> expected) {
- assertMetricDataEquals(scheduleId, SIX_HOUR_METRIC_DATA_CF, expected);
+ private void assert6HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) {
+ assertMetricDataEquals(SIX_HOUR_METRICS_TABLE, scheduleId, expected);
}
- private void assert24HourDataEquals(int scheduleId, List<HColumn<Composite, Double>> expected) {
- assertMetricDataEquals(scheduleId, TWENTY_FOUR_HOUR_METRIC_DATA_CF, expected);
+ private void assert24HourDataEquals(int scheduleId, List<AggregatedNumericMetric> expected) {
+ assertMetricDataEquals(TWENTY_FOUR_HOUR_METRICS_TABLE, scheduleId, expected);
}
private void assertMetricDataEquals(int scheduleId, String columnFamily, List<HColumn<Composite,
@@ -789,31 +725,6 @@ public class MetricsServerTest extends CassandraIntegrationTest {
}
private void assertMetricDataEmpty(int scheduleId, String columnFamily) {
-// SliceQuery<Integer, Composite, Double> query = HFactory.createSliceQuery(keyspace, IntegerSerializer.get(),
-// CompositeSerializer.get(), DoubleSerializer.get());
-// query.setColumnFamily(columnFamily);
-// query.setKey(scheduleId);
-//
-// ColumnSliceIterator<Integer, Composite, Double> iterator = new ColumnSliceIterator<Integer, Composite, Double>(
-// query, (Composite) null, (Composite) null, false);
-//
-// List<HColumn<Composite, Double>> actual = new ArrayList<HColumn<Composite, Double>>();
-// while (iterator.hasNext()) {
-// actual.add(iterator.next());
-// }
-//
-// String prefix;
-// if (columnFamily.equals(ONE_HOUR_METRIC_DATA_CF)) {
-// prefix = "The one hour data for schedule id " + scheduleId + " is wrong.";
-// } else if (columnFamily.equals(SIX_HOUR_METRIC_DATA_CF)) {
-// prefix = "The six hour data for schedule id " + scheduleId + " is wrong.";
-// } else if (columnFamily.equals(TWENTY_FOUR_HOUR_METRIC_DATA_CF)) {
-// prefix = "The twenty-four hour data for schedule id " + scheduleId + " is wrong.";
-// } else {
-// throw new IllegalArgumentException(columnFamily + " is not a recognized column family");
-// }
-//
-// assertEquals(actual.size(), 0, prefix + " Expected the row to be empty.");
List<AggregatedNumericMetric> metrics = dao.findAggregateMetrics(columnFamily, scheduleId);
assertEquals(metrics.size(), 0, "Expected " + columnFamily + " to be empty for schedule id " + scheduleId +
" but found " + metrics);
@@ -832,32 +743,6 @@ public class MetricsServerTest extends CassandraIntegrationTest {
}
private void assertMetricsIndexEmpty(int scheduleId, String table) {
-// SliceQuery<String,Composite, Integer> sliceQuery = HFactory.createSliceQuery(keyspace, StringSerializer.get(),
-// new CompositeSerializer().get(), IntegerSerializer.get());
-// sliceQuery.setColumnFamily(METRICS_INDEX);
-// sliceQuery.setKey(columnFamily);
-//
-// ColumnSliceIterator<String, Composite, Integer> iterator = new ColumnSliceIterator<String, Composite, Integer>(
-// sliceQuery, (Composite) null, (Composite) null, false);
-//
-// List<HColumn<Composite, Integer>> actual = new ArrayList<HColumn<Composite, Integer>>();
-// while (iterator.hasNext()) {
-// actual.add(iterator.next());
-// }
-//
-// String queueName;
-// if (columnFamily.equals(ONE_HOUR_METRIC_DATA_CF)) {
-// queueName = "1 hour";
-// } else if (columnFamily.equals(SIX_HOUR_METRIC_DATA_CF)) {
-// queueName = "6 hour";
-// } else if (columnFamily.equals(TWENTY_FOUR_HOUR_METRIC_DATA_CF)) {
-// queueName = "24 hour";
-// } else {
-// throw new IllegalArgumentException(columnFamily + " is not a recognized metric data column family.");
-// }
-
-// assertEquals(actual.size(), 0, "Expected the " + queueName + " queue to be empty for schedule id " +
-// scheduleId);
List<MetricsIndexEntry> index = dao.findMetricsIndexEntries(table);
assertEquals(index.size(), 0, "Expected metrics index for " + table + " to be empty but found " + index);
}
11 years, 7 months
[rhq] Branch 'rhq-on-as7' - modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/installer/src/test/java/org/rhq/enterprise/installer/DBInstallationTest.java | 13 ++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
New commits:
commit 157aaa969ec1e463b1fbd07403eeb6010ff1c5c7
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Mon Nov 26 15:46:32 2012 -0500
Add some logging to help figure out jenkins failure.
diff --git a/modules/enterprise/gui/installer/src/test/java/org/rhq/enterprise/installer/DBInstallationTest.java b/modules/enterprise/gui/installer/src/test/java/org/rhq/enterprise/installer/DBInstallationTest.java
index 1832aec..d3a237e 100644
--- a/modules/enterprise/gui/installer/src/test/java/org/rhq/enterprise/installer/DBInstallationTest.java
+++ b/modules/enterprise/gui/installer/src/test/java/org/rhq/enterprise/installer/DBInstallationTest.java
@@ -115,7 +115,7 @@ public class DBInstallationTest {
installSchemaAndData("rhq-4.3.0");
ServerInstallUtil.upgradeExistingDatabaseSchema(getInstallProperties(), serverDetails, PASSWORD, logDir);
}
-
+
@Test
public void upgradeRHQ440Schema() throws Exception {
installSchemaAndData("rhq-4.4.0");
@@ -133,6 +133,15 @@ public class DBInstallationTest {
private void recreateTestDatabase() throws Exception {
DBReset dbReset = new DBReset();
+
+ System.out.println("DBInstallationTest.recreateTestDatabase asking for DBReset for [" //
+ + DB_TYPE_MAPPING + "," //
+ + DB_URL + "," //
+ + DB_NAME + "," //
+ + USERNAME + "," //
+ + ADMIN_USERNAME + "," //
+ + ADMIN_PASSWORD + "]");
+
dbReset.performDBReset(DB_TYPE_MAPPING, DB_URL, DB_NAME, USERNAME, ADMIN_USERNAME, ADMIN_PASSWORD);
}
@@ -178,7 +187,7 @@ public class DBInstallationTest {
dbProperties.put(ServerProperties.PROP_EMAIL_FROM_ADDRESS, "rhqadmin(a)localhost.com");
return dbProperties;
}
-
+
private static File filterXmlFile(File xmlFile, HashMap<String, String> props) throws IOException {
// first slurp the file contents in memory
InputStream fileInStream = new FileInputStream(xmlFile);
11 years, 7 months
[rhq] Branch 'feature/cassandra-backend' - modules/enterprise
by John Sanda
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java | 57 ----------
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java | 29 +----
2 files changed, 9 insertions(+), 77 deletions(-)
New commits:
commit fec730b08bef57c841742d6d3b09717163756923
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 12:53:37 2012 -0500
Removing IdGenerator as it is not needed
Do not need IdGenerator since TRUNCATE statement seems to be working
diff --git a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java
deleted file mode 100644
index 08d73c9..0000000
--- a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *
- * * RHQ Management Platform
- * * Copyright (C) 2005-2012 Red Hat, Inc.
- * * All rights reserved.
- * *
- * * This program is free software; you can redistribute it and/or modify
- * * it under the terms of the GNU General Public License, version 2, as
- * * published by the Free Software Foundation, and/or the GNU Lesser
- * * General Public License, version 2.1, also as published by the Free
- * * Software Foundation.
- * *
- * * This program is distributed in the hope that it will be useful,
- * * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * * GNU General Public License and the GNU Lesser General Public License
- * * for more details.
- * *
- * * You should have received a copy of the GNU General Public License
- * * and the GNU Lesser General Public License along with this program;
- * * if not, write to the Free Software Foundation, Inc.,
- * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-package org.rhq.server.metrics;
-
-import org.rhq.core.util.StringUtil;
-
-/**
- * @author John Sanda
- */
-public class IdGenerator {
-
- private int[] ids;
-
- private int index;
-
- public IdGenerator(int size) {
- ids = new int[size];
- for (int i = 0; i < ids.length; ++i) {
- ids[i] = i + 1;
- }
- }
-
- public int next() {
- if (index == ids.length) {
- throw new RuntimeException("All " + ids.length + " have already been allocated.");
- }
- return ids[index++];
- }
-
- public String getIdsAsString() {
- return "(" + StringUtil.arrayToString(ids) + ")";
- }
-
-}
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 1eeb096..102e5d1 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
@@ -57,19 +57,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
private final long MINUTE = 60 * SECOND;
- /**
- * Tables were previously purged using a TRUNCATE statement, but with the upgrade to
- * Cassandra 1.2.0 beta 2, the TRUNCATE command takes a really long time to complete.
- * It was taking so long that it start causing tests to fail. At least for now,
- * IdGenerator is used to pre-allocate ids for use so that we know which schedule ids
- * need to be purged.
- */
- private IdGenerator scheduleIdGenerator;
-
@BeforeMethod
public void resetDB() throws Exception {
- scheduleIdGenerator = new IdGenerator(3);
-
Statement statement = connection.createStatement();
statement.executeUpdate("TRUNCATE " + RAW_METRICS_TABLE);
statement.executeUpdate("TRUNCATE " + ONE_HOUR_METRICS_TABLE);
@@ -80,8 +69,6 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void insertAndFindRawMetrics() {
- int scheduleId = scheduleIdGenerator.next();
-
DateTime hour0 = hour0();
DateTime currentTime = hour0.plusHours(4).plusMinutes(44);
DateTime currentHour = currentTime.hourOfDay().roundFloorCopy();
@@ -89,6 +76,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
DateTime twoMinutesAgo = currentTime.minusMinutes(2);
DateTime oneMinuteAgo = currentTime.minusMinutes(1);
+ int scheduleId = 1;
+
Set<MeasurementDataNumeric> data = new HashSet<MeasurementDataNumeric>();
data.add(new MeasurementDataNumeric(threeMinutesAgo.getMillis(), scheduleId, 3.2));
data.add(new MeasurementDataNumeric(twoMinutesAgo.getMillis(), scheduleId, 3.9));
@@ -119,7 +108,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void insertAndFindAllOneHourMetrics() {
- int scheduleId = scheduleIdGenerator.next();
+ int scheduleId = 1;
DateTime hour0 = hour0();
MetricsDAO dao = new MetricsDAO(dataSource);
@@ -144,8 +133,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void findRangeOfOneHourMetrics() {
- int scheduledId = scheduleIdGenerator.next();
- int nextScheduleId = scheduleIdGenerator.next();
+ int scheduledId = 1;
+ int nextScheduleId = 2;
DateTime hour0 = hour0();
MetricsDAO dao = new MetricsDAO(dataSource);
@@ -173,8 +162,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void updateAndFindOneHourIndexEntries() {
DateTime hour0 = hour0();
- int scheduleId1 = scheduleIdGenerator.next();
- int scheduleId2 = scheduleIdGenerator.next();
+ int scheduleId1 = 1;
+ int scheduleId2 = 2;
Map<Integer, DateTime> updates = new HashMap<Integer, DateTime>();
updates.put(scheduleId1, hour0);
@@ -191,8 +180,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void purge1HourMetricsIndex() {
- int scheduleId1 = scheduleIdGenerator.next();
- int scheduleId2 = scheduleIdGenerator.next();
+ int scheduleId1 = 1;
+ int scheduleId2 = 2;
Map<Integer, DateTime> updates = new HashMap<Integer, DateTime>();
updates.put(scheduleId1, hour0());
updates.put(scheduleId2, hour0());
11 years, 7 months
[rhq] Branch 'feature/cassandra-backend' - modules/enterprise
by John Sanda
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java | 3
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java | 3
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java | 57 ++++++
modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java | 82 +++++-----
4 files changed, 108 insertions(+), 37 deletions(-)
New commits:
commit 7201d75e8327470be831ad1c04c27d98f92cf07c
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 12:47:19 2012 -0500
cleaning up tear down logic
Changing MetricsDAOTest.resetDB back to use a TRUNCATE statement for purging
tables. Also removing the timestamp parameter for inserting metric data. We can
just use the timestamp that cassandra provides. Note that this is the column
timestamp, not the metric timestamp which we do provide.
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 e083dea..de57aa2 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
@@ -87,14 +87,13 @@ public class MetricsDAO {
this.dataSource = dataSource;
}
- public Set<MeasurementDataNumeric> insertRawMetrics(Set<MeasurementDataNumeric> dataSet, int ttl, long timestamp) {
+ public Set<MeasurementDataNumeric> insertRawMetrics(Set<MeasurementDataNumeric> dataSet, int ttl) {
Set<MeasurementDataNumeric> insertedMetrics = new HashSet<MeasurementDataNumeric>();
Connection connection = null;
PreparedStatement statement = null;
try {
String sql = "INSERT INTO raw_metrics (schedule_id, time, value) VALUES (?, ?, ?) " +
"USING TTL " + ttl;
-// sql = "INSERT INTO raw_metrics (schedule_id, time, value) VALUES (?, ?, ?) ";
connection = dataSource.getConnection();
statement = connection.prepareStatement(sql);
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 63504f3..88c63fd 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
@@ -277,8 +277,7 @@ public class MetricsServer {
public void addNumericData(Set<MeasurementDataNumeric> dataSet) {
MetricsDAO dao = new MetricsDAO(cassandraDS);
- long timestamp = System.currentTimeMillis();
- Set<MeasurementDataNumeric> updates = dao.insertRawMetrics(dataSet, RAW_TTL, timestamp);
+ Set<MeasurementDataNumeric> updates = dao.insertRawMetrics(dataSet, RAW_TTL);
updateMetricsIndex(updates);
}
diff --git a/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java
new file mode 100644
index 0000000..08d73c9
--- /dev/null
+++ b/modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/IdGenerator.java
@@ -0,0 +1,57 @@
+/*
+ *
+ * * RHQ Management Platform
+ * * Copyright (C) 2005-2012 Red Hat, Inc.
+ * * All rights reserved.
+ * *
+ * * This program is free software; you can redistribute it and/or modify
+ * * it under the terms of the GNU General Public License, version 2, as
+ * * published by the Free Software Foundation, and/or the GNU Lesser
+ * * General Public License, version 2.1, also as published by the Free
+ * * Software Foundation.
+ * *
+ * * This program is distributed in the hope that it will be useful,
+ * * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * * GNU General Public License and the GNU Lesser General Public License
+ * * for more details.
+ * *
+ * * You should have received a copy of the GNU General Public License
+ * * and the GNU Lesser General Public License along with this program;
+ * * if not, write to the Free Software Foundation, Inc.,
+ * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+package org.rhq.server.metrics;
+
+import org.rhq.core.util.StringUtil;
+
+/**
+ * @author John Sanda
+ */
+public class IdGenerator {
+
+ private int[] ids;
+
+ private int index;
+
+ public IdGenerator(int size) {
+ ids = new int[size];
+ for (int i = 0; i < ids.length; ++i) {
+ ids[i] = i + 1;
+ }
+ }
+
+ public int next() {
+ if (index == ids.length) {
+ throw new RuntimeException("All " + ids.length + " have already been allocated.");
+ }
+ return ids[index++];
+ }
+
+ public String getIdsAsString() {
+ return "(" + StringUtil.arrayToString(ids) + ")";
+ }
+
+}
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 f14fe1b..1eeb096 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
@@ -32,6 +32,7 @@ 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.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
import java.sql.Statement;
import java.util.HashMap;
@@ -56,22 +57,30 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
private final long MINUTE = 60 * SECOND;
+ /**
+ * Tables were previously purged using a TRUNCATE statement, but with the upgrade to
+ * Cassandra 1.2.0 beta 2, the TRUNCATE command takes a really long time to complete.
+ * It was taking so long that it start causing tests to fail. At least for now,
+ * IdGenerator is used to pre-allocate ids for use so that we know which schedule ids
+ * need to be purged.
+ */
+ private IdGenerator scheduleIdGenerator;
+
@BeforeMethod
public void resetDB() throws Exception {
+ scheduleIdGenerator = new IdGenerator(3);
+
Statement statement = connection.createStatement();
-// statement.executeUpdate("TRUNCATE " + RAW_METRICS_TABLE);
-// statement.executeUpdate("TRUNCATE " + ONE_HOUR_METRICS_TABLE);
-// statement.executeUpdate("TRUNCATE " + METRICS_INDEX_TABLE);
-// statement.executeUpdate("TRUNCATE " + SIX_HOUR_METRICS_TABLE);
- statement.executeUpdate("DELETE FROM " + RAW_METRICS_TABLE + " WHERE schedule_id IN (123, 456)");
- statement.executeUpdate("DELETE FROM " + ONE_HOUR_METRICS_TABLE + " WHERE schedule_id IN (123, 456)");
- statement.executeUpdate("DELETE FROM " + SIX_HOUR_METRICS_TABLE + " WHERE schedule_id IN (123, 456)");
- statement.executeUpdate("DELETE FROM " + METRICS_INDEX_TABLE + " WHERE bucket IN ('raw_metrics', 'one_hour_metrics', 'six_hour_metrics')");
+ statement.executeUpdate("TRUNCATE " + RAW_METRICS_TABLE);
+ statement.executeUpdate("TRUNCATE " + ONE_HOUR_METRICS_TABLE);
+ statement.executeUpdate("TRUNCATE " + METRICS_INDEX_TABLE);
+ statement.executeUpdate("TRUNCATE " + SIX_HOUR_METRICS_TABLE);
+ statement.executeUpdate("TRUNCATE " + METRICS_INDEX_TABLE);
}
@Test
public void insertAndFindRawMetrics() {
- int scheduleId = 123;
+ int scheduleId = scheduleIdGenerator.next();
DateTime hour0 = hour0();
DateTime currentTime = hour0.plusHours(4).plusMinutes(44);
@@ -87,8 +96,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
MetricsDAO dao = new MetricsDAO(dataSource);
int ttl = Hours.ONE.toStandardSeconds().getSeconds();
- long timestamp = System.currentTimeMillis();
- Set<MeasurementDataNumeric> actualUpdates = dao.insertRawMetrics(data, ttl, timestamp);
+ Set<MeasurementDataNumeric> actualUpdates = dao.insertRawMetrics(data, ttl);
assertEquals(actualUpdates, data, "The updates do not match expected value.");
@@ -100,24 +108,18 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
);
assertEquals(actualMetrics, expectedMetrics, "Failed to find raw metrics");
- // Now verify that the column meta data was set. We do this separately in order to
- // exercise both versions of the findRawMetrics method. In production code (so far),
- // we have no need to retrieve meta data when retrieving raw metrics, but we need
- // to verify that the meta data is in fact set.
+ // Now verify that the TTL was set. We do this separately in order to exercise both
+ // versions of the findRawMetrics method. In production code (so far), we have no
+ // need to retrieve meta data when retrieving raw metrics, but we need to verify
+ // that the TTL is set.
List<RawNumericMetric> actualMetricsWithMetadata = dao.findRawMetrics(scheduleId, currentHour,
currentHour.plusHours(1), true) ;
- List<RawNumericMetric> expectedMetricsWithMetadata = asList(
- new RawNumericMetric(scheduleId, threeMinutesAgo.getMillis(), 3.2, new ColumnMetadata(ttl, timestamp)),
- new RawNumericMetric(scheduleId, twoMinutesAgo.getMillis(), 3.9, new ColumnMetadata(ttl, timestamp)),
- new RawNumericMetric(scheduleId, oneMinuteAgo.getMillis(), 2.6, new ColumnMetadata(ttl, timestamp))
- );
- assertEquals(actualMetricsWithMetadata, expectedMetricsWithMetadata, "Column meta data does not match " +
- "expected values");
+ assertTTLEquals(actualMetricsWithMetadata, ttl);
}
@Test
public void insertAndFindAllOneHourMetrics() {
- int scheduleId = 123;
+ int scheduleId = scheduleIdGenerator.next();
DateTime hour0 = hour0();
MetricsDAO dao = new MetricsDAO(dataSource);
@@ -142,7 +144,8 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void findRangeOfOneHourMetrics() {
- int scheduledId = 123;
+ int scheduledId = scheduleIdGenerator.next();
+ int nextScheduleId = scheduleIdGenerator.next();
DateTime hour0 = hour0();
MetricsDAO dao = new MetricsDAO(dataSource);
@@ -151,7 +154,7 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
new AggregatedNumericMetric(scheduledId, 3.0, 3.0, 3.0, hour0.plusHours(1).getMillis()),
new AggregatedNumericMetric(scheduledId, 4.0, 4.0, 4.0, hour0.plusHours(2).getMillis()),
new AggregatedNumericMetric(scheduledId, 5.0, 5.0, 5.0, hour0.plusHours(3).getMillis()),
- new AggregatedNumericMetric(456, 1.0, 1.0, 1.0, hour0.plusHours(1).getMillis())
+ new AggregatedNumericMetric(nextScheduleId, 1.0, 1.0, 1.0, hour0.plusHours(1).getMillis())
));
DateTime startTime = hour0.plusHours(1);
@@ -170,27 +173,31 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
@Test
public void updateAndFindOneHourIndexEntries() {
DateTime hour0 = hour0();
+ int scheduleId1 = scheduleIdGenerator.next();
+ int scheduleId2 = scheduleIdGenerator.next();
Map<Integer, DateTime> updates = new HashMap<Integer, DateTime>();
- updates.put(100, hour0);
- updates.put(101, hour0);
+ updates.put(scheduleId1, hour0);
+ updates.put(scheduleId2, hour0);
MetricsDAO dao = new MetricsDAO(dataSource);
dao.updateMetricsIndex(ONE_HOUR_METRICS_TABLE, updates);
List<MetricsIndexEntry> actual = dao.findMetricsIndexEntries(ONE_HOUR_METRICS_TABLE);
- List<MetricsIndexEntry> expected = asList(new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, 100),
- new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, 101));
+ List<MetricsIndexEntry> expected = asList(new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, scheduleId1),
+ new MetricsIndexEntry(ONE_HOUR_METRICS_TABLE, hour0, scheduleId2));
assertCollectionMatchesNoOrder(expected, actual, "Failed to update or retrieve metrics index entries");
}
@Test
public void purge1HourMetricsIndex() {
+ int scheduleId1 = scheduleIdGenerator.next();
+ int scheduleId2 = scheduleIdGenerator.next();
Map<Integer, DateTime> updates = new HashMap<Integer, DateTime>();
- updates.put(100, hour0());
- updates.put(101, hour0());
- updates.put(100, hour0().plusHours(1));
- updates.put(101, hour0().plusHours(1));
+ updates.put(scheduleId1, hour0());
+ updates.put(scheduleId2, hour0());
+ updates.put(scheduleId1, hour0().plusHours(1));
+ updates.put(scheduleId2, hour0().plusHours(1));
MetricsDAO dao = new MetricsDAO(dataSource);
dao.updateMetricsIndex(ONE_HOUR_METRICS_TABLE, updates);
@@ -201,4 +208,13 @@ public class MetricsDAOTest extends CassandraIntegrationTest {
index);
}
+ private void assertTTLEquals(List<RawNumericMetric> metrics, int ttl) {
+ for (RawNumericMetric metric : metrics) {
+ assertNotNull(metric.getColumnMetadata(), metric + " does not contain column meta data. The meta data " +
+ " must be loaded in order to verify that the TTL is set correctly.");
+ assertEquals(metric.getColumnMetadata().getTtl(), (Integer) ttl, "The TTL for " + metric +
+ " does not match the expected value");
+ }
+ }
+
}
11 years, 7 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/util/JaxbTest.java | 38 ----------
1 file changed, 38 deletions(-)
New commits:
commit abda861b4c4204adca7d08d3449e6d3ba50251f0
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 26 11:07:46 2012 -0500
deleting test code that was just intended for prototyping
JaxbTest was used for some prototyping while I was working on the reports
export feature. It probably was committed on accident.
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/util/JaxbTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/util/JaxbTest.java
deleted file mode 100644
index e5172f6..0000000
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/util/JaxbTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.rhq.enterprise.server.util;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Marshaller;
-
-import org.testng.annotations.Test;
-
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.shared.ResourceBuilder;
-import org.rhq.core.domain.util.PageList;
-
-public class JaxbTest {
-
- @Test
- public void writeFragments() throws Exception {
- Resource resource = new ResourceBuilder()
- .createRandomServer()
- .with(2).randomChildServers()
- .build();
-
- PageList<Resource> resources = new PageList<Resource>();
- resources.add(resource);
- resources.addAll(resource.getChildResources());
-
- JAXBContext context = JAXBContext.newInstance(Resource.class, PageList.class);
- Marshaller marshaller = context.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
-
- System.out.println("<collection>\n");
- for (Resource r : resources) {
- marshaller.marshal(r, System.out);
- }
- System.out.println("</collection>\n");
-
- }
-
-}
11 years, 7 months
[rhq] Branch 'rhq-on-as7' - modules/core modules/enterprise
by Jay Shaughnessy
modules/core/domain/pom.xml | 5 +++--
modules/enterprise/server/itests-2/pom.xml | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
New commits:
commit 8b77e682177b583559249123387e6c174a7c6a0d
Author: Jay Shaughnessy <jshaughn(a)jshaughn.csb>
Date: Mon Nov 26 10:47:59 2012 -0500
Still trying to get the unsecured DS connection right...
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index 68af11c..11e4e3e 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -272,8 +272,9 @@
<!-- FOR RHQ TESTING -->
<security-domain name="RHQDSSecurityDomain" cache-type="default">
<authentication>
- <login-module code="Identity" flag="required">
- <module-option name="username" value="${rhq.test.ds.user-name}"/>
+ <login-module code="ConfiguredIdentity" flag="required">
+ <module-option name="userName" value="${rhq.test.ds.user-name}"/>
+ <module-option name="principal" value="${rhq.test.ds.user-name}"/>
<module-option name="password" value="${rhq.test.ds.password}"/>
</login-module>
</authentication>
diff --git a/modules/enterprise/server/itests-2/pom.xml b/modules/enterprise/server/itests-2/pom.xml
index 6ff8fb5..463250a 100644
--- a/modules/enterprise/server/itests-2/pom.xml
+++ b/modules/enterprise/server/itests-2/pom.xml
@@ -250,8 +250,9 @@
<!-- FOR RHQ TESTING -->
<security-domain name="RHQDSSecurityDomain" cache-type="default">
<authentication>
- <login-module code="Identity" flag="required">
- <module-option name="username" value="${rhq.test.ds.user-name}"/>
+ <login-module code="ConfiguredIdentity" flag="required">
+ <module-option name="userName" value="${rhq.test.ds.user-name}"/>
+ <module-option name="principal" value="${rhq.test.ds.user-name}"/>
<module-option name="password" value="${rhq.test.ds.password}"/>
</login-module>
</authentication>
11 years, 7 months