Author: iocanel
Date: Sun Oct 23 12:43:50 2011
New Revision: 1187878

URL: http://svn.apache.org/viewvc?rev=1187878&view=rev
Log:
[DIRECTMEMORY-16] Added non sigleton alternative for Monitor.

Added:
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorService.java
      - copied, changed from r1187708, 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorServiceImpl.java
      - copied, changed from r1187708, 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
Modified:
    
incubator/directmemory/trunk/directmemory-cache/src/main/aspect/org/directmemory/monitoring/Performance.aj
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/serialization/test/SerializerTest.java
    
incubator/directmemory/trunk/itests/osgi/src/test/java/org/apache/directmemory/tests/osgi/cache/CacheServiceTest.java

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/aspect/org/directmemory/monitoring/Performance.aj
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/aspect/org/directmemory/monitoring/Performance.aj?rev=1187878&r1=1187877&r2=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/aspect/org/directmemory/monitoring/Performance.aj
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/aspect/org/directmemory/monitoring/Performance.aj
 Sun Oct 23 12:43:50 2011
@@ -21,6 +21,7 @@ package org.apache.directmemory.monitori
 
 import org.apache.directmemory.cache.Cache;
 import org.apache.directmemory.measures.Monitor;
+import org.apache.directmemory.measures.MonitorService;
 import org.apache.directmemory.memory.Pointer;
 import org.apache.directmemory.misc.Format;
 import org.slf4j.Logger;
