[jboss-cvs] JBoss Messaging SVN: r5265 - trunk/tests/src/org/jboss/messaging/tests/integration/cluster.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 4 14:02:28 EST 2008
Author: timfox
Date: 2008-11-04 14:02:27 -0500 (Tue, 04 Nov 2008)
New Revision: 5265
Modified:
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/ActivationTimeoutTest.java
Log:
Improved test
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/ActivationTimeoutTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/ActivationTimeoutTest.java 2008-11-04 18:54:07 UTC (rev 5264)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/ActivationTimeoutTest.java 2008-11-04 19:02:27 UTC (rev 5265)
@@ -81,7 +81,7 @@
// Public --------------------------------------------------------
- public void testActivationTimeout() throws Exception
+ public void testTimeoutAfterConsumerFailsToReattach() throws Exception
{
ClientSessionFactoryInternal sf1 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
@@ -164,7 +164,95 @@
session2.close();
}
+
+ public void testTimeoutAfterAllConsumerFailsToReattach() throws Exception
+ {
+ ClientSessionFactoryInternal sf1 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
+ new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
+ backupParams));
+
+ ClientSessionFactoryInternal sf2 = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"),
+ new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory",
+ backupParams));
+ sf1.setSendWindowSize(32 * 1024);
+ sf2.setSendWindowSize(32 * 1024);
+
+ ClientSession session1 = sf1.createSession(false, true, true, false);
+
+ session1.createQueue(ADDRESS, ADDRESS, null, false, false);
+
+ ClientProducer producer = session1.createProducer(ADDRESS);
+
+ final int numMessages = 1000;
+
+ for (int i = 0; i < numMessages; i++)
+ {
+ ClientMessage message = session1.createClientMessage(JBossTextMessage.TYPE,
+ false,
+ 0,
+ System.currentTimeMillis(),
+ (byte)1);
+ message.putIntProperty(new SimpleString("count"), i);
+ message.getBody().putString("aardvarks");
+ message.getBody().flip();
+ producer.send(message);
+ }
+ log.info("Sent messages");
+
+
+ ClientSession session2 = sf2.createSession(false, true, true, false);
+
+ ClientConsumer consumer1 = session2.createConsumer(ADDRESS);
+
+ ClientConsumer consumer2 = session2.createConsumer(ADDRESS);
+
+ long start = System.currentTimeMillis();
+
+ RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+
+ // Now we fail ONLY the connections on sf1, not on sf2
+ conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
+
+ session1.start();
+
+ //The messages should not be delivered until after activationTimeout ms, since
+ //session 2 didn't reattach
+
+ long now = System.currentTimeMillis();
+
+ //We now create a new consumer but it shouldn't receive the messages until after the timeout
+
+ ClientConsumer consumer3 = session1.createConsumer(ADDRESS);
+
+ ClientMessage message = consumer3.receive(ACTIVATION_TIMEOUT - (now - start));
+
+ assertNull(message);
+
+ for (int i = 0; i < numMessages; i++)
+ {
+ message = consumer3.receive();
+
+ assertEquals("aardvarks", message.getBody().getString());
+
+ assertEquals(i, message.getProperty(new SimpleString("count")));
+
+ message.acknowledge();
+ }
+
+ message = consumer3.receive(1000);
+
+ assertNull(message);
+
+ session1.close();
+
+ RemotingConnection conn2 = ((ClientSessionImpl)session2).getConnection();
+
+ conn2.fail(new MessagingException(MessagingException.NOT_CONNECTED));
+
+ session2.close();
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
More information about the jboss-cvs-commits
mailing list