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/08 15:01:51 UTC

svn commit: r1540036 - 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/ main/java/org/apache/sirona/ca...

Author: rmannibucau
Date: Fri Nov  8 14:01:51 2013
New Revision: 1540036

URL: http://svn.apache.org/r1540036
Log:
adding CassandraCollectorGaugeDataStore

Added:
    incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/
    incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/AgentGaugeTest.java
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/gauge/CassandraCollectorGaugeDataStore.java
    incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.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=1540036&r1=1540035&r2=1540036&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 Fri Nov  8 14:01:51 2013
@@ -24,9 +24,11 @@ public class CassandraBuilder {
     private String cluster = "sirona-cluster";
     private String keyspace = "sirona";
     private String counterColumnFamily = "counters";
-    private String gaugeColumnFamily = "gauges";
+    private String gaugeMetricsColumnFamily = "gauges_values";
+    private String gaugeRolesColumnFamily = "gauges_roles";
     private String statusColumnFamily = "statuses";
     private String markerCountersColumFamily = "markers_counters";
+    private String markerGaugesColumFamily = "markers_gauges";
     private int replicationFactor = 1;
 
     public String getHosts() {
@@ -45,8 +47,8 @@ public class CassandraBuilder {
         return counterColumnFamily;
     }
 
-    public String getGaugeColumnFamily() {
-        return gaugeColumnFamily;
+    public String getGaugeValuesColumnFamily() {
+        return gaugeMetricsColumnFamily;
     }
 
     public String getStatusColumnFamily() {
@@ -60,4 +62,8 @@ public class CassandraBuilder {
     public String getMarkerCountersColumFamily() {
         return markerCountersColumFamily;
     }
+
+    public String getMarkerGaugesColumFamily() {
+        return markerGaugesColumFamily;
+    }
 }

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=1540036&r1=1540035&r2=1540036&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 Fri Nov  8 14:01:51 2013
@@ -16,16 +16,23 @@
  */
 package org.apache.sirona.cassandra.collector;
 
+import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
+import me.prettyprint.cassandra.serializers.StringSerializer;
 import me.prettyprint.cassandra.service.CassandraHostConfigurator;
+import me.prettyprint.cassandra.service.KeyIterator;
 import me.prettyprint.cassandra.service.ThriftKsDef;
 import me.prettyprint.hector.api.Cluster;
 import me.prettyprint.hector.api.Keyspace;
+import me.prettyprint.hector.api.Serializer;
+import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
 import me.prettyprint.hector.api.ddl.ComparatorType;
 import me.prettyprint.hector.api.factory.HFactory;
 import org.apache.sirona.cassandra.CassandraBuilder;
 import org.apache.sirona.configuration.Configuration;
 
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.logging.Logger;
 
 import static java.util.Arrays.asList;
@@ -33,6 +40,7 @@ import static java.util.Arrays.asList;
 public class CassandraSirona {
     private static final Logger LOGGER = Logger.getLogger(CassandraSirona.class.getName());
 
+    private static final String EMPTY_VALUE = "";
     private static final String SEPARATOR = "->";
 
     private final CassandraBuilder builder = Configuration.findOrCreateInstance(CassandraBuilder.class);
@@ -49,16 +57,17 @@ public class CassandraSirona {
         keyspace = HFactory.createKeyspace(keyspaceName, cluster);
 
         final ColumnFamilyDefinition counters = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getCounterColumnFamily(), ComparatorType.UTF8TYPE);
-        final ColumnFamilyDefinition gauges = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getGaugeColumnFamily(), ComparatorType.UTF8TYPE);
+        final ColumnFamilyDefinition gauges = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getGaugeValuesColumnFamily(), ComparatorType.UTF8TYPE);
+        final ColumnFamilyDefinition markersGauges = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getMarkerGaugesColumFamily(), ComparatorType.UTF8TYPE);
         final ColumnFamilyDefinition statuses = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getStatusColumnFamily(), ComparatorType.UTF8TYPE);
         final ColumnFamilyDefinition markersCounters = HFactory.createColumnFamilyDefinition(keyspaceName, builder.getMarkerCountersColumFamily(), 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.");
+                LOGGER.info("Creating Sirona Cassandra '" + keyspaceName + "' keyspace.");
                 cluster.addKeyspace(
                     HFactory.createKeyspaceDefinition(keyspaceName, ThriftKsDef.DEF_STRATEGY_CLASS, builder.getReplicationFactor(),
-                        asList(counters, gauges, statuses, markersCounters)));
+                        asList(counters, markersCounters, gauges, markersGauges, statuses)));
             }
         }
     }
@@ -70,9 +79,13 @@ public class CassandraSirona {
         }
 
         for (final String s : bases) {
-            builder.append(s).append(SEPARATOR);
+            if (s != null) {
+                builder.append(s).append(SEPARATOR);
+            }
+        }
+        if (builder.length() > 0) {
+            builder.setLength(builder.length() - SEPARATOR.length());
         }
-        builder.setLength(builder.length() - SEPARATOR.length());
         return builder.toString();
     }
 
@@ -81,10 +94,6 @@ public class CassandraSirona {
         HFactory.shutdownCluster(cluster);
     }
 
-    public String getCounterColumnFamily() {
-        return builder.getCounterColumnFamily();
-    }
-
     public Keyspace getKeyspace() {
         return keyspace;
     }
@@ -93,7 +102,35 @@ public class CassandraSirona {
         return builder.getMarkerCountersColumFamily();
     }
 
+    public String getMarkerGaugesColumFamily() {
+        return builder.getMarkerGaugesColumFamily();
+    }
+
+    public String getCounterColumnFamily() {
+        return builder.getCounterColumnFamily();
+    }
+
+    public String getGaugeValuesColumnFamily() {
+        return builder.getGaugeValuesColumnFamily();
+    }
+
     public String keySeparator() {
         return SEPARATOR;
     }
+
+    public static HColumn<String, ?> emptyColumn(final String name) {
+        return column(name, EMPTY_VALUE);
+    }
+
+    public static <A, B> HColumn<A, B> column(final A name, final B value) {
+        return HFactory.createColumn(name, value, (Serializer<A>) SerializerTypeInferer.getSerializer(name), (Serializer<B>) SerializerTypeInferer.getSerializer(value));
+    }
+
+    public static Collection<String> keys(final Keyspace keyspace, final String markerFamily) {
+        final Collection<String> set = new HashSet<String>();
+        for (final String item : new KeyIterator.Builder<String>(keyspace, markerFamily, StringSerializer.get()).build()) {
+            set.add(item);
+        }
+        return set;
+    }
 }

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=1540036&r1=1540035&r2=1540036&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 Fri Nov  8 14:01:51 2013
@@ -19,7 +19,6 @@ package org.apache.sirona.cassandra.coll
 import me.prettyprint.cassandra.serializers.DoubleSerializer;
 import me.prettyprint.cassandra.serializers.IntegerSerializer;
 import me.prettyprint.cassandra.serializers.LongSerializer;
-import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
 import me.prettyprint.cassandra.serializers.StringSerializer;
 import me.prettyprint.cassandra.service.KeyIterator;
 import me.prettyprint.hector.api.Keyspace;
@@ -46,20 +45,23 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Map;
 
