HornetQServer server = createServer(false, isNetty);
server.start();
ClientSessionInternal session = null;
try
{
ServerLocator locator = createFactory(isNetty);
locator.setClientFailureCheckPeriod(pingPeriod);
locator.setRetryInterval(500);
locator.setRetryIntervalMultiplier(1d);
locator.setReconnectAttempts(-1);
locator.setConfirmationWindowSize(1024 * 1024);
ClientSessionFactory factory = locator.createSessionFactory();
session = (ClientSessionInternal)factory.createSession();
final AtomicInteger count = new AtomicInteger(0);
final CountDownLatch latch = new CountDownLatch(1);
session.addFailureListener(new SessionFailureListener()
{
public void connectionFailed(final HornetQException me, boolean failedOver)
{
count.incrementAndGet();
latch.countDown();
}
public void beforeReconnect(final HornetQException exception)
{
}
});
server.stop();
Thread.sleep((pingPeriod * 2));
server.start();
Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
// Some time to let possible loops to occur
Thread.sleep(500);
Assert.assertEquals(1, count.get());
locator.close();
}
finally
{
try
{
session.close();
}
catch (Throwable e)
{
}