[jboss-cvs] JBoss Messaging SVN: r3581 - in trunk: src/main/org/jboss/messaging/core and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 17 06:53:53 EST 2008
Author: timfox
Date: 2008-01-17 06:53:53 -0500 (Thu, 17 Jan 2008)
New Revision: 3581
Modified:
trunk/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java
trunk/src/main/org/jboss/messaging/core/PriorityLinkedList.java
trunk/src/main/org/jboss/messaging/core/impl/PriorityLinkedListImpl.java
trunk/src/main/org/jboss/messaging/core/impl/QueueImpl.java
trunk/tests/src/org/jboss/messaging/core/impl/test/unit/QueueTest.java
trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java
Log:
Fixed failing test
Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -188,6 +188,8 @@
// adding the consumer to the queue
messageQueue.addConsumer(this);
+
+ messageQueue.deliver();
log.trace(this + " constructed");
}
Modified: trunk/src/main/org/jboss/messaging/core/PriorityLinkedList.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/PriorityLinkedList.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/src/main/org/jboss/messaging/core/PriorityLinkedList.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -55,6 +55,4 @@
ListIterator<T> iterator();
boolean isEmpty();
-
- void dump();
}
Modified: trunk/src/main/org/jboss/messaging/core/impl/PriorityLinkedListImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/PriorityLinkedListImpl.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/src/main/org/jboss/messaging/core/impl/PriorityLinkedListImpl.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -22,13 +22,11 @@
package org.jboss.messaging.core.impl;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.NoSuchElementException;
-import org.jboss.logging.Logger;
import org.jboss.messaging.core.PriorityLinkedList;
/**
@@ -42,9 +40,7 @@
* $Id: BasicPrioritizedDeque.java 1174 2006-08-02 14:14:32Z timfox $
*/
public class PriorityLinkedListImpl<T> implements PriorityLinkedList<T>
-{
- private static final Logger log = Logger.getLogger(PriorityLinkedListImpl.class);
-
+{
private List<LinkedList<T>> linkedLists;
private int priorities;
@@ -179,26 +175,6 @@
return new PriorityLinkedListIterator();
}
- public void dump()
- {
- log.debug("Dumping " + this);
- log.debug("Size:" + size);
- log.debug("===============");
-
- for (int i = 0; i < linkedLists.size(); i++)
- {
- log.debug("Priority:" + i);
- log.debug("----------------");
-
- Iterator<T> iter = linkedLists.get(i).iterator();
-
- while (iter.hasNext())
- {
- log.debug("Ref: "+ iter.next());
- }
- }
- }
-
private void initLists()
{
linkedLists = new ArrayList<LinkedList<T>>();
Modified: trunk/src/main/org/jboss/messaging/core/impl/QueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/QueueImpl.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/src/main/org/jboss/messaging/core/impl/QueueImpl.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -54,11 +54,7 @@
private static final Logger log = Logger.getLogger(QueueImpl.class);
private static final boolean trace = log.isTraceEnabled();
-
- private boolean hashAssigned;
-
- private int hash;
-
+
protected volatile long id = -1;
protected String name;
@@ -195,10 +191,12 @@
if (reference == null)
{
- if (iterator == null)
+ if (messageReferences.isEmpty())
{
//We delivered all the messages - go into direct delivery
direct = true;
+
+ promptDelivery = false;
}
return;
}
@@ -368,14 +366,9 @@
public boolean equals(Object other)
{
- if (!(other instanceof QueueImpl))
- {
- return false;
- }
-
QueueImpl qother = (QueueImpl)other;
- return this.id == qother.id && this.name.equals(qother.name);
+ return name.equals(qother.name);
}
public int hashCode()
@@ -418,8 +411,6 @@
else if (status == HandleStatus.NO_MATCH)
{
add = true;
-
- promptDelivery = true;
}
if (add)
@@ -444,7 +435,7 @@
}
if (!direct && promptDelivery)
- {
+ {
//We have consumers with filters which don't match, so we need to prompt delivery every time
//a new message arrives - this is why you really shouldn't use filters with queues - in most cases
//it's an ant-pattern since it would cause a queue scan on each message
@@ -536,6 +527,8 @@
}
else if (status == HandleStatus.NO_MATCH)
{
+ promptDelivery = true;
+
filterRejected = true;
}
Modified: trunk/tests/src/org/jboss/messaging/core/impl/test/unit/QueueTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/impl/test/unit/QueueTest.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/tests/src/org/jboss/messaging/core/impl/test/unit/QueueTest.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -840,106 +840,6 @@
assertEquals(2 * maxSize, queue.getMaxSize());
}
- /* Queues don't have filters internally - this is evaulated by the post office
- public void testQueueWithFilter()
- {
- Filter filter = new FakeFilter("fruit", "orange");
-
- Queue queue = new QueueImpl(1, "queue1", filter, false, true, false, -1);
-
- FakeConsumer consumer = new FakeConsumer();
-
- List<MessageReference> refs = new ArrayList<MessageReference>();
-
- MessageReference ref1 = generateReference(queue, 1);
-
- ref1.getMessage().putHeader("fruit", "banana");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addLast(ref1));
-
- MessageReference ref2 = generateReference(queue, 2);
-
- ref2.getMessage().putHeader("cheese", "stilton");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addLast(ref2));
-
- MessageReference ref3 = generateReference(queue, 3);
-
- ref3.getMessage().putHeader("cake", "sponge");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addLast(ref3));
-
- MessageReference ref4 = generateReference(queue, 4);
-
- ref4.getMessage().putHeader("fruit", "orange");
-
- refs.add(ref4);
-
- assertEquals(HandleStatus.HANDLED, queue.addLast(ref4));
-
- MessageReference ref5 = generateReference(queue, 5);
-
- ref5.getMessage().putHeader("fruit", "apple");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addLast(ref5));
-
- MessageReference ref6 = generateReference(queue, 6);
-
- ref6.getMessage().putHeader("fruit", "orange");
-
- refs.add(ref6);
-
- assertEquals(HandleStatus.HANDLED, queue.addLast(ref6));
-
- //Add a few first
-
- MessageReference ref7 = generateReference(queue, 7);
-
- ref7.getMessage().putHeader("fruit", "banana");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addFirst(ref7));
-
- MessageReference ref8 = generateReference(queue, 8);
-
- ref8.getMessage().putHeader("fruit", "nectarine");
-
- assertEquals(HandleStatus.NO_MATCH, queue.addFirst(ref8));
-
- MessageReference ref9 = generateReference(queue, 9);
-
- ref9.getMessage().putHeader("fruit", "orange");
-
- assertEquals(HandleStatus.HANDLED, queue.addFirst(ref9));
-
- List<MessageReference> newRefs = new ArrayList<MessageReference>();
-
- newRefs.add(ref9);
- newRefs.addAll(refs);
-
- queue.setFilter(null);
-
- MessageReference ref10 = generateReference(queue, 10);
-
- ref10.getMessage().putHeader("sport", "skiing");
-
- assertEquals(HandleStatus.HANDLED, queue.addLast(ref10));
-
- newRefs.add(ref10);
-
- assertEquals(4, queue.getMessageCount());
- assertEquals(0, queue.getScheduledCount());
-
- queue.addConsumer(consumer);
-
- queue.deliver();
-
- assertEquals(0, queue.getMessageCount());
- assertEquals(0, queue.getScheduledCount());
-
- assertRefListsIdenticalRefs(newRefs, consumer.getReferences());
- }
- */
-
public void testWithPriorities()
{
Queue queue = new QueueImpl(1, "queue1", null, false, true, false, -1);
@@ -1007,6 +907,15 @@
testConsumerWithFilters(false);
}
+ public void testConsumerWithFilterAddAndRemove()
+ {
+ Queue queue = new QueueImpl(1, "queue1", null, false, true, false, -1);
+
+ Filter filter = new FakeFilter("fruit", "orange");
+
+ FakeConsumer consumer = new FakeConsumer(filter);
+ }
+
public void testList()
{
Queue queue = new QueueImpl(1, "queue1", null, false, true, false, -1);
@@ -1097,6 +1006,77 @@
}
*/
+ public void testConsumeWithFiltersAddAndRemoveConsumer()
+ {
+ Queue queue = new QueueImpl(1, "queue1", null, false, true, false, -1);
+
+ Filter filter = new FakeFilter("fruit", "orange");
+
+ FakeConsumer consumer = new FakeConsumer(filter);
+
+ queue.addConsumer(consumer);
+
+ List<MessageReference> refs = new ArrayList<MessageReference>();
+
+ MessageReference ref1 = generateReference(queue, 1);
+
+ ref1.getMessage().putHeader("fruit", "banana");
+
+ assertEquals(HandleStatus.HANDLED, queue.addLast(ref1));
+
+ MessageReference ref2 = generateReference(queue, 2);
+
+ ref2.getMessage().putHeader("fruit", "orange");
+
+ assertEquals(HandleStatus.HANDLED, queue.addLast(ref2));
+
+ refs.add(ref2);
+
+
+ assertEquals(2, queue.getMessageCount());
+
+ assertEquals(1, consumer.getReferences().size());
+
+ assertEquals(1, queue.getDeliveringCount());
+
+ assertRefListsIdenticalRefs(refs, consumer.getReferences());
+
+ queue.referenceAcknowledged();
+
+ queue.removeConsumer(consumer);
+
+ queue.addConsumer(consumer);
+
+ queue.deliver();
+
+
+ refs.clear();
+
+ consumer.clearReferences();
+
+ MessageReference ref3 = generateReference(queue, 3);
+
+ ref3.getMessage().putHeader("fruit", "banana");
+
+ assertEquals(HandleStatus.HANDLED, queue.addLast(ref3));
+
+ MessageReference ref4 = generateReference(queue, 4);
+
+ ref4.getMessage().putHeader("fruit", "orange");
+
+ assertEquals(HandleStatus.HANDLED, queue.addLast(ref4));
+
+ refs.add(ref4);
+
+ assertEquals(3, queue.getMessageCount());
+
+ assertEquals(1, consumer.getReferences().size());
+
+ assertEquals(1, queue.getDeliveringCount());
+
+ assertRefListsIdenticalRefs(refs, consumer.getReferences());
+ }
+
// Private ------------------------------------------------------------------------------
private void testConsumerWithFilters(boolean direct)
@@ -1187,6 +1167,12 @@
assertEquals(4, queue.getDeliveringCount());
}
+
+
+
+
+
+
// Inner classes ---------------------------------------------------------------
class DummyDistributionPolicy implements DistributionPolicy
Modified: trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java 2008-01-16 21:38:26 UTC (rev 3580)
+++ trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java 2008-01-17 11:53:53 UTC (rev 3581)
@@ -412,13 +412,13 @@
for (int j = 0; j < 10; j++)
{
- Message m = sess.createMessage();
+ TextMessage m = sess.createTextMessage("message-a-" + j);
m.setStringProperty("beatle", "john");
prod.send(m);
- m = sess.createMessage();
+ m = sess.createTextMessage("messag-b-" + j);
m.setStringProperty("beatle", "kermit the frog");
@@ -429,7 +429,7 @@
{
Message m = cons1.receive(1000);
- log.info("Got message " + m);
+ // log.info("Got message " + m);
assertNotNull(m);
}
More information about the jboss-cvs-commits
mailing list