subscription manager test improvements

This commit is contained in:
benjamin 2013-05-22 18:06:24 +02:00
parent e5b13ba8e6
commit 0a7ed2e651
2 changed files with 15 additions and 24 deletions

View File

@ -27,7 +27,7 @@ public class Subscription {
this.listeners = listeners;
}
public boolean isFromListener(Class listener){
public boolean belongsTo(Class listener){
return context.getHandlerMetadata().isFromListener(listener);
}

View File

@ -13,7 +13,6 @@ import net.engio.mbassy.subscription.SubscriptionManager;
import org.junit.Test;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* Todo: Add javadoc
@ -30,7 +29,7 @@ public class SubscriptionManagerTest extends UnitTest{
final Set listeners = Collections.synchronizedSet(new HashSet());
final int concurrentUnits = 5;
final int numberOfLoops = 100;
final int numberOfListeners = numberOfLoops * concurrentUnits * 2;
final int numberOfListeners = numberOfLoops * concurrentUnits;
ConcurrentExecutor.runConcurrent(new Runnable() {
@Override
@ -48,26 +47,14 @@ public class SubscriptionManagerTest extends UnitTest{
}
}, concurrentUnits);
SubscriptionValidator validator = new SubscriptionValidator();
validator.expect(numberOfListeners, SimpleSynchronousMessageHandler.class, ITestMessage.class);
validator.expect(numberOfListeners, SimpleSynchronousMessageHandler2.class, ITestMessage.class);
validator.expect(numberOfListeners, SimpleSynchronousMessageHandler.class, TestMessage.class);
validator.expect(numberOfListeners, SimpleSynchronousMessageHandler2.class, TestMessage.class);
Collection<Subscription> subscriptions = subMan.getSubscriptionsByMessageType(TestMessage.class);
assertEquals(2, subscriptions.size());
validator.validate(subMan);
for(Subscription sub : subscriptions){
assertEquals(numberOfListeners, sub.size());
for(Object listener : listeners){
if(sub.isFromListener(listener))assertTrue(sub.contains(listener));
}
}
subscriptions = subMan.getSubscriptionsByMessageType(ITestMessage.class);
assertEquals(2, subscriptions.size());
for(Subscription sub : subscriptions){
assertEquals(numberOfListeners, sub.size());
for(Object listener : listeners){
if(sub.isFromListener(listener))assertTrue(sub.contains(listener));
}
}
}
@ -93,13 +80,17 @@ public class SubscriptionManagerTest extends UnitTest{
assertEquals(subscriptions.size(), validationEntries.size());
for(Entry validationEntry : validationEntries){
Subscription matchingSub = null;
// one of the subscriptions must belong to the subscriber type
for(Subscription sub : subscriptions){
if(sub.isFromListener(validationEntry.subscriber));
if(sub.belongsTo(validationEntry.subscriber)){
matchingSub = sub;
break;
}
}
assertNotNull(matchingSub);
assertEquals(validationEntry.numberOfSubscribers, matchingSub.size());
}
}
}