You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/12/23 20:33:27 UTC
svn commit: r1052362 -
/james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java
Author: norman
Date: Thu Dec 23 19:33:26 2010
New Revision: 1052362
URL: http://svn.apache.org/viewvc?rev=1052362&view=rev
Log:
Add tests for flush and delayed dequeue
Modified:
james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java
Modified: james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java?rev=1052362&r1=1052361&r2=1052362&view=diff
==============================================================================
--- james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java (original)
+++ james/server/trunk/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java Thu Dec 23 19:33:26 2010
@@ -25,6 +25,7 @@ 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;
@@ -127,6 +128,86 @@ public class JMSMailQueueTest extends Te
assertEquals(0, queue.getSize());
}
+ public void testDelayedDeQueue() throws MessagingException, InterruptedException, IOException {
+ // 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);
+
+ Thread.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);
+
+ Thread.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);
+ Thread.sleep(200);
+
+ // should be empty
+ assertEquals(0, queue.getSize());
+ }
+
+ public void testFlush() throws MessagingException, InterruptedException, IOException {
+ // should be empty
+ assertEquals(0, queue.getSize());
+
+ final Mail mail = createMail();
+
+
+ long enqueueTime = System.currentTimeMillis();
+ queue.enQueue(mail, 30, TimeUnit.SECONDS);
+
+ Thread.sleep(200);
+
+ assertEquals(1, queue.getSize());
+
+ Thread flushThread = new Thread(new Runnable() {
+
+ public void run() {
+ try {
+ // wait for 2 seconds then flush the queue
+ Thread.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);
+ }
+
public void testRemoveWithRecipient() throws MessagingException, InterruptedException {
assertEquals(0, queue.getSize());
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org