You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/09/03 00:36:23 UTC
cvs commit: jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/client/impl DefaultConnectionPingerTestCase.java DummyInvocationHandler.java
hammant 2002/09/02 15:36:23
Modified: altrmi/src/java/org/apache/excalibur/altrmi/client/impl
AbstractConnectionPinger.java
DefaultConnectionPinger.java
PerpetualConnectionPinger.java
altrmi/src/java/org/apache/excalibur/altrmi/generator/ant
AltrmiProxyTask.java
Added: altrmi/src/test/org/apache/excalibur/altrmi/client/impl
DefaultConnectionPingerTestCase.java
DummyInvocationHandler.java
Log:
New test for pinger. Thread not being killed thread squished.
Revision Changes Path
1.7 +91 -61 jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractConnectionPinger.java
Index: AbstractConnectionPinger.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractConnectionPinger.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AbstractConnectionPinger.java 23 Aug 2002 10:03:03 -0000 1.6
+++ AbstractConnectionPinger.java 2 Sep 2002 22:36:23 -0000 1.7
@@ -13,119 +13,149 @@
import org.apache.excalibur.altrmi.common.AltrmiInvocationException;
/**
- * Interface DefaultConnectionPinger
+ * Interface AbstractConnectionPinger
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version * $Revision$
*/
-public abstract class AbstractConnectionPinger implements AltrmiConnectionPinger, Runnable
+public abstract class AbstractConnectionPinger implements AltrmiConnectionPinger
{
- protected AltrmiClientInvocationHandler mAltrmiInvocationHandler;
- protected boolean mContinue = true;
- protected Thread mThread;
- protected final int mPingInterval;
- protected final int mGiveupInterval;
+ private AltrmiClientInvocationHandler m_altrmiInvocationHandler;
+ private boolean m_continue = true;
+ private Runnable m_runnable;
+ private Thread m_thread;
+ private final long m_pingInterval;
+ private final long m_giveupInterval;
/**
- * Constructor DefaultConnectionPinger
+ * Construct a AbstractConnectionPinger with seconds for interval.
*
*
- * @param pingIntervalSeconds
- * @param giveupIntervalSeconds
+ * @param pingIntervalSeconds the interval to wait
+ * @param giveupIntervalSeconds when to give up
*
*/
public AbstractConnectionPinger( int pingIntervalSeconds, int giveupIntervalSeconds )
{
- mPingInterval = pingIntervalSeconds * 1000;
- mGiveupInterval = giveupIntervalSeconds * 1000;
+ m_pingInterval = pingIntervalSeconds * 1000;
+ m_giveupInterval = giveupIntervalSeconds * 1000;
}
/**
- * Constructor DefaultConnectionPinger
+ * Construct a AbstractConnectionPinger with millisecond intervals
*
*
+ * @param pingIntervalMilliSeconds the interval to wait
+ * @param giveupIntervalMilliSeconds when to give up
+ *
*/
- public AbstractConnectionPinger()
+ public AbstractConnectionPinger( long pingIntervalMilliSeconds, long giveupIntervalMilliSeconds )
{
- mPingInterval = 10 * 1000; // ten seconds
- mGiveupInterval = 100 * 1000; // one hundred seconds.
+ m_pingInterval = pingIntervalMilliSeconds;
+ m_giveupInterval = giveupIntervalMilliSeconds;
}
+
/**
- * Method setAltrmiInvocationHandler
- *
+ * Constructor AbstractConnectionPinger
*
*
*/
- public void setAltrmiInvocationHandler( AltrmiClientInvocationHandler altrmiInvocationHandler )
+ public AbstractConnectionPinger()
{
- mAltrmiInvocationHandler = altrmiInvocationHandler;
+ m_pingInterval = 10 * 1000; // ten seconds
+ m_giveupInterval = 100 * 1000; // one hundred seconds.
}
/**
- * Method start
+ * Method setAltrmiInvocationHandler
+ *
*
*
*/
- public void start()
+ public void setAltrmiInvocationHandler( AltrmiClientInvocationHandler altrmiInvocationHandler )
{
-
- mThread = new Thread( this ,"AltrmiConnectionPinger Thread");
-
- mThread.start();
+ m_altrmiInvocationHandler = altrmiInvocationHandler;
}
/**
- * Method stop
- *
- *
+ * Get the Invocation handler.
+ * @return
*/
- public void stop()
+ protected AltrmiClientInvocationHandler getAltrmiInvocationHandler()
{
- mContinue = false;
+ return m_altrmiInvocationHandler;
}
/**
- * Method run
+ * Start the pinger
*
*
*/
- public void run()
+ public void start()
{
- try
- {
- while( mContinue )
+ m_runnable = new Runnable() {
+ public void run()
{
- Thread.sleep( mPingInterval );
- ping();
+
+ try
+ {
+ while( m_continue )
+ {
+ Thread.sleep( m_pingInterval );
+ ping();
+ }
+ }
+ catch( AltrmiInvocationException ie )
+ {
+
+ // We really need a logger or something to be able to see this
+ // for debugging.
+ //System.out.println( "Pinger Connection closed" );
+
+ // no need to ping anymore.
+ }
+ catch( AltrmiConnectionClosedException cce )
+ {
+ // We really need a logger or something to be able to see this
+ // for debugging.
+ //System.out.println( "Pinger Connection closed" );
+
+ // no need to ping anymore.
+ }
+ catch( InterruptedException e )
+ {
+ if (m_continue)
+ {
+ System.err.println("Unexpected interuption of pnger thread - " + e.getMessage());
+ }
+ }
}
- }
- catch( AltrmiInvocationException ie )
- {
- // We really need a logger or something to be able to see this
- // for debugging.
- //System.out.println( "Pinger Connection closed" );
-
- // no need to ping anymore.
- }
- catch( AltrmiConnectionClosedException cce )
- {
- // We really need a logger or something to be able to see this
- // for debugging.
- //System.out.println( "Pinger Connection closed" );
-
- // no need to ping anymore.
- }
- catch( InterruptedException e )
- {
- System.out.println( "Pinger Interrupted!" );
+ };
- // do nothing.
- }
+ m_thread = new Thread( m_runnable ,"AltrmiConnectionPinger Thread");
+ m_thread.start();
+ }
+
+ /**
+ * Stop the pinger
+ *
+ *
+ */
+ public void stop()
+ {
+ m_continue = false;
+ m_thread.interrupt();
+ m_thread = null;
}
protected abstract void ping();
+
+ public long getGiveupInterval()
+ {
+ return m_giveupInterval;
+ }
}
1.4 +22 -5 jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/DefaultConnectionPinger.java
Index: DefaultConnectionPinger.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/DefaultConnectionPinger.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultConnectionPinger.java 24 Apr 2002 12:42:56 -0000 1.3
+++ DefaultConnectionPinger.java 2 Sep 2002 22:36:23 -0000 1.4
@@ -34,24 +34,41 @@
* Constructor DefaultConnectionPinger
*
*
+ * @param pingIntervalMilliSeconds
+ * @param giveupIntervalMilliSeconds
+ *
+ */
+ public DefaultConnectionPinger( long pingIntervalMilliSeconds, long giveupIntervalMilliSeconds )
+ {
+ super( pingIntervalMilliSeconds, giveupIntervalMilliSeconds );
+ }
+
+
+ /**
+ * Constructor DefaultConnectionPinger
+ *
+ *
*/
public DefaultConnectionPinger()
{
}
+ /**
+ * Implemnt the abstract ping() from the AbstractConnectionPinger
+ */
protected void ping()
{
- if( mAltrmiInvocationHandler.getLastRealRequest()
- > ( System.currentTimeMillis() - ( mGiveupInterval ) ) )
+ if( getAltrmiInvocationHandler().getLastRealRequest()
+ > ( System.currentTimeMillis() - ( getGiveupInterval() ) ) )
{
- mAltrmiInvocationHandler.ping();
+ getAltrmiInvocationHandler().ping();
}
else
{
//TODO should be restartable after reconnect of socket.
- mContinue = false;
+ stop();
// if more than 100 seconds since last request, stop pinging
// Let the server do a disconnect according to its rules.
1.4 +2 -3 jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/PerpetualConnectionPinger.java
Index: PerpetualConnectionPinger.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/PerpetualConnectionPinger.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PerpetualConnectionPinger.java 24 Apr 2002 12:42:56 -0000 1.3
+++ PerpetualConnectionPinger.java 2 Sep 2002 22:36:23 -0000 1.4
@@ -7,7 +7,6 @@
*/
package org.apache.excalibur.altrmi.client.impl;
-import org.apache.excalibur.altrmi.common.AltrmiReply;
import org.apache.excalibur.altrmi.common.PingRequest;
/**
@@ -46,6 +45,6 @@
protected void ping()
{
- AltrmiReply ar = mAltrmiInvocationHandler.handleInvocation( new PingRequest() );
+ getAltrmiInvocationHandler().handleInvocation( new PingRequest() );
}
}
1.8 +1 -2 jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/AltrmiProxyTask.java
Index: AltrmiProxyTask.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/AltrmiProxyTask.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AltrmiProxyTask.java 15 Jul 2002 21:52:19 -0000 1.7
+++ AltrmiProxyTask.java 2 Sep 2002 22:36:23 -0000 1.8
@@ -17,7 +17,6 @@
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.util.FileUtils;
/**
* Class AltrmiProxyTask
1.1 jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/client/impl/DefaultConnectionPingerTestCase.java
Index: DefaultConnectionPingerTestCase.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.excalibur.altrmi.client.impl;
import junit.framework.TestCase;
public class DefaultConnectionPingerTestCase extends TestCase
{
public DefaultConnectionPingerTestCase(String name)
{
super(name);
}
protected void setUp() throws Exception
{
super.setUp();
}
public void testBasic() throws Exception
{
DefaultConnectionPinger pinger = new DefaultConnectionPinger(1L,10000L);
DummyInvocationHandler dummy = new DummyInvocationHandler();
pinger.start();
pinger.setAltrmiInvocationHandler(dummy);
Thread.sleep(1000);
assertTrue("Should have pinged", dummy.isPinged());
pinger.stop();
dummy.reset();
Thread.sleep(1000);
assertTrue("Should have stopped pinging", !dummy.isPinged());
}
}
1.1 jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/client/impl/DummyInvocationHandler.java
Index: DummyInvocationHandler.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.excalibur.altrmi.client.impl;
import org.apache.excalibur.altrmi.common.AltrmiReply;
import org.apache.excalibur.altrmi.common.AltrmiRequest;
import org.apache.excalibur.altrmi.client.AltrmiClientInvocationHandler;
import org.apache.excalibur.altrmi.client.AltrmiConnectionListener;
import org.apache.excalibur.altrmi.client.AltrmiConnectionPinger;
import java.io.IOException;
public class DummyInvocationHandler implements AltrmiClientInvocationHandler
{
boolean pinged = false;
long lastReq = System.currentTimeMillis();
public boolean isPinged()
{
return pinged;
}
public void reset()
{
pinged = false;
}
public AltrmiReply handleInvocation(AltrmiRequest request)
{
throw new java.lang.UnsupportedOperationException();
}
public void ping()
{
System.out.println("pinged!");
pinged = true;
}
public long getLastRealRequest()
{
return lastReq;
}
public ClassLoader getInterfacesClassLoader()
{
throw new java.lang.UnsupportedOperationException();
}
public void setAltrmiConnectionListener(AltrmiConnectionListener altrmiConnectionListener)
{
throw new java.lang.UnsupportedOperationException();
}
public void setConnectionPinger(AltrmiConnectionPinger connectionPinger)
{
throw new java.lang.UnsupportedOperationException();
}
public void initialize() throws IOException
{
throw new java.lang.UnsupportedOperationException();
}
public void close()
{
throw new java.lang.UnsupportedOperationException();
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>