+import static org.apache.sirona.cassandra.collector.CassandraSirona.column;
+import static org.apache.sirona.cassandra.collector.CassandraSirona.emptyColumn;
+import static org.apache.sirona.cassandra.collector.CassandraSirona.keys;
+
 public class CassandraCollectorCounterDataStore extends InMemoryCollectorCounterStore {
     private static final String[] FIND_BY_KEYS_COLUMNS = new String[] { "maxConcurrency", "variance", "n", "max", "min", "sum", "m2", "mean" };
-    private static final String EMPTY_VALUE = "";
 
     private final Keyspace keyspace;
     private final String family;
-    private final String markerCounterFamily;
+    private final String markerFamily;
     private final CassandraSirona cassandra;
 
     public CassandraCollectorCounterDataStore() {
         this.cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
         this.keyspace = cassandra.getKeyspace();
         this.family = cassandra.getCounterColumnFamily();
-        this.markerCounterFamily = cassandra.getMarkerCountersColumFamily();
+        this.markerFamily = cassandra.getMarkerCountersColumFamily();
     }
 
     @Override
@@ -77,7 +79,7 @@ public class CassandraCollectorCounterDa
             StringSerializer.get(), StringSerializer.get(), StringSerializer.get());
 
         final QueryResult<ColumnSlice<String, String>> result = q.setKey(marker)
-            .setColumnFamily(markerCounterFamily)
+            .setColumnFamily(markerFamily)
             .setRange(null, null, false, Integer.MAX_VALUE)
             .execute();
 
@@ -113,11 +115,7 @@ public class CassandraCollectorCounterDa
 
     @Override
     public Collection<String> markers() {
-        final Collection<String> set = new HashSet<String>();
-        for (final String item : new KeyIterator.Builder<String>(cassandra.getKeyspace(), cassandra.getMarkerCountersColumFamily(), StringSerializer.get()).build()) {
-            set.add(item);
-        }
-        return set;
+        return keys(keyspace, markerFamily);
     }
 
     @Override // TODO: see if we shouldn't store it or if aggregation can be done on java side
@@ -218,7 +216,7 @@ public class CassandraCollectorCounterDa
 
         // marker-counter
         HFactory.createMutator(keyspace, StringSerializer.get())
-            .addInsertion(marker, markerCounterFamily, column(id, EMPTY_VALUE))
+            .addInsertion(marker, markerFamily, emptyColumn(id))
             .execute();
 
         return counter;
@@ -235,8 +233,4 @@ public class CassandraCollectorCounterDa
         }
         return col.getValue();
     }
-
-    protected static <B> HColumn<String, B> column(final String name, final B value) {
-        return HFactory.createColumn(name, value, StringSerializer.get(), (Serializer<B>) SerializerTypeInferer.getSerializer(value));
-    }
 }

Modified: incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java?rev=1540036&r1=1540035&r2=1540036&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java Fri Nov  8 14:01:51 2013
@@ -16,51 +16,133 @@
  */
 package org.apache.sirona.cassandra.collector.gauge;
 
+import me.prettyprint.cassandra.serializers.DoubleSerializer;
+import me.prettyprint.cassandra.serializers.LongSerializer;
+import me.prettyprint.cassandra.serializers.StringSerializer;
+import me.prettyprint.hector.api.Keyspace;
+import me.prettyprint.hector.api.beans.ColumnSlice;
+import me.prettyprint.hector.api.beans.HColumn;
+import me.prettyprint.hector.api.factory.HFactory;
+import me.prettyprint.hector.api.query.QueryResult;
 import org.apache.sirona.Role;
+import org.apache.sirona.cassandra.collector.CassandraSirona;
+import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.counters.Unit;
 import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
 import org.apache.sirona.store.gauge.GaugeValuesRequest;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.TreeMap;
