import org.junit.Test; import org.mule.DefaultMuleMessage; import org.mule.api.MuleMessage; import org.mule.api.context.notification.ComponentMessageNotificationListener; import org.mule.api.context.notification.ServerNotification; import org.mule.tck.junit4.FunctionalTestCase; import org.mule.util.FileUtils; import java.io.File; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import static org.junit.Assert.*; public class IdempotentOrderRouterFunctionalTestCase extends FunctionalTestCase { @Override protected String getConfigResources() { return "src/main/app/idempotentOrderRouter.xml"; } CountDownLatch latch = new CountDownLatch(2); @Override protected void doSetUp() throws Exception { super.doSetUp(); muleContext.registerListener(new ComponentMessageNotificationListener() { public void onNotification(final ServerNotification notification) { latch.countDown(); } }); } @Test public void testCannotProcessMultipleMessages() throws Exception { MuleMessage request = new DefaultMuleMessage(FileUtils.readFileToString( new File("src/test/resources/orders.xml")),muleContext); muleContext.getClient().dispatch("jms://topic:orders", request); assertTrue(latch.await(15, TimeUnit.SECONDS)); } }