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/04 12:06:48 UTC

svn commit: r1538552 - in /incubator/sirona/trunk: collector/src/main/java/org/apache/sirona/collector/server/ collector/src/main/java/org/apache/sirona/collector/server/store/counter/ collector/src/main/java/org/apache/sirona/collector/server/store/ga...

Author: rmannibucau
Date: Mon Nov  4 11:06:47 2013
New Revision: 1538552

URL: http://svn.apache.org/r1538552
Log:
updating collector to support new reporting pages (gauges typically)

Added:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/RemoteGaugeDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorCounterStore.java
      - copied, changed from r1538515, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/counters/CollectorCounterStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorGaugeDataStore.java
      - copied, changed from r1538515, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/CollectorGaugeDataStore.java
Removed:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/counters/CollectorCounterStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/CollectorGaugeDataStore.java
Modified:
    incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
    incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/counter/InMemoryCollectorCounterStore.java
    incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/gauge/DelegatedCollectorGaugeDataStore.java
    incubator/sirona/trunk/collector/src/main/resources/collector-sirona.properties
    incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java
    incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java
    incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/counter/AggregatorTest.java
    incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/gauge/CollectorGaugeTest.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/GaugeManager.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/AggregatedGaugeDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/GaugeDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/InMemoryGaugeDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java
    incubator/sirona/trunk/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java
    incubator/sirona/trunk/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTest.java
    incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java
    incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/handler/api/Template.java
    incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/gauge/GaugeEndpoints.java
    incubator/sirona/trunk/src/site/markdown/collector.md

Modified: incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/Collector.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/Collector.java (original)
+++ incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/Collector.java Mon Nov  4 11:06:47 2013
@@ -21,10 +21,10 @@ import com.fasterxml.jackson.databind.De
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;
-import org.apache.sirona.gauges.CollectorGaugeDataStore;
+import org.apache.sirona.store.CollectorGaugeDataStore;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.CounterDataStore;

Modified: incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/counter/InMemoryCollectorCounterStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/counter/InMemoryCollectorCounterStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/counter/InMemoryCollectorCounterStore.java (original)
+++ incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/counter/InMemoryCollectorCounterStore.java Mon Nov  4 11:06:47 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.collector.server.store.counter;
 
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.store.InMemoryCounterDataStore;

Modified: incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/gauge/DelegatedCollectorGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/gauge/DelegatedCollectorGaugeDataStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/gauge/DelegatedCollectorGaugeDataStore.java (original)
+++ incubator/sirona/trunk/collector/src/main/java/org/apache/sirona/collector/server/store/gauge/DelegatedCollectorGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -19,7 +19,7 @@ package org.apache.sirona.collector.serv
 import org.apache.sirona.MonitoringException;
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.gauges.CollectorGaugeDataStore;
+import org.apache.sirona.store.CollectorGaugeDataStore;
 import org.apache.sirona.store.GaugeDataStore;
 import org.apache.sirona.store.GaugeValuesRequest;
 import org.apache.sirona.store.InMemoryGaugeDataStore;
@@ -27,8 +27,9 @@ import org.apache.sirona.store.InMemoryG
 import java.lang.reflect.Constructor;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -62,6 +63,7 @@ public class DelegatedCollectorGaugeData
         }
     }
 
