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"));
+    }
 }