Author: bdelacretaz
Date: Wed Dec 11 10:33:24 2013
New Revision: 1550098

URL: http://svn.apache.org/r1550098
Log:
SLING-3277 - fix RequestProcessorMBeanImpl.resetStatistics, contributed by 
Francisco Chicharro, thanks!

Modified:
    
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/RequestProcessorMBeanImpl.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=1550098&r1=1550097&r2=1550098&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
 Wed Dec 11 10:33:24 2013
@@ -116,7 +116,7 @@ class RequestProcessorMBeanImpl extends 
         if (this.n > 1) {
             // algorithm taken from
             // http://de.wikipedia.org/wiki/Standardabweichung section
-            // "Berechnung für auflaufende Messwerte"
+            // "Berechnung fuer auflaufende Messwerte"
             return Math.sqrt((this.durationMsecSumX2 - this.durationMsecSumX * 
this.durationMsecSumX / this.n) / (this.n - 1));
         }
 
@@ -139,9 +139,13 @@ class RequestProcessorMBeanImpl extends 
         this.servletCallCountMax = 0;
         this.peakRecursionDepthMin = Integer.MAX_VALUE;
         this.peakRecursionDepthMax = 0;
-        
+        this.durationMsecSumX=0d;
+        this.durationMsecSumX2=0d;
+        this.peakRecursionDepthSumX=0d;
+        this.peakRecursionDepthSumX2=0d;
+        this.servletCallCountSumX=0d;
+        this.servletCallCountSumX2=0d;
         this.n = 0;
-        
     }
 
     public int getMaxPeakRecursionDepth() {

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=1550098&r1=1550097&r2=1550098&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
 Wed Dec 11 10:33:24 2013
@@ -44,7 +44,9 @@ public class RequestProcessorMBeanImplTe
     /**
      * Asserts that the simple standard deviation algorithm used by the
      * RequestProcessorMBeanImpl is equivalent to the Commons Math
-     * SummaryStatistics implementation
+     * SummaryStatistics implementation.
+     * 
+     * It also tests that resetStatistics method, actually resets all the 
statistics
      *
      * @throws NotCompliantMBeanException not expected
      */
@@ -118,6 +120,45 @@ public class RequestProcessorMBeanImplTe
         assertAlmostEqual("Mean Peak Recursion Depth", 
peakRecursionDepthStats.getMean(), bean.getMeanPeakRecursionDepth(), num);
         assertAlmostEqual("Standard Deviation Peak Recursion Depth", 
peakRecursionDepthStats.getStandardDeviation(),
             bean.getStandardDeviationPeakRecursionDepth(), num);
+        
+        //check method resetStatistics 
+        //In the previous test, some requests have been processed, now we 
reset the statistics so everything statistic is reinitialized
+        bean.resetStatistics();
+        
+        //Simulate a single request 
+        final long durationValue = min + random.nextInt(max - min);
+        final int callCountValue = min + random.nextInt(max - min);
+        final int peakRecursionDepthValue = min + random.nextInt(max - min);
+        
+        final RequestData requestData = context.mock(RequestData.class, 
"requestDataAfterReset");
+        context.checking(new Expectations() {{
+            one(requestData).getElapsedTimeMsec();
+            will(returnValue(durationValue));
+            
+            one(requestData).getServletCallCount();
+            will(returnValue(callCountValue));
+            
+            one(requestData).getPeakRecusionDepth();
+            will(returnValue(peakRecursionDepthValue));
+        }});
+            
+            
+        bean.addRequestData(requestData);
+        
+        //As only one request has been simulated since resetStatiscts: min, 
max and mean statistics should be equals to the request data
+        assertEquals("After resetStatistics Number of requests must be one",1, 
bean.getRequestsCount());
+        assertEquals("After resetStatistics Min Duration must be equal", 
bean.getMinRequestDurationMsec(), (long) durationValue);
+        assertEquals("After resetStatistics Max Duration must be equal", 
bean.getMaxRequestDurationMsec(), (long) durationValue);
+        assertEquals("After resetStatistics Mean Duration must be equal",  
bean.getMeanRequestDurationMsec(),(double) durationValue, 0d);
+
+        
+        assertEquals("After resetStatistics Min Servlet Call Count must be 
equal",bean.getMinServletCallCount(), callCountValue);
+        assertEquals("After resetStatistics Max Servlet Call Count must be 
equal",bean.getMaxServletCallCount(), callCountValue);
+        assertEquals("After resetStatistics Mean Servlet Call Count", 
bean.getMeanServletCallCount(), (double)callCountValue, 0d);
+        
+        assertEquals("After resetStatistics Min Peak Recursion Depth must be 
equal", bean.getMinPeakRecursionDepth(),peakRecursionDepthValue );
+        assertEquals("After resetStatistics Max Peak Recursion Depth must be 
equal", bean.getMinPeakRecursionDepth(), peakRecursionDepthValue);
+        assertEquals("After resetStatistics Mean Peak Recursion Depth", 
bean.getMeanPeakRecursionDepth(), (double)peakRecursionDepthValue, 0d);
     }
 
     private void assertAlmostEqual(final String message, final double v1, 
final double v2, int samples) {


Reply via email to