package org.rhq.server.metrics;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.cassandra.util.ClusterBuilder;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
/**
* @author John Sanda
*/
public class ClusterMonitorTest {
private final Log log = LogFactory.getLog(ClusterMonitorTest.class);
// @Test
public void monitorCluster() {
Cluster cluster = new ClusterBuilder()
.addContactPoints("127.0.0.1")
// .withCredentials("cassandra", "cassandra")
.withCredentials("rhqadmin", "rhqadmin")
.build();
cluster.register(new Host.StateListener() {
@Override
public void onAdd(Host host) {
log.info("host " + host + " ADDED");
}
@Override
public void onUp(Host host) {
log.info("host " + host + " UP");
}
@Override
public void onDown(Host host) {
log.info("host " + host + " DOWN");
}
@Override
public void onRemove(Host host) {
log.info("host " + host + " REMOVED");
}
});
Session session = cluster.connect("rhq");
StorageSession storageSession = new StorageSession(session);
MetricsDAO dao = new MetricsDAO(storageSession, new MetricsConfiguration());
while (true) {
try {
Thread.sleep(10000);
try {
// session.execute("select * from system.schema_keyspaces");
com.datastax.driver.core.Query query = QueryBuilder.select().from("rhq", "raw_metrics").setConsistencyLevel(
ConsistencyLevel.ALL);
// session.execute(query);
// session.execute("select * from rhq.raw_metrics");
// log.info("query succeeded");
StorageResultSetFuture future = dao.insertRawData
(new MeasurementDataNumeric(System.currentTimeMillis(), 123, 1.1));
Futures.addCallback(future, new FutureCallback<ResultSet>() {
@Override
public void onSuccess(ResultSet rows) {
log.info("insert succeeded");
}
@Override
public void onFailure(Throwable throwable) {
log.error("insert failed", throwable);
}
});
} catch (Exception e) {
log.error("query failed", e);
}
} catch (InterruptedException e) {
}
}
}
}