@@ -80,7 +81,7 @@ public aspect Performance {
         args(source, clazz);
 
     Pointer around(String key, byte[] payload): putByteArrayPointcut(key, 
payload) {
-        Monitor mon = Monitor.get(cache_putByteArray);
+        MonitorService mon = Monitor.get(cache_putByteArray);
         final long startedAt = mon.start();
         Pointer entry = proceed(key, payload);
         if (logger.isDebugEnabled()) logger.debug(Format.it("put: [%s] %d 
bytes", key, payload.length ));
@@ -89,7 +90,7 @@ public aspect Performance {
     }
 
     Pointer around(String key, Object object, int expiresIn): 
putObjectPointcut(key, object, expiresIn) {
-        Monitor mon = Monitor.get(cache_putObject);
+        MonitorService mon = Monitor.get(cache_putObject);
         final long startedAt = mon.start();
         Pointer entry = proceed(key, object, expiresIn);
         if (logger.isDebugEnabled()) logger.debug(Format.it("put object: 
[%s]", key));
@@ -98,7 +99,7 @@ public aspect Performance {
     }
 
     byte[] around(String key): retrieveByteArrayPointcut(key) {
-        Monitor mon = Monitor.get(cache_retrieveByteArray);
+        MonitorService mon = Monitor.get(cache_retrieveByteArray);
         final long startedAt = mon.start();
         byte[] payload = proceed(key);
         if (logger.isDebugEnabled()) logger.debug(Format.it("retrieve: [%s]", 
key ));
@@ -107,7 +108,7 @@ public aspect Performance {
     }
 
     Object around(String key): retrieveObjectPointcut(key) {
-        Monitor mon = Monitor.get(cache_retrieveObject);
+        MonitorService mon = Monitor.get(cache_retrieveObject);
         final long startedAt = mon.start();
         Object payload = proceed(key);
         if (logger.isDebugEnabled()) logger.debug(Format.it("retrieve object: 
[%s]", key ));
@@ -116,7 +117,7 @@ public aspect Performance {
     }
 
     Pointer around(String key): getPointcut(key) {
-        Monitor mon = Monitor.get(cache_getPointer);
+        MonitorService mon = Monitor.get(cache_getPointer);
         final long startedAt = mon.start();
         Pointer pointer = proceed(key);
         if (logger.isDebugEnabled()) logger.debug(Format.it("get: [%s]", key));
@@ -125,7 +126,7 @@ public aspect Performance {
     }
 
     void around(): collectLFUPointcut() {
-        Monitor mon = Monitor.get(cache_collectLFU);
+        MonitorService mon = Monitor.get(cache_collectLFU);
         final long startedAt = mon.start();
         proceed();
         if (logger.isDebugEnabled()) logger.debug(Format.it("collect LFU"));
@@ -133,7 +134,7 @@ public aspect Performance {
     }
 
     void around(): collectExpiredPointcut() {
-        Monitor mon = Monitor.get(cache_collectExpired);
+        MonitorService mon = Monitor.get(cache_collectExpired);
         final long startedAt = mon.start();
         proceed();
         if (logger.isDebugEnabled()) logger.debug(Format.it("collect 
expired"));
@@ -141,7 +142,7 @@ public aspect Performance {
     }
 
     byte[] around(Object obj, @SuppressWarnings("rawtypes") Class clazz): 
serializePointcut(obj, clazz) {
-        Monitor mon = Monitor.get(cache_serialize);
+        MonitorService mon = Monitor.get(cache_serialize);
         final long startedAt = mon.start();
         byte[] payload = proceed(obj, clazz);
         if (logger.isDebugEnabled()) logger.debug(Format.it("serialize: [%s]", 
clazz.getSimpleName() ));
@@ -150,7 +151,7 @@ public aspect Performance {
     }
 
     Object around(byte[] source, @SuppressWarnings("rawtypes") Class clazz): 
deserializePointcut(source, clazz) {
-        Monitor mon = Monitor.get(cache_deserialize);
+        MonitorService mon = Monitor.get(cache_deserialize);
         final long startedAt = mon.start();
         Object obj = proceed(source, clazz);
         if (logger.isDebugEnabled()) logger.debug(Format.it("deserialize: 
[%s]", clazz.getSimpleName() ));

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java?rev=1187878&r1=1187877&r2=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
 Sun Oct 23 12:43:50 2011
@@ -22,68 +22,68 @@ package org.apache.directmemory.measures
 import java.text.DecimalFormat;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.apache.directmemory.misc.Format;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class Monitor {
-       private AtomicLong hits = new AtomicLong(0);
-       private long totalTime = 0;
-       private long min = -1;
-       private long max = -1;
-       public String name;
+public class Monitor  {
        
-       private static Logger logger = LoggerFactory.getLogger(Monitor.class);
-       public static Map<String, Monitor> monitors = new HashMap<String, 
Monitor>();
+       private static final Logger logger = 
LoggerFactory.getLogger(Monitor.class);
+
+  public static final Map<String, MonitorService> monitors = new 
HashMap<String, MonitorService>();
+  private MonitorService monitorService;
        
-       public static Monitor get(String key) {
-               Monitor mon = monitors.get(key);
+       public static MonitorService get(String key) {
+               MonitorService mon = monitors.get(key);
                if (mon == null) {
-                       mon = new Monitor(key);
+                       mon = new MonitorServiceImpl(key);
                        monitors.put(key, mon);
                }
                return mon;
        }
-       
+
        public Monitor(String name) {
-               this.name = name;
+               this.monitorService = new MonitorServiceImpl(name);
+    monitors.put(name,monitorService);
        }
-       
+
        public long start() {
                return System.nanoTime();
        }
        public long stop(long begunAt) {
-               hits.incrementAndGet();
+               monitorService.getHits().incrementAndGet();
                final long lastAccessed = System.nanoTime();
                final long elapsed = lastAccessed - begunAt;
-               totalTime+=elapsed;
-               if (elapsed > max && hits.get() > 0) max = elapsed;
-               if (elapsed < min && hits.get() > 0) min = elapsed;
+               monitorService.addToTotalTime(elapsed);
+               if (elapsed > monitorService.getMax() && 
monitorService.getHits().get() > 0) {
+      monitorService.setMax(elapsed);
+    }
+               if (elapsed < monitorService.getMin() && 
monitorService.getHits().get() > 0) {
+      monitorService.setMin(elapsed);
+    }
                return elapsed;
        }
        public long hits() {
-               return hits.get();
+               return monitorService.getHits().get();
        }
        public long totalTime() {
-               return totalTime;
+               return monitorService.totalTime();
        }
        public long average() {
-               return hits.get() > 0 ? totalTime/hits.get() : 0;
+               return monitorService.getHits().get() > 0 ? 
monitorService.getTotalTime()/monitorService.getHits().get() : 0;
        }
        public String toString() {
-               return Format.it("%1$s hits: %2$d, avg: %3$s ms, tot: %4$s 
seconds", 
-                                                               name, 
-                                                               hits.get(), 
-                                                               new 
DecimalFormat("####.###").format((double)average()/1000000), 
-                                                               new 
DecimalFormat("####.###").format((double)totalTime/1000000000)
-                                               );
+               return Format.it("%1$s hits: %2$d, avg: %3$s ms, tot: %4$s 
seconds",
+            monitorService.getName(),
+            monitorService.getHits().get(),
+            new DecimalFormat("####.###").format((double) average() / 1000000),
+            new DecimalFormat("####.###").format((double) 
monitorService.getTotalTime() / 1000000000)
+    );
        }
        
        public static void dump(String prefix) {
-               for (Monitor monitor : Monitor.monitors.values()) {
-                       if (monitor.name.startsWith(prefix))
+               for (MonitorService monitor : monitors.values()) {
+                       if (monitor.getName().startsWith(prefix))
                                logger.info(monitor.toString());
                }
        }

Copied: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorService.java
 (from r1187708, 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java)
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorService.java?p2=incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorService.java&p1=incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java&r1=1187708&r2=1187878&rev=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorService.java
 Sun Oct 23 12:43:50 2011
@@ -1,5 +1,3 @@
-package org.apache.directmemory.measures;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.directmemory.measures
  * "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
+ *   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
@@ -19,76 +17,40 @@ package org.apache.directmemory.measures
  * under the License.
  */
 
-import java.text.DecimalFormat;
-import java.util.HashMap;
-import java.util.Map;
+package org.apache.directmemory.measures;
+
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.directmemory.misc.Format;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Monitor {
-       private AtomicLong hits = new AtomicLong(0);
-       private long totalTime = 0;
-       private long min = -1;
-       private long max = -1;
-       public String name;
-       
-       private static Logger logger = LoggerFactory.getLogger(Monitor.class);
-       public static Map<String, Monitor> monitors = new HashMap<String, 
Monitor>();
-       
-       public static Monitor get(String key) {
-               Monitor mon = monitors.get(key);
-               if (mon == null) {
-                       mon = new Monitor(key);
-                       monitors.put(key, mon);
-               }
-               return mon;
-       }
-       
-       public Monitor(String name) {
-               this.name = name;
-       }
-       
-       public long start() {
-               return System.nanoTime();
-       }
-       public long stop(long begunAt) {
-               hits.incrementAndGet();
-               final long lastAccessed = System.nanoTime();
-               final long elapsed = lastAccessed - begunAt;
-               totalTime+=elapsed;
-               if (elapsed > max && hits.get() > 0) max = elapsed;
-               if (elapsed < min && hits.get() > 0) min = elapsed;
-               return elapsed;
-       }
-       public long hits() {
-               return hits.get();
-       }
-       public long totalTime() {
-               return totalTime;
-       }
-       public long average() {
-               return hits.get() > 0 ? totalTime/hits.get() : 0;
-       }
-       public String toString() {
-               return Format.it("%1$s hits: %2$d, avg: %3$s ms, tot: %4$s 
seconds", 
-                                                               name, 
-                                                               hits.get(), 
-                                                               new 
DecimalFormat("####.###").format((double)average()/1000000), 
-                                                               new 
DecimalFormat("####.###").format((double)totalTime/1000000000)
-                                               );
-       }
-       
-       public static void dump(String prefix) {
-               for (Monitor monitor : Monitor.monitors.values()) {
-                       if (monitor.name.startsWith(prefix))
-                               logger.info(monitor.toString());
-               }
-       }
-       
-       public static void dump() {
-               dump("");
-       }
+public interface MonitorService {
+
+  public long start();
+
+  public long stop(long begunAt);
+
+  public long hits();
+
+  public long totalTime();
+
+  public long average();
+
+  public void dump(String prefix);
+
+  public void dump();
+
+  public AtomicLong getHits();
+
+  public long getTotalTime();
+
+  public void addToTotalTime(long time);
+
+  public long getMin();
+
+  public void setMin(long min);
+
+  public long getMax();
+
+  public void setMax(long max);
+
+
+  public String getName();
 }

Copied: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorServiceImpl.java
 (from r1187708, 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java)
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorServiceImpl.java?p2=incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorServiceImpl.java&p1=incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java&r1=1187708&r2=1187878&rev=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/Monitor.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/measures/MonitorServiceImpl.java
 Sun Oct 23 12:43:50 2011
@@ -1,5 +1,3 @@
-package org.apache.directmemory.measures;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.directmemory.measures
  * "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
+ *   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
@@ -19,35 +17,29 @@ package org.apache.directmemory.measures
  * under the License.
  */
 
+package org.apache.directmemory.measures;
+
 import java.text.DecimalFormat;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
-
 import org.apache.directmemory.misc.Format;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class Monitor {
+public class MonitorServiceImpl implements MonitorService {
+
        private AtomicLong hits = new AtomicLong(0);
        private long totalTime = 0;
        private long min = -1;
        private long max = -1;
        public String name;
-       
-       private static Logger logger = LoggerFactory.getLogger(Monitor.class);
-       public static Map<String, Monitor> monitors = new HashMap<String, 
Monitor>();
-       
-       public static Monitor get(String key) {
-               Monitor mon = monitors.get(key);
-               if (mon == null) {
-                       mon = new Monitor(key);
-                       monitors.put(key, mon);
-               }
-               return mon;
-       }
-       
-       public Monitor(String name) {
+
+       private static final Logger logger = 
LoggerFactory.getLogger(MonitorServiceImpl.class);
+
+       public static final Map<String, MonitorServiceImpl> monitors = new 
HashMap<String, MonitorServiceImpl>();
+
+       public MonitorServiceImpl(String name) {
                this.name = name;
        }
        
@@ -81,14 +73,50 @@ public class Monitor {
                                                );
        }
        
-       public static void dump(String prefix) {
-               for (Monitor monitor : Monitor.monitors.values()) {
+       public void dump(String prefix) {
+               for (MonitorServiceImpl monitor : 
MonitorServiceImpl.monitors.values()) {
                        if (monitor.name.startsWith(prefix))
                                logger.info(monitor.toString());
                }
        }
        
-       public static void dump() {
+       public void dump() {
                dump("");
        }
+
+  public String getName() {
+    return name;
+  }
+
+  public AtomicLong getHits() {
+    return hits;
+  }
+
+  public long getTotalTime() {
+    return totalTime;
+  }
+
+  @Override
+  public void addToTotalTime(long time) {
+    totalTime+=time;
+  }
+
+  public long getMin() {
+    return min;
+  }
+
+  public void setMin(long min) {
+    this.min = min;
+  }
+
+  public long getMax() {
+    return max;
+  }
+
+  public void setMax(long max) {
+    this.max = max;
+  }
+
+
+
 }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/serialization/test/SerializerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/serialization/test/SerializerTest.java?rev=1187878&r1=1187877&r2=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/serialization/test/SerializerTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/serialization/test/SerializerTest.java
 Sun Oct 23 12:43:50 2011
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertNot
 import java.io.IOException;
 
 import org.apache.directmemory.measures.Monitor;
+import org.apache.directmemory.measures.MonitorService;
 import org.apache.directmemory.measures.Ram;
 import org.apache.directmemory.misc.DummyPojo;
 import org.apache.directmemory.serialization.ProtoStuffSerializerV1;
@@ -57,8 +58,8 @@ public class SerializerTest {
        private static Logger 
logger=LoggerFactory.getLogger(SerializerTest.class);
        private void testSerializer(String name, Serializer serializer, int 
size, int howMany) throws IOException, ClassNotFoundException, 
InstantiationException, IllegalAccessException {
                logger.info("begin " + serializer.getClass().toString());
-        Monitor stopWatch = Monitor.get("serializer." + name + "." + size + 
"bytes");
-        Monitor stopWatch2 = Monitor.get("deserializer." + name + "." + size + 
"bytes");
+    MonitorService stopWatch = Monitor.get("serializer." + name + "." + size + 
"bytes");
+    MonitorService stopWatch2 = Monitor.get("deserializer." + name + "." + 
size + "bytes");
                DummyPojo pojo = new DummyPojo("test", size);
                for (int i = 0; i < howMany; i++) {
                long split = stopWatch.start();

Modified: 
incubator/directmemory/trunk/itests/osgi/src/test/java/org/apache/directmemory/tests/osgi/cache/CacheServiceTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/itests/osgi/src/test/java/org/apache/directmemory/tests/osgi/cache/CacheServiceTest.java?rev=1187878&r1=1187877&r2=1187878&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/itests/osgi/src/test/java/org/apache/directmemory/tests/osgi/cache/CacheServiceTest.java
 (original)
+++ 
incubator/directmemory/trunk/itests/osgi/src/test/java/org/apache/directmemory/tests/osgi/cache/CacheServiceTest.java
 Sun Oct 23 12:43:50 2011
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import org.apache.directmemory.cache.CacheService;
 import org.apache.directmemory.measures.Every;
+import org.apache.directmemory.measures.Monitor;
 import org.apache.directmemory.memory.Pointer;
 import org.apache.directmemory.tests.osgi.DirectMemoryOsgiTestSupport;
 import org.junit.Test;
@@ -61,6 +62,7 @@ public class CacheServiceTest extends Di
 
                cacheService.scheduleDisposalEvery(Every.seconds(1));
                cacheService.dump();
+    Monitor.dump("cache");
 
     Pointer p = cacheService.put("2", obj);
     result = cacheService.retrieve("2");
@@ -86,6 +88,7 @@ public class CacheServiceTest extends Di
     Object result2 = cacheService.retrieve("3");
 
     cacheService.dump();
+    Monitor.dump("cache");
 
     assertEquals(obj1, result1);
     assertEquals(obj2, result2);


Reply via email to