Author: nicolas Date: Wed Jan 30 06:24:08 2008 New Revision: 616771 URL: http://svn.apache.org/viewvc?rev=616771&view=rev Log: - Composite statValues implementation & test case - DefaultRepository to user CompositeValuesMonitor - Value Listener+ Threshold implementation
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ - copied from r616198, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/events/ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java (with props) commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java (with props) commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java - copied, changed from r616742, commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java - copied, changed from r616742, 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/listener/ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java (with props) Removed: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java Modified: commons/sandbox/monitoring/trunk/pom.xml commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java commons/sandbox/monitoring/trunk/src/site/site.xml commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.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=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/pom.xml (original) +++ commons/sandbox/monitoring/trunk/pom.xml Wed Jan 30 06:24:08 2008 @@ -74,19 +74,19 @@ <build> <plugins> <!-- TODO : investigate OSGi support - <plugin> + <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>1.2.0</version> <extensions>true</extensions> <configuration> - <excludeDependencies>true</excludeDependencies> - <instructions> - <Bundle-SymbolicName>org.apache.commons.monitoring</Bundle-SymbolicName> - <Export-Package>org.apache.commons.monitoring;version=${project.version}</Export-Package> - </instructions> + <excludeDependencies>true</excludeDependencies> + <instructions> + <Bundle-SymbolicName>org.apache.commons.monitoring</Bundle-SymbolicName> + <Export-Package>org.apache.commons.monitoring;version=${project.version}</Export-Package> + </instructions> </configuration> - </plugin> + </plugin> --> <plugin> <artifactId>maven-jar-plugin</artifactId> @@ -100,87 +100,81 @@ </plugin> <!-- - FIXME waiting for Retrotranslator 1.2.4 to get deployed on central - <plugin> + FIXME waiting for Retrotranslator 1.2.4 to get deployed on central + <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> - <execution> - <id>backport</id> - <phase>package</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <tasks> - <mkdir dir="${basedir}/target/backport" /> - <java classname="net.sf.retrotranslator.transformer.Retrotranslator" failonerror="true"> - <classpath> - <path refid="maven.plugin.classpath" /> - <path refid="maven.compile.classpath" /> - </classpath> - <arg value="-smart" /> - <arg value="-srcdir" /> - <arg value="${basedir}/target/classes" /> - <arg value="-destdir" /> - <arg value="${basedir}/target/backport" /> - <arg value="-target" /> - <arg value="1.3" /> - <arg value="-backport" /> - <arg - value="java.util.concurrent:edu.emory.mathcs.backport.java.util.concurrent; - java.lang.System.nanoTime:edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.nanoTime; - java.lang.StringBuilder:java.lang.StringBuffer; - org.apache.commons.monitoring.support.java13;" /> - </java> - </tasks> - </configuration> - </execution> + <execution> + <id>backport</id> + <phase>package</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <tasks> + <mkdir dir="${basedir}/target/backport" /> + <java classname="net.sf.retrotranslator.transformer.Retrotranslator" failonerror="true"> + <classpath> + <path refid="maven.plugin.classpath" /> + <path refid="maven.compile.classpath" /> + </classpath> + <arg value="-smart" /> + <arg value="-srcdir" /> + <arg value="${basedir}/target/classes" /> + <arg value="-destdir" /> + <arg value="${basedir}/target/backport" /> + <arg value="-target" /> + <arg value="1.3" /> + <arg value="-backport" /> + <arg + value="java.util.concurrent:edu.emory.mathcs.backport.java.util.concurrent; + java.lang.System.nanoTime:edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.nanoTime; + java.lang.StringBuilder:java.lang.StringBuffer; + org.apache.commons.monitoring.support.java13;" /> + </java> + </tasks> + </configuration> + </execution> </executions> <dependencies> - <dependency> - <groupId>net.sf.retrotranslator</groupId> - <artifactId>retrotranslator-transformer</artifactId> - <version>1.2.4</version> - <scope>system</scope> - <systemPath> - ${basedir}/lib/retrotranslator-transformer-1.2.4.jar - </systemPath> - </dependency> - <dependency> - <groupId>net.sf.retrotranslator</groupId> - <artifactId>retrotranslator-runtime</artifactId> - <version>1.2.4</version> - <scope>system</scope> - <systemPath> - ${basedir}/lib/retrotranslator-runtime-1.2.4.jar - </systemPath> - </dependency> - <dependency> - <groupId>backport-util-concurrent</groupId> - <artifactId>backport-util-concurrent</artifactId> - <version>3.1</version> - </dependency> + <dependency> + <groupId>net.sf.retrotranslator</groupId> + <artifactId>retrotranslator-transformer</artifactId> + <version>1.2.4</version> + <scope>system</scope> + </dependency> + <dependency> + <groupId>net.sf.retrotranslator</groupId> + <artifactId>retrotranslator-runtime</artifactId> + <version>1.2.4</version> + <scope>system</scope> + </dependency> + <dependency> + <groupId>backport-util-concurrent</groupId> + <artifactId>backport-util-concurrent</artifactId> + <version>3.1</version> + </dependency> </dependencies> - </plugin> - <plugin> + </plugin> + <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-1</version> <executions> - <execution> - <id>backport</id> - <phase>package</phase> - <goals> - <goal>attached</goal> - </goals> - <configuration> - <descriptors> - <descriptor>src/assembly/backport.xml</descriptor> - </descriptors> - </configuration> - </execution> + <execution> + <id>backport</id> + <phase>package</phase> + <goals> + <goal>attached</goal> + </goals> + <configuration> + <descriptors> + <descriptor>src/assembly/backport.xml</descriptor> + </descriptors> + </configuration> + </execution> </executions> - </plugin> --> + </plugin> --> </plugins> </build> @@ -197,5 +191,17 @@ <maven.compile.source>1.5</maven.compile.source> <maven.compile.target>1.5</maven.compile.target> </properties> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <configuration> + <targetJdk>1.5</targetJdk> + </configuration> + </plugin> + </plugins> + </reporting> </project> Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java Wed Jan 30 06:24:08 2008 @@ -78,10 +78,13 @@ void removeListener( Listener listener ); + /** + * Listener for StatValue events + * + * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> + */ public static interface Listener { - long getThreshold(); - - void exceeded( StatValue value, long l ); + void onValueChanged( StatValue value, long l ); } } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java Wed Jan 30 06:24:08 2008 @@ -36,17 +36,6 @@ /** * Constructor - * @param name monitor name - * @param category monitor (technical) category - * @param subsystem monitor (functional) subsystem - */ - public AbstractMonitor( String name, String category, String subsystem ) - { - this( new Key( name, category, subsystem ) ); - } - - /** - * Constructor * @param key the monitor identifier */ public AbstractMonitor( Key key ) Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java Wed Jan 30 06:24:08 2008 @@ -90,15 +90,12 @@ hits++; } - protected void notifyValueChanged( long l ) + protected void fireValueChanged( long l ) { - // Notify listeners if Threshold exceeded + // Notify listeners for ( Listener listener : listeners ) { - if ( listener.getThreshold() < l ) - { - listener.exceeded( this, l ); - } + listener.onValueChanged( this, l ); } } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java Wed Jan 30 06:24:08 2008 @@ -33,11 +33,6 @@ super( key ); } - public CompositeValuesMonitor( String name, String category, String subsystem ) - { - super( name, category, subsystem ); - } - @Override protected Counter newCounterInstance() { Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java Wed Jan 30 06:24:08 2008 @@ -19,10 +19,9 @@ import org.apache.commons.monitoring.Counter; import org.apache.commons.monitoring.Gauge; -import org.apache.commons.monitoring.Monitor; /** - * implementation of the [EMAIL PROTECTED] Monitor} interface that creates StatValues on + * implementation of the <code>Monitor</code> interface that creates StatValues on * demand. The application can request for Counters/Gauges without having to * handle instantiation of monitors with all required StatValues pre-registered. * @@ -35,11 +34,6 @@ public CreateValuesOnDemandMonitor( Key key ) { super( key ); - } - - public CreateValuesOnDemandMonitor( String name, String category, String subsystem ) - { - super( name, category, subsystem ); } /** Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java Wed Jan 30 06:24:08 2008 @@ -92,10 +92,7 @@ if ( monitor == null ) { monitor = newMonitorInstance( key ); - for ( Listener listener : listeners ) - { - listener.newMonitorInstance( monitor ); - } + Monitor previous = monitors.putIfAbsent( key, monitor ); if ( previous != null ) { @@ -108,7 +105,7 @@ protected Monitor newMonitorInstance( Monitor.Key key ) { Monitor monitor; - monitor = new CreateValuesOnDemandMonitor( key ); + monitor = new CompositeValuesMonitor( key ); return monitor; } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java Wed Jan 30 06:24:08 2008 @@ -60,7 +60,7 @@ value = l; computeStats( l ); } - notifyValueChanged( l ); + fireValueChanged( l ); } public void add( long delta ) @@ -70,7 +70,7 @@ value += delta; computeStats( delta ); } - notifyValueChanged( delta ); + fireValueChanged( delta ); } @Override @@ -96,8 +96,7 @@ @Override public long getSum() { - // TODO Auto-generated method stub - return 0; + return sum; } } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java Wed Jan 30 06:24:08 2008 @@ -55,7 +55,7 @@ public void increment() { long l = threadSafeIncrement(); - notifyValueChanged( l ); + fireValueChanged( l ); } protected synchronized long threadSafeIncrement() @@ -70,7 +70,7 @@ public void add( long delta ) { long l = trheadSageAdd( delta ); - notifyValueChanged( l ); + fireValueChanged( l ); } protected synchronized long trheadSageAdd( long delta ) @@ -85,8 +85,8 @@ public void decrement() { - long l = threadSafeDecrement();; - notifyValueChanged( l ); + long l = threadSafeDecrement(); + fireValueChanged( l ); } protected synchronized long threadSafeDecrement() @@ -129,8 +129,7 @@ @Override protected long getSquares() { - // TODO Auto-generated method stub - return 0; + return sumOfSquares; } @Override @@ -147,7 +146,7 @@ public void set( long l ) { threadSafeSet( l ); - notifyValueChanged( l ); + fireValueChanged( l ); } protected synchronized void threadSafeSet( long l ) Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java?rev=616771&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java (added) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java Wed Jan 30 06:24:08 2008 @@ -0,0 +1,40 @@ +/* + * 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.listeners; + +import org.apache.commons.monitoring.StatValue; +import org.apache.commons.monitoring.StatValue.Listener; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> + */ +public abstract class ThresholdListener + implements Listener +{ + public abstract long getThreshold(); + + public final void onValueChanged( StatValue value, long l ) + { + if ( l > getThreshold() ) + { + exceed( value, l ); + } + } + + public abstract void exceed( StatValue value, long l ); +} Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: commons/sandbox/monitoring/trunk/src/site/site.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/site/site.xml?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/site/site.xml (original) +++ commons/sandbox/monitoring/trunk/src/site/site.xml Wed Jan 30 06:24:08 2008 @@ -17,18 +17,17 @@ --> <project name="Monitoring"> - <!-- <bannerRight> <name>Commons Monitoring</name> <src>/images/logo.png</src> <href>/index.html</href> </bannerRight> - --> <body> <menu name="Monitoring"> <item name="Overview" href="/index.html"/> <item name="Proposal" href="/PROPOSAL.html"/> + <item name="Tutorial" href="/tutorial.html"/> <item name="Wiki" href="http://wiki.apache.org/commons/Monitoring"/> </menu> Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java?rev=616771&r1=616770&r2=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java (original) +++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java Wed Jan 30 06:24:08 2008 @@ -32,7 +32,7 @@ extends TestCase { - public void testConcurrencyMonitoring() + public void testStopWatchConcurrencyMonitoring() throws Exception { Monitoring.setRepository( new DefaultRepository() ); @@ -65,7 +65,7 @@ { public void run() { - for ( int i = 0; i < loops; i++ ) + for ( int j = 0; j < loops; j++ ) { Monitor monitor = Monitoring.getMonitor( "MonitoringTest.testMultiThreading", "test", "utils" ); monitor.getCounter( "COUNTER" ).add( 1 ); @@ -89,48 +89,6 @@ assertEquals( threads * loops, monitor.getCounter( "COUNTER" ).getHits() ); assertEquals( threads * loops, monitor.getCounter( "COUNTER" ).get() ); assertEquals( threads * loops, monitor.getGauge( "GAUGE" ).get() ); - } - - public void testCounterListeners() - throws Exception - { - Repository repository = new DefaultRepository(); - final Monitor monitor = repository.getMonitor( "MonitoringTest.testMonitoring", "test", "utils" ); - Counter counter = monitor.getCounter( Monitor.PERFORMANCES ); - - TestListener listener = new TestListener( monitor ); - counter.addListener( listener ); - - counter.add( 1 ); - assertEquals( "unexpected listener notification", 0, listener.count ); - counter.add( 10 ); - assertEquals( "listener didn't get notified", 1, listener.count ); - } - - private final class TestListener - implements StatValue.Listener - { - private final Monitor monitor; - - long count = 0; - - private TestListener( Monitor monitor ) - { - this.monitor = monitor; - } - - public void exceeded( StatValue value, long l ) - { - count++; - assertEquals( 10, l ); - assertEquals( Monitor.PERFORMANCES, value.getRole() ); - assertEquals( monitor, value.getMonitor() ); - } - - public long getThreshold() - { - return 5; - } } } Added: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java?rev=616771&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java (added) +++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java Wed Jan 30 06:24:08 2008 @@ -0,0 +1,114 @@ +/* + * 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 org.apache.commons.monitoring.Composite; +import org.apache.commons.monitoring.Counter; +import org.apache.commons.monitoring.Gauge; +import org.apache.commons.monitoring.Monitor; + +import junit.framework.TestCase; + +; + +/** + * Test for basic Monitor behaviour + * + * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> + */ +public class CompositeValuesMonitorTest + extends TestCase +{ + public void testReset() + throws Exception + { + Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( "MonitorTest.testReset", "test", "utils" ) ); + Counter counter = monitor.getCounter( Monitor.PERFORMANCES ); + counter.add( 1 ); + assertEquals( 1, counter.get() ); + + monitor.reset(); + assertEquals( 0, counter.get() ); + } + + public void testCompositeCounter() + throws Exception + { + Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( "MonitorTest.testComposite", "test", "utils" ) ); + Counter counter = monitor.getCounter( "COUNTER" ); + Counter secondary = new ThreadSafeCounter(); + Composite<Counter> composite = (Composite<Counter>) counter; + + counter.add( 1 ); + assertEquals( 1, counter.get() ); + assertEquals( 0, secondary.get() ); + + composite.addSecondary( secondary ); + counter.add( 1 ); + assertEquals( 2, counter.get() ); + assertEquals( 1, secondary.get() ); + + counter.set( 3 ); + assertEquals( 3, counter.get() ); + assertEquals( 3, secondary.get() ); + + composite.removeSecondary( secondary ); + counter.add( 1 ); + assertEquals( 4, counter.get() ); + assertEquals( 3, secondary.get() ); + } + + public void testCompositeGauge() + throws Exception + { + Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( "MonitorTest.testComposite", "test", "utils" ) ); + Gauge gauge = monitor.getGauge( "GAUGE" ); + Gauge secondary = new ThreadSafeGauge(); + Composite<Gauge> composite = (Composite<Gauge>) gauge; + + gauge.increment(); + assertEquals( 1, gauge.get() ); + assertEquals( 0, secondary.get() ); + + composite.addSecondary( secondary ); + gauge.increment(); + assertEquals( 2, gauge.get() ); + assertEquals( 2, secondary.get() ); + + gauge.set( 3 ); + assertEquals( 3, gauge.get() ); + assertEquals( 3, secondary.get() ); + + gauge.add( 2 ); + assertEquals( 5, gauge.get() ); + assertEquals( 5, secondary.get() ); + + gauge.increment(); + assertEquals( 6, gauge.get() ); + assertEquals( 6, secondary.get() ); + + gauge.decrement(); + assertEquals( 5, gauge.get() ); + assertEquals( 5, secondary.get() ); + + composite.removeSecondary( secondary ); + gauge.decrement(); + assertEquals( 4, gauge.get() ); + assertEquals( 5, secondary.get() ); + } +} Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java (from r616742, 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/ThreadSafeCounterTest.java?p2=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java&p1=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java&r1=616742&r2=616771&rev=616771&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleCounterTest.java (original) +++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java Wed Jan 30 06:24:08 2008 @@ -21,7 +21,7 @@ import org.apache.commons.monitoring.Counter; -public class SimpleCounterTest +public class ThreadSafeCounterTest extends TestCase { Copied: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java (from r616742, 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/ThreadSafeGaugeTest.java?p2=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java&p1=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/SimpleGaugeTest.java&r1=616742&r2=616771&rev=616771&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/ThreadSafeGaugeTest.java Wed Jan 30 06:24:08 2008 @@ -21,7 +21,7 @@ import org.apache.commons.monitoring.Gauge; -public class SimpleGaugeTest +public class ThreadSafeGaugeTest extends TestCase { private long time; Added: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java?rev=616771&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java (added) +++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java Wed Jan 30 06:24:08 2008 @@ -0,0 +1,79 @@ +/* + * 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.listener; + +import junit.framework.TestCase; + +import org.apache.commons.monitoring.Counter; +import org.apache.commons.monitoring.Monitor; +import org.apache.commons.monitoring.StatValue; +import org.apache.commons.monitoring.impl.CreateValuesOnDemandMonitor; +import org.apache.commons.monitoring.listeners.ThresholdListener; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> + */ +public class ThresholdListenerTest + extends TestCase +{ + public void testThresholdListener() + throws Exception + { + final Monitor monitor = new CreateValuesOnDemandMonitor( + new Monitor.Key( "MonitoringTest.testMonitoring", "test", "utils" ) ); + Counter counter = monitor.getCounter( Monitor.PERFORMANCES ); + + TestListener listener = new TestListener( monitor ); + counter.addListener( listener ); + + counter.add( 1 ); + assertEquals( "unexpected listener notification", 0, listener.count ); + counter.add( 10 ); + assertEquals( "listener didn't get notified", 1, listener.count ); + + counter.removeListener( listener ); + counter.add( 10 ); + assertEquals( "removed listener was notified", 1, listener.count ); + } + + private final class TestListener + extends ThresholdListener + { + private final Monitor monitor; + + long count = 0; + + private TestListener( Monitor monitor ) + { + this.monitor = monitor; + } + + public void exceed( StatValue value, long l ) + { + count++; + assertEquals( 10, l ); + assertEquals( Monitor.PERFORMANCES, value.getRole() ); + assertEquals( monitor, value.getMonitor() ); + } + + public long getThreshold() + { + return 5; + } + } +} Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain 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=616771&r1=616770&r2=616771&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 Wed Jan 30 06:24:08 2008 @@ -40,12 +40,14 @@ throws Exception { monitors = new LinkedList<Monitor>(); - Monitor m1 = new CreateValuesOnDemandMonitor( "JsonRendererTest.setUp", "test", "reporting" ); + Monitor m1 = new CreateValuesOnDemandMonitor( + new Monitor.Key( "JsonRendererTest.setUp", "test", "reporting" ) ); m1.getCounter( Monitor.PERFORMANCES ).add( 10 ); m1.getGauge( Monitor.CONCURRENCY ); monitors.add( m1 ); - Monitor m2 = new CreateValuesOnDemandMonitor( "TestCase", "test", "junit" ); + Monitor m2 = new CreateValuesOnDemandMonitor( + new Monitor.Key( "TestCase", "test", "junit" ) ); m2.getCounter( Monitor.PERFORMANCES ); m2.getGauge( Monitor.CONCURRENCY ).increment(); monitors.add( m2 );