[hornetq-commits] JBoss hornetq SVN: r8324 - trunk/tests/src/org/hornetq/tests/integration/client.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Nov 19 12:50:34 EST 2009


Author: jmesnil
Date: 2009-11-19 12:50:33 -0500 (Thu, 19 Nov 2009)
New Revision: 8324

Modified:
   trunk/tests/src/org/hornetq/tests/integration/client/TemporaryQueueTest.java
Log:
fixed TemporaryQueueTest.testDeleteTemporaryQueueWhenClientCrash

* the server must received at least 1 ping from the client to use the client Connection TTL value instead of the default server value

Modified: trunk/tests/src/org/hornetq/tests/integration/client/TemporaryQueueTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/integration/client/TemporaryQueueTest.java	2009-11-19 15:59:30 UTC (rev 8323)
+++ trunk/tests/src/org/hornetq/tests/integration/client/TemporaryQueueTest.java	2009-11-19 17:50:33 UTC (rev 8324)
@@ -30,9 +30,13 @@
 import org.hornetq.core.exception.HornetQException;
 import org.hornetq.core.logging.Logger;
 import org.hornetq.core.remoting.CloseListener;
+import org.hornetq.core.remoting.Interceptor;
+import org.hornetq.core.remoting.Packet;
 import org.hornetq.core.remoting.RemotingConnection;
 import org.hornetq.core.remoting.impl.RemotingConnectionImpl;
 import org.hornetq.core.remoting.impl.invm.InVMConnectorFactory;
+import org.hornetq.core.remoting.impl.wireformat.PacketImpl;
+import org.hornetq.core.remoting.server.impl.RemotingServiceImpl;
 import org.hornetq.core.server.HornetQServer;
 import org.hornetq.tests.util.ServiceTestBase;
 import org.hornetq.utils.SimpleString;
@@ -171,42 +175,52 @@
 
    public void testDeleteTemporaryQueueWhenClientCrash() throws Exception
    {
+      session.close();
+            
       final SimpleString queue = randomSimpleString();
       SimpleString address = randomSimpleString();
 
+      // server must received at least one ping from the client to pass
+      // so that the server connection TTL is configured with the client value
+      final CountDownLatch pingOnServerLatch = new CountDownLatch(1);
+      server.getRemotingService().addInterceptor(new Interceptor()
+      {
+         
+         public boolean intercept(Packet packet, RemotingConnection connection) throws HornetQException
+         {
+            if (packet.getType() == PacketImpl.PING)
+            {
+               pingOnServerLatch.countDown();
+            }
+            return true;
+         }
+      });
+
+      sf = new ClientSessionFactoryImpl(new TransportConfiguration(INVM_CONNECTOR_FACTORY));
+      sf.setConnectionTTL(CONNECTION_TTL);
+      session = sf.createSession(false, true, true);
+      
       session.createTemporaryQueue(address, queue);
-
+      assertTrue("server has not received any ping from the client", pingOnServerLatch.await(2 * RemotingServiceImpl.CONNECTION_TTL_CHECK_INTERVAL, TimeUnit.MILLISECONDS));
       assertEquals(1, server.getConnectionCount());
 
-      RemotingConnection remotingConnection = server
-                                                     .getRemotingService()
+      RemotingConnection remotingConnection = server.getRemotingService()
                                                      .getConnections()
                                                      .iterator()
                                                      .next();
-      final CountDownLatch latch = new CountDownLatch(1);
-      final CountDownLatch latch2 = new CountDownLatch(1);
+      final CountDownLatch serverCloseLatch = new CountDownLatch(1);
       remotingConnection.addCloseListener(new CloseListener()
       {
          public void connectionClosed()
          {
-            latch.countDown();
+            serverCloseLatch.countDown();
          }
       });
 
-      server.getRemotingService().getConnections().iterator().next().addCloseListener(new CloseListener()
-      {
-         public void connectionClosed()
-         {
-            latch2.countDown();
-         }
-      });
-
       ((ClientSessionInternal)session).getConnection().fail(new HornetQException(HornetQException.INTERNAL_ERROR, "simulate a client failure"));
 
-
       // let some time for the server to clean the connections
-      latch.await(2 * CONNECTION_TTL + 1000, TimeUnit.MILLISECONDS);
-      latch2.await(4 * CONNECTION_TTL + 1000, TimeUnit.MILLISECONDS);
+      assertTrue("server has not closed the connection", serverCloseLatch.await(2 * RemotingServiceImpl.CONNECTION_TTL_CHECK_INTERVAL + 2 * CONNECTION_TTL , TimeUnit.MILLISECONDS));
       assertEquals(0, server.getConnectionCount());
       
       session.close();



More information about the hornetq-commits mailing list