[hornetq-commits] JBoss hornetq SVN: r9523 - trunk/tests/src/org/hornetq/tests/integration/cluster/reattach.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Aug 10 17:05:17 EDT 2010
Author: clebert.suconic at jboss.com
Date: 2010-08-10 17:05:17 -0400 (Tue, 10 Aug 2010)
New Revision: 9523
Modified:
trunk/tests/src/org/hornetq/tests/integration/cluster/reattach/RandomReattachTest.java
Log:
Fixing test (It was ignoring assertions on consumers, and it was duplicating messages as the rollback was being ignored, since autoSend was = true )
Modified: trunk/tests/src/org/hornetq/tests/integration/cluster/reattach/RandomReattachTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/integration/cluster/reattach/RandomReattachTest.java 2010-08-10 02:27:36 UTC (rev 9522)
+++ trunk/tests/src/org/hornetq/tests/integration/cluster/reattach/RandomReattachTest.java 2010-08-10 21:05:17 UTC (rev 9523)
@@ -13,6 +13,7 @@
package org.hornetq.tests.integration.cluster.reattach;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.util.Timer;
@@ -21,6 +22,7 @@
import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
import org.hornetq.api.core.HornetQException;
import org.hornetq.api.core.SimpleString;
@@ -303,13 +305,13 @@
producer.send(message);
}
- class MyHandler implements MessageHandler
+ class MyHandler extends AssertionCheckMessageHandler
{
final CountDownLatch latch = new CountDownLatch(1);
volatile int count;
- public void onMessage(final ClientMessage message)
+ public void onMessageAssert(final ClientMessage message)
{
if (count == numMessages)
{
@@ -350,6 +352,8 @@
for (MyHandler handler : handlers)
{
boolean ok = handler.latch.await(5000, TimeUnit.MILLISECONDS);
+
+ handler.checkAssertions();
Assert.assertTrue("Didn't receive all messages", ok);
}
@@ -422,13 +426,13 @@
session.start();
}
- class MyHandler implements MessageHandler
+ class MyHandler extends AssertionCheckMessageHandler
{
final CountDownLatch latch = new CountDownLatch(1);
volatile int count;
- public void onMessage(final ClientMessage message)
+ public void onMessageAssert(final ClientMessage message)
{
if (count == numMessages)
{
@@ -460,6 +464,8 @@
for (MyHandler handler : handlers)
{
boolean ok = handler.latch.await(10000, TimeUnit.MILLISECONDS);
+
+ handler.checkAssertions();
Assert.assertTrue(ok);
}
@@ -494,7 +500,7 @@
final int numMessages = 100;
- final int numSessions = 10;
+ final int numSessions = 1;
Set<ClientConsumer> consumers = new HashSet<ClientConsumer>();
Set<ClientSession> sessions = new HashSet<ClientSession>();
@@ -516,7 +522,7 @@
sessions.add(sessConsume);
}
- ClientSession sessSend = sf.createSession(false, true, true);
+ ClientSession sessSend = sf.createSession(false, false, true);
ClientProducer producer = sessSend.createProducer(RandomReattachTest.ADDRESS);
@@ -546,25 +552,36 @@
sessSend.commit();
- class MyHandler implements MessageHandler
+ class MyHandler extends AssertionCheckMessageHandler
{
final CountDownLatch latch = new CountDownLatch(1);
volatile int count;
- public void onMessage(final ClientMessage message)
+ public void onMessageAssert(final ClientMessage message)
{
if (count == numMessages)
{
- Assert.fail("Too many messages");
+ Assert.fail("Too many messages, expected " + count);
}
Assert.assertEquals(count, message.getObjectProperty(new SimpleString("count")));
count++;
+
+ try
+ {
+ message.acknowledge();
+ }
+ catch (HornetQException e)
+ {
+ e.printStackTrace();
+ throw new RuntimeException (e.getMessage(), e);
+ }
if (count == numMessages)
{
+ System.out.println("Latch released");
latch.countDown();
}
}
@@ -586,6 +603,8 @@
boolean ok = handler.latch.await(10000, TimeUnit.MILLISECONDS);
Assert.assertTrue(ok);
+
+ handler.checkAssertions();
}
handlers.clear();
@@ -610,6 +629,8 @@
boolean ok = handler.latch.await(10000, TimeUnit.MILLISECONDS);
Assert.assertTrue(ok);
+
+ handler.checkAssertions();
}
for (ClientSession session : sessions)
@@ -665,7 +686,7 @@
sessions.add(sessConsume);
}
- ClientSession sessSend = sf.createSession(false, true, true);
+ ClientSession sessSend = sf.createSession(false, false, true);
ClientProducer producer = sessSend.createProducer(RandomReattachTest.ADDRESS);
@@ -700,17 +721,17 @@
session.start();
}
- class MyHandler implements MessageHandler
+ class MyHandler extends AssertionCheckMessageHandler
{
final CountDownLatch latch = new CountDownLatch(1);
volatile int count;
- public void onMessage(final ClientMessage message)
+ public void onMessageAssert(final ClientMessage message)
{
if (count == numMessages)
{
- Assert.fail("Too many messages");
+ Assert.fail("Too many messages, " + count);
}
Assert.assertEquals(count, message.getObjectProperty(new SimpleString("count")));
@@ -740,6 +761,8 @@
boolean ok = handler.latch.await(20000, TimeUnit.MILLISECONDS);
Assert.assertTrue(ok);
+
+ handler.checkAssertions();
}
handlers.clear();
@@ -764,6 +787,8 @@
boolean ok = handler.latch.await(10000, TimeUnit.MILLISECONDS);
Assert.assertTrue(ok);
+
+ handler.checkAssertions();
}
for (ClientSession session : sessions)
@@ -1408,7 +1433,7 @@
{
return 2;
}
-
+
@Override
protected void setUp() throws Exception
{
@@ -1494,4 +1519,41 @@
{
abstract void run(final ClientSessionFactory sf) throws Exception;
}
+
+ static abstract class AssertionCheckMessageHandler implements MessageHandler
+ {
+
+
+ public void checkAssertions()
+ {
+ for (AssertionFailedError e: errors)
+ {
+ // it will throw the first error
+ throw e;
+ }
+ }
+
+ private ArrayList<AssertionFailedError> errors = new ArrayList<AssertionFailedError>();
+
+ /* (non-Javadoc)
+ * @see org.hornetq.api.core.client.MessageHandler#onMessage(org.hornetq.api.core.client.ClientMessage)
+ */
+ public void onMessage(ClientMessage message)
+ {
+ try
+ {
+ onMessageAssert(message);
+ }
+ catch (AssertionFailedError e)
+ {
+ e.printStackTrace(); // System.out -> junit reports
+ errors.add(e);
+ }
+ }
+
+ public abstract void onMessageAssert(ClientMessage message);
+
+ }
+
+
}
More information about the hornetq-commits
mailing list