+
+import static org.apache.sirona.cassandra.collector.CassandraSirona.column;
+import static org.apache.sirona.cassandra.collector.CassandraSirona.emptyColumn;
+import static org.apache.sirona.cassandra.collector.CassandraSirona.keys;
 
 public class CassandraCollectorGaugeDataStore implements CollectorGaugeDataStore {
-    @Override
-    public Map<Long, Double> getGaugeValues(final GaugeValuesRequest gaugeValuesRequest) {
-        throw new UnsupportedOperationException();
+    private final CassandraSirona cassandra;
+    private final Keyspace keyspace;
+    private final String valueFamily;
+    private final String markerFamily;
+
+    public CassandraCollectorGaugeDataStore() {
+        this.cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
+        this.keyspace = cassandra.getKeyspace();
+        this.valueFamily = cassandra.getGaugeValuesColumnFamily();
+        this.markerFamily = cassandra.getMarkerGaugesColumFamily();
+    }
+
+    private String id(final Role role, final String marker) { // order is really important here, see keyToRole()
+        return cassandra.generateKey(role.getName(), role.getUnit().getName(), marker);
+    }
+
+    private Role keyToRole(final String key) {
+        final String[] segments = key.split(cassandra.keySeparator());
+        return new Role(segments[0], Unit.get(segments[1]));  // no need of segments[2] (= marker)
     }
 
     @Override
-    public Collection<Role> gauges() {
-        throw new UnsupportedOperationException();
+    public void createOrNoopGauge(final Role role, final String marker) {
+        final String id = id(role, marker);
+
+        HFactory.createMutator(keyspace, StringSerializer.get())
+            .addInsertion(marker, markerFamily, emptyColumn(id))
+            .execute();
     }
 
     @Override
-    public Role findGaugeRole(final String name) {
-        throw new UnsupportedOperationException();
+    public void addToGauge(final Role role, final long time, final double value, final String marker) {
+        createOrNoopGauge(role, marker);
+
+        HFactory.createMutator(keyspace, StringSerializer.get())
+            .addInsertion(id(role, marker), valueFamily, column(time, value))
+            .execute();
     }
 
     @Override
-    public void gaugeStopped(final Role gauge) {
-        throw new UnsupportedOperationException();
+    public Collection<String> markers() {
+        return keys(keyspace, markerFamily);
     }
 
     @Override
     public Map<Long, Double> getGaugeValues(final GaugeValuesRequest gaugeValuesRequest, final String marker) {
-        throw new UnsupportedOperationException();
+        final QueryResult<ColumnSlice<Long, Double>> qResult = HFactory.createSliceQuery(keyspace, StringSerializer.get(), LongSerializer.get(), DoubleSerializer.get())
+            .setKey(id(gaugeValuesRequest.getRole(), marker))
+            .setColumnFamily(valueFamily)
+            .setRange(gaugeValuesRequest.getStart(), gaugeValuesRequest.getEnd(), false, Integer.MAX_VALUE)
+            .execute();
+
+        final Map<Long, Double> result = new TreeMap<Long, Double>();
+        for (final HColumn<Long, Double> slide : qResult.get().getColumns()) {
+            result.put(slide.getName(), slide.getValue());
+        }
+
+        return result;
     }
 
     @Override
-    public void createOrNoopGauge(final Role role, final String marker) {
-        throw new UnsupportedOperationException();
+    public Map<Long, Double> getGaugeValues(final GaugeValuesRequest gaugeValuesRequest) {
+        final Map<Long, Double> result = new TreeMap<Long, Double>();
+
+        for (final String marker : markers()) {
+            for (final Map.Entry<Long, Double> values : getGaugeValues(gaugeValuesRequest, marker).entrySet()) {
+                final Long key = values.getKey();
+
+                Double d = result.get(key);
+                if (d == null) {
+                    d = 0.;
+                }
+
+                result.put(key, d + values.getValue());
+            }
+        }
+
+        return result;
     }
 
     @Override
-    public void addToGauge(final Role role, final long time, final double value, final String marker) {
-        throw new UnsupportedOperationException();
+    public Collection<Role> gauges() {
+        final Collection<Role> roles = new HashSet<Role>();
+        for (final String key : keys(keyspace, valueFamily)) {
+            roles.add(keyToRole(key));
+        }
+        return roles;
     }
 
     @Override
-    public Collection<String> markers() {
-        throw new UnsupportedOperationException();
+    public Role findGaugeRole(final String name) {
+        for (final String key : keys(keyspace, valueFamily)) {
+            final String[] segments = key.split(cassandra.keySeparator());
+            if (segments[0].equals(name)) {
+                return keyToRole(key);
+            }
+        }
+        throw new IllegalArgumentException("role '" + name + "' not found");
+    }
+
+    @Override
+    public void gaugeStopped(final Role gauge) {
+        // no-op
     }
 }

Added: incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/AgentGaugeTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/AgentGaugeTest.java?rev=1540036&view=auto
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/AgentGaugeTest.java (added)
+++ incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/collector/gauge/AgentGaugeTest.java Fri Nov  8 14:01:51 2013
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sirona.cassandra.collector.gauge;
+
+import org.apache.sirona.Role;
+import org.apache.sirona.cassandra.framework.CassandraRunner;
+import org.apache.sirona.counters.Unit;
+import org.apache.sirona.store.gauge.GaugeValuesRequest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Collection;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(CassandraRunner.class)
+public class AgentGaugeTest {
+    private static final Role ROLE = new Role("_role_", Unit.DECA);
+    private static final String MARKER = "node1";
+
+    @Test
+    public void createGaugeWithMarker() {
+        new CassandraCollectorGaugeDataStore().createOrNoopGauge(ROLE, MARKER);
+        new CassandraCollectorGaugeDataStore().createOrNoopGauge(ROLE, MARKER); // createOrNoopGauge is reentrant
+        final Collection<String> markers = new CassandraCollectorGaugeDataStore().markers();
+        assertNotNull(markers);
+        assertEquals(1, markers.size());
+        assertEquals("node1", markers.iterator().next());
+    }
+
+    @Test
+    public void addToGaugesWithMarker() {
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 1, 5, MARKER);
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 2, 6, MARKER);
+
+        final Map<Long, Double> values = new CassandraCollectorGaugeDataStore().getGaugeValues(new GaugeValuesRequest(0, 5, ROLE), MARKER);
+
+        assertNotNull(values);
+        assertEquals(2, values.size());
+        assertEquals(5., values.get(1L), 0.);
+        assertEquals(6., values.get(2L), 0.);
+    }
+
+    @Test
+    public void getAggregatedGauges() {
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 1, 5, MARKER);
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 2, 6, MARKER);
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 1, 5, "node2");
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 2, 6, "node2");
+
+        final Map<Long, Double> values = new CassandraCollectorGaugeDataStore().getGaugeValues(new GaugeValuesRequest(0, 5, ROLE));
+
+        assertNotNull(values);
+        assertEquals(2, values.size());
+        assertEquals(10., values.get(1L), 0.);
+        assertEquals(12., values.get(2L), 0.);
+    }
+
+    @Test
+    public void gauges() {
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 1, 5, MARKER);
+
+        final Collection<Role> gauges = new CassandraCollectorGaugeDataStore().gauges();
+        assertNotNull(gauges);
+        assertEquals(1, gauges.size());
+        assertEquals(ROLE, gauges.iterator().next());
+    }
+
+    @Test
+    public void findRoles() {
+        new CassandraCollectorGaugeDataStore().addToGauge(ROLE, 1, 5, MARKER);
+
+        final Role found = new CassandraCollectorGaugeDataStore().findGaugeRole(ROLE.getName());
+        assertNotNull(found);
+        assertEquals(ROLE.getUnit(), found.getUnit());
+    }
+}

Modified: incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.java?rev=1540036&r1=1540035&r2=1540036&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.java (original)
+++ incubator/sirona/trunk/agent/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.java Fri Nov  8 14:01:51 2013
@@ -60,7 +60,7 @@ public class CassandraRunner extends Blo
         }
 
         @Override
-        public void evaluate() throws Throwable {
+        public void evaluate() throws Throwable { // one clean instance by test to avoid side effects
             EmbeddedCassandraServerHelper.startEmbeddedCassandra();
             EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
             try {