You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2013/11/07 18:00:29 UTC
svn commit: r1539712 - in /incubator/sirona/trunk/agent/store/cassandra/src:
main/java/org/apache/sirona/cassandra/
main/java/org/apache/sirona/cassandra/collector/
main/java/org/apache/sirona/cassandra/collector/counter/
test/java/org/apache/sirona/ca...
Author: rmannibucau
Date: Thu Nov 7 17:00:28 2013
New Revision: 1539712
URL: http://svn.apache.org/r1539712
Log:
implementing markers() for cassandra counter store
Modified:
incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java
incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java
incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java
incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CounterDao.java
incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/AgentCounterTest.java
Modified: incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java?rev=1539712&r1=1539711&r2=1539712&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java Thu Nov 7 17:00:28 2013
@@ -26,6 +26,7 @@ public class CassandraBuilder {
private String counterColumnFamily = "counters";
private String gaugeColumnFamily = "gauges";
private String statusColumnFamily = "statuses";
+ private String markersColumnFamily = "markers";
private int replicationFactor = 1;
public String getHosts() {
@@ -55,4 +56,8 @@ public class CassandraBuilder {
public int getReplicationFactor() {
return replicationFactor;
}
+
+ public String getMarkersColumnFamily() {
+ return markersColumnFamily;
+ }
}
Modified: incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java?rev=1539712&r1=1539711&r2=1539712&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java Thu Nov 7 17:00:28 2013
@@ -51,13 +51,14 @@ public class CassandraSirona {
final ColumnFamilyDefinition counters = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getCounterColumnFamily(), ComparatorType.UTF8TYPE);
final ColumnFamilyDefinition gauges = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getGaugeColumnFamily(), ComparatorType.UTF8TYPE);
final ColumnFamilyDefinition statuses = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getStatusColumnFamily(), ComparatorType.UTF8TYPE);
+ final ColumnFamilyDefinition markers = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getMarkersColumnFamily(), ComparatorType.UTF8TYPE);
{ // ensure keyspace exists, here if the keyspace doesn't exist we suppose nothing exist
if (cluster.describeKeyspace(keyspaceName) == null) {
LOGGER.info("Creating Cassandra '" + keyspaceName + "' keyspace.");
cluster.addKeyspace(
HFactory.createKeyspaceDefinition(keyspaceName, ThriftKsDef.DEF_STRATEGY_CLASS, builder.getReplicationFactor(),
- asList(counters, gauges, statuses)));
+ asList(counters, gauges, statuses, markers)));
}
}
}
@@ -84,6 +85,10 @@ public class CassandraSirona {
return builder.getCounterColumnFamily();
}
+ public String getMarkersColumFamily() {
+ return builder.getMarkersColumnFamily();
+ }
+
public Keyspace getKeyspace() {
return keyspace;
}
Modified: incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java?rev=1539712&r1=1539711&r2=1539712&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java Thu Nov 7 17:00:28 2013
@@ -40,7 +40,7 @@ public class CassandraCollectorCounterDa
@Override
public Collection<String> markers() {
- throw new UnsupportedOperationException();
+ return dao.markers();
}
@Override
Modified: incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CounterDao.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CounterDao.java?rev=1539712&r1=1539711&r2=1539712&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CounterDao.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CounterDao.java Thu Nov 7 17:00:28 2013
@@ -25,8 +25,11 @@ import me.prettyprint.hector.api.Keyspac
import me.prettyprint.hector.api.Serializer;
import me.prettyprint.hector.api.beans.ColumnSlice;
import me.prettyprint.hector.api.beans.HColumn;
+import me.prettyprint.hector.api.beans.OrderedRows;
+import me.prettyprint.hector.api.beans.Row;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.query.QueryResult;
+import me.prettyprint.hector.api.query.RangeSlicesQuery;
import me.prettyprint.hector.api.query.SliceQuery;
import org.apache.sirona.cassandra.DynamicDelegatedSerializer;
import org.apache.sirona.cassandra.collector.CassandraSirona;
@@ -34,17 +37,22 @@ import org.apache.sirona.configuration.C
import org.apache.sirona.counters.Counter;
import org.apache.sirona.math.M2AwareStatisticalSummary;
+import java.util.Collection;
+import java.util.HashSet;
+
public class CounterDao {
private static final String[] FIND_COLUMNS = new String[] { "maxConcurrency", "variance", "n", "max", "min", "sum", "m2", "mean" };
private final Keyspace keyspace;
private final String family;
+ private final String markerFamily;
private final CassandraSirona cassandra;
public CounterDao() {
this.cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
this.keyspace = cassandra.getKeyspace();
this.family = cassandra.getCounterColumnFamily();
+ this.markerFamily = cassandra.getMarkersColumFamily();
}
public CassandraLeafCounter findByKey(final Counter.Key ckey, final String marker) {
@@ -81,6 +89,7 @@ public class CounterDao {
final Counter.Key key = counter.getKey();
final String id = id(key, marker);
+ // counter itself
HFactory.createMutator(keyspace, StringSerializer.get())
.addInsertion(id, family, column("role", key.getRole().getName()))
.addInsertion(id, family, column("key", key.getName()))
@@ -95,9 +104,34 @@ public class CounterDao {
.addInsertion(id, family, column("marker", marker))
.execute();
+ // marker
+ HFactory.createMutator(keyspace, StringSerializer.get())
+ .addInsertion(marker, markerFamily, column("name", marker))
+ .execute();
+
return counter;
}
+ public Collection<String> markers() {
+ final OrderedRows<String, String, String> result = HFactory.createRangeSlicesQuery(keyspace,
+ StringSerializer.get(), StringSerializer.get(), StringSerializer.get())
+ .setColumnFamily(markerFamily)
+ .setRange(null, null, false, Integer.MAX_VALUE)
+ .setReturnKeysOnly()
+ .execute()
+ .get();
+
+ final Collection<String> set = new HashSet<String>();
+
+ if (result != null) {
+ for (final Row<String, String, String> item : result) {
+ set.add(item.getKey());
+ }
+ }
+
+ return set;
+ }
+
private String id(final Counter.Key key, final String marker) {
return cassandra.generateKey(key.getRole().getName(), key.getName(), marker);
}
Modified: incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/AgentCounterTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/AgentCounterTest.java?rev=1539712&r1=1539711&r2=1539712&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/AgentCounterTest.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/AgentCounterTest.java Thu Nov 7 17:00:28 2013
@@ -29,9 +29,13 @@ import org.apache.sirona.counters.Unit;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Collection;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
@RunWith(CassandraRunner.class)
public class AgentCounterTest {
@@ -64,4 +68,18 @@ public class AgentCounterTest {
assertEquals("K100Drap#1", counter.getKey().getName());
assertEquals("K100Drap", counter.getKey().getRole().getName());
}
+
+ @Test
+ public void markers() {
+ final Counter.Key key = new Counter.Key(new Role("K100Drap", Unit.UNARY), "K100Drap#1");
+ final String marker = "node1";
+
+ assertNull(new CounterDao().findByKey(key, marker));
+ new CassandraCollectorCounterDataStore().getOrCreateCounter(key, marker);
+ assertNotNull(new CounterDao().findByKey(key, marker));
+
+ final Collection<String> markers = new CassandraCollectorCounterDataStore().markers();
+ assertEquals(1, markers.size());
+ assertTrue(markers.contains("node1"));
+ }
}