You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2012/02/09 17:40:29 UTC
svn commit: r1242388 - in /sling/trunk/bundles/engine/src:
main/java/org/apache/sling/engine/impl/
test/java/org/apache/sling/engine/impl/
Author: justin
Date: Thu Feb 9 16:40:29 2012
New Revision: 1242388
URL: http://svn.apache.org/viewvc?rev=1242388&view=rev
Log:
SLING-2413 - internal refactoring; also fixing a divide by zero issue.
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java
sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/RequestProcessorMBeanImplTest.java
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.java?rev=1242388&r1=1242387&r2=1242388&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.java Thu Feb 9 16:40:29 2012
@@ -31,34 +31,34 @@ class RequestProcessorMBeanImpl extends
private volatile long n;
// shortest request
- private volatile long min;
+ private volatile long durationMsecMin;
// longest request
- private volatile long max;
+ private volatile long durationMsecMax;
// sum of request durations
- private volatile double sumX;
+ private volatile double durationMsecSumX;
// sum of squared request durations
- private volatile double sumX2;
+ private volatile double durationMsecSumX2;
RequestProcessorMBeanImpl() throws NotCompliantMBeanException {
super(RequestProcessorMBean.class);
resetStatistics();
}
- synchronized void addRequestDuration(final long value) {
+ synchronized void addRequestData(final long duration) {
this.n++;
- if (value < this.min) {
- this.min = value;
+ if (duration < this.durationMsecMin) {
+ this.durationMsecMin = duration;
}
- if (value > this.max) {
- this.max = value;
+ if (duration > this.durationMsecMax) {
+ this.durationMsecMax = duration;
}
- this.sumX += value;
- this.sumX2 += (value * value);
+ this.durationMsecSumX += duration;
+ this.durationMsecSumX2 += (duration * duration);
}
public long getRequestsCount() {
@@ -66,11 +66,11 @@ class RequestProcessorMBeanImpl extends
}
public long getMinRequestDurationMsec() {
- return this.min;
+ return this.durationMsecMin;
}
public long getMaxRequestDurationMsec() {
- return this.max;
+ return this.durationMsecMax;
}
public synchronized double getStandardDeviationDurationMsec() {
@@ -78,7 +78,7 @@ class RequestProcessorMBeanImpl extends
// algorithm taken from
// http://de.wikipedia.org/wiki/Standardabweichung section
// "Berechnung für auflaufende Messwerte"
- return Math.sqrt((this.sumX2 - this.sumX * this.sumX / this.n) / (this.n - 1));
+ return Math.sqrt((this.durationMsecSumX2 - this.durationMsecSumX * this.durationMsecSumX / this.n) / (this.n - 1));
}
// single data point has no deviation
@@ -86,12 +86,16 @@ class RequestProcessorMBeanImpl extends
}
public synchronized double getMeanRequestDurationMsec() {
- return this.sumX / this.n;
+ if (this.n > 1) {
+ return this.durationMsecSumX / this.n;
+ } else {
+ return 0;
+ }
}
public synchronized void resetStatistics() {
- this.min = Long.MAX_VALUE;
- this.max = 0;
+ this.durationMsecMin = Long.MAX_VALUE;
+ this.durationMsecMax = 0;
this.n = 0;
}
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java?rev=1242388&r1=1242387&r2=1242388&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java Thu Feb 9 16:40:29 2012
@@ -225,7 +225,7 @@ public class SlingRequestProcessorImpl i
} finally {
long elapsed = System.currentTimeMillis() - startTimestamp;
if (mbean != null) {
- mbean.addRequestDuration(elapsed);
+ mbean.addRequestData(elapsed);
}
}
}
Modified: sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/RequestProcessorMBeanImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/RequestProcessorMBeanImplTest.java?rev=1242388&r1=1242387&r2=1242388&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/RequestProcessorMBeanImplTest.java (original)
+++ sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/RequestProcessorMBeanImplTest.java Thu Feb 9 16:40:29 2012
@@ -39,6 +39,12 @@ public class RequestProcessorMBeanImplTe
final SummaryStatistics mathStats = new SummaryStatistics();
final RequestProcessorMBeanImpl bean = new RequestProcessorMBeanImpl();
+ assertEquals(0l, bean.getRequestsCount());
+ assertEquals(Long.MAX_VALUE, bean.getMinRequestDurationMsec());
+ assertEquals(0l, bean.getMaxRequestDurationMsec());
+ assertEquals(0.0, bean.getMeanRequestDurationMsec());
+ assertEquals(0.0, bean.getStandardDeviationDurationMsec());
+
final Random random = new Random(System.currentTimeMillis() / 17);
final int num = 10000;
final int min = 85;
@@ -46,7 +52,7 @@ public class RequestProcessorMBeanImplTe
for (int i = 0; i < num; i++) {
final long value = min + random.nextInt(max - min);
mathStats.addValue(value);
- bean.addRequestDuration(value);
+ bean.addRequestData(value);
}
TestCase.assertEquals("Number of points must be the same", mathStats.getN(), bean.getRequestsCount());