[jboss-cvs] JBoss Messaging SVN: r4758 - in branches/Branch_JBMESSAGING-1303: tests/src/org/jboss/messaging/tests/unit/core/server/impl and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 31 08:10:55 EDT 2008


Author: jmesnil
Date: 2008-07-31 08:10:55 -0400 (Thu, 31 Jul 2008)
New Revision: 4758

Modified:
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
   branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
Log:
added QueueImplTest.testExpireMessage()

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2008-07-31 11:57:19 UTC (rev 4757)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2008-07-31 12:10:55 UTC (rev 4758)
@@ -525,7 +525,8 @@
       lock.unlock();          
    }
    
-   public boolean expireMessage(long messageID, StorageManager storageManager, PostOffice postOffice, HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception 
+   public boolean expireMessage(final long messageID, final StorageManager storageManager, 
+         final PostOffice postOffice, final HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception 
    {
       Iterator<MessageReference> iter = messageReferences.iterator();
 

Modified: branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2008-07-31 11:57:19 UTC (rev 4757)
+++ branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2008-07-31 12:10:55 UTC (rev 4758)
@@ -25,6 +25,7 @@
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
+import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -38,15 +39,21 @@
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.Binding;
+import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.Consumer;
 import org.jboss.messaging.core.server.DistributionPolicy;
 import org.jboss.messaging.core.server.HandleStatus;
 import org.jboss.messaging.core.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.core.server.impl.QueueImpl;
 import org.jboss.messaging.core.server.impl.RoundRobinDistributionPolicy;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.tests.unit.core.server.impl.fakes.FakeConsumer;
 import org.jboss.messaging.tests.unit.core.server.impl.fakes.FakeFilter;
+import org.jboss.messaging.tests.util.RandomUtil;
 import org.jboss.messaging.tests.util.UnitTestCase;
 import org.jboss.messaging.util.SimpleString;
 
@@ -1406,8 +1413,56 @@
       EasyMock.verify(consumer);
 
    }
+   
+   public void testExpireMessage() throws Exception
+   {
+      long messageID = randomLong();
+      final SimpleString expiryQueue = new SimpleString("expiryQueue");
+      Queue queue = new QueueImpl(1, queue1, null, false, true, false, -1, scheduledExecutor);
+      MessageReference messageReference = generateReference(queue, messageID);
+      StorageManager storageManager = EasyMock.createMock(StorageManager.class);
+      EasyMock.expect(storageManager.generateTransactionID()).andReturn(randomLong());
+      EasyMock.expect(storageManager.generateMessageID()).andReturn(randomLong());
+      storageManager.storeDeleteTransactional(EasyMock.anyLong(), EasyMock.eq(messageID));
+      storageManager.commit(EasyMock.anyLong());
+      PostOffice postOffice = EasyMock.createMock(PostOffice.class);      
+      Binding expiryBinding = EasyMock.createMock(Binding.class);
+      EasyMock.expect(expiryBinding.getAddress()).andStubReturn(expiryQueue);
+      EasyMock.expect(postOffice.getBinding(expiryQueue)).andReturn(expiryBinding );
+      EasyMock.expect(postOffice.route(EasyMock.isA(ServerMessage.class))).andReturn(new ArrayList<MessageReference>());
+      HierarchicalRepository<QueueSettings> queueSettingsRepository = EasyMock.createMock(HierarchicalRepository.class);
+      QueueSettings queueSettings = new QueueSettings() 
+      {
+      @Override
+      public SimpleString getExpiryQueue()
+      {
+         return expiryQueue;
+      } 
+      };
+      EasyMock.expect(queueSettingsRepository.getMatch(queue1.toString())).andStubReturn(queueSettings);
 
+      EasyMock.replay(storageManager, postOffice, queueSettingsRepository, expiryBinding);
 
+      assertEquals(0, queue.getMessageCount());
+      assertEquals(0, queue.getDeliveringCount());
+      assertEquals(0, queue.getSizeBytes());
+      
+      queue.addLast(messageReference);
+      
+      assertEquals(1, queue.getMessageCount());
+      assertEquals(0, queue.getDeliveringCount());
+      assertTrue(queue.getSizeBytes() > 0);
+      
+      queue.expireMessage(messageID, storageManager , postOffice, queueSettingsRepository);
+      
+      assertEquals(0, queue.getMessageCount());
+      assertEquals(0, queue.getDeliveringCount());
+      assertEquals(0, queue.getSizeBytes());
+
+      EasyMock.verify(storageManager, postOffice, queueSettingsRepository, expiryBinding);
+   }
+
+
    // Inner classes ---------------------------------------------------------------
 
    class AddtoQueueRunner implements Runnable




More information about the jboss-cvs-commits mailing list