1 * 1024 * 1024, 50000, 30 * 1000, 100, 15 * 1000,
1, true);
cr = new ClientRunner(clientConn);
cr.start();
log.info("terminating conditions");
final DbusEventsTotalStats stats = relay1.getInboundEventStatisticsCollector().getTotalStats();
long totalRunTime = 5000;
long startTime = System.currentTimeMillis();
do
{
log.info("numDataEvents=" + stats.getNumDataEvents()
+ " numWindows=" + stats.getNumSysEvents() + " size="
+ stats.getSizeDataEvents());
Thread.sleep(1000);
}
while ((System.currentTimeMillis() - startTime) < totalRunTime);
r1.pause();
log.info("Sending pause to relay!");
log.info("numDataEvents=" + stats.getNumDataEvents()
+ " numWindows=" + stats.getNumSysEvents() + " size="
+ stats.getSizeDataEvents());
TestUtil.assertWithBackoff(new ConditionCheck()
{
@Override
public boolean check()
{
boolean success = true;
for (EventProducer p: relay1.getProducers())
{
if (!(success = success && p.isPaused())) break;
}
return success;
}
}, "waiting for producers to pause", 4000, log);
TestUtil.assertWithBackoff(new ConditionCheck()
{
@Override
public boolean check()
{
log.debug("countingConsumer.getNumWindows()=" + countingConsumer.getNumWindows());
return countingConsumer.getNumWindows() == stats.getNumSysEvents();
}
}, "wait until client got all events or for maxTimeout", 64 * 1024, log);
log.info("Client stats=" + countingConsumer);
log.info("Event windows generated=" + stats.getNumSysEvents());
cr.shutdown(2000, log);
log.info("Client cr stopped");
Assert.assertEquals(countingConsumer.getNumDataEvents(), stats.getNumDataEvents());
boolean stopped = r1.shutdown(2000);
Assert.assertTrue(stopped);
log.info("Relay r1 stopped");
}