[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