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