JAMES-2285 ActiveMQ should rely on generic tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5ba4546f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5ba4546f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5ba4546f Branch: refs/heads/master Commit: 5ba4546ff32dadaf6c7241f2d3e7e83f27730713 Parents: afe41b8 Author: benwa <[email protected]> Authored: Thu Jan 11 12:18:05 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jan 18 09:48:49 2018 +0700 ---------------------------------------------------------------------- server/queue/queue-activemq/pom.xml | 22 + .../activemq/ActiveMQMailQueueBlobTest.java | 143 ++++++- .../queue/activemq/ActiveMQMailQueueTest.java | 105 +++-- .../queue/jms/AbstractJMSMailQueueTest.java | 404 ------------------- .../james/queue/jms/LegacyJMSMailQueueTest.java | 45 --- 5 files changed, 226 insertions(+), 493 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5ba4546f/server/queue/queue-activemq/pom.xml ---------------------------------------------------------------------- diff --git a/server/queue/queue-activemq/pom.xml b/server/queue/queue-activemq/pom.xml index 81ef5db..49da8b5 100644 --- a/server/queue/queue-activemq/pom.xml +++ b/server/queue/queue-activemq/pom.xml @@ -39,6 +39,12 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>apache-mailet-base</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-core</artifactId> </dependency> <dependency> @@ -51,6 +57,12 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>james-server-queue-api</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-queue-jms</artifactId> </dependency> <dependency> @@ -94,6 +106,16 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-engine</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.platform</groupId> + <artifactId>junit-platform-launcher</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> http://git-wip-us.apache.org/repos/asf/james-project/blob/5ba4546f/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java index a3cdea8..0eab66b 100644 --- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java +++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java @@ -22,48 +22,149 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.util.concurrent.ExecutorService; + +import javax.jms.ConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.activemq.broker.BrokerPlugin; +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.broker.region.policy.PolicyEntry; +import org.apache.activemq.broker.region.policy.PolicyMap; +import org.apache.activemq.plugin.StatisticsBrokerPlugin; import org.apache.commons.io.FileUtils; import org.apache.james.filesystem.api.FileSystem; +import org.apache.james.metrics.api.NoopMetricFactory; +import org.apache.james.queue.api.DelayedManageableMailQueueContract; +import org.apache.james.queue.api.DelayedPriorityMailQueueContract; +import org.apache.james.queue.api.MailQueue; +import org.apache.james.queue.api.ManageableMailQueue; +import org.apache.james.queue.api.PriorityManageableMailQueueContract; +import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.base.Throwables; +import com.google.common.collect.ImmutableList; + +public class ActiveMQMailQueueBlobTest implements DelayedManageableMailQueueContract, DelayedPriorityMailQueueContract, PriorityManageableMailQueueContract { + + static final String BASE_DIR = "file://target/james-test"; + static final String QUEUE_NAME = "test"; + static final boolean USE_BLOB = true; + + ActiveMQMailQueue mailQueue; + BrokerService broker; + MyFileSystem fileSystem; + + @BeforeEach + public void setUp() throws Exception { + fileSystem = new MyFileSystem(); + broker = createBroker(); + broker.start(); + ConnectionFactory connectionFactory = createConnectionFactory(); + RawMailQueueItemDecoratorFactory mailQueueItemDecoratorFactory = new RawMailQueueItemDecoratorFactory(); + NoopMetricFactory metricFactory = new NoopMetricFactory(); + mailQueue = new ActiveMQMailQueue(connectionFactory, mailQueueItemDecoratorFactory, QUEUE_NAME, USE_BLOB, metricFactory); -public class ActiveMQMailQueueBlobTest extends ActiveMQMailQueueTest { + } + + protected static BrokerService createBroker() throws Exception { + BrokerService broker = new BrokerService(); + broker.setPersistent(false); + broker.setUseJmx(false); + broker.addConnector("tcp://127.0.0.1:61616"); + + // Enable priority support + PolicyMap pMap = new PolicyMap(); + PolicyEntry entry = new PolicyEntry(); + entry.setPrioritizedMessages(true); + entry.setQueue(QUEUE_NAME); + pMap.setPolicyEntries(ImmutableList.of(entry)); + broker.setDestinationPolicy(pMap); + // Enable statistics + broker.setPlugins(new BrokerPlugin[]{new StatisticsBrokerPlugin()}); + broker.setEnableStatistics(true); + + return broker; + } - public static final String BASE_DIR = "file://target/james-test"; - private MyFileSystem fs; + @AfterEach + public void tearDown() throws Exception { + fileSystem.destroy(); + broker.stop(); + } @Override - protected ActiveMQConnectionFactory createConnectionFactory() { - ActiveMQConnectionFactory factory = super.createConnectionFactory(); + public MailQueue getMailQueue() { + return mailQueue; + } - FileSystemBlobTransferPolicy policy = new FileSystemBlobTransferPolicy(); - policy.setFileSystem(fs); - policy.setDefaultUploadUrl(BASE_DIR); - factory.setBlobTransferPolicy(policy); + @Override + public ManageableMailQueue getManageableMailQueue() { + return mailQueue; + } + + @Test + @Override + @Disabled("JAMES-2295 Disabled as test was dead-locking") + public void dequeueCanBeChainedBeforeAck() { - return factory; } + @Test @Override - public void setUp() throws Exception { - fs = new MyFileSystem(); - super.setUp(); + @Disabled("JAMES-2295 Disabled as test was dead-locking") + public void dequeueCouldBeInterleavingWithOutOfOrderAck() { + } - public void tearDown() throws Exception { - if (fs != null) { - fs.destroy(); - } + @Test + @Override + @Disabled("JAMES-2301 Per recipients headers are not attached to the message.") + public void queueShouldPreservePerRecipientHeaders() { + + } + + @Test + @Override + @Disabled("JAMES-2296 Not handled by JMS mailqueue. Only single recipient per-recipient removal works") + public void removeByRecipientShouldRemoveSpecificEmailWhenMultipleRecipients() { + + } + + @Test + @Override + @Disabled("JAMES-2308 Flushing JMS mail queue randomly re-order them" + + "Random test failing around 1% of the time") + public void flushShouldPreserveBrowseOrder() { + } + @Test @Override - protected boolean useBlobMessages() { - return true; + @Disabled("JAMES-2309 Long overflow in JMS delays") + public void enqueueWithVeryLongDelayShouldDelayMail(ExecutorService executorService) { + + } + + protected ActiveMQConnectionFactory createConnectionFactory() { + ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost?create=false"); + + FileSystemBlobTransferPolicy policy = new FileSystemBlobTransferPolicy(); + policy.setFileSystem(new MyFileSystem()); + policy.setDefaultUploadUrl(BASE_DIR); + factory.setBlobTransferPolicy(policy); + + return factory; } - private final class MyFileSystem implements FileSystem { + private static final class MyFileSystem implements FileSystem { + private static final Logger LOGGER = LoggerFactory.getLogger(MyFileSystem.class); @Override public InputStream getResource(String url) throws IOException { @@ -91,7 +192,7 @@ public class ActiveMQMailQueueBlobTest extends ActiveMQMailQueueTest { try { FileUtils.forceDelete(getFile(BASE_DIR)); } catch (FileNotFoundException e) { - throw e; + LOGGER.info("No file specified"); } catch (IOException e) { Throwables.propagate(e); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5ba4546f/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java index 981b949..4fc3926 100644 --- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java +++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java @@ -18,37 +18,47 @@ ****************************************************************/ package org.apache.james.queue.activemq; -import java.util.Arrays; +import java.util.concurrent.ExecutorService; import javax.jms.ConnectionFactory; +import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerPlugin; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.region.policy.PolicyEntry; import org.apache.activemq.broker.region.policy.PolicyMap; import org.apache.activemq.plugin.StatisticsBrokerPlugin; import org.apache.james.metrics.api.NoopMetricFactory; -import org.apache.james.queue.api.MailQueueItemDecoratorFactory; -import org.apache.james.queue.jms.AbstractJMSMailQueueTest; -import org.apache.james.queue.jms.JMSMailQueue; -import org.junit.AfterClass; -import org.junit.BeforeClass; +import org.apache.james.queue.api.DelayedManageableMailQueueContract; +import org.apache.james.queue.api.DelayedPriorityMailQueueContract; +import org.apache.james.queue.api.MailQueue; +import org.apache.james.queue.api.ManageableMailQueue; +import org.apache.james.queue.api.PriorityManageableMailQueueContract; +import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; -public abstract class ActiveMQMailQueueTest extends AbstractJMSMailQueueTest { +import com.google.common.collect.ImmutableList; - private static BrokerService brokerService; +public class ActiveMQMailQueueTest implements DelayedManageableMailQueueContract, DelayedPriorityMailQueueContract, PriorityManageableMailQueueContract { - @BeforeClass - public static void setupBroker() throws Exception { - brokerService = createBroker(); - brokerService.start(); - } + static final String QUEUE_NAME = "test"; + static final boolean USE_BLOB = true; + + ActiveMQMailQueue mailQueue; + BrokerService broker; + + @BeforeEach + public void setUp() throws Exception { + broker = createBroker(); + broker.start(); + ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?create=false"); + RawMailQueueItemDecoratorFactory mailQueueItemDecoratorFactory = new RawMailQueueItemDecoratorFactory(); + NoopMetricFactory metricFactory = new NoopMetricFactory(); + mailQueue = new ActiveMQMailQueue(connectionFactory, mailQueueItemDecoratorFactory, QUEUE_NAME, !USE_BLOB, metricFactory); - @AfterClass - public static void tearDownBroker() throws Exception { - if (brokerService != null) { - brokerService.stop(); - } } protected static BrokerService createBroker() throws Exception { @@ -62,7 +72,7 @@ public abstract class ActiveMQMailQueueTest extends AbstractJMSMailQueueTest { PolicyEntry entry = new PolicyEntry(); entry.setPrioritizedMessages(true); entry.setQueue(QUEUE_NAME); - pMap.setPolicyEntries(Arrays.asList(entry)); + pMap.setPolicyEntries(ImmutableList.of(entry)); broker.setDestinationPolicy(pMap); // Enable statistics broker.setPlugins(new BrokerPlugin[]{new StatisticsBrokerPlugin()}); @@ -71,12 +81,61 @@ public abstract class ActiveMQMailQueueTest extends AbstractJMSMailQueueTest { return broker; } + @AfterEach + public void tearDown() throws Exception { + broker.stop(); + } + + @Override + public MailQueue getMailQueue() { + return mailQueue; + } + + @Override + public ManageableMailQueue getManageableMailQueue() { + return mailQueue; + } + + @Test + @Override + @Disabled("JAMES-2295 Disabled as test was dead-locking") + public void dequeueCanBeChainedBeforeAck() { + + } + + @Test @Override - protected JMSMailQueue createQueue(ConnectionFactory factory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName) { - return new ActiveMQMailQueue(factory, mailQueueItemDecoratorFactory, queueName, useBlobMessages(), new NoopMetricFactory()); + @Disabled("JAMES-2295 Disabled as test was dead-locking") + public void dequeueCouldBeInterleavingWithOutOfOrderAck() { + + } + + @Test + @Override + @Disabled("JAMES-2301 Per recipients headers are not attached to the message.") + public void queueShouldPreservePerRecipientHeaders() { + } - protected boolean useBlobMessages() { - return false; + @Test + @Override + @Disabled("JAMES-2296 Not handled by JMS mailqueue. Only single recipient per-recipient removal works") + public void removeByRecipientShouldRemoveSpecificEmailWhenMultipleRecipients() { + + } + + @Test + @Override + @Disabled("JAMES-2308 Flushing JMS mail queue randomly re-order them" + + "Random test failing around 1% of the time") + public void flushShouldPreserveBrowseOrder() { + + } + + @Test + @Override + @Disabled("JAMES-2309 Long overflow in JMS delays") + public void enqueueWithVeryLongDelayShouldDelayMail(ExecutorService executorService) { + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/5ba4546f/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java deleted file mode 100644 index 99bf4df..0000000 --- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java +++ /dev/null @@ -1,404 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ -package org.apache.james.queue.jms; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Date; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Properties; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -import javax.jms.ConnectionFactory; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.internet.MimeMessage; - -import org.apache.activemq.ActiveMQConnectionFactory; -import org.apache.james.core.MailAddress; -import org.apache.james.metrics.api.NoopMetricFactory; -import org.apache.james.queue.api.MailQueue.MailQueueItem; -import org.apache.james.queue.api.MailQueueItemDecoratorFactory; -import org.apache.james.queue.api.ManageableMailQueue; -import org.apache.james.queue.api.ManageableMailQueue.MailQueueIterator; -import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory; -import org.apache.james.server.core.MailImpl; -import org.apache.mailet.Mail; -import org.junit.Before; -import org.junit.Test; - -/** - * Basic JMS test class. Extend this class and start the JMS broker in the super class, - * Create a queue and implement the getter and setter for the tests to run. - */ -public abstract class AbstractJMSMailQueueTest { - - protected static final String QUEUE_NAME = "test"; - - private JMSMailQueue queue; - - protected ActiveMQConnectionFactory createConnectionFactory() { - return new ActiveMQConnectionFactory("vm://localhost?create=false"); - } - - protected JMSMailQueue createQueue(ConnectionFactory factory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName) { - return new JMSMailQueue(factory, mailQueueItemDecoratorFactory, queueName, new NoopMetricFactory()); - } - - @Before - public void setUp() throws Exception { - ConnectionFactory connectionFactory = createConnectionFactory(); - queue = createQueue(connectionFactory, new RawMailQueueItemDecoratorFactory(), QUEUE_NAME); - } - - @Test - public void testFIFO() throws Exception { - // should be empty - assertEquals(0, queue.getSize()); - - Mail mail = createMail(); - Mail mail2 = createMail(); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - - MailQueueItem item = queue.deQueue(); - checkMail(mail, item.getMail()); - item.done(false); - - TimeUnit.MILLISECONDS.sleep(200); - - // ok we should get the same email again - assertEquals(2, queue.getSize()); - MailQueueItem item2 = queue.deQueue(); - checkMail(mail, item2.getMail()); - item2.done(true); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(1, queue.getSize()); - MailQueueItem item3 = queue.deQueue(); - checkMail(mail2, item3.getMail()); - item3.done(true); - - TimeUnit.MILLISECONDS.sleep(200); - - // should be empty - assertEquals(0, queue.getSize()); - } - - @Test - public void dequeueShouldPreserveState() throws Exception { - Mail mail = createMail(); - String state = "state"; - mail.setState(state); - - queue.enQueue(mail); - - MailQueueItem item = queue.deQueue(); - try { - assertThat(item.getMail().getState()).isEqualTo(state); - } finally { - item.done(true); - } - } - - @Test - public void testDelayedDeQueue() throws Exception { - // should be empty - assertEquals(0, queue.getSize()); - - Mail mail = createMail(); - Mail mail2 = createMail(); - - long enqueueTime = System.currentTimeMillis(); - queue.enQueue(mail, 3, TimeUnit.SECONDS); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - - // as we enqueued the mail with delay we should get mail2 first - MailQueueItem item = queue.deQueue(); - checkMail(mail2, item.getMail()); - item.done(true); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(1, queue.getSize()); - MailQueueItem item2 = queue.deQueue(); - long dequeueTime = System.currentTimeMillis() - enqueueTime; - checkMail(mail, item2.getMail()); - item2.done(true); - assertTrue(dequeueTime >= 2000); - TimeUnit.MILLISECONDS.sleep(200); - - // should be empty - assertEquals(0, queue.getSize()); - } - - @Test - public void testFlush() throws Exception { - // should be empty - assertEquals(0, queue.getSize()); - - final Mail mail = createMail(); - - long enqueueTime = System.currentTimeMillis(); - queue.enQueue(mail, 30, TimeUnit.SECONDS); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(1, queue.getSize()); - - Thread flushThread = new Thread(() -> { - try { - // wait for 2 seconds then flush the queue - TimeUnit.MILLISECONDS.sleep(4000); - assertEquals(1, queue.flush()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - }); - flushThread.start(); - - // this will block until flush is called - MailQueueItem item = queue.deQueue(); - checkMail(mail, item.getMail()); - item.done(true); - - long dequeueTime = System.currentTimeMillis() - enqueueTime; - - assertEquals(0, queue.getSize()); - - // check if the flush kicked in - assertTrue(dequeueTime < 30 * 1000); - } - - @Test - public void testRemoveWithRecipient() throws Exception { - assertEquals(0, queue.getSize()); - - Mail mail = createMail(); - mail.setRecipients(Arrays.asList(new MailAddress("remove@me1"))); - - Mail mail2 = createMail(); - mail2.setRecipients(Arrays.asList(new MailAddress("remove@me2"))); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - assertEquals(1, queue.remove(ManageableMailQueue.Type.Recipient, "remove@me1")); - - TimeUnit.MILLISECONDS.sleep(200); - assertEquals(1, queue.getSize()); - - assertEquals(1, queue.remove(ManageableMailQueue.Type.Recipient, "remove@me2")); - assertEquals(0, queue.getSize()); - - } - - @Test - public void testRemoveWithSender() throws Exception { - assertEquals(0, queue.getSize()); - - MailImpl mail = createMail(); - mail.setSender(new MailAddress("remove@me1")); - - MailImpl mail2 = createMail(); - mail2.setSender(new MailAddress("remove@me2")); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - assertEquals(1, queue.remove(ManageableMailQueue.Type.Sender, "remove@me1")); - - TimeUnit.MILLISECONDS.sleep(200); - assertEquals(1, queue.getSize()); - - assertEquals(1, queue.remove(ManageableMailQueue.Type.Sender, "remove@me2")); - assertEquals(0, queue.getSize()); - - } - - @Test - public void testRemoveWithName() throws Exception { - assertEquals(0, queue.getSize()); - - MailImpl mail = createMail(); - mail.setName("remove@me1"); - - MailImpl mail2 = createMail(); - mail2.setName("remove@me2"); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - assertEquals(1, queue.remove(ManageableMailQueue.Type.Name, "remove@me1")); - - TimeUnit.MILLISECONDS.sleep(200); - assertEquals(1, queue.getSize()); - - assertEquals(1, queue.remove(ManageableMailQueue.Type.Name, "remove@me2")); - assertEquals(0, queue.getSize()); - - } - - protected MailImpl createMail() throws MessagingException { - MailImpl mail = new MailImpl(); - mail.setName("" + System.currentTimeMillis()); - mail.setAttribute("test1", System.currentTimeMillis()); - mail.setErrorMessage(UUID.randomUUID().toString()); - mail.setLastUpdated(new Date()); - mail.setRecipients(Arrays.asList(new MailAddress("test@test"), new MailAddress("test@test2"))); - mail.setSender(new MailAddress("sender@senderdomain")); - - MimeMessage message = new MimeMessage(Session.getInstance(new Properties())); - message.setText("test"); - message.setHeader("testheader", "testvalie"); - message.saveChanges(); - mail.setMessage(message); - return mail; - - } - - @SuppressWarnings("unchecked") - protected void checkMail(Mail enqueuedMail, Mail dequeuedMail) throws MessagingException, IOException { - assertEquals(enqueuedMail.getErrorMessage(), dequeuedMail.getErrorMessage()); - assertEquals(enqueuedMail.getMessageSize(), dequeuedMail.getMessageSize()); - assertEquals(enqueuedMail.getName(), dequeuedMail.getName()); - assertEquals(enqueuedMail.getRemoteAddr(), dequeuedMail.getRemoteAddr()); - assertEquals(enqueuedMail.getState(), dequeuedMail.getState()); - assertEquals(enqueuedMail.getLastUpdated(), dequeuedMail.getLastUpdated()); - assertEquals(enqueuedMail.getRemoteHost(), dequeuedMail.getRemoteHost()); - assertEquals(enqueuedMail.getSender(), dequeuedMail.getSender()); - - assertEquals(enqueuedMail.getRecipients().size(), dequeuedMail.getRecipients().size()); - Iterator<String> attributes = enqueuedMail.getAttributeNames(); - while (attributes.hasNext()) { - String name = attributes.next(); - assertNotNull(dequeuedMail.getAttribute(name)); - } - - MimeMessage enqueuedMsg = enqueuedMail.getMessage(); - MimeMessage dequeuedMsg = dequeuedMail.getMessage(); - Enumeration<String> enQueuedHeaders = enqueuedMsg.getAllHeaderLines(); - Enumeration<String> deQueuedHeaders = dequeuedMsg.getAllHeaderLines(); - while (enQueuedHeaders.hasMoreElements()) { - assertEquals(enQueuedHeaders.nextElement(), deQueuedHeaders.nextElement()); - - } - assertFalse(deQueuedHeaders.hasMoreElements()); - - assertEquals(enqueuedMsg.getContent(), dequeuedMsg.getContent()); - - } - - @Test - public void testPrioritySupport() throws Exception { - // should be empty - assertEquals(0, queue.getSize()); - - Mail mail = createMail(); - Mail mail2 = createMail(); - mail2.setAttribute(JMSMailQueue.MAIL_PRIORITY, JMSMailQueue.HIGH_PRIORITY); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - - // we should get mail2 first as it has a higher priority set - assertEquals(2, queue.getSize()); - MailQueueItem item2 = queue.deQueue(); - checkMail(mail2, item2.getMail()); - item2.done(true); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(1, queue.getSize()); - MailQueueItem item3 = queue.deQueue(); - checkMail(mail, item3.getMail()); - item3.done(true); - - TimeUnit.MILLISECONDS.sleep(200); - - // should be empty - assertEquals(0, queue.getSize()); - } - - @Test - public void testBrowse() throws Exception { - // should be empty - assertEquals(0, queue.getSize()); - - Mail mail = createMail(); - Mail mail2 = createMail(); - - queue.enQueue(mail); - queue.enQueue(mail2); - - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(2, queue.getSize()); - - MailQueueIterator it = queue.browse(); - checkMail(mail, it.next().getMail()); - checkMail(mail2, it.next().getMail()); - assertFalse(it.hasNext()); - it.close(); - - assertEquals(2, queue.getSize()); - MailQueueItem item2 = queue.deQueue(); - checkMail(mail, item2.getMail()); - item2.done(true); - TimeUnit.MILLISECONDS.sleep(200); - - assertEquals(1, queue.getSize()); - it = queue.browse(); - checkMail(mail2, it.next().getMail()); - assertFalse(it.hasNext()); - it.close(); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5ba4546f/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/LegacyJMSMailQueueTest.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/LegacyJMSMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/LegacyJMSMailQueueTest.java deleted file mode 100644 index 82bf3e2..0000000 --- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/LegacyJMSMailQueueTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.apache.james.queue.jms; - -import java.util.Arrays; - -import org.apache.activemq.broker.BrokerService; -import org.apache.activemq.broker.region.policy.PolicyEntry; -import org.apache.activemq.broker.region.policy.PolicyMap; -import org.junit.AfterClass; -import org.junit.BeforeClass; - -public class LegacyJMSMailQueueTest extends AbstractJMSMailQueueTest { - - private static BrokerService broker; - - @BeforeClass - public static void setUpBroker() throws Exception { - broker = createBroker(); - broker.start(); - } - - @AfterClass - public static void tearDownBroker() throws Exception { - if (broker != null) { - broker.stop(); - } - } - - protected static BrokerService createBroker() throws Exception { - BrokerService aBroker = new BrokerService(); - aBroker.setPersistent(false); - aBroker.setUseJmx(false); - aBroker.addConnector("tcp://127.0.0.1:61616"); - - // Enable priority support - PolicyMap pMap = new PolicyMap(); - PolicyEntry entry = new PolicyEntry(); - entry.setPrioritizedMessages(true); - entry.setQueue(QUEUE_NAME); - pMap.setPolicyEntries(Arrays.asList(entry)); - aBroker.setDestinationPolicy(pMap); - - return aBroker; - } - -} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
