* Send some more messages
* Verify all messages are received
*/
private void testCrashAndReconnectDestCrashBeforePrepare(final boolean persistent) throws Exception
{
JMSBridgeImpl bridge = null;
try
{
bridge = new JMSBridgeImpl(cff0xa,
cff1xa,
sourceQueueFactory,
targetQueueFactory,
null,
null,
null,
null,
null,
1000,
-1,
QualityOfServiceMode.ONCE_AND_ONLY_ONCE,
10,
5000,
null,
null,
false);
bridge.setTransactionManager(newTransactionManager());
bridge.start();
final int NUM_MESSAGES = 10;
// Send some messages
sendMessages(cf0, sourceQueue, 0, NUM_MESSAGES / 2, persistent, false);
// verify none are received
checkEmpty(targetQueue, 1);
// Now crash the dest server
JMSBridgeReconnectionTest.log.info("About to crash server");
jmsServer1.stop();
// Wait a while before starting up to simulate the dest being down for a while
JMSBridgeReconnectionTest.log.info("Waiting 5 secs before bringing server back up");
Thread.sleep(TIME_WAIT);
JMSBridgeReconnectionTest.log.info("Done wait");
// Restart the server
jmsServer1.start();
createQueue("targetQueue", 1);
setUpAdministeredObjects();
sendMessages(cf0, sourceQueue, NUM_MESSAGES / 2, NUM_MESSAGES / 2, persistent, false);
checkMessagesReceived(cf1, targetQueue, QualityOfServiceMode.ONCE_AND_ONLY_ONCE, NUM_MESSAGES, false, false);
}
finally
{
if (bridge != null)
{
try
{
bridge.stop();
}
catch (Exception e)
{
JMSBridgeReconnectionTest.log.error("Failed to stop bridge", e);
}