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);