prevent tests to run twice during build, removed redundant tests and unused objects
This commit is contained in:
parent
b7c5804326
commit
b25b9dae2c
4
pom.xml
4
pom.xml
@ -148,6 +148,10 @@
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<skipTests>false</skipTests>
|
||||
<excludes>
|
||||
<!-- exclude the suite which is a convenience class for running all tests from IDE or using scripts -->
|
||||
<exclude>AllTests.java</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.bus.ListenerSubscriptionTest;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Suite;
|
||||
|
||||
@ -19,9 +18,8 @@ import org.junit.runners.Suite;
|
||||
SyncBusTest.SyncMessageBusTest.class,
|
||||
FilterTest.class,
|
||||
MetadataReaderTest.class,
|
||||
ListenerSubscriptionTest.class,
|
||||
MethodDispatchTest.class,
|
||||
DeadEventTest.class,
|
||||
DeadMessageTest.class,
|
||||
SynchronizedHandlerTest.class,
|
||||
SubscriptionManagerTest.class
|
||||
})
|
||||
|
@ -1,50 +0,0 @@
|
||||
package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.bus.BusConfiguration;
|
||||
import net.engio.mbassy.bus.MBassador;
|
||||
import net.engio.mbassy.common.WeakConcurrentSet;
|
||||
import net.engio.mbassy.common.DeadMessage;
|
||||
import net.engio.mbassy.common.MessageBusTest;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Verify correct behaviour in case of message publications that do not have any matching subscriptions
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 1/18/13
|
||||
*/
|
||||
public class DeadEventTest extends MessageBusTest{
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeadEvent(){
|
||||
MBassador bus = getBus(BusConfiguration.Default());
|
||||
DeadEventHandler deadEventHandler = new DeadEventHandler();
|
||||
bus.subscribe(deadEventHandler);
|
||||
assertEquals(0, deadEventHandler.getDeadEventCount());
|
||||
bus.post(new Object()).now();
|
||||
assertEquals(1, deadEventHandler.getDeadEventCount());
|
||||
bus.post(323).now();
|
||||
assertEquals(2, deadEventHandler.getDeadEventCount());
|
||||
bus.publish("fkdfdk");
|
||||
assertEquals(3, deadEventHandler.getDeadEventCount());
|
||||
}
|
||||
|
||||
public class DeadEventHandler{
|
||||
|
||||
private WeakConcurrentSet deadEvents = new WeakConcurrentSet();
|
||||
|
||||
@Handler
|
||||
public void handle(DeadMessage message){
|
||||
deadEvents.add(message);
|
||||
}
|
||||
|
||||
|
||||
public int getDeadEventCount(){
|
||||
return deadEvents.size();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
71
src/test/java/net/engio/mbassy/DeadMessageTest.java
Normal file
71
src/test/java/net/engio/mbassy/DeadMessageTest.java
Normal file
@ -0,0 +1,71 @@
|
||||
package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.bus.BusConfiguration;
|
||||
import net.engio.mbassy.bus.MBassador;
|
||||
import net.engio.mbassy.common.*;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
import net.engio.mbassy.listeners.IMessageListener;
|
||||
import net.engio.mbassy.common.ListenerFactory;
|
||||
import net.engio.mbassy.listeners.MessagesListener;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* Verify correct behaviour in case of message publications that do not have any matching subscriptions
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 1/18/13
|
||||
*/
|
||||
public class DeadMessageTest extends MessageBusTest{
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeadMessage(){
|
||||
final MBassador bus = getBus(BusConfiguration.Default());
|
||||
ListenerFactory listeners = new ListenerFactory()
|
||||
.create(InstancesPerListener, IMessageListener.DefaultListener.class)
|
||||
.create(InstancesPerListener, IMessageListener.AsyncListener.class)
|
||||
.create(InstancesPerListener, IMessageListener.DisabledListener.class)
|
||||
.create(InstancesPerListener, MessagesListener.DefaultListener.class)
|
||||
.create(InstancesPerListener, MessagesListener.AsyncListener.class)
|
||||
.create(InstancesPerListener, MessagesListener.DisabledListener.class)
|
||||
.create(InstancesPerListener, DeadMessagHandler.class)
|
||||
.create(InstancesPerListener, Object.class);
|
||||
|
||||
|
||||
ConcurrentExecutor.runConcurrent(TestUtil.subscriber(bus, listeners), ConcurrentUnits);
|
||||
|
||||
Runnable publishUnhandledMessage = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for(int i=0; i < IterationsPerThread; i++){
|
||||
int variation = i % 3;
|
||||
switch (variation){
|
||||
case 0:bus.publish(new Object());break;
|
||||
case 1:bus.publish(i);break;
|
||||
case 2:bus.publish(String.valueOf(i));break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
ConcurrentExecutor.runConcurrent(publishUnhandledMessage, ConcurrentUnits);
|
||||
|
||||
assertEquals(InstancesPerListener * IterationsPerThread * ConcurrentUnits, DeadMessagHandler.deadMessages.get());
|
||||
}
|
||||
|
||||
public static class DeadMessagHandler {
|
||||
|
||||
private static final AtomicInteger deadMessages = new AtomicInteger(0);
|
||||
|
||||
|
||||
@Handler
|
||||
public void handle(DeadMessage message){
|
||||
deadMessages.incrementAndGet();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -9,7 +9,7 @@ import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.listener.*;
|
||||
import net.engio.mbassy.listeners.ListenerFactory;
|
||||
import net.engio.mbassy.common.ListenerFactory;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -7,7 +7,7 @@ import net.engio.mbassy.common.MessageBusTest;
|
||||
import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.listeners.ExceptionThrowingListener;
|
||||
import net.engio.mbassy.listeners.IMessageListener;
|
||||
import net.engio.mbassy.listeners.ListenerFactory;
|
||||
import net.engio.mbassy.common.ListenerFactory;
|
||||
import net.engio.mbassy.listeners.MessagesListener;
|
||||
import net.engio.mbassy.messages.MessageTypes;
|
||||
import net.engio.mbassy.messages.MultipartMessage;
|
||||
|
@ -1,9 +1,6 @@
|
||||
package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.common.AssertSupport;
|
||||
import net.engio.mbassy.common.ConcurrentExecutor;
|
||||
import net.engio.mbassy.common.SubscriptionValidator;
|
||||
import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.common.*;
|
||||
import net.engio.mbassy.listener.MetadataReader;
|
||||
import net.engio.mbassy.listeners.*;
|
||||
import net.engio.mbassy.messages.*;
|
||||
|
@ -2,6 +2,7 @@ package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.bus.*;
|
||||
import net.engio.mbassy.common.ConcurrentExecutor;
|
||||
import net.engio.mbassy.common.ListenerFactory;
|
||||
import net.engio.mbassy.common.MessageBusTest;
|
||||
import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.listeners.*;
|
||||
|
@ -1,108 +0,0 @@
|
||||
package net.engio.mbassy.bus;
|
||||
|
||||
import net.engio.mbassy.common.MessageBusTest;
|
||||
import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.listeners.EventingTestBean;
|
||||
import net.engio.mbassy.listeners.EventingTestBean2;
|
||||
import net.engio.mbassy.listeners.EventingTestBean3;
|
||||
import net.engio.mbassy.listeners.ListenerFactory;
|
||||
import net.engio.mbassy.listeners.NonListeningBean;
|
||||
import net.engio.mbassy.subscription.Subscription;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Testing different scenarios of subscribing objects (listeners and non-listeners) to the message bus.
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 1/9/13
|
||||
*/
|
||||
public class ListenerSubscriptionTest extends MessageBusTest{
|
||||
|
||||
|
||||
// this is a single threaded test for subscribing and unsubscribing of a single listener
|
||||
@Test
|
||||
public void testSubscribeSimple() throws InterruptedException {
|
||||
MBassador bus = getBus(new BusConfiguration());
|
||||
List<Object> listeners = new LinkedList<Object>();
|
||||
int listenerCount = 200000;
|
||||
|
||||
// subscribe a number of listeners to the bus
|
||||
for (int i = 1; i <= listenerCount; i++) {
|
||||
EventingTestBean listener = new EventingTestBean();
|
||||
NonListeningBean nonListener = new NonListeningBean();
|
||||
listeners.add(listener);
|
||||
|
||||
bus.subscribe(listener);
|
||||
bus.subscribe(nonListener);
|
||||
|
||||
assertFalse(bus.unsubscribe(nonListener)); // these are not expected to be subscribed listeners
|
||||
assertFalse(bus.unsubscribe(new EventingTestBean()));
|
||||
|
||||
}
|
||||
|
||||
// check the generated subscriptions for existence of all previously subscribed valid listeners
|
||||
Collection<Subscription> testEventsubscriptions = bus.getSubscriptionsByMessageType(TestMessage.class);
|
||||
assertEquals(1, testEventsubscriptions.size());
|
||||
assertEquals(listenerCount, getNumberOfSubscribedListeners(testEventsubscriptions));
|
||||
|
||||
Collection<Subscription> subTestEventsubscriptions = bus.getSubscriptionsByMessageType(SubTestMessage.class);
|
||||
assertEquals(3, subTestEventsubscriptions.size());
|
||||
assertEquals(3 * listenerCount, getNumberOfSubscribedListeners(subTestEventsubscriptions));
|
||||
|
||||
// unsubscribe the listeners
|
||||
for(Object listener : listeners){
|
||||
assertTrue(bus.unsubscribe(listener)); // this listener is expected to exist
|
||||
}
|
||||
|
||||
// no listener should be left
|
||||
testEventsubscriptions = bus.getSubscriptionsByMessageType(TestMessage.class);
|
||||
assertEquals(1, testEventsubscriptions.size());
|
||||
assertEquals(0, getNumberOfSubscribedListeners(testEventsubscriptions));
|
||||
|
||||
subTestEventsubscriptions = bus.getSubscriptionsByMessageType(SubTestMessage.class);
|
||||
assertEquals(3, subTestEventsubscriptions.size());
|
||||
assertEquals(0, getNumberOfSubscribedListeners(subTestEventsubscriptions));
|
||||
|
||||
}
|
||||
|
||||
private int getNumberOfSubscribedListeners(Collection<Subscription> subscriptions) {
|
||||
int listeners = 0;
|
||||
for (Subscription sub : subscriptions) {
|
||||
listeners += sub.size();
|
||||
}
|
||||
return listeners;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConcurrentSubscription() throws Exception {
|
||||
|
||||
MBassador bus = getBus(new BusConfiguration());
|
||||
ListenerFactory listenerFactory = new ListenerFactory()
|
||||
.create(10000, EventingTestBean.class)
|
||||
.create(10000, EventingTestBean2.class)
|
||||
.create(10000, EventingTestBean3.class)
|
||||
.create(10000, Object.class)
|
||||
.create(10000, NonListeningBean.class);
|
||||
|
||||
List<Object> listeners = listenerFactory.getAll();
|
||||
|
||||
// this will subscribe the listeners concurrently to the bus
|
||||
TestUtil.setup(bus, listeners, 10);
|
||||
|
||||
// check the generated subscriptions for existence of all previously subscribed valid listeners
|
||||
Collection<Subscription> testEventsubscriptions = bus.getSubscriptionsByMessageType(TestMessage.class);
|
||||
assertEquals(3, testEventsubscriptions.size());
|
||||
assertEquals(30000, getNumberOfSubscribedListeners(testEventsubscriptions));
|
||||
|
||||
Collection<Subscription> subTestEventsubscriptions = bus.getSubscriptionsByMessageType(SubTestMessage.class);
|
||||
assertEquals(10, subTestEventsubscriptions.size());
|
||||
assertEquals(100000, getNumberOfSubscribedListeners(subTestEventsubscriptions));
|
||||
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
package net.engio.mbassy.common;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
@ -24,6 +24,7 @@ public abstract class MessageBusTest<Bus extends ISyncMessageBus> extends Assert
|
||||
protected static final int processingTimeInMS = 6000;
|
||||
protected static final int InstancesPerListener = 5000;
|
||||
protected static final int ConcurrentUnits = 10;
|
||||
protected static final int IterationsPerThread = 100;
|
||||
|
||||
protected static final IPublicationErrorHandler TestFailingHandler = new IPublicationErrorHandler() {
|
||||
@Override
|
||||
|
@ -1,6 +1,5 @@
|
||||
package net.engio.mbassy.common;
|
||||
|
||||
import net.engio.mbassy.listeners.ListenerFactory;
|
||||
import net.engio.mbassy.subscription.Subscription;
|
||||
import net.engio.mbassy.subscription.SubscriptionManager;
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package net.engio.mbassy.common;
|
||||
|
||||
import net.engio.mbassy.bus.ISyncMessageBus;
|
||||
import net.engio.mbassy.listeners.ListenerFactory;
|
||||
import net.engio.mbassy.subscription.SubscriptionManager;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
@ -1,51 +0,0 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.dispatch.HandlerInvocation;
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.listener.*;
|
||||
import net.engio.mbassy.subscription.SubscriptionContext;
|
||||
|
||||
/**
|
||||
* Basic bean that defines some event handlers to be used for different unit testting scenarios
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 11/22/12
|
||||
*/
|
||||
public class EventingTestBean {
|
||||
|
||||
// every event of type TestEvent or any subtype will be delivered
|
||||
// to this listener
|
||||
@Handler
|
||||
public void handleTestEvent(TestMessage message) {
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
|
||||
// this handler will be invoked asynchronously
|
||||
@Handler(priority = 0, delivery = Invoke.Asynchronously, invocation = HandleSubTestEventInvocation.class)
|
||||
public void handleSubTestEvent(SubTestMessage message) {
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
|
||||
// this handler will receive events of type SubTestEvent
|
||||
// or any subtabe and that passes the given filter
|
||||
@Handler(
|
||||
priority = 10,
|
||||
delivery = Invoke.Synchronously,
|
||||
filters = {@Filter(Filters.RejectAll.class), @Filter(Filters.AllowAll.class)})
|
||||
public void handleFiltered(SubTestMessage message) {
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
|
||||
public static class HandleSubTestEventInvocation extends HandlerInvocation<EventingTestBean, SubTestMessage> {
|
||||
|
||||
public HandleSubTestEventInvocation(SubscriptionContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invoke(EventingTestBean listener, SubTestMessage message) {
|
||||
listener.handleSubTestEvent(message);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
import net.engio.mbassy.listener.Invoke;
|
||||
import net.engio.mbassy.listener.Listener;
|
||||
import net.engio.mbassy.listener.References;
|
||||
|
||||
/**
|
||||
* @author bennidi
|
||||
* Date: 11/22/12
|
||||
*/
|
||||
@Listener(references = References.Strong)
|
||||
public class EventingTestBean2 extends EventingTestBean{
|
||||
|
||||
// redefine the configuration for this handler
|
||||
@Handler(delivery = Invoke.Synchronously)
|
||||
public void handleSubTestEvent(SubTestMessage message) {
|
||||
super.handleSubTestEvent(message);
|
||||
}
|
||||
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
import net.engio.mbassy.listener.Invoke;
|
||||
import net.engio.mbassy.listener.Listener;
|
||||
import net.engio.mbassy.listener.References;
|
||||
|
||||
/**
|
||||
* @author bennidi
|
||||
* Date: 11/22/12
|
||||
*/
|
||||
@Listener(references = References.Strong)
|
||||
public class EventingTestBean3 extends EventingTestBean2{
|
||||
|
||||
|
||||
// this handler will be invoked asynchronously
|
||||
@Handler(priority = 0, delivery = Invoke.Synchronously)
|
||||
public void handleSubTestEventAgain(SubTestMessage message) {
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage2;
|
||||
import net.engio.mbassy.listener.*;
|
||||
import net.engio.mbassy.listener.Invoke;
|
||||
import net.engio.mbassy.subscription.MessageEnvelope;
|
||||
|
||||
/**
|
||||
* Todo: Add javadoc
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 12/12/12
|
||||
*/
|
||||
public class MultiEventHandler {
|
||||
|
||||
|
||||
@Handler(delivery = Invoke.Synchronously)
|
||||
@Enveloped(messages = {TestMessage.class, TestMessage2.class})
|
||||
public void handleEvents(MessageEnvelope envelope) {
|
||||
if(TestMessage.class.isAssignableFrom(envelope.getMessage().getClass())){
|
||||
TestMessage message = envelope.getMessage();
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
if(envelope.getMessage().getClass().equals(TestMessage2.class)){
|
||||
TestMessage2 message = envelope.getMessage();
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
}
|
||||
|
||||
@Handler(delivery = Invoke.Synchronously, filters = @Filter(Filters.RejectSubtypes.class))
|
||||
@Enveloped(messages = {TestMessage.class, TestMessage2.class})
|
||||
public void handleSuperTypeEvents(MessageEnvelope envelope) {
|
||||
if(TestMessage.class.isAssignableFrom(envelope.getMessage().getClass())){
|
||||
TestMessage message = envelope.getMessage();
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
if(envelope.getMessage().getClass().equals(TestMessage2.class)){
|
||||
TestMessage2 message = envelope.getMessage();
|
||||
message.counter.incrementAndGet();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.messages.SubTestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
|
||||
/**
|
||||
* This bean overrides all the handlers defined in its superclass. Since it does not specify any annotations
|
||||
* it should not be considered a message listener
|
||||
*
|
||||
* @author bennidi
|
||||
* Date: 11/22/12
|
||||
*/
|
||||
public class NonListeningBean extends EventingTestBean{
|
||||
|
||||
|
||||
@Override
|
||||
@Handler(enabled = false)
|
||||
public void handleTestEvent(TestMessage message) {
|
||||
message.counter.incrementAndGet(); // should never be called
|
||||
}
|
||||
|
||||
@Override
|
||||
@Handler(enabled = false)
|
||||
public void handleSubTestEvent(SubTestMessage message) {
|
||||
message.counter.incrementAndGet(); // should never be called
|
||||
}
|
||||
|
||||
@Override
|
||||
@Handler(enabled = false)
|
||||
public void handleFiltered(SubTestMessage message) {
|
||||
message.counter.incrementAndGet(); // should never be called
|
||||
}
|
||||
}
|
20
src/test/java/net/engio/mbassy/listeners/ObjectListener.java
Normal file
20
src/test/java/net/engio/mbassy/listeners/ObjectListener.java
Normal file
@ -0,0 +1,20 @@
|
||||
package net.engio.mbassy.listeners;
|
||||
|
||||
import net.engio.mbassy.common.DeadMessage;
|
||||
import net.engio.mbassy.listener.Handler;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class ObjectListener {
|
||||
|
||||
private List handledMessages = Collections.synchronizedList(new LinkedList());
|
||||
|
||||
@Handler
|
||||
public void handle(Object message){
|
||||
handledMessages.add(message);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user