Author: burton
Date: Fri Mar  4 01:18:36 2005
New Revision: 156147

URL: http://svn.apache.org/viewcvs?view=rev&rev=156147
Log:
bug fix for long timeouts with benchmarks....

Modified:
    
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
    
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
    
jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java

Modified: 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156146&r2=156147
==============================================================================
--- 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
 (original)
+++ 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
 Fri Mar  4 01:18:36 2005
@@ -61,6 +61,7 @@
  * 
  * </code>
  * 
+ * <p>
  * The method overhead is very light. One a modern machine you can perform 
about
  * 1M benchmarks per second.  For code thats only called a few thousand times
  * you won't notice any performance overhead.
@@ -325,8 +326,8 @@
 
         //FIXME: we should also support benchmarking of code regions and 
whether
         //we're IN a code region.  That would be interesting to.  Have a bunch
-        //of start() complete() methods and then I could benchmark how many 
are open
-        //at a given time.
+        //of start() complete() methods and then I could benchmark how many are
+        //open at a given time.
         //
         // This would support total number of completed operations and total
         // number of pending operations within a given timeframe.

Modified: 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156146&r2=156147
==============================================================================
--- 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
 (original)
+++ 
jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
 Fri Mar  4 01:18:36 2005
@@ -84,9 +84,16 @@
     BenchmarkTracker reset( long now ) {
 
         //need to perform a swap and save the current benchmark.
+
         lastStarted = started;
         lastCompleted = completed;
-                
+
+        //if we've slept for too long we have to start fresh
+        if ( now - timestamp > interval ) {
+            lastStarted = 0;
+            lastCompleted = 0;
+        } 
+
         //reset the benchmark
         timestamp = now;
         started = 0;

Modified: 
jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156146&r2=156147
==============================================================================
--- 
jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
 (original)
+++ 
jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
 Fri Mar  4 01:18:36 2005
@@ -30,10 +30,39 @@
 
     //FIXME: test with using really short intervals but with diff values.
 
+    public void testLongSleep() throws Exception {
+
+        //   - Potential bug.  If we don't log anything > 5 minutes the LAST 
benchmark
+        //   will be rotated.  I actually have to check if the last benchmark 
was more
+        //   than INTERVAL ago and if so then delete the last benchmark
+
+        //     - A unit test for this would be easy...  I'd just have to sleep 
TWICE.
+
+        //this is cheating a bit.  We set the intervals smaller so that we can
+        //get through the tests quickly
+        Benchmark.INTERVAL_1 =   1000;
+        Benchmark.INTERVAL_5 =   5000;
+        Benchmark.INTERVAL_15 = 15000;
+
+        Benchmark benchmark = Benchmark.getBenchmark( Test1.class );
+        benchmark = benchmark.child( "testLongSleep" );
+        
+        benchmark.start();
+        benchmark.complete();
+
+        Thread.sleep( 1000 );
+        Thread.sleep( 1000 );
+
+        assertEquals( 0, benchmark.getTracker1().getStarted() );
+        assertEquals( 0, benchmark.getTracker1().getLastStarted() );
+
+        benchmark.reset();
+        
+    }
+    
     public void testList() throws Exception {
 
         List list = new LinkedList();
-        
         list = (List)Benchmark.getBenchmarkAsProxy( list, List.class );
 
         list.add( "hello" );
@@ -65,7 +94,7 @@
         assertEquals( 1, benchmark.getTracker1().getCompleted() );
 
         System.out.println( Benchmark.getBenchmarks() );
-        
+
     }
 
     public void testIntervalReset() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to