[jboss-cvs] JBoss Messaging SVN: r4561 - in trunk: 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
Mon Jun 23 11:58:02 EDT 2008


Author: ataylor
Date: 2008-06-23 11:58:02 -0400 (Mon, 23 Jun 2008)
New Revision: 4561

Added:
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java
Log:
more tests and tweaks

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java	2008-06-23 15:56:26 UTC (rev 4560)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java	2008-06-23 15:58:02 UTC (rev 4561)
@@ -62,10 +62,6 @@
    
    // Constructors --------------------------------------------------
 
-   public MessageReferenceImpl()
-   {
-   }
-
    public MessageReferenceImpl(final MessageReferenceImpl other, final Queue queue)
    {
       this.deliveryCount = other.deliveryCount;
@@ -192,7 +188,7 @@
       		binding = postOffice.addBinding(expiryQueue, expiryQueue, null, true, false);
       	}
       	
-         ServerMessage copyMessage = makeCopyForDLQOrExpiry(false, persistenceManager);
+         ServerMessage copyMessage = makeCopyForDLQOrExpiry(true, persistenceManager);
          
          copyMessage.setDestination(binding.getAddress());
          

Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	2008-06-23 15:58:02 UTC (rev 4561)
@@ -0,0 +1,305 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.tests.unit.core.server.impl;
+
+import org.easymock.EasyMock;
+import org.jboss.messaging.core.message.impl.MessageImpl;
+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.MessageReference;
+import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.server.impl.MessageReferenceImpl;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.SimpleString;
+
+import java.util.ArrayList;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MessageReferenceImplTest extends UnitTestCase
+{
+   public void testDeliveryCount()
+   {
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      assertEquals(messageReference.getDeliveryCount(), 0);
+      messageReference.incrementDeliveryCount();
+      messageReference.incrementDeliveryCount();
+      messageReference.incrementDeliveryCount();
+      messageReference.incrementDeliveryCount();
+      messageReference.incrementDeliveryCount();
+      assertEquals(messageReference.getDeliveryCount(), 5);
+      messageReference.setDeliveryCount(0);
+      assertEquals(messageReference.getDeliveryCount(), 0);
+   }
+
+   public void testCopy()
+   {
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue2 = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      messageReference.setDeliveryCount(999);
+      messageReference.setScheduledDeliveryTime(System.currentTimeMillis());
+      MessageReference messageReferenceCopy = messageReference.copy(queue2);
+      assertEquals(messageReferenceCopy.getDeliveryCount(), messageReference.getDeliveryCount());
+      assertEquals(messageReferenceCopy.getScheduledDeliveryTime(), messageReference.getScheduledDeliveryTime());
+      assertEquals(messageReferenceCopy.getMessage(), messageReference.getMessage());
+      assertEquals(messageReferenceCopy.getQueue(), queue2);
+   }
+
+   public void testCancelDurable() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceCancelled();
+      EasyMock.expect(queue.getName()).andReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(true);
+      sm.updateDeliveryCount(messageReference);
+      EasyMock.replay(sm, po, repos, serverMessage, queue);
+      assertTrue(messageReference.cancel(sm, po, repos));
+      EasyMock.verify(sm, po, repos, serverMessage, queue);
+   }
+
+   public void testCancelNonDurable() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      StorageManager sm = EasyMock.createStrictMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceCancelled();
+      EasyMock.expect(queue.getName()).andReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(false);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(false);
+      EasyMock.replay(sm, po, repos, serverMessage, queue);
+      assertTrue(messageReference.cancel(sm, po, repos));
+      EasyMock.verify(sm, po, repos, serverMessage, queue);
+   }
+
+   public void testCancelToDLQExists() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      queueSettings.setMaxDeliveryAttempts(1);
+      SimpleString dlqName = new SimpleString("testDLQ");
+      queueSettings.setDLQ(dlqName);
+      Binding dlqBinding = EasyMock.createStrictMock(Binding.class);
+      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      messageReference.setDeliveryCount(1);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceCancelled();
+      EasyMock.expect(queue.getName()).andStubReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(true);
+      sm.updateDeliveryCount(messageReference);
+      EasyMock.expect(po.getBinding(dlqName)).andReturn(dlqBinding);
+      EasyMock.expect(serverMessage.copy()).andReturn(serverMessage);
+      EasyMock.expect(sm.generateMessageID()).andReturn(2l);
+      serverMessage.setMessageID(2);
+      serverMessage.setExpiration(0);
+      EasyMock.expect(po.route(serverMessage)).andReturn(new ArrayList<MessageReference>());
+      EasyMock.expect(serverMessage.getDurableRefCount()).andReturn(0);
+      EasyMock.expect(serverMessage.decrementDurableRefCount()).andReturn(0);
+      EasyMock.expect(sm.generateTransactionID()).andReturn(1l);
+      EasyMock.replay(sm, po, repos, serverMessage, queue);
+      assertFalse(messageReference.cancel(sm, po, repos));
+      EasyMock.verify(sm, po, repos, serverMessage, queue);
+   }
+
+   public void testCancelToDLQDoesntExist() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      queueSettings.setMaxDeliveryAttempts(1);
+      SimpleString dlqName = new SimpleString("testDLQ");
+      queueSettings.setDLQ(dlqName);
+      Binding dlqBinding = EasyMock.createStrictMock(Binding.class);
+      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      messageReference.setDeliveryCount(1);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceCancelled();
+      EasyMock.expect(queue.getName()).andStubReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(true);
+      sm.updateDeliveryCount(messageReference);
+      EasyMock.expect(po.getBinding(dlqName)).andReturn(null);
+      EasyMock.expect(po.addBinding(dlqName, dlqName, null, true, false)).andReturn(dlqBinding);
+      EasyMock.expect(serverMessage.copy()).andReturn(serverMessage);
+      EasyMock.expect(sm.generateMessageID()).andReturn(2l);
+      serverMessage.setMessageID(2);
+      serverMessage.setExpiration(0);
+      EasyMock.expect(po.route(serverMessage)).andReturn(new ArrayList<MessageReference>());
+      EasyMock.expect(serverMessage.getDurableRefCount()).andReturn(0);
+      EasyMock.expect(serverMessage.decrementDurableRefCount()).andReturn(0);
+      EasyMock.expect(sm.generateTransactionID()).andReturn(1l);
+      EasyMock.replay(sm, po, repos, serverMessage, queue);
+      assertFalse(messageReference.cancel(sm, po, repos));
+      EasyMock.verify(sm, po, repos, serverMessage, queue);
+   }
+
+   public void testExpire() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      queueSettings.setMaxDeliveryAttempts(1);
+      SimpleString dlqName = new SimpleString("testDLQ");
+      queueSettings.setDLQ(dlqName);
+      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      messageReference.setDeliveryCount(1);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceAcknowledged(messageReference);
+      EasyMock.expect(queue.getName()).andStubReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.decrementDurableRefCount()).andReturn(0);
+      EasyMock.expect(sm.generateTransactionID()).andReturn(1l);
+
+      EasyMock.replay(sm, po, repos, serverMessage, queue);
+      messageReference.expire(sm, po, repos);
+      EasyMock.verify(sm, po, repos, serverMessage, queue);
+   }
+
+   public void testExpireToQExists() throws Exception
+   {
+      QueueSettings queueSettings = new QueueSettings();
+      queueSettings.setMaxDeliveryAttempts(1);
+      SimpleString expQName = new SimpleString("testexpQ");
+      Binding expQBinding = EasyMock.createStrictMock(Binding.class);
+      queueSettings.setExpiryQueue(expQName);
+      StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+      Queue queue = EasyMock.createStrictMock(Queue.class);
+      MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+      messageReference.setDeliveryCount(1);
+      SimpleString queueName = new SimpleString("queueName");
+      queue.referenceAcknowledged(messageReference);
+      EasyMock.expect(queue.getName()).andStubReturn(queueName);
+      EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+      EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+      EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+      EasyMock.expect(queue.isDurable()).andStubReturn(true);
+      EasyMock.expect(sm.generateMessageID()).andReturn(2l);
+      EasyMock.expect(sm.generateTransactionID()).andReturn(1l);
+      EasyMock.expect(po.getBinding(expQName)).andReturn(expQBinding);
+      EasyMock.expect(serverMessage.copy()).andReturn(serverMessage);
+      serverMessage.setMessageID(2);
+      serverMessage.setExpiration(0);
+      serverMessage.putLongProperty(EasyMock.eq(MessageImpl.HDR_ACTUAL_EXPIRY_TIME), EasyMock.anyLong());
+      EasyMock.expect(expQBinding.getAddress()).andStubReturn(expQName);
+      serverMessage.setDestination(expQName);
+      EasyMock.expect(po.route(serverMessage)).andReturn(new ArrayList<MessageReference>());
+      EasyMock.expect(serverMessage.getDurableRefCount()).andReturn(0);
+      EasyMock.expect(serverMessage.decrementDurableRefCount()).andReturn(0);
+      EasyMock.replay(sm, po, repos, serverMessage, queue, expQBinding);
+      messageReference.expire(sm, po, repos);
+      EasyMock.verify(sm, po, repos, serverMessage, queue, expQBinding);
+   }
+
+   public void testExpireToQDoesntExist() throws Exception
+      {
+         QueueSettings queueSettings = new QueueSettings();
+         queueSettings.setMaxDeliveryAttempts(1);
+         SimpleString expQName = new SimpleString("testexpQ");
+         Binding expQBinding = EasyMock.createStrictMock(Binding.class);
+         queueSettings.setExpiryQueue(expQName);
+         StorageManager sm = EasyMock.createNiceMock(StorageManager.class);
+         PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+         HierarchicalRepository<QueueSettings> repos = EasyMock.createStrictMock(HierarchicalRepository.class);
+         ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
+         Queue queue = EasyMock.createStrictMock(Queue.class);
+         MessageReferenceImpl messageReference = new DummyMessageReference(serverMessage, queue);
+         messageReference.setDeliveryCount(1);
+         SimpleString queueName = new SimpleString("queueName");
+         queue.referenceAcknowledged(messageReference);
+         EasyMock.expect(queue.getName()).andStubReturn(queueName);
+         EasyMock.expect(repos.getMatch(queueName.toString())).andStubReturn(queueSettings);
+         EasyMock.expect(serverMessage.isDurable()).andStubReturn(true);
+         EasyMock.expect(serverMessage.getMessageID()).andStubReturn(999l);
+         EasyMock.expect(queue.isDurable()).andStubReturn(true);
+         EasyMock.expect(sm.generateMessageID()).andReturn(2l);
+         EasyMock.expect(sm.generateTransactionID()).andReturn(1l);
+         EasyMock.expect(po.getBinding(expQName)).andReturn(null);
+         EasyMock.expect(po.addBinding(expQName, expQName, null, true, false)).andReturn(expQBinding);
+         EasyMock.expect(serverMessage.copy()).andReturn(serverMessage);
+         serverMessage.setMessageID(2);
+         serverMessage.setExpiration(0);
+         serverMessage.putLongProperty(EasyMock.eq(MessageImpl.HDR_ACTUAL_EXPIRY_TIME), EasyMock.anyLong());
+         EasyMock.expect(expQBinding.getAddress()).andStubReturn(expQName);
+         serverMessage.setDestination(expQName);
+         EasyMock.expect(po.route(serverMessage)).andReturn(new ArrayList<MessageReference>());
+         EasyMock.expect(serverMessage.getDurableRefCount()).andReturn(0);
+         EasyMock.expect(serverMessage.decrementDurableRefCount()).andReturn(0);
+         EasyMock.replay(sm, po, repos, serverMessage, queue, expQBinding);
+         messageReference.expire(sm, po, repos);
+         EasyMock.verify(sm, po, repos, serverMessage, queue, expQBinding);
+      }
+
+   //we need to override the constructor for creation
+   class DummyMessageReference extends MessageReferenceImpl
+   {
+      protected DummyMessageReference(ServerMessage message, Queue queue)
+      {
+         super(message, queue);
+      }
+   }
+}




More information about the jboss-cvs-commits mailing list