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]

Reply via email to