Author: nicolas
Date: Mon Jan 28 08:34:14 2008
New Revision: 615936

URL: http://svn.apache.org/viewvc?rev=615936&view=rev
Log:
- txt renderer (for logs)
- simplified renderer testing
- composite Gauge & Counter (required for period based monitoring)
- cleaner separation between simpleGauge and simpleCounter

Added:
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/events/
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
   (with props)
    commons/sandbox/monitoring/trunk/src/test/resources/org/
    commons/sandbox/monitoring/trunk/src/test/resources/org/apache/
    commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/
    
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/
    
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/
    
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
   (with props)
    
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
   (with props)
    
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
   (with props)
Modified:
    commons/sandbox/monitoring/trunk/pom.xml
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StopWatch.java
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/StopWatchTest.java
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java

Modified: commons/sandbox/monitoring/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/pom.xml Mon Jan 28 08:34:14 2008
@@ -41,6 +41,19 @@
       <version>3.8.1</version>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>1.4</version>
+        <scope>test</scope>
+    </dependency>
+    <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.3</version>
+        <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <developers>

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Sometime we need to compare elapsed time from a high level process with 
fine-grained
+ * sub-processes to find bottlenecks or errors. The 
<code>ExecutionStack</code> allows
+ * the application to store the running StopWatches and maintain an execution 
plan, where
+ * it can later retrieve all StopWatches and compare times.
+ * <p>
+ * It can also be used to exclude waiting time when an external service is 
called, simply by
+ * retrieving all running stopWatches and pause/resume then.
+ * <p>
+ * The <code>clear</code> method MUST be called after process has finished to
+ * clear the stack as the thread may start another process.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class ExecutionStack
+{
+    private ExecutionStack()
+    {
+        super();
+    }
+
+    private static ThreadLocal<List<StopWatch>> local = new 
ThreadLocal<List<StopWatch>>();
+
+    public static void push( StopWatch stopWatch )
+    {
+        getExecution().add( stopWatch );
+    }
+
+    /**
+     * Pause all running stopWatches
+     */
+    public static void pause()
+    {
+        for ( StopWatch stopWatch : getExecution() )
+        {
+            stopWatch.pause();
+        }
+    }
+
+    /**
+     * Resume all stopWatches
+     */
+    public static void resume()
+    {
+        for ( StopWatch stopWatch : getExecution() )
+        {
+            stopWatch.resume();
+        }
+    }
+
+    /**
+     * @return the ordered list of StopWatches used during execution
+     */
+    public static List<StopWatch> getExecution()
+    {
+        List<StopWatch> exec = local.get();
+        if (exec == null)
+        {
+            exec = new LinkedList<StopWatch>();
+            local.set( exec );
+        }
+        return local.get();
+    }
+
+    public static void clear()
+    {
+        getExecution().clear();
+    }
+
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/ExecutionStack.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StopWatch.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StopWatch.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StopWatch.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StopWatch.java
 Mon Jan 28 08:34:14 2008
@@ -20,7 +20,7 @@
 /**
  * Estimates the time required for process execution (monitored method, service
  * invocation, database request...)
- * 
+ *
  * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
  */
 public class StopWatch
@@ -48,7 +48,7 @@
      * <p>
      * The monitor can be set to null to use the StopWatch without the
      * monitoring infrastructure.
-     * 
+     *
      * @param monitor the monitor associated with the process to be monitored
      */
     public StopWatch( Monitor monitor )
@@ -132,7 +132,7 @@
     /**
      * Convenience method to stop or cancel a Stopwatch depending on success of
      * monitored operation
-     * 
+     *
      * @param canceled
      * @return time elapsed since the probe has been started
      */
@@ -181,7 +181,7 @@
      * when an exception occurs. To avoid StopWatches to keep running if the
      * application didn't follow this recommandation, the finalizer is used to
      * cancel the StopWatch and will log a educational warning.
-     * 
+     *
      * @see java.lang.Object#finalize()
      */
     protected void finalize()
@@ -200,7 +200,7 @@
      * nanoseconds. The real precision depends on the JVM and the underlying
      * system. On JRE before java5, <tt>backport-util-concurrent</tt> provides
      * some limited support for equivalent timer.
-     * 
+     *
      * @see System#nanoTime()
      * @return time in nanosecond
      */
@@ -223,5 +223,29 @@
     public boolean isPaused()
     {
         return paused;
+    }
+
+    @Override
+    public String toString()
+    {
+        StringBuffer stb = new StringBuffer();
+        if ( monitor != null )
+        {
+            stb.append( "Execution for " ).append( monitor.getKey().toString() 
).append( " " );
+        }
+        if ( paused )
+        {
+            stb.append( "paused after " ).append( getElapsedTime() ).append( 
"ns" );
+        }
+        else if ( stoped )
+        {
+            stb.append( "stoped after " ).append( getElapsedTime() ).append( 
"ns" );
+        }
+        else
+        {
+            stb.append( "running for " ).append( getElapsedTime() ).append( 
"ns" );
+        }
+        return stb.toString();
+
     }
 }

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.impl;
+
+import java.util.Collection;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.commons.monitoring.Counter;
+
+/**
+ * A composite implementation of [EMAIL PROTECTED] Counter} that delegates to 
a primary
+ * implementation and maintains a collection of secondary counters.
+ * <p>
+ * Typical use is to create monitoring graphs : On regular time intervals, a
+ * new secondary counter is registered to computes stats for the current 
period,
+ * and then removed.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class CompositeCounter implements Counter
+{
+    private Counter primary;
+
+    private Collection<Counter> secondary;
+
+    public CompositeCounter( Counter primary )
+    {
+        super();
+        this.primary = primary;
+        this.secondary = new CopyOnWriteArrayList<Counter>();
+    }
+
+    public void addSecondary( Counter counter )
+    {
+        secondary.add( counter );
+    }
+
+    public void removeSecondary( Counter counter )
+    {
+        secondary.remove( counter );
+    }
+
+    public void add( long delta )
+    {
+        primary.add( delta );
+        for ( Counter counter : secondary )
+        {
+            counter.add( delta );
+        }
+    }
+
+    public void set( long l )
+    {
+        primary.set( l );
+        for ( Counter counter : secondary )
+        {
+            counter.set( l );
+        }
+    }
+
+    public long get()
+    {
+        return primary.get();
+    }
+
+    public int getHits()
+    {
+        return primary.getHits();
+    }
+
+    public long getMax()
+    {
+        return primary.getMax();
+    }
+
+    public double getMean()
+    {
+        return primary.getMean();
+    }
+
+    public long getMin()
+    {
+        return primary.getMin();
+    }
+
+    public double getStandardDeviation()
+    {
+        return primary.getStandardDeviation();
+    }
+
+    public long getSum()
+    {
+        return primary.getSum();
+    }
+
+    public String getUnit()
+    {
+        return primary.getUnit();
+    }
+
+
+
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.impl;
+
+import java.util.Collection;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.commons.monitoring.Gauge;
+
+/**
+ * A composite implementation of [EMAIL PROTECTED] Gauge} that delegates to a 
primary
+ * implementation and maintains a collection of secondary Gauges.
+ * <p>
+ * Typical use is to create monitoring graphs : On regular time intervals, a
+ * new secondary Gauge is registered to computes stats for the current period,
+ * and then removed.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class CompositeGauge implements Gauge
+{
+    private Gauge primary;
+
+    private Collection<Gauge> secondary;
+
+
+
+    public CompositeGauge( Gauge primary )
+    {
+        super();
+        this.primary = primary;
+        this.secondary = new CopyOnWriteArrayList<Gauge>();
+    }
+
+    public synchronized void addSecondary( Gauge gauge )
+    {
+        gauge.set( primary.get() );
+        secondary.add( gauge );
+    }
+
+    public void removeSecondary( Gauge gauge )
+    {
+        secondary.remove( gauge );
+    }
+
+    public synchronized void increment()
+    {
+        primary.increment();
+        for ( Gauge gauge : secondary )
+        {
+            gauge.increment();
+        }
+    }
+
+    public synchronized void decrement()
+    {
+        primary.decrement();
+        for ( Gauge gauge : secondary )
+        {
+            gauge.increment();
+        }
+    }
+
+    public synchronized void set( long l )
+    {
+        primary.set( l );
+        for ( Gauge gauge : secondary )
+        {
+            gauge.set( l );
+        }
+    }
+
+    public long get()
+    {
+        return primary.get();
+    }
+
+    public long getMax()
+    {
+        return primary.getMax();
+    }
+
+    public double getMean()
+    {
+        return primary.getMean();
+    }
+
+    public long getMin()
+    {
+        return primary.getMin();
+    }
+
+    public double getStandardDeviation()
+    {
+        return primary.getStandardDeviation();
+    }
+
+    public String getUnit()
+    {
+        return primary.getUnit();
+    }
+
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java
 Mon Jan 28 08:34:14 2008
@@ -22,7 +22,62 @@
 public class SimpleCounter
     extends SimpleValue implements Counter
 {
+    private long value;
+
+    private long sum;
+
+    private long sumOfSquares;
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public long get()
+    {
+        return value;
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public synchronized void set( long l )
+    {
+        value = l;
+        computeStats( l );
+    }
+
+    public synchronized void add( long delta )
+    {
+        value += delta;
+        computeStats( delta );
+    }
+
+    @Override
+    protected void computeStats( long l )
+    {
+        sum += l;
+        sumOfSquares += l * l;
+        super.computeStats( l );
+    }
+
+    @Override
+    public double getMean()
+    {
+        return ((double) sum) / getHits();
+    }
+
+    @Override
+    protected long getSquares()
+    {
+        return sumOfSquares;
+    }
+
+    @Override
+    public long getSum()
+    {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
 
-    // Nothing to do : Counter method already implemented by SimpleValue
 
 }

Modified: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java
 Mon Jan 28 08:34:14 2008
@@ -29,17 +29,27 @@
     extends SimpleValue
     implements Gauge
 {
-    private long total;
+    private long value;
+
+    private long sum;
+
+    private long sumOfSquares;
 
     private long lastUse;
 
     // Use a double so that unset can be detected as "Not a Number"
     private double firstUse = Double.NaN;
 
-    @Override
     public synchronized void increment()
     {
         long now = nanoTime();
+        computeSums( now );
+        computeStats( ++value );
+        lastUse = now;
+    }
+
+    private void computeSums( long now )
+    {
         if ( Double.isNaN( firstUse ) )
         {
             firstUse = now;
@@ -47,10 +57,10 @@
         else
         {
             long delta = now - lastUse;
-            total += get() * delta;
+            long s = get() * delta;
+            sum += s;
+            sumOfSquares += s * s;
         }
-        super.increment();
-        lastUse = now;
     }
 
     protected long nanoTime()
@@ -58,19 +68,46 @@
         return System.nanoTime();
     }
 
-    @Override
     public synchronized void decrement()
     {
         long now = nanoTime();
-        long delta = now - lastUse;
-        total += get() * delta;
-        super.decrement();
+        computeSums( now );
+        computeStats( --value );
         lastUse = now;
     }
 
     @Override
     public synchronized double getMean()
     {
-        return ( (double) total ) / ( nanoTime() - firstUse );
+        return ( (double) sum ) / ( nanoTime() - firstUse );
     }
+
+    @Override
+    protected long getSquares()
+    {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getSum()
+    {
+        return sum;
+    }
+
+    public long get()
+    {
+        return value;
+    }
+
+    public void set( long l )
+    {
+        long now = nanoTime();
+        computeSums( now );
+        computeStats( ++value );
+        value = l;
+        lastUse = now;
+    }
+
+
 }

Modified: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
 Mon Jan 28 08:34:14 2008
@@ -20,46 +20,27 @@
 import org.apache.commons.monitoring.StatValue;
 
 /**
- * A simple implementation of [EMAIL PROTECTED] StatValue}
+ * A simple implementation of [EMAIL PROTECTED] StatValue}. Only provide 
methods to compute stats from
+ * sum provided by derived classes.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
  */
 public abstract class SimpleValue
        implements StatValue
 {
-    private long value;
-
-    private long sum;
-
     private int hits;
 
     private long max;
 
     private long min;
 
-    private long sumOfSquares;
-
     private String unit;
 
     /**
      * [EMAIL PROTECTED]
      */
-    public double getMean()
-    {
-        if ( hits == 0 )
-        {
-            return Double.NaN;
-        }
-        return ( (double) sum ) / hits;
-    }
+    public abstract double getMean();
 
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public long get()
-    {
-        return value;
-    }
 
     /**
      * [EMAIL PROTECTED]
@@ -77,24 +58,15 @@
         return min;
     }
 
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public synchronized void set( long l )
-    {
-        value = l;
-        onValueSet( l );
-    }
-
-    protected void onValueSet(long l)
+    protected void computeStats( long l )
     {
         if ( ( hits == 0 ) || ( l < min ) )
         {
-            min = value;
+            min = l;
         }
-        if ( ( hits == 0 ) || ( value > max ) )
+        if ( ( hits == 0 ) || ( l > max ) )
         {
-            max = value;
+            max = l;
         }
         hits++;
     }
@@ -113,39 +85,20 @@
         {
             return Double.NaN;
         }
-        double variance = ( sumOfSquares - sum * getMean() ) / ( n - 1 );
+        double variance = ( getSquares() - getSum() * getMean() ) / ( n - 1 );
         return Math.sqrt( variance );
     }
 
-    protected long getSquares()
-    {
-        return sumOfSquares;
-    }
+    protected abstract long getSquares();
 
-    public synchronized void increment()
-    {
-        onValueSet( ++value );
-    }
 
-    public synchronized void decrement()
-    {
-        onValueSet( --value );
-    }
 
     public String getUnit()
     {
         return unit;
     }
 
-    public void add( long delta )
-    {
-        onValueSet( value += delta );
-    }
-
-    public long getSum()
-    {
-        return sum;
-    }
+    public abstract long getSum();
 
     public int getHits()
     {

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.reporting;
+
+import java.io.PrintWriter;
+import java.util.Collection;
+
+import org.apache.commons.monitoring.Counter;
+import org.apache.commons.monitoring.StatValue;
+import org.apache.commons.monitoring.Monitor.Key;
+
+/**
+ * A simple TXT renderer, typically to dump monitoring status in a log file
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class TxtRenderer
+    extends AbstractRenderer
+{
+    private static final String HR = 
"\n--------------------------------------------------------------------------------\n";
+
+    public TxtRenderer( PrintWriter writer, Collection<String> roles )
+    {
+        super( writer, roles );
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#render(org.apache.commons.monitoring.StatValue,
 java.lang.String)
+     */
+    @Override
+    public void render( StatValue value, String role )
+    {
+        write( role );
+        write( "\n    value  : " );
+        write( String.valueOf( value.get() ) );
+        write( "\n    min    : " );
+        write( String.valueOf( value.getMin() ) );
+        write( "\n    max    : " );
+        write( String.valueOf( value.getMax() ) );
+        write( "\n    mean   : " );
+        write( String.valueOf( value.getMean() ) );
+        write( "\n    stdDev : " );
+        write( String.valueOf( value.getStandardDeviation() ) );
+        if ( value instanceof Counter )
+        {
+            Counter counter = (Counter) value;
+            write( "\n    total  : " );
+            write( String.valueOf( counter.getSum() ) );
+            write( "\n    hits   : " );
+            write( String.valueOf( counter.getHits() ) );
+        }
+        write( "\n" );
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#render(org.apache.commons.monitoring.Monitor.Key)
+     */
+    @Override
+    public void render( Key key )
+    {
+        write( HR );
+        write( key.toString() );
+        write( HR );
+    }
+
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class ExecutionStackTest
+    extends TestCase
+{
+    public void testExcution()
+        throws Exception
+    {
+        StopWatch s1 = new StopWatch( null );
+        ExecutionStack.push( s1 );
+        StopWatch s2 = new StopWatch( null );
+        ExecutionStack.push( s2 );
+        StopWatch s3 = new StopWatch( null );
+        ExecutionStack.push( s3 );
+
+        ExecutionStack.pause();
+        assertTrue( s1.isPaused() );
+        assertTrue( s2.isPaused() );
+        assertTrue( s3.isPaused() );
+
+        ExecutionStack.resume();
+        assertTrue( ! s1.isPaused() );
+        assertTrue( ! s2.isPaused() );
+        assertTrue( ! s3.isPaused() );
+
+        ExecutionStack.clear();
+    }
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/ExecutionStackTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/StopWatchTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/StopWatchTest.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/StopWatchTest.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/StopWatchTest.java
 Mon Jan 28 08:34:14 2008
@@ -30,7 +30,7 @@
     /**
      * assert the StopWatch computes the time elapsed during the monitored
      * process execution. User a MockTimeWatch to make timing predictable
-     * 
+     *
      * @throws Exception
      */
     public void testComputeTime()
@@ -41,19 +41,22 @@
         time++;
         stopWatch.pause();
         assertTrue( stopWatch.isPaused() );
+        System.out.println( stopWatch.toString() );
         time++;
         stopWatch.resume();
         assertTrue( !stopWatch.isPaused() );
+        System.out.println( stopWatch.toString() );
         time++;
         stopWatch.stop();
         assertEquals( 2, stopWatch.getElapsedTime() );
         assertTrue( stopWatch.isStoped() );
+        System.out.println( stopWatch.toString() );
     }
 
     /**
      * Check that the elapsed time computed by the WtopWatch is not affected by
      * unexpected method calls.
-     * 
+     *
      * @throws Exception
      */
     public void testSupportUnexpectedCalls()

Added: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.impl;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.monitoring.Counter;
+
+public class SimpleCounterTest
+    extends TestCase
+{
+
+    public void testValue()
+        throws Exception
+    {
+        Counter counter = new SimpleCounter();
+
+        counter.set( 1 );
+        assertEquals( 1, counter.getMin() );
+        assertEquals( 1, counter.getMax() );
+        assertEquals( 1, counter.get() );
+
+        counter.add( 10 );
+        assertEquals( 1, counter.getMin() );
+        assertEquals( 10, counter.getMax() );
+        assertEquals( 11, counter.get() );
+
+        counter.add( -2 );
+        assertEquals( -2, counter.getMin() );
+        assertEquals( 10, counter.getMax() );
+        assertEquals( 9, counter.get() );
+
+        assertEquals( 3, counter.getHits() );
+        assertEquals( 3.0D, counter.getMean(), 0D );
+    }
+
+
+}

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java
 Mon Jan 28 08:34:14 2008
@@ -26,6 +26,28 @@
 {
     private long time;
 
+    public void testValue()
+        throws Exception
+    {
+        Gauge gauge = new SimpleGauge();
+
+        gauge.set( 1 );
+        assertEquals( 1, gauge.getMin() );
+        assertEquals( 1, gauge.getMax() );
+        assertEquals( 1, gauge.get() );
+
+        gauge.increment();
+        assertEquals( 1, gauge.getMin() );
+        assertEquals( 2, gauge.getMax() );
+        assertEquals( 2, gauge.get() );
+
+        gauge.decrement();
+        gauge.decrement();
+        assertEquals( 0, gauge.getMin() );
+        assertEquals( 2, gauge.getMax() );
+        assertEquals( 0, gauge.get() );
+    }
+
     /**
      * Use a fake time to emulate to concurrent threads
      * <ul>

Modified: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java?rev=615936&r1=615935&r2=615936&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
 Mon Jan 28 08:34:14 2008
@@ -17,6 +17,7 @@
 
 package org.apache.commons.monitoring.reporting;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.Arrays;
@@ -25,6 +26,8 @@
 
 import junit.framework.TestCase;
 
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.impl.SimpleCounter;
 import org.apache.commons.monitoring.impl.SimpleGauge;
@@ -61,15 +64,7 @@
         StringWriter out = new StringWriter();
         Renderer renderer = new JsonRenderer( new PrintWriter( out ), roles );
         renderer.render( monitors );
-        assertEquals(
-            "["
-                + 
"{key:{name:\"JsonRendererTest.setUp\",category:\"test\",subsystem:\"reporting\"},"
-                + 
"concurrency:{value:\"0\",min:\"0\",max:\"0\",mean:\"NaN\",stdDev:\"NaN\"},"
-                + 
"performances:{value:\"10\",min:\"10\",max:\"10\",mean:\"0.0\",stdDev:\"NaN\",total:\"0\",hits:\"1\"}},"
-                + 
"{key:{name:\"TestCase\",category:\"test\",subsystem:\"junit\"},"
-                + 
"concurrency:{value:\"1\",min:\"1\",max:\"1\",mean:\"0.0\",stdDev:\"NaN\"},"
-                + 
"performances:{value:\"0\",min:\"0\",max:\"0\",mean:\"NaN\",stdDev:\"NaN\",total:\"0\",hits:\"0\"}}"
-                + "]", out.toString() );
+        assertEqualsIgnoreLineEnds( expected( "js" ), out.toString() );
     }
 
     public void testRenderToXml()
@@ -78,15 +73,30 @@
         StringWriter out = new StringWriter();
         Renderer renderer = new XmlRenderer( new PrintWriter( out ), roles );
         renderer.render( monitors );
-        assertEquals(
-            "<monitors>"
-                + "<monitor name=\"JsonRendererTest.setUp\" category=\"test\" 
subsystem=\"reporting\">"
-                + "<concurrency value=\"0\" min=\"0\" max=\"0\" mean=\"NaN\" 
stdDev=\"NaN\"/>"
-                + "<performances value=\"10\" min=\"10\" max=\"10\" 
mean=\"0.0\" stdDev=\"NaN\" total=\"0\" hits=\"1\"/>"
-                + "</monitor>"
-                + "<monitor name=\"TestCase\" category=\"test\" 
subsystem=\"junit\">"
-                + "<concurrency value=\"1\" min=\"1\" max=\"1\" mean=\"0.0\" 
stdDev=\"NaN\"/>"
-                + "<performances value=\"0\" min=\"0\" max=\"0\" mean=\"NaN\" 
stdDev=\"NaN\" total=\"0\" hits=\"0\"/>"
-                + "</monitor></monitors>", out.toString() );
+        assertEqualsIgnoreLineEnds( expected( "xml" ), out.toString() );
+    }
+
+    public void testRenderToTxt()
+        throws Exception
+    {
+        StringWriter out = new StringWriter();
+        Renderer renderer = new TxtRenderer( new PrintWriter( out ), roles );
+        renderer.render( monitors );
+        assertEqualsIgnoreLineEnds( expected( "txt" ), out.toString() );
+    }
+
+    private void assertEqualsIgnoreLineEnds( String expected, String actual )
+    {
+        expected = StringUtils.remove( StringUtils.remove( expected, "\n" ), 
"\r" );
+        actual = StringUtils.remove( StringUtils.remove( actual, "\n" ), "\r" 
);
+        assertEquals( expected, actual );
+    }
+
+    private String expected( String format )
+        throws IOException
+    {
+        String expected = IOUtils.toString( getClass().getResourceAsStream( 
"RendererTest." + format ) );
+        expected = StringUtils.remove( StringUtils.remove( expected, '\n' ), 
'\r' );
+        return expected;
     }
 }

Added: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,7 @@
+[{key:{name:"JsonRendererTest.setUp",category:"test",subsystem:"reporting"},
+concurrency:{value:"0",min:"0",max:"0",mean:"NaN",stdDev:"NaN"},
+performances:{value:"10",min:"10",max:"10",mean:"10.0",stdDev:"NaN",total:"0",hits:"1"}},
+{key:{name:"TestCase",category:"test",subsystem:"junit"},
+concurrency:{value:"1",min:"1",max:"1",mean:"0.0",stdDev:"NaN"},
+performances:{value:"0",min:"0",max:"0",mean:"NaN",stdDev:"NaN",total:"0",hits:"0"}}
+]
\ No newline at end of file

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,39 @@
+--------------------------------------------------------------------------------
+name=JsonRendererTest.setUp
+category=test
+subsystem=reporting
+--------------------------------------------------------------------------------
+concurrency
+    value  : 0
+    min    : 0
+    max    : 0
+    mean   : NaN
+    stdDev : NaN
+performances
+    value  : 10
+    min    : 10
+    max    : 10
+    mean   : 10.0
+    stdDev : NaN
+    total  : 0
+    hits   : 1
+
+--------------------------------------------------------------------------------
+name=TestCase
+category=test
+subsystem=junit
+--------------------------------------------------------------------------------
+concurrency
+    value  : 1
+    min    : 1
+    max    : 1
+    mean   : 0.0
+    stdDev : NaN
+performances
+    value  : 0
+    min    : 0
+    max    : 0
+    mean   : NaN
+    stdDev : NaN
+    total  : 0
+    hits   : 0
\ No newline at end of file

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml?rev=615936&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
 Mon Jan 28 08:34:14 2008
@@ -0,0 +1,10 @@
+<monitors>
+<monitor name="JsonRendererTest.setUp" category="test" subsystem="reporting">
+<concurrency value="0" min="0" max="0" mean="NaN" stdDev="NaN"/>
+<performances value="10" min="10" max="10" mean="10.0" stdDev="NaN" total="0" 
hits="1"/>
+</monitor>
+<monitor name="TestCase" category="test" subsystem="junit">
+<concurrency value="1" min="1" max="1" mean="0.0" stdDev="NaN"/>
+<performances value="0" min="0" max="0" mean="NaN" stdDev="NaN" total="0" 
hits="0"/>
+</monitor>
+</monitors>
\ No newline at end of file

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: 
commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml


Reply via email to