[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: svn commit: r616742 - in /commons/sandbox/monitoring/trunk: ./ lib/
From: nicolas () apache ! org
Date: 2008-01-30 12:46:11
Message-ID: 20080130124622.1412D1A9832 () eris ! apache ! org
[Download RAW message or body]
Author: nicolas
Date: Wed Jan 30 04:46:05 2008
New Revision: 616742
URL: http://svn.apache.org/viewvc?rev=616742&view=rev
Log:
- Monitor implementation refactored as a class hierarchy
- Composite gauge/counter with less synchronization requirements
- Implementation classes renamed to expose features
- thread-safety test
Added:
commons/sandbox/monitoring/trunk/lib/
commons/sandbox/monitoring/trunk/lib/retrotranslator-runtime-1.2.4.jar (with \
props) commons/sandbox/monitoring/trunk/lib/retrotranslator-transformer-1.2.4.jar \
(with props) commons/sandbox/monitoring/trunk/src/assembly/
commons/sandbox/monitoring/trunk/src/assembly/backport.xml (with props)
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java
- copied, changed from r616258, \
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java
- copied, changed from r616258, \
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleMonitor.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java
- copied, changed from r616258, \
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/RepositoryBase.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java
- copied, changed from r616258, \
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/ThreadSafeGauge.java
- copied, changed from r616258, \
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/support/
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/README
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java \
(with props) commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java \
(with props) commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml (with \
props) Removed:
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/RepositoryBase.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/SimpleMonitor.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java
Modified:
commons/sandbox/monitoring/trunk/pom.xml
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Composite.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitoring.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Repository.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java
commons/sandbox/monitoring/trunk/src/site/xdoc/index.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/impl/SimpleCounterTest.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
Added: commons/sandbox/monitoring/trunk/lib/retrotranslator-runtime-1.2.4.jar
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/lib/retrotranslator-runtime-1.2.4.jar?rev=616742&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/sandbox/monitoring/trunk/lib/retrotranslator-runtime-1.2.4.jar
------------------------------------------------------------------------------
svn:mime-type = application/java-archive
Added: commons/sandbox/monitoring/trunk/lib/retrotranslator-transformer-1.2.4.jar
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/lib/retrotranslator-transformer-1.2.4.jar?rev=616742&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/sandbox/monitoring/trunk/lib/retrotranslator-transformer-1.2.4.jar
------------------------------------------------------------------------------
svn:mime-type = application/java-archive
Modified: commons/sandbox/monitoring/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/pom.xml Wed Jan 30 04:46:05 2008
@@ -1,23 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- 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.
+ 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.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+<project xmlns="http://maven.apache.org/POM/4.0.0" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + \
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -29,7 +28,7 @@
<artifactId>commons-monitoring</artifactId>
<version>1.0-SNAPSHOT</version>
- <packaging>bundle</packaging>
+ <packaging>jar</packaging>
<name>Commons Monitoring (Sandbox)</name>
<url>http://commons.apache.org/sandbox/monitoring/</url>
<inceptionYear>2008</inceptionYear>
@@ -43,16 +42,16 @@
</dependency>
<dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.4</version>
- <scope>test</scope>
+ <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>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.3</version>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -74,6 +73,7 @@
<build>
<plugins>
+ <!-- TODO : investigate OSGi support
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
@@ -86,6 +86,98 @@
<Export-Package>org.apache.commons.monitoring;version=${project.version}</Export-Package>
</instructions>
</configuration>
+ </plugin>
+ -->
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.2</version>
+ <configuration>
+ <excludes>
+ <!-- exclude classes required by backport version -->
+ <exclude>org/apache/commons/monitoring/support/java13/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <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>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>net.sf.retrotranslator</groupId>
+ <artifactId>retrotranslator-transformer</artifactId>
+ <version>1.2.4</version>
+ <scope>system</scope> <!-- not deployed on central yet -->
+ <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>
+ </dependencies>
+ </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>
+ </executions>
</plugin>
</plugins>
</build>
Added: commons/sandbox/monitoring/trunk/src/assembly/backport.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/assembly/backport.xml?rev=616742&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/assembly/backport.xml (added)
+++ commons/sandbox/monitoring/trunk/src/assembly/backport.xml Wed Jan 30 04:46:05 \
2008 @@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<assembly xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/assembly-1.0.0.xsd">
+
+ <id>backport</id>
+ <formats>
+ <format>jar</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>target/backport</directory>
+ <outputDirectory></outputDirectory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <outputDirectory></outputDirectory>
+ </fileSet>
+ </fileSets>
+
+</assembly>
\ No newline at end of file
Propchange: commons/sandbox/monitoring/trunk/src/assembly/backport.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/assembly/backport.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/assembly/backport.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Composite.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Composite.java?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Composite.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Composite.java \
Wed Jan 30 04:46:05 2008 @@ -28,11 +28,6 @@
public interface Composite<T>
{
/**
- * @return the primary instance
- */
- T getPrimary();
-
- /**
* @return an (unmodifiable) collection of secondary instances
*/
Collection<T> getSecondary();
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java \
Wed Jan 30 04:46:05 2008 @@ -61,18 +61,24 @@
Key getKey();
/**
+ * Get a Counter
+ *
* @param role a unique identifier for a Counter in the monitor
* @return the Counter
*/
Counter getCounter( String role );
/**
+ * Get a Gauge
+ *
* @param role a unique identifier for a Gauge in the monitor
* @return the Gauge
*/
Gauge getGauge( String role );
/**
+ * Retrieve a StatValue.
+ *
* @param role a unique identifier for a StatValue in the monitor
* @return the StatValue
*/
@@ -82,18 +88,6 @@
* Reset all StatValues (don't remove them)
*/
void reset();
-
- /**
- * Register a StatValue to the monitor with the specified role. If the
- * monitor already had a StatValue for the specified role, the registration
- * is rejected and the method returns <code>false</code>
- *
- * @param value the StatValue
- * @param role the StatValue role in the monitor.
- * @return <code>false</code> if there is already a StatValue for this
- * role in the monitor.
- */
- boolean setValue( StatValue value, String role );
/**
* Identifier class for Monitors
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitoring.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/Monitoring.java?rev=616742&r1=616741&r2=616742&view=diff \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitoring.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitoring.java \
Wed Jan 30 04:46:05 2008 @@ -17,7 +17,7 @@
package org.apache.commons.monitoring;
-import org.apache.commons.monitoring.impl.RepositoryBase;
+import org.apache.commons.monitoring.impl.DefaultRepository;
/**
* Utility class for simpified application instrumentation
@@ -31,7 +31,7 @@
super();
}
- private static Repository repository = new RepositoryBase();
+ private static Repository repository = new DefaultRepository();
public static Monitor getMonitor( String name, String category, String subsystem \
) {
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Repository.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/Repository.java?rev=616742&r1=616741&r2=616742&view=diff \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Repository.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Repository.java \
Wed Jan 30 04:46:05 2008 @@ -65,4 +65,32 @@
*/
void reset();
+ /**
+ * @param listener listener to get registered
+ */
+ void addListener( Listener listener );
+
+ /**
+ *
+ * @param listener listener to get deregistered
+ */
+ void removeListener( Listener listener );
+
+ /**
+ * Listener interface to get notified on repository events
+ *
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+ static interface Listener
+ {
+ /**
+ * A monitor has just been created. Can be used to add custom StatValues or
+ * to register StatValue.Listener for all monitors that declare the same \
category or + * subsystem.
+ *
+ * @param monitor
+ */
+ void newMonitorInstance( Monitor monitor );
+ }
+
}
Added: 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=616742&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,101 @@
+/*
+ * 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.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.commons.monitoring.Monitor;
+import org.apache.commons.monitoring.StatValue;
+
+/**
+ * Abstract {@link Monitor} implementation with implementation fo base methods
+ *
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public abstract class AbstractMonitor implements Monitor
+{
+
+ protected final ConcurrentMap<String, StatValue> values;
+ protected final Key key;
+
+ /**
+ * 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 )
+ {
+ super();
+ this.key = key;
+ this.values = new ConcurrentHashMap<String, StatValue>();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Key getKey()
+ {
+ return key;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public StatValue getValue( String role )
+ {
+ return values.get( role );
+ }
+
+ /**
+ * Register the StatValue for the role, if none was registered before
+ * @param value
+ * @param role
+ * @return the value registered, or a previously existing one
+ */
+ public <T extends StatValue> T register( T value, String role )
+ {
+ value.setMonitor( this );
+ value.setRole( role );
+ T previous = (T) values.putIfAbsent( role, value );
+ return previous != null ? previous : value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void reset()
+ {
+ for ( StatValue value : values.values() )
+ {
+ value.reset();
+ }
+ }
+
+}
\ No newline at end of file
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractMonitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java \
(from r616258, 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/a \
pache/commons/monitoring/impl/AbstractStatValue.java?p2=commons/sandbox/monitoring/tru \
nk/src/main/java/org/apache/commons/monitoring/impl/AbstractStatValue.java&p1=commons/ \
sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleValue.java&r1=616258&r2=616742&rev=616742&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/AbstractStatValue.java \
Wed Jan 30 04:46:05 2008 @@ -29,7 +29,7 @@
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public abstract class SimpleValue
+public abstract class AbstractStatValue
implements StatValue
{
private Monitor monitor;
Modified: 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/a \
pache/commons/monitoring/impl/CompositeCounter.java?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeCounter.java \
Wed Jan 30 04:46:05 2008 @@ -23,8 +23,6 @@
import org.apache.commons.monitoring.Composite;
import org.apache.commons.monitoring.Counter;
-import org.apache.commons.monitoring.Monitor;
-import org.apache.commons.monitoring.StatValue.Listener;
/**
* A composite implementation of {@link Counter} that delegates to a primary
@@ -36,26 +34,18 @@
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public class CompositeCounter implements Counter, Composite<Counter>
+public class CompositeCounter extends ThreadSafeCounter implements \
Composite<Counter> {
- private Counter primary;
-
private Collection<Counter> secondary;
- public Counter getPrimary()
- {
- return primary;
- }
-
public Collection<Counter> getSecondary()
{
return Collections.unmodifiableCollection( secondary );
}
- public CompositeCounter( Counter primary )
+ public CompositeCounter()
{
super();
- this.primary = primary;
this.secondary = new CopyOnWriteArrayList<Counter>();
}
@@ -71,7 +61,7 @@
public void add( long delta )
{
- primary.add( delta );
+ super.add( delta );
for ( Counter counter : secondary )
{
counter.add( delta );
@@ -80,88 +70,11 @@
public void set( long l )
{
- primary.set( l );
+ super.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();
- }
-
- public void reset()
- {
- primary.reset();
- }
-
- public Monitor getMonitor()
- {
- return primary.getMonitor();
- }
-
- public String getRole()
- {
- return primary.getRole();
- }
-
- public void setMonitor( Monitor monitor )
- {
- primary.setMonitor( monitor );
- }
-
- public void setRole( String role )
- {
- primary.setRole( role );
- }
-
- public void addListener( Listener listener )
- {
- primary.addListener( listener );
- }
-
- public void removeListener( Listener listener )
- {
- primary.removeListener( listener );
- }
-
-
}
Modified: 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/a \
pache/commons/monitoring/impl/CompositeGauge.java?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeGauge.java \
Wed Jan 30 04:46:05 2008 @@ -19,12 +19,10 @@
import java.util.Collection;
import java.util.Collections;
-import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.LinkedList;
-import org.apache.commons.monitoring.Counter;
+import org.apache.commons.monitoring.Composite;
import org.apache.commons.monitoring.Gauge;
-import org.apache.commons.monitoring.Monitor;
-import org.apache.commons.monitoring.StatValue.Listener;
/**
* A composite implementation of {@link Gauge} that delegates to a primary
@@ -36,139 +34,70 @@
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public class CompositeGauge implements Gauge
+public class CompositeGauge extends ThreadSafeGauge implements Composite<Gauge>
{
- private Gauge primary;
-
private Collection<Gauge> secondary;
- public Gauge getPrimary()
- {
- return primary;
- }
-
public Collection<Gauge> getSecondary()
{
return Collections.unmodifiableCollection( secondary );
}
- public CompositeGauge( Gauge primary )
+ public CompositeGauge()
{
super();
- this.primary = primary;
- this.secondary = new CopyOnWriteArrayList<Gauge>();
+ this.secondary = new LinkedList<Gauge>();
}
public synchronized void addSecondary( Gauge gauge )
{
- gauge.set( primary.get() );
+ gauge.set( get() );
secondary.add( gauge );
}
- public void removeSecondary( Gauge gauge )
+ public synchronized void removeSecondary( Gauge gauge )
{
secondary.remove( gauge );
}
- public synchronized void increment()
+ @Override
+ protected synchronized long threadSafeIncrement()
{
- primary.increment();
for ( Gauge gauge : secondary )
{
gauge.increment();
}
+ return super.threadSafeIncrement();
}
- public void add( long delta )
+ @Override
+ protected synchronized long threadSafeDecrement()
{
- primary.add( delta );
for ( Gauge gauge : secondary )
{
- gauge.add( delta );
+ gauge.decrement();
}
+ return super.threadSafeDecrement();
}
- public synchronized void decrement()
+ @Override
+ protected synchronized long trheadSageAdd( long delta )
{
- primary.decrement();
for ( Gauge gauge : secondary )
{
- gauge.increment();
+ gauge.add( delta );
}
+ return super.trheadSageAdd( delta );
}
- public synchronized void set( long l )
+
+ @Override
+ protected synchronized void threadSafeSet( long value )
{
- primary.set( l );
for ( Gauge gauge : secondary )
{
- gauge.set( l );
+ gauge.set( value );
}
+ super.threadSafeSet( value );
}
-
- 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();
- }
-
- public void reset()
- {
- primary.reset();
- }
-
- public Monitor getMonitor()
- {
- return primary.getMonitor();
- }
-
- public String getRole()
- {
- return primary.getRole();
- }
-
- public void setMonitor( Monitor monitor )
- {
- primary.setMonitor( monitor );
- }
-
- public void setRole( String role )
- {
- primary.setRole( role );
- }
-
- public void addListener( Listener listener )
- {
- primary.addListener( listener );
- }
-
- public void removeListener( Listener listener )
- {
- primary.removeListener( listener );
- }
-
}
Added: 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=616742&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java \
Wed Jan 30 04:46:05 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 org.apache.commons.monitoring.Counter;
+import org.apache.commons.monitoring.Gauge;
+
+/**
+ * A Monitor implementation that creates {@link Composite} Gauges and Counters.
+ *
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public class CompositeValuesMonitor extends CreateValuesOnDemandMonitor
+{
+
+ public CompositeValuesMonitor( Key key )
+ {
+ super( key );
+ }
+
+ public CompositeValuesMonitor( String name, String category, String subsystem )
+ {
+ super( name, category, subsystem );
+ }
+
+ @Override
+ protected Counter newCounterInstance()
+ {
+ return new CompositeCounter();
+ }
+
+ @Override
+ protected Gauge newGaugeInstance()
+ {
+ return new CompositeGauge();
+ }
+
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CompositeValuesMonitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java \
(from r616258, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleMonitor.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java?p2=commons/sandbox/moni \
toring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMoni \
tor.java&p1=commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleMonitor.java&r1=616258&r2=616742&rev=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleMonitor.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/CreateValuesOnDemandMonitor.java \
Wed Jan 30 04:46:05 2008 @@ -17,71 +17,71 @@
package org.apache.commons.monitoring.impl;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
import org.apache.commons.monitoring.Counter;
import org.apache.commons.monitoring.Gauge;
import org.apache.commons.monitoring.Monitor;
-import org.apache.commons.monitoring.StatValue;
/**
- * Simple implementation of the {@link Monitor} interface.
+ * implementation of the {@link Monitor} 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.
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public class SimpleMonitor
- implements Monitor
+public class CreateValuesOnDemandMonitor
+ extends AbstractMonitor
{
- private final ConcurrentMap<String, StatValue> values;
-
- private final Key key;
- public SimpleMonitor( String name, String category, String subsystem )
+ public CreateValuesOnDemandMonitor( Key key )
{
- this( new Key( name, category, subsystem ) );
+ super( key );
}
- public SimpleMonitor( Key key )
+ public CreateValuesOnDemandMonitor( String name, String category, String \
subsystem ) {
- super();
- this.key = key;
- this.values = new ConcurrentHashMap<String, StatValue>();
+ super( name, category, subsystem );
}
+ /**
+ * Retrieve a Counter or create a new one for the role
+ */
public Counter getCounter( String role )
{
- return (Counter) getValue( role );
- }
-
- public Gauge getGauge( String role )
- {
- return (Gauge) getValue( role );
- }
-
- public Key getKey()
- {
- return key;
+ Counter counter = (Counter) getValue( role );
+ if ( counter != null )
+ {
+ return counter;
+ }
+ return register( newCounterInstance(), role );
}
- public StatValue getValue( String role )
+ /**
+ * Create a new Counter instance
+ */
+ protected Counter newCounterInstance()
{
- return values.get( role );
+ return new ThreadSafeCounter();
}
- public boolean setValue( StatValue value, String role )
+ /**
+ * Retrieve a Gauge or create a new one for the role
+ */
+ public Gauge getGauge( String role )
{
- value.setMonitor( this );
- value.setRole( role );
- return values.putIfAbsent( role, value ) != null;
+ Gauge gauge = (Gauge) getValue( role );
+ if ( gauge != null )
+ {
+ return gauge;
+ }
+ return register( newGaugeInstance(), role );
}
- public void reset()
+ /**
+ * Create a new Gauge instance
+ */
+ protected Gauge newGaugeInstance()
{
- for ( StatValue value : values.values() )
- {
- value.reset();
- }
+ return new ThreadSafeGauge();
}
}
Copied: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java \
(from r616258, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/RepositoryBase.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/impl/DefaultRepository.java?p2=commons/sandbox/monitoring/tru \
nk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java&p1=commons/ \
sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/RepositoryBase.java&r1=616258&r2=616742&rev=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/RepositoryBase.java \
(original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/DefaultRepository.java \
Wed Jan 30 04:46:05 2008 @@ -21,26 +21,40 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.commons.monitoring.Monitor;
import org.apache.commons.monitoring.Repository;
import org.apache.commons.monitoring.Monitor.Key;
-public class RepositoryBase
+public class DefaultRepository
implements Repository
{
public final ConcurrentMap<Monitor.Key, Monitor> monitors;
- public RepositoryBase()
+ private List<Listener> listeners = new CopyOnWriteArrayList<Listener>();
+
+ public DefaultRepository()
{
super();
this.monitors = new ConcurrentHashMap<Monitor.Key, Monitor>( 50 );
}
+ public void addListener( Listener listener )
+ {
+ listeners.add( listener );
+ }
+
+ public void removeListener( Listener listener )
+ {
+ listeners.remove( listener );
+ }
+
public Monitor getMonitor( String name )
{
return getMonitor( name, null, null );
@@ -78,6 +92,10 @@
if ( monitor == null )
{
monitor = newMonitorInstance( key );
+ for ( Listener listener : listeners )
+ {
+ listener.newMonitorInstance( monitor );
+ }
Monitor previous = monitors.putIfAbsent( key, monitor );
if ( previous != null )
{
@@ -90,9 +108,7 @@
protected Monitor newMonitorInstance( Monitor.Key key )
{
Monitor monitor;
- monitor = new SimpleMonitor( key );
- monitor.setValue( new CompositeCounter( new SimpleCounter() ), \
Monitor.PERFORMANCES );
- monitor.setValue( new CompositeGauge( new SimpleGauge() ), \
Monitor.CONCURRENCY ); + monitor = new CreateValuesOnDemandMonitor( key );
return monitor;
}
Copied: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java \
(from r616258, 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/a \
pache/commons/monitoring/impl/ThreadSafeCounter.java?p2=commons/sandbox/monitoring/tru \
nk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeCounter.java&p1=commons/ \
sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleCounter.java&r1=616258&r2=616742&rev=616742&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/ThreadSafeCounter.java \
Wed Jan 30 04:46:05 2008 @@ -18,10 +18,15 @@
package org.apache.commons.monitoring.impl;
import org.apache.commons.monitoring.Counter;
-import org.apache.commons.monitoring.Monitor;
-public class SimpleCounter
- extends SimpleValue
+/**
+ * Thread-safe implementation of <code>Counter</code>, based on
+ * synchronized methods.
+ *
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public class ThreadSafeCounter
+ extends AbstractStatValue
implements Counter
{
private long value;
Copied: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java \
(from r616258, 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/a \
pache/commons/monitoring/impl/ThreadSafeGauge.java?p2=commons/sandbox/monitoring/trunk \
/src/main/java/org/apache/commons/monitoring/impl/ThreadSafeGauge.java&p1=commons/sand \
box/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/SimpleGauge.java&r1=616258&r2=616742&rev=616742&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/ThreadSafeGauge.java \
Wed Jan 30 04:46:05 2008 @@ -18,16 +18,18 @@
package org.apache.commons.monitoring.impl;
import org.apache.commons.monitoring.Gauge;
-import org.apache.commons.monitoring.Monitor;
/**
- * Simple implementation of a Gauge. Maintains a total of (value * time) on each
- * gauge increment/decrement to compute the mean value.
+ * Thread-safe implementation of <code>Gauge</code>, based on
+ * synchronized methods.
+ * <p>
+ * Maintains a sum of (value * time) on each gauge increment/decrement operation to
+ * compute the mean value.
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public class SimpleGauge
- extends SimpleValue
+public class ThreadSafeGauge
+ extends AbstractStatValue
implements Gauge
{
private long value;
@@ -52,41 +54,50 @@
public void increment()
{
- long l;
- synchronized ( this )
- {
- computeSums();
- l = ++value;
- computeStats( l );
- }
+ long l = threadSafeIncrement();
notifyValueChanged( l );
}
- public void add( long delta )
+ protected synchronized long threadSafeIncrement()
{
long l;
- synchronized ( this )
- {
- computeSums();
- value += delta;
- l = value;
- computeStats( value );
- }
+ computeSums();
+ l = ++value;
+ computeStats( l );
+ return l;
+ }
+
+ public void add( long delta )
+ {
+ long l = trheadSageAdd( delta );
notifyValueChanged( l );
}
- public void decrement()
+ protected synchronized long trheadSageAdd( long delta )
{
long l;
- synchronized ( this )
- {
- computeSums();
- l = --value;
- computeStats( l );
- }
+ computeSums();
+ value += delta;
+ l = value;
+ computeStats( value );
+ return l;
+ }
+
+ public void decrement()
+ {
+ long l = threadSafeDecrement();;
notifyValueChanged( l );
}
+ protected synchronized long threadSafeDecrement()
+ {
+ long l;
+ computeSums();
+ l = --value;
+ computeStats( l );
+ return l;
+ }
+
protected void computeSums()
{
long now = nanoTime();
@@ -133,7 +144,13 @@
return value;
}
- public synchronized void set( long l )
+ public void set( long l )
+ {
+ threadSafeSet( l );
+ notifyValueChanged( l );
+ }
+
+ protected synchronized void threadSafeSet( long l )
{
computeSums();
value = l;
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/README
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/README?rev=616742&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/README \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/README \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,13 @@
+runtime classes required by backport version to run on Java 1.3 / 1.4
+
+Commons-monitoring uses Java 5 for :
+ * compile-time constructs (autoboxing, for loops, generics) that can be safely \
retrotranslated + * java.util.concurrent package, available on java 1.3/1.4 as \
backport-util-concurrent +
+Retrotranslor is used to translate Java5 compiled code to java 1.3 class file \
format. Some java5 methods +introduced during java5 compilation needs to get \
backported. This package contains such code. It is not +intended to backport all \
Java5 runtime to java 1.3, only to provide code required for commons-monitoring +to \
run on java 1.3 : +
+ * primitive autoboxing gets compiled to <Wrapper>.valueOf( primitive )
+ * ...
\ No newline at end of file
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Boolean.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Boolean
+{
+ public static Boolean valueOf( boolean b )
+ {
+ return new Boolean( b );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Boolean.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Byte.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Byte
+{
+ public static Byte valueOf( byte b )
+ {
+ return new Byte( b );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Byte.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Double.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Double
+{
+ public static Double valueOf( double d )
+ {
+ return new Double( d );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Double.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Float.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Float
+{
+ public static Float valueOf( float f )
+ {
+ return new Float( f );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Float.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Integer.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Integer
+{
+ public static Integer valueOf( int i )
+ {
+ return new Integer( i );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Integer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Long.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Long
+{
+ public static Long valueOf( long l )
+ {
+ return new Long( l );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Long.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/a \
pache/commons/monitoring/support/java13/java/lang/_Short.java?rev=616742&view=auto \
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java \
(added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java \
Wed Jan 30 04:46:05 2008 @@ -0,0 +1,29 @@
+/*
+ * 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.support.java13.java.lang;
+
+/**
+ * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
+ */
+public class _Short
+{
+ public static Short valueOf( short s )
+ {
+ return new Short( s );
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/java13/java/lang/_Short.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/sandbox/monitoring/trunk/src/site/xdoc/index.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/site/xdoc/index.xml?rev=616742&r1=616741&r2=616742&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/site/xdoc/index.xml (original)
+++ commons/sandbox/monitoring/trunk/src/site/xdoc/index.xml Wed Jan 30 04:46:05 2008
@@ -32,27 +32,6 @@
</p>
</section>
- <section name="Concepts">
- <p>
- A <b>Monitor</b> defines a control point in the application. It can be \
associated to a resource,
- a code fragment or anything relevant for the application. The monitor is \
unique and retrieved from
- a <b>Repository</b>. It is identified by a name, a category (technical \
description of the application
- component) and a subsystem (functional description).
- </p>
- <p>
- The monitor maintains a set of StatValues, that can be either \
<b>Counter</b>s or <b>Gauge</b>s. A
- Counter will get incremented any time the application does its work and \
expose the result to
- the monitoring backbone (byte received, lines processed, ...). A Gauge \
allows the application to
- expose how a resource is used (active connections). Each StatValue is \
identified by a ROLE in the
- monitor.
- </p>
- <p>
- Commons Monitoring provides Helpers to instrument application, for example \
to monitor web application
- Request or JDBC operations, so that in many case you don't have to know \
commons-monitoring API to
- get basic instrumentation on your application.
- </p>
- </section>
-
</body>
</document>
Added: commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml?rev=616742&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml (added)
+++ commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml Wed Jan 30 04:46:05 \
2008 @@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+
+<document>
+
+<properties>
+ <title>Commons Monitoring tutorial</title>
+ </properties>
+
+ <body>
+
+ <section name="Quick introduction">
+ <p>
+ The <b>Monitoring</b> class is a convenience utility class to make \
application instrumentation + as simple as possible. To monitor application \
performance, simply do : + <pre>
+ public void myMethodToGetMonitored()
+ {
+ StopWatch stopWatch = Monitoring.start( "MyClass.myMethod" );
+ try
+ {
+ // Do something that takes time and requires monitoring
+ }
+ finally
+ {
+ stopWatch.stop();
+ }
+ }
+ </pre>
+ The StopWatch class will compute the time elapsed during code execution and \
report it to the + monitor "MyClass.myMethod".
+ </p>
+ </section>
+ <section name="Instrumentation">
+ <p>
+ A <b>Monitor</b> defines a control point in the application. It can be \
associated to a resource, + a code fragment or anything relevant for the \
application. The monitor is unique and retrieved from + a <b>Repository</b>. \
It is identified by a name, a category (technical description of the application + \
component) and a subsystem (functional description). In the previous code sample, \
only a name was set + as category and subsystem are optional. We recommend to \
use them to create monitors as this is a + convenient and powerfull way to \
group and sort monitors and associated statistics. + </p>
+ <p>
+ The monitor maintains a set of StatValues, that can be either \
<b>Counters</b> or <b>Gauges</b>. + <ul>
+ <li>A Counter will get incremented any time the application does its work \
and expose the result to + the monitoring backbone : byte received, lines \
processed...</li> + <li>A Gauge allows the application to expose how a \
resource is used : active connections...</li> + </ul>
+ Each StatValue is identified by a ROLE in the monitor. Default roles are \
defined for PERFORMANCES and + CONCURRENCY (threads running same code), and \
you can register Counters/Gauges for custom roles to monitor + anything that \
is relevant for your application (bytes processed, message payload, account balance \
...) : + <pre>
+ Monitor monitor = repository.getMonitor( "SoapEndpoint.process", "soap" \
); +
+ // Process a SOAP message
+ monitor.getCounter( "bytes" ).add( SOAPMessage.getSize() );
+ </pre>
+ </p>
+ <p>
+ Commons Monitoring provides Helpers to instrument application, for example \
to monitor web application + Request or JDBC operations, so that in many case \
you don't have to know commons-monitoring API to + get basic instrumentation \
on your application. + </p>
+ </section>
+ <section name="Repporting">
+ <p>
+ You can retrieve statistical datas from your monitors and StatValues to \
build reports. You can + programatically acces the repository and iterate on \
monitors to build a custom output, or rely + on Commons Monitoring provided \
<b>Renderers</b> that support common output formats (XML, TXT, JSON). + </p>
+ <p>
+ When used in a webapp, Commons Monitoring provides a simple web UI.
+ TODO...
+ </p>
+ </section>
+
+ </body>
+
+</document>
Propchange: commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
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/a \
pache/commons/monitoring/MonitoringTest.java?rev=616742&r1=616741&r2=616742&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 04:46:05 2008 @@ -17,9 +17,13 @@
package org.apache.commons.monitoring;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
import junit.framework.TestCase;
-import org.apache.commons.monitoring.impl.RepositoryBase;
+import org.apache.commons.monitoring.impl.DefaultRepository;
/**
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
@@ -27,10 +31,11 @@
public class MonitoringTest
extends TestCase
{
- public void testMonitoring()
+
+ public void testConcurrencyMonitoring()
throws Exception
{
- Monitoring.setRepository( new RepositoryBase() );
+ Monitoring.setRepository( new DefaultRepository() );
StopWatch stopWatch1 = Monitoring.start( "MonitoringTest.testMonitoring", \
"test", "utils" );
StopWatch stopWatch2 = Monitoring.start( "MonitoringTest.testMonitoring", \
"test", "utils" ); @@ -45,10 +50,51 @@
assertEquals( 0, concurrency.get() );
}
- public void testListeners()
+ public void testThreadSafety()
+ throws Exception
+ {
+ int threads = 50;
+ final int loops = 10000;
+
+ Monitoring.setRepository( new DefaultRepository() );
+
+ ExecutorService pool = Executors.newFixedThreadPool( threads );
+ for ( int i = 0; i < threads; i++ )
+ {
+ pool.execute( new Runnable()
+ {
+ public void run()
+ {
+ for ( int i = 0; i < loops; i++ )
+ {
+ Monitor monitor = Monitoring.getMonitor( \
"MonitoringTest.testMultiThreading", "test", "utils" ); + \
monitor.getCounter( "COUNTER" ).add( 1 ); + monitor.getGauge( \
"GAUGE" ).increment(); + }
+ try
+ {
+ Thread.sleep( (long) ( Math.random() * 100 ) );
+ }
+ catch ( InterruptedException e )
+ {
+ // ignore
+ }
+ }
+ } );
+ }
+ pool.shutdown();
+ pool.awaitTermination( 30, TimeUnit.SECONDS );
+
+ Monitor monitor = Monitoring.getMonitor( \
"MonitoringTest.testMultiThreading", "test", "utils" ); + 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 RepositoryBase();
+ Repository repository = new DefaultRepository();
final Monitor monitor = repository.getMonitor( \
"MonitoringTest.testMonitoring", "test", "utils" ); Counter counter = \
monitor.getCounter( Monitor.PERFORMANCES );
Modified: 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/a \
pache/commons/monitoring/impl/SimpleCounterTest.java?rev=616742&r1=616741&r2=616742&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/SimpleCounterTest.java \
Wed Jan 30 04:46:05 2008 @@ -28,7 +28,7 @@
public void testValue()
throws Exception
{
- Counter counter = new SimpleCounter();
+ Counter counter = new ThreadSafeCounter();
counter.set( 1 );
assertEquals( 1, counter.getMin() );
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/a \
pache/commons/monitoring/impl/SimpleGaugeTest.java?rev=616742&r1=616741&r2=616742&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 \
Wed Jan 30 04:46:05 2008 @@ -29,7 +29,7 @@
public void testValue()
throws Exception
{
- Gauge gauge = new SimpleGauge();
+ Gauge gauge = new ThreadSafeGauge();
gauge.set( 1 );
assertEquals( 1, gauge.getMin() );
@@ -85,7 +85,7 @@
}
private class MockTimeGauge
- extends SimpleGauge
+ extends ThreadSafeGauge
{
@Override
protected long nanoTime()
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/a \
pache/commons/monitoring/reporting/RendererTest.java?rev=616742&r1=616741&r2=616742&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 04:46:05 2008 @@ -28,9 +28,7 @@
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;
-import org.apache.commons.monitoring.impl.SimpleMonitor;
+import org.apache.commons.monitoring.impl.CreateValuesOnDemandMonitor;
public class RendererTest
extends TestCase
@@ -42,15 +40,13 @@
throws Exception
{
monitors = new LinkedList<Monitor>();
- Monitor m1 = new SimpleMonitor( "JsonRendererTest.setUp", "test", \
"reporting" );
- m1.setValue( new SimpleCounter(), Monitor.PERFORMANCES );
- m1.setValue( new SimpleGauge(), Monitor.CONCURRENCY );
+ Monitor m1 = new CreateValuesOnDemandMonitor( "JsonRendererTest.setUp", \
"test", "reporting" ); m1.getCounter( Monitor.PERFORMANCES ).add( 10 );
+ m1.getGauge( Monitor.CONCURRENCY );
monitors.add( m1 );
- Monitor m2 = new SimpleMonitor( "TestCase", "test", "junit" );
- m2.setValue( new SimpleCounter(), Monitor.PERFORMANCES );
- m2.setValue( new SimpleGauge(), Monitor.CONCURRENCY );
+ Monitor m2 = new CreateValuesOnDemandMonitor( "TestCase", "test", "junit" );
+ m2.getCounter( Monitor.PERFORMANCES );
m2.getGauge( Monitor.CONCURRENCY ).increment();
monitors.add( m2 );
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic