cleaned up unitests

This commit is contained in:
nathan 2016-01-25 15:05:17 +01:00
parent d84098fe9d
commit 3483205dfd
3 changed files with 110 additions and 56 deletions

View File

@ -71,6 +71,9 @@ class Subscription {
public final int ID = ID_COUNTER.getAndIncrement(); public final int ID = ID_COUNTER.getAndIncrement();
// this is the listener class that created this subscription
private final Class<?> listenerClass;
// the handler's metadata -> for each handler in a listener, a unique subscription context is created // the handler's metadata -> for each handler in a listener, a unique subscription context is created
private final MessageHandler handler; private final MessageHandler handler;
private final IHandlerInvocation invocation; private final IHandlerInvocation invocation;
@ -89,8 +92,10 @@ class Subscription {
public public
Subscription(final MessageHandler handler) { Subscription(final Class<?> listenerClass, final MessageHandler handler) {
this.listenerClass = listenerClass;
this.handler = handler; this.handler = handler;
IHandlerInvocation invocation = new ReflectiveHandlerInvocation(); IHandlerInvocation invocation = new ReflectiveHandlerInvocation();
if (handler.isSynchronized()) { if (handler.isSynchronized()) {
invocation = new SynchronizedHandlerInvocation(invocation); invocation = new SynchronizedHandlerInvocation(invocation);
@ -99,6 +104,12 @@ class Subscription {
this.invocation = invocation; this.invocation = invocation;
} }
// only used in unit tests to verify that the subscription manager is working correctly
public
Class<?> getListenerClass() {
return listenerClass;
}
public public
MessageHandler getHandler() { MessageHandler getHandler() {
return handler; return handler;

View File

@ -60,12 +60,11 @@ public class SubscriptionManagerTest extends AssertSupport {
private static final int InstancesPerListener = 5000; private static final int InstancesPerListener = 5000;
@Test @Test
public void testIMessageListener() { public
ListenerFactory listeners = listeners(IMessageListener.DefaultListener.class void testIMessageListener() {
// , ListenerFactory listeners = listeners(IMessageListener.DefaultListener.class,
// IMessageListener.DisabledListener.class, IMessageListener.DisabledListener.class,
// IMessageListener.NoSubtypesListener.class IMessageListener.NoSubtypesListener.class);
);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners); SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
expectedSubscriptions.listener(IMessageListener.DefaultListener.class) expectedSubscriptions.listener(IMessageListener.DefaultListener.class)
@ -75,106 +74,149 @@ public class SubscriptionManagerTest extends AssertSupport {
StandardMessage.class, StandardMessage.class,
MessageTypes.class); MessageTypes.class);
// expectedSubscriptions.listener(IMessageListener.NoSubtypesListener.class) expectedSubscriptions.listener(IMessageListener.NoSubtypesListener.class)
// .handles(IMessage.class); .handles(IMessage.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testAbstractMessageListener() { public
ListenerFactory listeners = listeners(AbstractMessageListener.DefaultListener.class, AbstractMessageListener.DisabledListener.class, void testAbstractMessageListener() {
ListenerFactory listeners = listeners(AbstractMessageListener.DefaultListener.class,
AbstractMessageListener.DisabledListener.class,
AbstractMessageListener.NoSubtypesListener.class); AbstractMessageListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( final SubscriptionValidator subscriptionValidator = new SubscriptionValidator(listeners);
AbstractMessageListener.NoSubtypesListener.class).handles(AbstractMessage.class).listener( subscriptionValidator.listener(AbstractMessageListener.NoSubtypesListener.class)
AbstractMessageListener.DefaultListener.class).handles(StandardMessage.class, AbstractMessage.class); .handles(AbstractMessage.class);
runTestWith(listeners, expectedSubscriptions); subscriptionValidator.listener(AbstractMessageListener.DefaultListener.class)
.handles(StandardMessage.class, AbstractMessage.class);
runTestWith(listeners, subscriptionValidator);
} }
@Test @Test
public void testMessagesListener() { public
ListenerFactory listeners = listeners(MessagesListener.DefaultListener.class, MessagesListener.DisabledListener.class, void testMessagesListener() {
ListenerFactory listeners = listeners(MessagesListener.DefaultListener.class,
MessagesListener.DisabledListener.class,
MessagesListener.NoSubtypesListener.class); MessagesListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
MessagesListener.NoSubtypesListener.class).handles(MessageTypes.class).listener( expectedSubscriptions.listener(MessagesListener.NoSubtypesListener.class)
MessagesListener.DefaultListener.class).handles(MessageTypes.class); .handles(MessageTypes.class);
expectedSubscriptions.listener(MessagesListener.DefaultListener.class)
.handles(MessageTypes.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testMultipartMessageListener() { public
void testMultipartMessageListener() {
ListenerFactory listeners = listeners(MultipartMessageListener.DefaultListener.class, ListenerFactory listeners = listeners(MultipartMessageListener.DefaultListener.class,
MultipartMessageListener.DisabledListener.class, MultipartMessageListener.DisabledListener.class,
MultipartMessageListener.NoSubtypesListener.class); MultipartMessageListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
MultipartMessageListener.NoSubtypesListener.class).handles(MultipartMessage.class).listener( expectedSubscriptions.listener(MultipartMessageListener.NoSubtypesListener.class)
MultipartMessageListener.DefaultListener.class).handles(MultipartMessage.class); .handles(MultipartMessage.class);
expectedSubscriptions.listener(MultipartMessageListener.DefaultListener.class)
.handles(MultipartMessage.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testIMultipartMessageListener() { public
void testIMultipartMessageListener() {
ListenerFactory listeners = listeners(IMultipartMessageListener.DefaultListener.class, ListenerFactory listeners = listeners(IMultipartMessageListener.DefaultListener.class,
IMultipartMessageListener.DisabledListener.class, IMultipartMessageListener.DisabledListener.class,
IMultipartMessageListener.NoSubtypesListener.class); IMultipartMessageListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
IMultipartMessageListener.NoSubtypesListener.class).handles(IMultipartMessage.class).listener( expectedSubscriptions.listener(IMultipartMessageListener.NoSubtypesListener.class)
IMultipartMessageListener.DefaultListener.class).handles(MultipartMessage.class, IMultipartMessage.class); .handles(IMultipartMessage.class);
expectedSubscriptions.listener(IMultipartMessageListener.DefaultListener.class)
.handles(MultipartMessage.class,
IMultipartMessage.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testStandardMessageListener() { public
ListenerFactory listeners = listeners(StandardMessageListener.DefaultListener.class, StandardMessageListener.DisabledListener.class, void testStandardMessageListener() {
ListenerFactory listeners = listeners(StandardMessageListener.DefaultListener.class,
StandardMessageListener.DisabledListener.class,
StandardMessageListener.NoSubtypesListener.class); StandardMessageListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
StandardMessageListener.NoSubtypesListener.class).handles(StandardMessage.class).listener( expectedSubscriptions.listener(StandardMessageListener.NoSubtypesListener.class)
StandardMessageListener.DefaultListener.class).handles(StandardMessage.class); .handles(StandardMessage.class);
expectedSubscriptions.listener(StandardMessageListener.DefaultListener.class)
.handles(StandardMessage.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testICountableListener() { public
ListenerFactory listeners = listeners(ICountableListener.DefaultListener.class, ICountableListener.DisabledListener.class, void testICountableListener() {
ListenerFactory listeners = listeners(ICountableListener.DefaultListener.class,
ICountableListener.DisabledListener.class,
ICountableListener.NoSubtypesListener.class); ICountableListener.NoSubtypesListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
ICountableListener.DefaultListener.class).handles(ICountable.class).listener( expectedSubscriptions.listener(ICountableListener.DefaultListener.class)
ICountableListener.DefaultListener.class).handles(MultipartMessage.class, IMultipartMessage.class, ICountable.class, .handles(ICountable.class);
StandardMessage.class);
expectedSubscriptions.listener(ICountableListener.DefaultListener.class)
.handles(MultipartMessage.class,
IMultipartMessage.class,
ICountable.class,
StandardMessage.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testMultipleMessageListeners() { public
ListenerFactory listeners = listeners(ICountableListener.DefaultListener.class, ICountableListener.DisabledListener.class, void testMultipleMessageListeners() {
ListenerFactory listeners = listeners(ICountableListener.DefaultListener.class,
ICountableListener.DisabledListener.class,
IMultipartMessageListener.DefaultListener.class, IMultipartMessageListener.DefaultListener.class,
IMultipartMessageListener.DisabledListener.class, MessagesListener.DefaultListener.class, IMultipartMessageListener.DisabledListener.class,
MessagesListener.DefaultListener.class,
MessagesListener.DisabledListener.class); MessagesListener.DisabledListener.class);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
ICountableListener.DefaultListener.class).handles(MultipartMessage.class, IMultipartMessage.class, ICountable.class, expectedSubscriptions.listener(ICountableListener.DefaultListener.class)
StandardMessage.class).listener( .handles(MultipartMessage.class,
IMultipartMessageListener.DefaultListener.class).handles(MultipartMessage.class, IMultipartMessage.class).listener( IMultipartMessage.class,
MessagesListener.DefaultListener.class).handles(MessageTypes.class); ICountable.class,
StandardMessage.class);
expectedSubscriptions.listener(IMultipartMessageListener.DefaultListener.class)
.handles(MultipartMessage.class,
IMultipartMessage.class);
expectedSubscriptions.listener(MessagesListener.DefaultListener.class)
.handles(MessageTypes.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }
@Test @Test
public void testOverloadedMessageHandlers() { public
void testOverloadedMessageHandlers() {
ListenerFactory listeners = listeners(Overloading.ListenerBase.class, Overloading.ListenerSub.class); ListenerFactory listeners = listeners(Overloading.ListenerBase.class, Overloading.ListenerSub.class);
final ErrorHandlingSupport errorHandler = new DefaultErrorHandler(); final ErrorHandlingSupport errorHandler = new DefaultErrorHandler();
@ -182,9 +224,15 @@ public class SubscriptionManagerTest extends AssertSupport {
ConcurrentExecutor.runConcurrent(TestUtil.subscriber(subscriptionManager, listeners), 1); ConcurrentExecutor.runConcurrent(TestUtil.subscriber(subscriptionManager, listeners), 1);
SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners).listener(Overloading.ListenerBase.class).handles( SubscriptionValidator expectedSubscriptions = new SubscriptionValidator(listeners);
Overloading.TestMessageA.class, Overloading.TestMessageA.class).listener(Overloading.ListenerSub.class).handles( expectedSubscriptions.listener(Overloading.ListenerBase.class)
Overloading.TestMessageA.class, Overloading.TestMessageA.class, Overloading.TestMessageB.class); .handles(Overloading.TestMessageA.class,
Overloading.TestMessageA.class);
expectedSubscriptions.listener(Overloading.ListenerSub.class)
.handles(Overloading.TestMessageA.class,
Overloading.TestMessageA.class,
Overloading.TestMessageB.class);
runTestWith(listeners, expectedSubscriptions); runTestWith(listeners, expectedSubscriptions);
} }

View File

@ -105,11 +105,6 @@ public class SubscriptionValidator extends AssertSupport {
} }
// public boolean isFromListener(Class<?> listener) {
// return this.listenerDefinition.equals(listener);
// }
private Collection<ValidationEntry> getEntries(Class<?> messageType) { private Collection<ValidationEntry> getEntries(Class<?> messageType) {
Collection<ValidationEntry> matching = new LinkedList<ValidationEntry>(); Collection<ValidationEntry> matching = new LinkedList<ValidationEntry>();
for (ValidationEntry validationValidationEntry : this.validations) { for (ValidationEntry validationValidationEntry : this.validations) {