+    @Override
     public Map<Long, Double> getGaugeValues(final GaugeValuesRequest gaugeValuesRequest, final String marker) {
         final GaugeDataStore gaugeDataStore = dataStores.get(marker);
         if (gaugeDataStore == null) {
@@ -70,6 +72,7 @@ public class DelegatedCollectorGaugeData
         return gaugeDataStore.getGaugeValues(gaugeValuesRequest);
     }
 
+    @Override
     public void createOrNoopGauge(final Role role, final String marker) {
         GaugeDataStore gaugeDataStore = dataStores.get(marker);
         if (gaugeDataStore == null) {
@@ -82,11 +85,13 @@ public class DelegatedCollectorGaugeData
         gaugeDataStore.createOrNoopGauge(role);
     }
 
+    @Override
     public void addToGauge(final Role role, final long time, final double value, final String marker) {
         createOrNoopGauge(role, marker); // this implementation doesn't mandates createOrNoopGauge call
         dataStores.get(marker).addToGauge(role, time, value);
     }
 
+    @Override
     public Collection<String> markers() {
         return dataStores.keySet();
     }
@@ -112,6 +117,33 @@ public class DelegatedCollectorGaugeData
     }
 
     @Override
+    public Collection<Role> gauges() {
+        final Set<Role> roles = new HashSet<Role>();
+        for (final GaugeDataStore store : dataStores.values()) {
+            roles.addAll(store.gauges());
+        }
+        return roles;
+    }
+
+    @Override
+    public Role findGaugeRole(final String name) {
+        for (final GaugeDataStore store : dataStores.values()) {
+            final Role role = store.findGaugeRole(name);
+            if (role != null) {
+                return role;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void gaugeStopped(final Role gauge) {
+        for (final GaugeDataStore store : dataStores.values()) {
+            store.gaugeStopped(gauge);
+        }
+    }
+
+    @Override
     public void createOrNoopGauge(final Role role) {
         throw new UnsupportedOperationException("Need a marker");
     }

Modified: incubator/sirona/trunk/collector/src/main/resources/collector-sirona.properties
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/main/resources/collector-sirona.properties?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/main/resources/collector-sirona.properties (original)
+++ incubator/sirona/trunk/collector/src/main/resources/collector-sirona.properties Mon Nov  4 11:06:47 2013
@@ -25,3 +25,4 @@ org.apache.sirona.core.gauge.activated =
 # deactivate plugins which are local since we can only rely on gauges and counters here
 JMX.activated = false
 Threads.activated = false
+Web.activated = false

Modified: incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java (original)
+++ incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java Mon Nov  4 11:06:47 2013
@@ -18,7 +18,7 @@ package org.apache.sirona.collector.serv
 
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.DefaultCounter;
 import org.apache.sirona.counters.Unit;

Modified: incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java (original)
+++ incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java Mon Nov  4 11:06:47 2013
@@ -18,7 +18,7 @@ package org.apache.sirona.collector.serv
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.sirona.Role;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.configuration.Configuration;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;

Modified: incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/counter/AggregatorTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/counter/AggregatorTest.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/counter/AggregatorTest.java (original)
+++ incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/counter/AggregatorTest.java Mon Nov  4 11:06:47 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.collector.server.store.counter;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;

Modified: incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/gauge/CollectorGaugeTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/gauge/CollectorGaugeTest.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/gauge/CollectorGaugeTest.java (original)
+++ incubator/sirona/trunk/collector/src/test/java/org/apache/sirona/collector/server/store/gauge/CollectorGaugeTest.java Mon Nov  4 11:06:47 2013
@@ -18,7 +18,7 @@ package org.apache.sirona.collector.serv
 
 import org.apache.sirona.Role;
 import org.apache.sirona.counters.Unit;
-import org.apache.sirona.gauges.CollectorGaugeDataStore;
+import org.apache.sirona.store.CollectorGaugeDataStore;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.GaugeValuesRequest;
 import org.junit.After;

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java Mon Nov  4 11:06:47 2013
@@ -22,8 +22,6 @@ import org.apache.sirona.gauges.jvm.CPUG
 import org.apache.sirona.gauges.jvm.UsedMemoryGauge;
 import org.apache.sirona.store.GaugeDataStore;
 
-import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -31,7 +29,6 @@ import java.util.concurrent.ConcurrentHa
 
 public final class DefaultGaugeManager implements GaugeManager {
     private final Map<Gauge, Timer> timers = new ConcurrentHashMap<Gauge, Timer>();
-    private final Map<String, Role> roleMapping = new ConcurrentHashMap<String, Role>();
     private final GaugeDataStore store;
 
     public DefaultGaugeManager(final GaugeDataStore dataStore) {
@@ -53,22 +50,15 @@ public final class DefaultGaugeManager i
     @Override
     public void stopGauge(final Gauge gauge) {
         final Timer timer = timers.remove(gauge);
-        roleMapping.remove(gauge.role().getName());
         if (timer != null) {
             timer.cancel();
         }
-    }
-
-    @Override
-    public Role findGaugeRole(final String name) {
-        return roleMapping.get(name);
+        store.gaugeStopped(gauge.role());
     }
 
     @Override
     public void addGauge(final Gauge gauge) {
         final Role role = gauge.role();
-        roleMapping.put(role.getName(), role);
-
         this.store.createOrNoopGauge(role);
 
         final ClassLoader old = Thread.currentThread().getContextClassLoader();
@@ -82,11 +72,6 @@ public final class DefaultGaugeManager i
         }
     }
 
-    @Override
-    public Collection<Gauge> gauges() {
-        return timers.keySet();
-    }
-
     private static class GaugeTask extends TimerTask {
         private final Gauge gauge;
         private final GaugeDataStore store;

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/GaugeManager.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/GaugeManager.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/GaugeManager.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/GaugeManager.java Mon Nov  4 11:06:47 2013
@@ -16,18 +16,14 @@
  */
 package org.apache.sirona.gauges;
 
-import org.apache.sirona.Role;
-
-import java.util.Collection;
-
+/**
+ * This api is the one to use to schedule gauges updates.
+ * only relevant in JVM where measures are done (= not in collector).
+ */
 public interface GaugeManager {
     void stop();
 
     void addGauge(Gauge gauge);
 
     void stopGauge(Gauge role);
-
-    Collection<Gauge> gauges();
-
-    Role findGaugeRole(String name);
 }

Added: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/RemoteGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/RemoteGaugeDataStore.java?rev=1538552&view=auto
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/RemoteGaugeDataStore.java (added)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/RemoteGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -0,0 +1,52 @@
+/*
+ * 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.gauges;
+
+import org.apache.sirona.Role;
+import org.apache.sirona.store.GaugeDataStore;
+import org.apache.sirona.store.GaugeValuesRequest;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+public abstract class RemoteGaugeDataStore implements GaugeDataStore {
+    @Override
+    public Map<Long, Double> getGaugeValues(GaugeValuesRequest gaugeValuesRequest) {
+        return Collections.emptyMap();
+    }
+
+    @Override
+    public void createOrNoopGauge(Role role) {
+        // no-op
+    }
+
+    @Override
+    public Collection<Role> gauges() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Role findGaugeRole(String name) {
+        return null;
+    }
+
+    @Override
+    public void gaugeStopped(final Role gauge) {
+        // no-op
+    }
+}

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java Mon Nov  4 11:06:47 2013
@@ -19,9 +19,9 @@ package org.apache.sirona.repositories;
 import org.apache.sirona.MonitoringException;
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.counters.Counter;
-import org.apache.sirona.gauges.CollectorGaugeDataStore;
+import org.apache.sirona.store.CollectorGaugeDataStore;
 import org.apache.sirona.gauges.DefaultGaugeManager;
 import org.apache.sirona.gauges.Gauge;
 import org.apache.sirona.stopwatches.CounterStopWatch;
@@ -32,7 +32,6 @@ import org.apache.sirona.store.GaugeData
 import org.apache.sirona.store.GaugeValuesRequest;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 public class DefaultRepository implements Repository {
@@ -106,13 +105,13 @@ public class DefaultRepository implement
     }
 
     @Override
-    public Collection<Gauge> gauges() {
-        return gaugeManager.gauges();
+    public Collection<Role> gauges() {
+        return gaugeDataStore.gauges();
     }
 
     @Override
     public Role findGaugeRole(final String name) {
-        return gaugeManager.findGaugeRole(name);
+        return gaugeDataStore.findGaugeRole(name);
     }
 
     @Override

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java Mon Nov  4 11:06:47 2013
@@ -43,7 +43,7 @@ public interface Repository {
 
     Map<Long, Double> getGaugeValues(long start, long end, Role role);
 
-    Collection<Gauge> gauges();
+    Collection<Role> gauges();
 
     Role findGaugeRole(String name);
 }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/AggregatedGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/AggregatedGaugeDataStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/AggregatedGaugeDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/AggregatedGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -19,9 +19,9 @@ package org.apache.sirona.store;
 import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.gauges.RemoteGaugeDataStore;
 import org.apache.sirona.util.DaemonThreadFactory;
 
-import java.util.Collections;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public abstract class AggregatedGaugeDataStore implements GaugeDataStore {
+public abstract class AggregatedGaugeDataStore extends RemoteGaugeDataStore {
     private static final Logger LOGGER = Logger.getLogger(AggregatedGaugeDataStore.class.getName());
 
     private final ConcurrentMap<Role, SummaryStatistics> gauges = new ConcurrentHashMap<Role, SummaryStatistics>();
@@ -62,16 +62,6 @@ public abstract class AggregatedGaugeDat
     protected abstract void pushGauges(final Map<Role, Value> gauges);
 
     @Override
-    public Map<Long, Double> getGaugeValues(final GaugeValuesRequest gaugeValuesRequest) {
-        return Collections.emptyMap(); // when using graphite we expect the user to use Graphite to render metrics
-    }
-
-    @Override
-    public void createOrNoopGauge(Role role) {
-        // no-op
-    }
-
-    @Override
     public void addToGauge(final Role role, final long time, final double value) {
         SummaryStatistics stat = gauges.get(role);
         if (stat == null) {

Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorCounterStore.java (from r1538515, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/counters/CollectorCounterStore.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorCounterStore.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorCounterStore.java&p1=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/counters/CollectorCounterStore.java&r1=1538515&r2=1538552&rev=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/counters/CollectorCounterStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorCounterStore.java Mon Nov  4 11:06:47 2013
@@ -14,8 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sirona.counters;
+package org.apache.sirona.store;
 
+import org.apache.sirona.counters.Counter;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
 import org.apache.sirona.store.CounterDataStore;
 

Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorGaugeDataStore.java (from r1538515, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/CollectorGaugeDataStore.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorGaugeDataStore.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorGaugeDataStore.java&p1=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/CollectorGaugeDataStore.java&r1=1538515&r2=1538552&rev=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/CollectorGaugeDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/CollectorGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sirona.gauges;
+package org.apache.sirona.store;
 
 import org.apache.sirona.Role;
 import org.apache.sirona.store.GaugeDataStore;

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/GaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/GaugeDataStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/GaugeDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/GaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -18,6 +18,7 @@ package org.apache.sirona.store;
 
 import org.apache.sirona.Role;
 
+import java.util.Collection;
 import java.util.Map;
 
 public interface GaugeDataStore {
@@ -26,4 +27,10 @@ public interface GaugeDataStore {
     void createOrNoopGauge(Role role);
 
     void addToGauge(Role role, long time, double value);
+
+    Collection<Role> gauges();
+
+    Role findGaugeRole(String name);
+
+    void gaugeStopped(Role gauge);
 }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/InMemoryGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/InMemoryGaugeDataStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/InMemoryGaugeDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/InMemoryGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -18,7 +18,9 @@ package org.apache.sirona.store;
 
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.gauges.Gauge;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.TreeMap;
@@ -28,6 +30,7 @@ import java.util.concurrent.ConcurrentSk
 
 public class InMemoryGaugeDataStore implements GaugeDataStore {
     protected final ConcurrentMap<Role, Map<Long, Double>> gauges = new ConcurrentHashMap<Role, Map<Long, Double>>();
+    protected final Map<String, Role> roleMapping = new ConcurrentHashMap<String, Role>();
 
     @Override
     public Map<Long, Double> getGaugeValues(GaugeValuesRequest gaugeValuesRequest) {
@@ -51,6 +54,7 @@ public class InMemoryGaugeDataStore impl
     @Override
     public void createOrNoopGauge(final Role role) {
         gauges.putIfAbsent(role, new FixedSizedMap());
+        roleMapping.put(role.getName(), role);
     }
 
     @Override
@@ -58,6 +62,21 @@ public class InMemoryGaugeDataStore impl
         gauges.get(role).put(time, value);
     }
 
+    @Override
+    public Collection<Role> gauges() {
+        return gauges.keySet();
+    }
+
+    @Override
+    public Role findGaugeRole(final String name) {
+        return roleMapping.get(name);
+    }
+
+    @Override
+    public void gaugeStopped(final Role gauge) {
+        roleMapping.remove(gauge.getName());
+    }
+
     // no perf issues here normally since add is called not that often
     protected static class FixedSizedMap extends ConcurrentSkipListMap<Long, Double> {
         private static final int MAX_SIZE = Configuration.getInteger(Configuration.CONFIG_PROPERTY_PREFIX + "gauge.max-size", 100);

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java Mon Nov  4 11:06:47 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.util;
 
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.counters.CollectorCounterStore;
+import org.apache.sirona.store.CollectorCounterStore;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.CounterDataStore;
 

Modified: incubator/sirona/trunk/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java (original)
+++ incubator/sirona/trunk/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java Mon Nov  4 11:06:47 2013
@@ -18,15 +18,12 @@ package org.apache.sirona.cube;
 
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.store.GaugeDataStore;
-import org.apache.sirona.store.GaugeValuesRequest;
+import org.apache.sirona.gauges.RemoteGaugeDataStore;
 
-import java.util.Collections;
-import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class CubeGaugeDataStore implements GaugeDataStore {
+public class CubeGaugeDataStore extends RemoteGaugeDataStore {
     private static final Logger LOGGER = Logger.getLogger(CubeGaugeDataStore.class.getName());
 
     private static final String GAUGE_TYPE = "gauge";
@@ -34,16 +31,6 @@ public class CubeGaugeDataStore implemen
     private final Cube cube = Configuration.findOrCreateInstance(CubeBuilder.class).build();
 
     @Override
-    public Map<Long, Double> getGaugeValues(GaugeValuesRequest gaugeValuesRequest) {
-        return Collections.emptyMap();
-    }
-
-    @Override
-    public void createOrNoopGauge(Role role) {
-        // no-op
-    }
-
-    @Override
     public void addToGauge(final Role role, final long time, final double value) {
         try {
             cube.post(

Modified: incubator/sirona/trunk/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTest.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTest.java (original)
+++ incubator/sirona/trunk/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTest.java Mon Nov  4 11:06:47 2013
@@ -32,13 +32,13 @@ public class GraphiteTest extends Graphi
     public void checkCountersAndGauges() throws InterruptedException {
         { // force some counter data
             final Counter counter = Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, "test"));
-            Thread.sleep(160);
+            Thread.sleep(175);
             counter.add(1.4);
             counter.add(1.6);
             Thread.sleep(140);
             counter.add(2.3);
             counter.add(2.9);
-            Thread.sleep(50);
+            Thread.sleep(30);
         }
 
         final Collection<String> messages = messages();

Modified: incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java (original)
+++ incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java Mon Nov  4 11:06:47 2013
@@ -18,7 +18,7 @@ package org.apache.sirona.reporting.web.
 
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.gauges.CollectorGaugeDataStore;
+import org.apache.sirona.store.CollectorGaugeDataStore;
 import org.apache.sirona.reporting.web.plugin.json.Jsons;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.GaugeValuesRequest;

Modified: incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/handler/api/Template.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/handler/api/Template.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/handler/api/Template.java (original)
+++ incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/handler/api/Template.java Mon Nov  4 11:06:47 2013
@@ -16,9 +16,6 @@
  */
 package org.apache.sirona.reporting.web.handler.api;
 
-import org.apache.sirona.reporting.web.template.MapBuilder;
-
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 

Modified: incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/gauge/GaugeEndpoints.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/gauge/GaugeEndpoints.java?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/gauge/GaugeEndpoints.java (original)
+++ incubator/sirona/trunk/reporting/src/main/java/org/apache/sirona/reporting/web/plugin/gauge/GaugeEndpoints.java Mon Nov  4 11:06:47 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.reporting.web.plugin.gauge;
 
 import org.apache.commons.codec.binary.Base64;
-import org.apache.sirona.gauges.Gauge;
+import org.apache.sirona.Role;
 import org.apache.sirona.reporting.web.handler.api.Regex;
 import org.apache.sirona.reporting.web.handler.api.Template;
 import org.apache.sirona.repositories.Repository;
@@ -70,10 +70,10 @@ public class GaugeEndpoints {
         }
     }
 
-    private static Map<String, String> sortNames(final Collection<Gauge> gauges) {
+    private static Map<String, String> sortNames(final Collection<Role> gauges) {
         final Map<String, String> names = new TreeMap<String, String>();
-        for (final Gauge gauge : gauges) {
-            final String name = gauge.role().getName();
+        for (final Role gauge : gauges) {
+            final String name = gauge.getName();
             names.put(name, encode(name));
         }
         return names;

Modified: incubator/sirona/trunk/src/site/markdown/collector.md
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/src/site/markdown/collector.md?rev=1538552&r1=1538551&r2=1538552&view=diff
==============================================================================
--- incubator/sirona/trunk/src/site/markdown/collector.md (original)
+++ incubator/sirona/trunk/src/site/markdown/collector.md Mon Nov  4 11:06:47 2013
@@ -39,7 +39,7 @@ By default it uses the in memory impleme
 
 Note: if your `GaugeDataStore` has a constructor with a `String`, the marker of the store will be passed to the `GaugeDataStore`.
 
-The `CounterDataStore` needs to be an instance of `org.apache.sirona.counters.CollectorCounterStore`.
+The `CounterDataStore` needs to be an instance of `org.apache.sirona.store.CollectorCounterStore`.
 By default it is in memory too but it is easily extensible to be persisted if needed.
 
 ## Installing the collector