added method to wait for running publications in tests

This commit is contained in:
benjamin 2013-09-10 12:33:04 +02:00
parent d6aa291b86
commit 69e6d57d73

View File

@ -3,6 +3,7 @@ package net.engio.mbassy.common;
import junit.framework.Assert;
import net.engio.mbassy.IPublicationErrorHandler;
import net.engio.mbassy.PublicationError;
import net.engio.mbassy.bus.MessagePublication;
import net.engio.mbassy.bus.config.BusConfiguration;
import net.engio.mbassy.bus.MBassador;
import net.engio.mbassy.messages.MessageTypes;
@ -33,6 +34,8 @@ public abstract class MessageBusTest extends AssertSupport {
};
private StrongConcurrentSet<MessagePublication> issuedPublications = new StrongConcurrentSet<MessagePublication>();
@Before
public void setUp(){
for(MessageTypes mes : MessageTypes.values())
@ -52,4 +55,20 @@ public abstract class MessageBusTest extends AssertSupport {
return bus;
}
public void waitForPublications(long timeOutInMs){
long start = System.currentTimeMillis();
while(issuedPublications.size() > 0 && System.currentTimeMillis() - start < timeOutInMs){
for(MessagePublication pub : issuedPublications){
if(pub.isFinished())
issuedPublications.remove(pub);
}
}
if(issuedPublications.size() > 0)
fail("Issued publications did not finish within specified timeout of " + timeOutInMs + " ms");
}
public void addPublication(MessagePublication publication){
issuedPublications.add(publication);
}
}