[Jboss-cvs] JBoss Messaging SVN: r1252 - in trunk: src/main/org/jboss/messaging/core src/main/org/jboss/messaging/core/plugin src/main/org/jboss/messaging/core/plugin/contract src/main/org/jboss/messaging/core/plugin/exchange src/main/org/jboss/messaging/core/plugin/exchange/request tests/src/org/jboss/test/messaging/core tests/src/org/jboss/test/messaging/core/paging tests/src/org/jboss/test/messaging/core/plugin tests/src/org/jboss/test/messaging/core/plugin/base
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Sep 1 18:08:00 EDT 2006
Author: timfox
Date: 2006-09-01 18:07:43 -0400 (Fri, 01 Sep 2006)
New Revision: 1252
Added:
trunk/src/main/org/jboss/messaging/core/plugin/exchange/SharedState.java
trunk/src/main/org/jboss/messaging/core/plugin/exchange/request/SendNodeIdRequest.java
Modified:
trunk/src/main/org/jboss/messaging/core/ChannelSupport.java
trunk/src/main/org/jboss/messaging/core/PagingChannel.java
trunk/src/main/org/jboss/messaging/core/plugin/JDBCPersistenceManager.java
trunk/src/main/org/jboss/messaging/core/plugin/contract/PersistenceManager.java
trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredExchangeSupport.java
trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredTopicExchange.java
trunk/src/main/org/jboss/messaging/core/plugin/exchange/ExchangeSupport.java
trunk/tests/src/org/jboss/test/messaging/core/SimpleReceiver.java
trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java
trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java
trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/ClusteredTopicExchangeTest.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/DirectExchangeTest.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/JDBCPersistenceManagerTest.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/JGroupsUtil.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/TopicExchangeTest.java
trunk/tests/src/org/jboss/test/messaging/core/plugin/base/ExchangeTestBase.java
Log:
Clustering interim commit 3
Modified: trunk/src/main/org/jboss/messaging/core/ChannelSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/ChannelSupport.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/ChannelSupport.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -154,7 +154,7 @@
// Since remoting doesn't currently handle non blocking IO, we still have to wait for the
// result, but when remoting does, we can use a full SEDA approach and get even better
// throughput.
- this.executor.execute(new HandleRunnable(result, sender, r));
+ this.executor.execute(new HandleRunnable(result, sender, r, true));
}
catch (InterruptedException e)
{
@@ -165,10 +165,39 @@
}
else
{
- return handleInternal(sender, r, tx);
+ return handleInternal(sender, r, tx, true);
}
}
+
+ public Delivery handleDontPersist(DeliveryObserver sender, Routable r, Transaction tx)
+ {
+ checkClosed();
+ Future result = new Future();
+
+ if (tx == null)
+ {
+ try
+ {
+ // Instead of executing directly, we add the handle request to the event queue.
+ // Since remoting doesn't currently handle non blocking IO, we still have to wait for the
+ // result, but when remoting does, we can use a full SEDA approach and get even better
+ // throughput.
+ this.executor.execute(new HandleRunnable(result, sender, r, false));
+ }
+ catch (InterruptedException e)
+ {
+ log.warn("Thread interrupted", e);
+ }
+
+ return (Delivery)result.getResult();
+ }
+ else
+ {
+ return handleInternal(sender, r, tx, false);
+ }
+ }
+
// DeliveryObserver implementation --------------------------
public void acknowledge(Delivery d, Transaction tx) throws Throwable
@@ -642,7 +671,7 @@
}
}
- protected Delivery handleInternal(DeliveryObserver sender, Routable r, Transaction tx)
+ protected Delivery handleInternal(DeliveryObserver sender, Routable r, Transaction tx, boolean persist)
{
if (r == null)
{
@@ -683,7 +712,7 @@
return null;
}
- if (ref.isReliable() && recoverable)
+ if (persist && ref.isReliable() && recoverable)
{
// Reliable message in a recoverable state - also add to db
if (trace) { log.trace(this + "adding " + ref + " to database non-transactionally"); }
@@ -724,7 +753,7 @@
if (trace) { log.trace(this + " added transactionally " + ref + " in memory"); }
}
- if (ref.isReliable() && recoverable)
+ if (persist && ref.isReliable() && recoverable)
{
// Reliable message in a recoverable state - also add to db
if (trace) { log.trace(this + "adding " + ref + (tx == null ? " to database non-transactionally" : " in transaction: " + tx)); }
@@ -1084,17 +1113,20 @@
DeliveryObserver sender;
Routable routable;
+
+ boolean persist;
- HandleRunnable(Future result, DeliveryObserver sender, Routable routable)
+ HandleRunnable(Future result, DeliveryObserver sender, Routable routable, boolean persist)
{
this.result = result;
this.sender = sender;
this.routable = routable;
+ this.persist = persist;
}
public void run()
{
- Delivery d = handleInternal(sender, routable, null);
+ Delivery d = handleInternal(sender, routable, null, persist);
result.setResult(d);
}
}
Modified: trunk/src/main/org/jboss/messaging/core/PagingChannel.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/PagingChannel.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/PagingChannel.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -88,6 +88,11 @@
protected long nextPagingOrder;
/**
+ * Are there any paged references in storage?
+ */
+ //protected boolean refsInStorage;
+
+ /**
* @param channelID
* @param ms
* @param pm
@@ -135,15 +140,25 @@
public void load() throws Exception
{
if (trace) { log.trace(this + " loading channel state"); }
-
synchronized (refLock)
{
InitialLoadInfo ili = pm.getInitialReferenceInfos(channelID, fullSize);
+
+ if (ili.getMaxPageOrdering() != null)
+ {
+ //refsInStorage = true;
+
+ firstPagingOrder = ili.getMinPageOrdering().longValue();
+
+ nextPagingOrder = ili.getMaxPageOrdering().longValue() + 1;
+ }
+ else
+ {
+ //refsInStorage = false;
+
+ firstPagingOrder = nextPagingOrder = 0;
+ }
- firstPagingOrder = ili.getMinPageOrdering();
-
- nextPagingOrder = ili.getMaxPageOrdering();
-
Map refMap = processReferences(ili.getRefInfos());
Iterator iter = ili.getRefInfos().iterator();
@@ -180,6 +195,8 @@
{
if (trace) { log.trace(this + " cancelling " + del + " in memory"); }
+ log.info(this + " cancelling " + del + " in memory");
+
boolean removed;
synchronized (deliveryLock)
@@ -209,7 +226,9 @@
MessageReference ref = (MessageReference)messageRefs.removeLast();
- addToDownCache(ref);
+ log.info("Adding ref to downcache");
+
+ addToDownCache(ref, true);
}
}
@@ -258,7 +277,7 @@
{
if (paging)
{
- addToDownCache(ref);
+ addToDownCache(ref, false);
}
else
{
@@ -277,7 +296,7 @@
}
}
- protected void addToDownCache(MessageReference ref) throws Exception
+ protected void addToDownCache(MessageReference ref, boolean cancelling) throws Exception
{
// If the down cache exists then refs are not spilled over immediately,
// but store in the cache and spilled over in one go when the next load is requested,
@@ -288,14 +307,40 @@
// references actually get added to storage, reliable references instead
// just get their page ordering column updated since they will already be in storage
+ //If cancelling then the ref is supposed to go back on the front of the queue segment in storage
+ //so we set the page ordering to be firstPageOrdering - 1
+ //If not cancelling, then the ref should go on the end of the quueue in storage so
+ //we set the page ordering to be nextPageOrdering
+
+ if (cancelling)
+ {
+ ref.setPagingOrder(firstPagingOrder - 1);
+
+ log.info("Cancelling so set paging order to: " + (firstPagingOrder - 1));
+
+ firstPagingOrder--;
+ }
+ else
+ {
+ ref.setPagingOrder(nextPagingOrder);
+
+ log.info("Adding so set paging order to: " + nextPagingOrder);
+
+ nextPagingOrder++;
+ }
+
downCache.add(ref);
if (trace) { log.trace(ref + " sent to downcache"); }
+
+ log.info("Added to down cache, down cache size:" + downCache.size());
if (downCache.size() == downCacheSize)
{
if (trace) { log.trace(this + "'s downcache is full (" + downCache.size() + " messages)"); }
+ log.info("flushing down cache");
+
flushDownCache();
}
}
@@ -314,16 +359,10 @@
Iterator iter = downCache.iterator();
- //It's important that we don't actually increment nextPagingOrder in the loop
- //in case of failure
- int count = 0;
-
while (iter.hasNext())
{
MessageReference ref = (MessageReference) iter.next();
- ref.setPagingOrder(nextPagingOrder + count++);
-
if (ref.isReliable() && recoverable)
{
toUpdate.add(ref);
@@ -336,10 +375,12 @@
if (!toAdd.isEmpty())
{
+ log.info("Adding refs: " + toAdd.size());
pm.addReferences(channelID, toAdd);
}
if (!toUpdate.isEmpty())
{
+ log.info("Updating refs: " + toAdd.size());
pm.updatePageOrder(channelID, toUpdate);
}
@@ -355,14 +396,7 @@
ref.releaseMemoryReference();
}
- downCache.clear();
-
- //If we get this far then the database operations succeeded so we can update nextPagingOrder
- //We don't do this before the database updates since otherwise we will end up with gaps
- //in page ordering in the database if the db temporarily fails then comes back to life without
- //restarting the server.
-
- nextPagingOrder += count;
+ downCache.clear();
if (trace) { log.trace(this + " cleared downcache"); }
}
Modified: trunk/src/main/org/jboss/messaging/core/plugin/JDBCPersistenceManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/JDBCPersistenceManager.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/JDBCPersistenceManager.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -617,7 +617,7 @@
}
//Now store the reference
- addReference(channelID, ref, psInsertReference);
+ addReference(channelID, ref, psInsertReference, true);
if (usingBatchUpdates)
{
@@ -1167,25 +1167,23 @@
rs.next();
- long minOrdering = rs.getLong(1);
+ Long minOrdering = new Long(rs.getLong(1));
if (rs.wasNull())
{
- minOrdering = -1;
+ minOrdering = null;
}
- long maxOrdering = rs.getLong(2);
+ Long maxOrdering = new Long(rs.getLong(2));
if (rs.wasNull())
{
- maxOrdering = -1;
+ maxOrdering = null;
}
//Must cope with the possibility that fullSize has changed for the channel since last
//restart
- conn = ds.getConnection();
-
ps = conn.prepareStatement(getSQLStatement("LOAD_UNPAGED_REFS"));
ps.setLong(1, channelID);
@@ -1222,30 +1220,29 @@
if (count < fullSize)
{
- if (minOrdering != -1)
+ if (minOrdering != null)
{
//This means that fullSize is now greater and we have some paged refs
//We need to convert some of the paged refs into non paged refs before loading
//We can do this by setting page_ord = null for the first x paged refs
- long numberPaged = 1 + maxOrdering - minOrdering;
+ long numberPaged = 1 + maxOrdering.longValue() - minOrdering.longValue();
long numberToConvert = Math.min(numberPaged, fullSize - count);
ps = conn.prepareStatement(getSQLStatement("UPDATE_RELIABLE_REFS_NOT_PAGED"));
- ps.setLong(1, minOrdering);
- ps.setLong(2, minOrdering + numberToConvert - 1);
+ ps.setLong(1, minOrdering.longValue());
+ ps.setLong(2, minOrdering.longValue() + numberToConvert - 1);
ps.setLong(3, channelID);
ps.executeUpdate();
- minOrdering += numberToConvert;
-
- if (minOrdering == maxOrdering + 1)
+ minOrdering = new Long(minOrdering.longValue() + numberToConvert);
+ if (minOrdering.longValue() == maxOrdering.longValue() + 1)
{
- minOrdering = maxOrdering = -1;
+ minOrdering = maxOrdering = null;
}
ps.close();
@@ -1299,23 +1296,23 @@
ps = conn.prepareStatement(getSQLStatement("UPDATE_PAGE_ORDER"));
long c;
- if (minOrdering == -1)
+ if (minOrdering == null)
{
c = 0;
- minOrdering = 0;
+ minOrdering = new Long(0);
}
else
{
- c = minOrdering;
+ c = minOrdering.longValue();
}
- if (maxOrdering == -1)
+ if (maxOrdering == null)
{
- maxOrdering = numberToConvert - 1;
+ maxOrdering = new Long(numberToConvert - 1);
}
else
{
- maxOrdering += numberToConvert;
+ maxOrdering = new Long(maxOrdering.longValue() + numberToConvert);
}
Iterator iter = extraRefs.iterator();
@@ -1513,7 +1510,7 @@
psReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
// Add the reference
- addReference(channelID, ref, psReference);
+ addReference(channelID, ref, psReference, false);
int rows = psReference.executeUpdate();
@@ -2081,7 +2078,7 @@
}
//Now store the reference
- addReference(pair.channelId, ref, psReference);
+ addReference(pair.channelId, ref, psReference, false);
if (batch)
{
@@ -3219,7 +3216,7 @@
}
}
- protected void addReference(long channelID, MessageReference ref, PreparedStatement ps) throws Exception
+ protected void addReference(long channelID, MessageReference ref, PreparedStatement ps, boolean paged) throws Exception
{
if (trace)
{
@@ -3230,13 +3227,13 @@
ps.setLong(2, ref.getMessageID());
ps.setNull(3, Types.BIGINT);
ps.setString(4, "C");
- if (ref.getPagingOrder() == -1)
+ if (paged)
{
- ps.setNull(5, Types.BIGINT);
+ ps.setLong(5, ref.getPagingOrder());
}
else
{
- ps.setLong(5, ref.getPagingOrder());
+ ps.setNull(5, Types.BIGINT);
}
ps.setInt(6, ref.getDeliveryCount());
ps.setString(7, ref.isReliable() ? "Y" : "N");
Modified: trunk/src/main/org/jboss/messaging/core/plugin/contract/PersistenceManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/contract/PersistenceManager.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/contract/PersistenceManager.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -104,25 +104,25 @@
class InitialLoadInfo
{
- private long minPageOrdering;
+ private Long minPageOrdering;
- private long maxPageOrdering;
+ private Long maxPageOrdering;
private List refInfos;
- public InitialLoadInfo(long minPageOrdering, long maxPageOrdering, List refInfos)
+ public InitialLoadInfo(Long minPageOrdering, Long maxPageOrdering, List refInfos)
{
this.minPageOrdering = minPageOrdering;
this.maxPageOrdering = maxPageOrdering;
this.refInfos = refInfos;
}
- public long getMaxPageOrdering()
+ public Long getMaxPageOrdering()
{
return maxPageOrdering;
}
- public long getMinPageOrdering()
+ public Long getMinPageOrdering()
{
return minPageOrdering;
}
Modified: trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredExchangeSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredExchangeSupport.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredExchangeSupport.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -22,6 +22,7 @@
package org.jboss.messaging.core.plugin.exchange;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -38,9 +39,11 @@
import org.jboss.messaging.core.plugin.contract.PersistenceManager;
import org.jboss.messaging.core.plugin.exchange.request.BindRequest;
import org.jboss.messaging.core.plugin.exchange.request.MessageRequest;
+import org.jboss.messaging.core.plugin.exchange.request.SendNodeIdRequest;
import org.jboss.messaging.core.plugin.exchange.request.UnbindRequest;
import org.jgroups.Address;
import org.jgroups.Channel;
+import org.jgroups.MembershipListener;
import org.jgroups.Message;
import org.jgroups.MessageListener;
import org.jgroups.Receiver;
@@ -78,6 +81,8 @@
private Receiver dataReceiver;
+ private MembershipListener controlMembershipListener;
+
private RequestHandler requestHandler;
private Object setStateLock = new Object();
@@ -86,8 +91,14 @@
private String groupName;
- //protected boolean clustered;
+ private View currentView;
+ private Address currentAddress;
+
+ //Map < Address, node id>
+ private Map nodeIdAddressMap;
+
+
public ClusteredExchangeSupport() throws Exception
{
}
@@ -112,6 +123,8 @@
this.groupName = groupName;
+ this.nodeIdAddressMap = new HashMap();
+
//We don't want to receive local messages on any of the channels
controlChannel.setOpt(Channel.LOCAL, Boolean.FALSE);
dataChannel.setOpt(Channel.LOCAL, Boolean.FALSE);
@@ -120,11 +133,13 @@
this.requestHandler = new ExchangeRequestHandler();
+ this.controlMembershipListener = new ControlMembershipListener();
+
this.controlMessageDispatcher = new MessageDispatcher(controlChannel, controlMessageListener,
- null, requestHandler, true);
- this.dataReceiver = new DataMessageListener();
+ controlMembershipListener, requestHandler, true);
+ this.dataReceiver = new DataReceiver();
- dataChannel.setReceiver(dataReceiver);
+ dataChannel.setReceiver(dataReceiver);
}
// ServiceMBeanSupport overrides ---------------------------------
@@ -137,7 +152,15 @@
dataChannel.connect(groupName);
log.info("Connected to data channel");
- super.startService();
+ currentAddress = controlChannel.getLocalAddress();
+
+ log.info("My address is: " + currentAddress);
+
+ super.startService();
+
+ handleAddressNodeMapping(currentAddress, nodeId);
+
+ sendNodeIdRequest(currentAddress, nodeId);
}
protected void stopService() throws Exception
@@ -154,7 +177,7 @@
public Binding bindQueue(String queueName, String condition, Filter filter, boolean noLocal, boolean durable,
MessageStore ms, PersistenceManager pm,
int fullSize, int pageSize, int downCacheSize) throws Exception
- {
+ {
Binding binding = super.bindQueue(queueName, condition, filter, noLocal, durable,
ms, pm, fullSize, pageSize, downCacheSize);
@@ -224,8 +247,7 @@
}
protected abstract void routeFromCluster(MessageReference ref, String routingKey) throws Exception;
-
-
+
// Private ------------------------------------------------------------------------------------------
/*
@@ -240,7 +262,13 @@
log.info("node " + this.nodeId + " received request to add binding from node " + nodeId);
try
- {
+ {
+ //Sanity
+ if (!nodeIdAddressMap.containsKey(nodeId))
+ {
+ throw new IllegalStateException("Cannot find address for node: " + nodeId);
+ }
+
// We currently only allow one binding per name per node
Map nameMap = (Map)nameMaps.get(nodeId);
@@ -253,7 +281,7 @@
if (binding != null)
{
- throw new IllegalArgumentException("Binding already exists for node Id " + nodeId + " queue name " + queueName);
+ throw new IllegalArgumentException(this.nodeId + "Binding already exists for node Id " + nodeId + " queue name " + queueName);
}
binding = new SimpleBinding(nodeId, queueName, condition, filterString,
@@ -278,25 +306,107 @@
*/
private void removeBindingFromCluster(String nodeId, String queueName) throws Exception
{
+ log.info(this.nodeId + " removing binding from cluster for nodeId: " + nodeId + " and queuename: " + queueName);
+
lock.writeLock().acquire();
try
{
- // We currently only allow one binding per name per node
- Map nameMap = (Map)nameMaps.get(nodeId);
+ // Sanity
+ if (!nodeIdAddressMap.containsKey(nodeId))
+ {
+ throw new IllegalStateException("Cannot find address for node: " + nodeId);
+ }
- Binding binding = null;
+ removeBinding(nodeId, queueName);
+ }
+ finally
+ {
+ lock.writeLock().release();
+ }
+ }
+
+ private void handleAddressNodeMapping(Address address, String nodeId) throws Exception
+ {
+ lock.writeLock().acquire();
+
+ try
+ {
+ log.info("Handling node address mapping for: " + address + " and " + nodeId);
+ nodeIdAddressMap.put(nodeId, address.toString());
+ }
+ finally
+ {
+ lock.writeLock().release();
+ }
+ }
+
+ private void removeBindingsForAddress(String address) throws Exception
+ {
+ lock.writeLock().acquire();
+
+ log.info("Removing bindings for address: " + address);
+
+ try
+ {
+ Iterator iter = nodeIdAddressMap.entrySet().iterator();
- if (nameMap != null)
+ String nodeId = null;
+ while (iter.hasNext())
{
- binding = (Binding)nameMap.remove(queueName);
+ Map.Entry entry = (Map.Entry)iter.next();
+
+ String str = (String)entry.getValue();
+
+ if (str.equals(address))
+ {
+ nodeId = (String)entry.getKey();
+ }
}
- if (binding == null)
+ if (nodeId == null)
{
- throw new IllegalArgumentException("Cannot find binding with node Id " + nodeId + " queue name: " + queueName);
+ throw new IllegalStateException("Cannot find node id for address: " + address);
}
+ log.info("This address corresponds to node id: " + nodeId);
+
+ Map nameMap = (Map)nameMaps.get(nodeId);
+
+ if (nameMap != null)
+ {
+ log.info("Found the name map");
+ List toRemove = new ArrayList();
+
+ iter = nameMap.values().iterator();
+
+ while (iter.hasNext())
+ {
+ Binding binding = (Binding)iter.next();
+
+ log.info("Got a binding");
+
+ if (!binding.isDurable())
+ {
+ log.info("It's not - durable");
+ toRemove.add(binding);
+ }
+ else
+ {
+ log.info("It IS durable - not removing it");
+ }
+ }
+
+ iter = toRemove.iterator();
+
+ while (iter.hasNext())
+ {
+ Binding binding = (Binding)iter.next();
+
+ removeBinding(nodeId, binding.getQueueName());
+ log.info("removed binding");
+ }
+ }
}
finally
{
@@ -345,13 +455,21 @@
//so we ignore the return value
//TODO - How do we know if the call timed out???
- //We need to handle this
+ //We need to handle this
+ }
+
+ private void sendNodeIdRequest(Address address, String nodeId) throws Exception
+ {
+ SendNodeIdRequest request = new SendNodeIdRequest(address, nodeId);
+ Message message = new Message(null, null, request);
+
+ controlMessageDispatcher.castMessage(null, message, GroupRequest.GET_ALL, CAST_TIMEOUT);
}
//TODO - Sort out serialization properly
- private byte[] getBindingListAsBytes() throws Exception
+ private byte[] getStateAsBytes() throws Exception
{
List bindings = new ArrayList();
@@ -369,19 +487,23 @@
}
}
- byte[] bytes = Util.objectToByteBuffer(bindings);
+ SharedState state = new SharedState(bindings, nodeIdAddressMap);
+ byte[] bytes = Util.objectToByteBuffer(state);
+
return bytes;
}
- private void processBindingListBytes(byte[] bytes) throws Exception
+ private void processStateBytes(byte[] bytes) throws Exception
{
+ SharedState state = (SharedState)Util.objectFromByteBuffer(bytes);
+
nameMaps.clear();
conditionMap.clear();
+
+ List bindings = state.getBindings();
- List bindings = (List)Util.objectFromByteBuffer(bytes);
-
Iterator iter = bindings.iterator();
while (iter.hasNext())
@@ -390,8 +512,14 @@
addBinding(binding);
}
+
+ this.nodeIdAddressMap.clear();
+
+ this.nodeIdAddressMap.putAll(state.getNodeIdAddressMap());
}
+
+
// Inner classes -------------------------------------------------------------------
/*
@@ -400,9 +528,7 @@
private class ControlMessageListener implements MessageListener
{
public byte[] getState()
- {
- //TODO should we propagate the exceptions up??
-
+ {
log.info(this + " getState called");
try
{
@@ -414,12 +540,13 @@
}
try
{
- return getBindingListAsBytes();
+ return getStateAsBytes();
}
catch (Exception e)
{
- log.error("Failed to get state", e);
- return null;
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
}
finally
{
@@ -434,8 +561,6 @@
public void setState(byte[] bytes)
{
- // TODO should we propagate the exceptions up??
-
log.info(this + " setState called");
log.info("state is: " + bytes);
@@ -452,11 +577,13 @@
}
try
{
- processBindingListBytes(bytes);
+ processStateBytes(bytes);
}
catch (Exception e)
{
- log.error("Failed to deserialize", e);
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
}
finally
{
@@ -481,7 +608,7 @@
/*
* This class is used to listen for messages on the data channel
*/
- private class DataMessageListener implements Receiver
+ private class DataReceiver implements Receiver
{
public void block()
{
@@ -540,8 +667,9 @@
}
catch (Exception e)
{
- log.error("Failed to route from cluster", e);
- //TODO should we propagate exceptions up?
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
}
}
@@ -551,6 +679,67 @@
//NOOP
}
}
+
+ /*
+ * We use this class so we notice when members leave the group
+ */
+ private class ControlMembershipListener implements MembershipListener
+ {
+ public void block()
+ {
+ //NOOP
+ }
+
+ public void suspect(Address address)
+ {
+ //NOOP
+ }
+
+ public void viewAccepted(View view)
+ {
+ log.info(" *****************************New view" + view);
+
+ if (currentView != null)
+ {
+ Iterator iter = currentView.getMembers().iterator();
+
+ while (iter.hasNext())
+ {
+ Address address = (Address)iter.next();
+
+ if (!view.containsMember(address))
+ {
+ //Member must have left
+ log.info(nodeId + " The following member has left: " + address);
+
+ //We don't remove bindings for ourself
+
+ if (!address.equals(currentAddress))
+ {
+ try
+ {
+ removeBindingsForAddress(address.toString());
+ }
+ catch (Exception e)
+ {
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
+ }
+ }
+ }
+ }
+ }
+
+ currentView = view;
+ }
+
+ public byte[] getState()
+ {
+ //NOOP
+ return null;
+ }
+ }
/*
* This class is used to handle synchronous requests
@@ -566,7 +755,7 @@
Object request = message.getObject();
log.info("Received request: " + request);
-
+
if (request instanceof BindRequest)
{
BindRequest br = (BindRequest)request;
@@ -578,7 +767,9 @@
}
catch (Exception e)
{
- log.error("Failed to add binding from cluster", e);
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
}
}
else if (request instanceof UnbindRequest)
@@ -591,9 +782,26 @@
}
catch (Exception e)
{
- log.error("Failed to remove binding from cluster", e);
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
}
}
+ else if (request instanceof SendNodeIdRequest)
+ {
+ SendNodeIdRequest snr = (SendNodeIdRequest)request;
+
+ try
+ {
+ handleAddressNodeMapping(snr.getAddress(), snr.getNodeId());
+ }
+ catch (Exception e)
+ {
+ IllegalStateException e2 = new IllegalStateException(e.getMessage());
+ e2.setStackTrace(e.getStackTrace());
+ throw e2;
+ }
+ }
else
{
throw new IllegalArgumentException("Invalid request: " + request);
Modified: trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredTopicExchange.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredTopicExchange.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/exchange/ClusteredTopicExchange.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -217,6 +217,16 @@
else
{
CastingCallback callback = (CastingCallback)tx.getKeyedCallback(this);
+
+ if (callback == null)
+ {
+ callback = new CastingCallback();
+
+ tx.addKeyedCallback(callback, this);
+ }
+
+ log.info("Got callback:" + callback);
+
callback.addMessage(routingKey, ref.getMessage());
}
}
@@ -262,19 +272,18 @@
{
if (binding.getNodeId().equals(this.nodeId))
{
- //When receiving a reliable message from the network and routing to
- //a durable subscription, then the message has always been persisted
- //before the send, so we route the message as an unreliable message
- //to prevent it being persisted again
- if (ref.isReliable() && binding.isDurable())
- {
- ref.setReliable(false);
- }
+// //When receiving a reliable message from the network and routing to
+// //a durable subscription, then the message has always been persisted
+// //before the send
+// if (ref.isReliable() && binding.isDurable())
+// {
+// //Do what?
+// }
//It's a local binding so we pass the message on to the subscription
MessageQueue subscription = binding.getQueue();
- subscription.handle(null, ref, null);
+ subscription.handleDontPersist(null, ref, null);
}
}
}
@@ -291,10 +300,11 @@
*/
private class CastingCallback implements TxCallback
{
- private List messages;
+ private List messages = new ArrayList();
private void addMessage(String routingKey, Message message)
{
+ log.info("Adding message");
messages.add(new MessageHolder(routingKey, message));
}
Modified: trunk/src/main/org/jboss/messaging/core/plugin/exchange/ExchangeSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/exchange/ExchangeSupport.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/exchange/ExchangeSupport.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -28,6 +28,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -156,7 +157,7 @@
if (binding != null)
{
- throw new Exception("Binding already exists for name " + queueName);
+ throw new IllegalArgumentException("Binding already exists for name " + queueName);
}
long id = idManager.getId();
@@ -196,6 +197,8 @@
lock.writeLock().release();
}
}
+
+
public Binding unbindQueue(String queueName) throws Throwable
{
@@ -208,53 +211,7 @@
try
{
- Map nameMap = (Map)nameMaps.get(this.nodeId);
-
- Binding binding = null;
-
- if (nameMap != null)
- {
- binding = (Binding)nameMap.remove(queueName);
- }
-
- if (binding == null)
- {
- throw new IllegalStateException("Name map does not contain binding for " + queueName);
- }
-
- if (binding.getQueue() == null)
- {
- throw new IllegalStateException("Need to reload the queue before unbinding");
- }
-
- List bindings = (List)conditionMap.get(binding.getCondition());
-
- if (bindings == null)
- {
- throw new IllegalStateException("Cannot find condition bindings for " + binding.getCondition());
- }
-
- boolean removed = bindings.remove(binding);
-
- if (!removed)
- {
- throw new IllegalStateException("Cannot find binding in condition binding list");
- }
-
- if (binding == null)
- {
- throw new IllegalStateException("Channel id map does not contain binding for " + binding.getChannelId());
- }
-
- if (!removed)
- {
- throw new IllegalStateException("Cannot find binding in condition binding list");
- }
-
- if (bindings.isEmpty())
- {
- conditionMap.remove(binding.getCondition());
- }
+ Binding binding = removeBinding(this.nodeId, queueName);
if (binding.isDurable())
{
@@ -586,13 +543,13 @@
protected void addBinding(Binding binding)
{
- Map nameMap = (Map)nameMaps.get(this.nodeId);
+ Map nameMap = (Map)nameMaps.get(binding.getNodeId());
if (nameMap == null)
{
- nameMap = new HashMap();
+ nameMap = new LinkedHashMap();
- nameMaps.put(this.nodeId, nameMap);
+ nameMaps.put(binding.getNodeId(), nameMap);
}
nameMap.put(binding.getQueueName(), binding);
@@ -611,6 +568,70 @@
bindings.add(binding);
}
+ protected Binding removeBinding(String nodeId, String queueName)
+ {
+ if (queueName == null)
+ {
+ throw new IllegalArgumentException("Queue name is null");
+ }
+
+ Map nameMap = (Map)nameMaps.get(nodeId);
+
+ Binding binding = null;
+
+ if (nameMap != null)
+ {
+ binding = (Binding)nameMap.remove(queueName);
+ }
+
+ if (binding == null)
+ {
+ throw new IllegalStateException("Name map does not contain binding for " + queueName);
+ }
+
+ if (nameMap.isEmpty())
+ {
+ nameMaps.remove(nodeId);
+ }
+
+ if (binding.getQueue() == null && nodeId.equals(this.nodeId))
+ {
+ //Otherwise the data won't get deleted from the database
+ throw new IllegalStateException("Need to reload the queue before unbinding");
+ }
+
+ List bindings = (List)conditionMap.get(binding.getCondition());
+
+ if (bindings == null)
+ {
+ throw new IllegalStateException("Cannot find condition bindings for " + binding.getCondition());
+ }
+
+ boolean removed = bindings.remove(binding);
+
+ if (!removed)
+ {
+ throw new IllegalStateException("Cannot find binding in condition binding list");
+ }
+
+ if (binding == null)
+ {
+ throw new IllegalStateException("Channel id map does not contain binding for " + binding.getChannelId());
+ }
+
+ if (!removed)
+ {
+ throw new IllegalStateException("Cannot find binding in condition binding list");
+ }
+
+ if (bindings.isEmpty())
+ {
+ conditionMap.remove(binding.getCondition());
+ }
+
+ return binding;
+ }
+
// PersistentServiceSupport overrides ----------------------------
protected Map getDefaultDMLStatements()
@@ -676,9 +697,9 @@
{
lock = new WriterPreferenceReadWriteLock();
- nameMaps = new HashMap();
+ nameMaps = new LinkedHashMap();
- conditionMap = new HashMap();
+ conditionMap = new LinkedHashMap();
}
// Inner classes -------------------------------------------------
Added: trunk/src/main/org/jboss/messaging/core/plugin/exchange/SharedState.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/exchange/SharedState.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/exchange/SharedState.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * 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.core.plugin.exchange;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A SharedState
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @version <tt>$Revision: 1.1 $</tt>
+ *
+ * $Id$
+ *
+ */
+public class SharedState implements Serializable
+{
+ private static final long serialVersionUID = 7782131373080845107L;
+
+ private List bindings;
+
+ private Map nodeIdAddressMap;
+
+ public SharedState(List bindings, Map nodeIdAddressMap)
+ {
+ this.bindings = bindings;
+
+ this.nodeIdAddressMap = nodeIdAddressMap;
+ }
+
+ public List getBindings()
+ {
+ return bindings;
+ }
+
+ public Map getNodeIdAddressMap()
+ {
+ return nodeIdAddressMap;
+ }
+}
Added: trunk/src/main/org/jboss/messaging/core/plugin/exchange/request/SendNodeIdRequest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/exchange/request/SendNodeIdRequest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/src/main/org/jboss/messaging/core/plugin/exchange/request/SendNodeIdRequest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * 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.core.plugin.exchange.request;
+
+import java.io.Serializable;
+
+import org.jgroups.Address;
+
+/**
+ * A SendNodeIdRequest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @version <tt>$Revision: 1.1 $</tt>
+ *
+ * $Id$
+ *
+ */
+public class SendNodeIdRequest implements Serializable
+{
+ private static final long serialVersionUID = -122859945318661852L;
+
+ private Address address;
+
+ private String nodeId;
+
+ public SendNodeIdRequest(Address address, String nodeId)
+ {
+ this.address = address;
+ this.nodeId = nodeId;
+ }
+
+ public Address getAddress()
+ {
+ return address;
+ }
+
+ public String getNodeId()
+ {
+ return nodeId;
+ }
+}
Modified: trunk/tests/src/org/jboss/test/messaging/core/SimpleReceiver.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/SimpleReceiver.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/SimpleReceiver.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -149,6 +149,8 @@
"THE BEHAVIOUR OF A BROKEN RECEIVER");
}
+ log.info("State is:" + state);
+
boolean done = ACKING.equals(state) ? true : false;
log.info(this + " is " + (done ? "ACKing" : "NACKing") + " message " + r);
@@ -290,6 +292,7 @@
Message m = (Message)o[0];
if (m == r)
{
+ log.info("*** found it");
d = (Delivery)o[1];
touple = o;
break;
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -91,7 +91,7 @@
tx.commit();
//Queue1
- List refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ List refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue1.getChannelID());
@@ -107,7 +107,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -150,7 +150,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -167,7 +167,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(25, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -212,7 +212,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -229,7 +229,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(50, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -273,7 +273,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(50, refIds.size());
@@ -290,7 +290,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(100, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -93,7 +93,7 @@
}
//Queue1
- List refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ List refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue1.getChannelID());
@@ -109,7 +109,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -150,7 +150,7 @@
}
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -167,7 +167,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(25, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -210,7 +210,7 @@
}
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -227,7 +227,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(50, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -269,7 +269,7 @@
}
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(50, refIds.size());
@@ -286,7 +286,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(100, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -94,7 +94,7 @@
tx.commit();
//Queue1
- List refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ List refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue1.getChannelID());
@@ -110,7 +110,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -152,7 +152,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -169,7 +169,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(25, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -213,7 +213,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(0, refIds.size());
@@ -230,7 +230,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(50, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
@@ -273,7 +273,7 @@
tx.commit();
//Queue1
- refIds = getUnloadedReferenceIds(queue1.getChannelID());
+ refIds = getPagedReferenceIds(queue1.getChannelID());
assertEquals(50, refIds.size());
@@ -290,7 +290,7 @@
//Queue2
- refIds = getUnloadedReferenceIds(queue2.getChannelID());
+ refIds = getPagedReferenceIds(queue2.getChannelID());
assertEquals(100, refIds.size());
refIds = getReferenceIds(queue2.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -128,6 +128,8 @@
protected void assertSameIds(List ids, MessageReference[] refs, int start, int end)
{
+ log.info("&&&&&& size is " + ids.size());
+
assertNotNull(ids);
assertEquals(ids.size(), end - start + 1);
Iterator iter = ids.iterator();
@@ -135,9 +137,12 @@
while (iter.hasNext())
{
Long id = (Long)iter.next();
- assertEquals(id.longValue(), refs[i].getMessageID());
+ log.info("id is:" + id);
+ assertEquals(refs[i].getMessageID(), id.longValue());
i++;
}
+
+ log.info("&&& done");
}
class ConsumingReceiver implements Receiver
@@ -424,7 +429,7 @@
mgr.begin();
Connection conn = ds.getConnection();
- String sql = "SELECT MESSAGEID, ORD FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? ORDER BY ORD";
+ String sql = "SELECT MESSAGEID, ORD, PAGE_ORD FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? ORDER BY PAGE_ORD";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setLong(1, channelId);
@@ -435,6 +440,15 @@
while (rs.next())
{
long msgId = rs.getLong(1);
+ long ord = rs.getLong(2);
+ long pageOrd = rs.getLong(3);
+ if (rs.wasNull())
+ {
+ log.info("!NULL");
+ }
+
+ log.info("msgId: " + msgId + " ord: " + ord + " pageOrd: " + pageOrd);
+
msgIds.add(new Long(msgId));
}
rs.close();
@@ -451,7 +465,7 @@
return msgIds;
}
- protected List getUnloadedReferenceIds(long channelId) throws Exception
+ protected List getPagedReferenceIds(long channelId) throws Exception
{
InitialContext ctx = new InitialContext();
@@ -462,7 +476,7 @@
mgr.begin();
Connection conn = ds.getConnection();
- String sql = "SELECT MESSAGEID, ORD FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND LOADED='N' ORDER BY ORD";
+ String sql = "SELECT MESSAGEID FROM JMS_MESSAGE_REFERENCE WHERE CHANNELID=? AND PAGE_ORD IS NOT NULL ORDER BY PAGE_ORD";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setLong(1, channelId);
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -851,9 +851,7 @@
//Verify 13 deliveries
assertEquals(13, queue.memoryDeliveryCount());;
-
-
-
+
//Cancel 3 more
for (int i = 12; i > 9; i--)
@@ -890,12 +888,16 @@
//Cancel the last 10
+ log.info("**** cancelling");
+
for (int i = 9; i >= 0; i--)
{
dels[i].cancel();
}
+ log.info("**** cancelled");
+
//This should cause the down cache to be flushed
//verify 20 ref in storage
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -87,7 +87,7 @@
//verify no unloaded refs in storage
- List refIds = getUnloadedReferenceIds(queue.getChannelID());
+ List refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 99 refs in storage
@@ -128,7 +128,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 100 refs in storage
@@ -172,7 +172,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 109 refs in storage
@@ -215,7 +215,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -257,7 +257,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -302,7 +302,7 @@
//verify 20 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 100, 119);
@@ -358,7 +358,7 @@
//verify 30 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(30, refIds.size());
assertSameIds(refIds, refs, 100, 129);
@@ -404,7 +404,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -447,7 +447,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -485,7 +485,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -527,7 +527,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -568,7 +568,7 @@
//verify 21 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(21, refIds.size());
assertSameIds(refIds, refs, 120, 140);
@@ -607,7 +607,7 @@
//verify 1 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(1, refIds.size());
assertSameIds(refIds, refs, 140, 140);
@@ -646,7 +646,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 100 refs in storage
@@ -684,7 +684,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 80 refs in storage
@@ -722,7 +722,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 20 refs in storage
@@ -764,7 +764,7 @@
tx.prepare();
tx.commit();
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 40 refs in storage
@@ -807,7 +807,7 @@
tx.prepare();
tx.commit();
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 60 refs in storage
@@ -851,7 +851,7 @@
//verify 20 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -892,7 +892,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -930,7 +930,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -968,7 +968,7 @@
//verify 10 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 231, 240);
@@ -1009,7 +1009,7 @@
//verify 20 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -1047,7 +1047,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 70 refs in storage
@@ -1082,7 +1082,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -83,7 +83,7 @@
//verify no unloaded refs in storage
- List refIds = getUnloadedReferenceIds(queue.getChannelID());
+ List refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 99 refs in storage
@@ -121,7 +121,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 100 refs in storage
@@ -162,7 +162,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 109 refs in storage
@@ -199,7 +199,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -239,7 +239,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -282,7 +282,7 @@
//verify 20 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 100, 119);
@@ -326,7 +326,7 @@
//verify 30 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(30, refIds.size());
assertSameIds(refIds, refs, 100, 129);
@@ -370,7 +370,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -411,7 +411,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -450,7 +450,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -491,7 +491,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -532,7 +532,7 @@
//verify 21 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(21, refIds.size());
assertSameIds(refIds, refs, 120, 140);
@@ -571,7 +571,7 @@
//verify 1 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(1, refIds.size());
assertSameIds(refIds, refs, 140, 140);
@@ -610,7 +610,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 100 refs in storage
@@ -648,7 +648,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 80 refs in storage
@@ -685,7 +685,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 20 refs in storage
@@ -724,7 +724,7 @@
refs[i].releaseMemoryReference();
}
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 40 refs in storage
@@ -764,7 +764,7 @@
refs[i].releaseMemoryReference();
}
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 60 refs in storage
@@ -805,7 +805,7 @@
//verify 20 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -846,7 +846,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -884,7 +884,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -922,7 +922,7 @@
//verify 10 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 231, 240);
@@ -963,7 +963,7 @@
//verify 20 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -1001,7 +1001,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 70 refs in storage
@@ -1036,7 +1036,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -86,7 +86,7 @@
//verify no unloaded refs in storage
- List refIds = getUnloadedReferenceIds(queue.getChannelID());
+ List refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 99 refs in storage
@@ -126,7 +126,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 100 refs in storage
@@ -169,7 +169,7 @@
//verify no unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertTrue(refIds.isEmpty());
//verify 109 refs in storage
@@ -211,7 +211,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -252,7 +252,7 @@
//verify 10 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 100, 109);
@@ -296,7 +296,7 @@
//verify 20 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 100, 119);
@@ -341,7 +341,7 @@
//verify 30 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(30, refIds.size());
assertSameIds(refIds, refs, 100, 129);
@@ -395,7 +395,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -437,7 +437,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -475,7 +475,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -517,7 +517,7 @@
//verify 40 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(40, refIds.size());
assertSameIds(refIds, refs, 100, 139);
@@ -558,7 +558,7 @@
//verify 21 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(21, refIds.size());
assertSameIds(refIds, refs, 120, 140);
@@ -597,7 +597,7 @@
//verify 1 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(1, refIds.size());
assertSameIds(refIds, refs, 140, 140);
@@ -636,7 +636,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 100 refs in storage
@@ -674,7 +674,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 80 refs in storage
@@ -712,7 +712,7 @@
//verify 0 unloaded refs in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 20 refs in storage
@@ -753,7 +753,7 @@
}
tx.commit();
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 40 refs in storage
@@ -795,7 +795,7 @@
}
tx.commit();
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
//Verify 60 refs in storage
@@ -838,7 +838,7 @@
//verify 20 unloaded ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -879,7 +879,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -917,7 +917,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 120 refs in storage
@@ -955,7 +955,7 @@
//verify 10 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(10, refIds.size());
assertSameIds(refIds, refs, 231, 240);
@@ -996,7 +996,7 @@
//verify 20 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(20, refIds.size());
assertSameIds(refIds, refs, 221, 240);
@@ -1034,7 +1034,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
// Verify 70 refs in storage
@@ -1069,7 +1069,7 @@
//verify 0 ref in storage
- refIds = getUnloadedReferenceIds(queue.getChannelID());
+ refIds = getPagedReferenceIds(queue.getChannelID());
assertEquals(0, refIds.size());
refIds = getReferenceIds(queue.getChannelID());
Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -326,6 +326,12 @@
assertEquals(0, queue.memoryDeliveryCount());
+ //Also we cancel some so we make sure that we have some negative page orders
+
+ //cancel 10
+
+ this.cancelDeliveries(queue, 10);
+
//Stop and restart the persistence manager
pm.stop();
@@ -414,6 +420,12 @@
assertEquals(0, queue.memoryDeliveryCount());
+ //Also we cancel some so we make sure that we have some negative page orders
+
+ //cancel 10
+
+ this.cancelDeliveries(queue, 10);
+
//Stop and restart the persistence manager
pm.stop();
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/ClusteredTopicExchangeTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/ClusteredTopicExchangeTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/ClusteredTopicExchangeTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -74,32 +74,46 @@
super.tearDown();
}
- //For the following tests create a simple receiver and acknowledge messages properly rather
- //than relying on removeAllReferences
+ public final void testBindSameName() throws Throwable
+ {
+ Exchange exchange1 = null;
+
+ Exchange exchange2 = null;
+
+ try
+ {
+ exchange1 = createExchange("node1", "testgroup");
+
+ exchange2 = createExchange("node2", "testgroup");
+
+ exchange1.bindQueue("sub1", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+
+ try
+ {
+ exchange2.bindQueue("sub1", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ //OK - this should fail
+ }
+ }
+ finally
+ {
+ if (exchange1 != null)
+ {
+ exchange1.stop();
+ }
+
+ if (exchange2 != null)
+ {
+ exchange2.stop();
+ }
+ }
+ }
- //testBindUnbind - bind and unbind on different nodes as members join and leave, make sure the correct state
- //is replicated - make sure durable bindings remain durable
- //non transactional route
- //create several subscriptions same durable some non durable on different nodes
- //route messages with no tx - make sure it arrives ok - make sure messages arrive in durable
- //subs even if node is shutdown and restarted
-
- //as above but transactional
-
- //test that activate etc is local only
-
- //test that can't bind twice with same name across cluster
-
- //test that can't do exchange operations on an exchange that is stopped
-
- //start and stop exchanges concurrently to test for race conditions
-
- //Need to add tests for queue/topic with selector
-
- //Need to route with peristent and non persistent messages
-
- public void testClusteredBindUnbind() throws Throwable
+ public final void testClusteredBindUnbind() throws Throwable
{
Exchange exchange1 = null;
@@ -155,6 +169,8 @@
Binding binding4 = exchange2.bindQueue("sub4", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ log.info("here 1");
+
// Make sure both nodes pick it up
bindings = exchange1.listBindingsForWildcard("topic1");
@@ -164,7 +180,7 @@
assertEquivalent(binding1, (Binding)bindings.get(0));
assertEquivalent(binding2, (Binding)bindings.get(1));
assertEquivalent(binding3, (Binding)bindings.get(2));
- assertEquivalent(binding4, (Binding)bindings.get(2));
+ assertEquivalent(binding4, (Binding)bindings.get(3));
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
@@ -190,14 +206,14 @@
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(4, bindings.size());
+ assertEquals(2, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
//Add a third exchange
- exchange1 = createExchange("node3", "testgroup");
+ exchange3 = createExchange("node3", "testgroup");
//Maks sure it picks up the bindings
@@ -238,60 +254,75 @@
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
- //Add a durable binding on node 1
+ //Add a durable and a non durable binding on node 1
Binding binding6 = exchange1.bindQueue("sub6", "topic1", null, false, true, ms, pm, 20000, 100, 100);
- // Make sure all nodes pick it up
+ Binding binding7 = exchange1.bindQueue("sub7", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ // Make sure all nodes pick them up
+
bindings = exchange1.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(4, bindings.size());
+ assertEquals(5, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
assertEquivalent(binding6, (Binding)bindings.get(3));
+ assertEquivalent(binding7, (Binding)bindings.get(4));
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(4, bindings.size());
+ assertEquals(5, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
assertEquivalent(binding6, (Binding)bindings.get(3));
+ assertEquivalent(binding7, (Binding)bindings.get(4));
bindings = exchange3.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(4, bindings.size());
+ assertEquals(5, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
assertEquivalent(binding6, (Binding)bindings.get(3));
-
+ assertEquivalent(binding7, (Binding)bindings.get(4));
+
+ log.info("Stopping exchange 1");
//Stop exchange 1
exchange1.stop();
+ log.info("Stopped exchange 1");
+ //Need to sleep since it may take some time for the view changed request to reach the
+ //members which causes the bindings to be removed
+
+ Thread.sleep(1000);
+
//All it's non durable bindings should be removed from the other nodes
//Durable bindings should remain
+ log.info("getting bindingd for wildcard");
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(3, bindings.size());
+ assertEquals(4, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
+ assertEquivalent(binding6, (Binding)bindings.get(3));
bindings = exchange3.listBindingsForWildcard("topic1");
assertNotNull(bindings);
- assertEquals(3, bindings.size());
+ assertEquals(4, bindings.size());
assertEquivalent(binding3, (Binding)bindings.get(0));
assertEquivalent(binding4, (Binding)bindings.get(1));
assertEquivalent(binding5, (Binding)bindings.get(2));
+ assertEquivalent(binding6, (Binding)bindings.get(3));
//Stop exchange 2
exchange2.stop();
@@ -300,34 +331,34 @@
assertNotNull(bindings);
assertEquals(2, bindings.size());
- assertEquivalent(binding4, (Binding)bindings.get(0));
- assertEquivalent(binding5, (Binding)bindings.get(1));
+ assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(1));
//Restart exchange 1 and exchange 2
- exchange1.start();
+ exchange1 = createExchange("node1", "testgroup");
- exchange2.start();
+ exchange2 = createExchange("node2", "testgroup");
bindings = exchange1.listBindingsForWildcard("topic1");
assertNotNull(bindings);
assertEquals(2, bindings.size());
- assertEquivalent(binding4, (Binding)bindings.get(0));
- assertEquivalent(binding5, (Binding)bindings.get(1));
+ assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(1));
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
assertEquals(2, bindings.size());
- assertEquivalent(binding4, (Binding)bindings.get(0));
- assertEquivalent(binding5, (Binding)bindings.get(1));
+ assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(1));
bindings = exchange3.listBindingsForWildcard("topic1");
assertNotNull(bindings);
assertEquals(2, bindings.size());
- assertEquivalent(binding4, (Binding)bindings.get(0));
- assertEquivalent(binding5, (Binding)bindings.get(1));
+ assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(1));
//Stop all exchanges
@@ -336,9 +367,9 @@
exchange3.stop();
//Start them all
- exchange1.start();
- exchange2.start();
- exchange3.start();
+ exchange1 = createExchange("node1", "testgroup");
+ exchange2 = createExchange("node2", "testgroup");
+ exchange3 = createExchange("node3", "testgroup");
//Only the durable queue should survive
@@ -346,24 +377,27 @@
assertNotNull(bindings);
assertEquals(1, bindings.size());
- assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(0));
bindings = exchange2.listBindingsForWildcard("topic1");
assertNotNull(bindings);
assertEquals(1, bindings.size());
- assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(0));
bindings = exchange3.listBindingsForWildcard("topic1");
assertNotNull(bindings);
assertEquals(1, bindings.size());
- assertEquivalent(binding5, (Binding)bindings.get(0));
+ assertEquivalent(binding6, (Binding)bindings.get(0));
+
}
finally
{
if (exchange1 != null)
{
+ exchange1.reloadQueues("topic1", ms, pm, 1000, 20, 20);
+ exchange1.unbindQueue("sub6");
exchange1.stop();
}
@@ -380,22 +414,44 @@
}
- public void testClusteredRoute() throws Throwable
+ public final void testClusteredRoutePersistent() throws Throwable
{
+ clusteredRoute(true);
+ }
+
+ public final void testClusteredRouteNonPersistent() throws Throwable
+ {
+ clusteredRoute(false);
+ }
+
+ public final void testClusteredTransactionalRoutePersistent() throws Throwable
+ {
+ clusteredTransactionalRoute(true);
+ }
+
+ public final void testClusteredTransactionalRouteNonPersistent() throws Throwable
+ {
+ clusteredTransactionalRoute(false);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+
+ protected void clusteredRoute(boolean persistentMessage) throws Throwable
+ {
Exchange exchange1 = null;
Exchange exchange2 = null;
-
- Exchange exchange3 = null;
-
+
try
{
- //Start three exchanges
+ //Start two exchanges
- exchange1.start();
- exchange2.start();
- exchange3.start();
-
+ exchange1 = createExchange("node1", "testgroup");
+ exchange2 = createExchange("node2", "testgroup");
+
//Two topics with a mixture of durable and non durable subscriptions
Binding[] bindings = new Binding[16];
@@ -411,16 +467,16 @@
bindings[6] = exchange1.bindQueue("sub7", "topic1", null, false, true, ms, pm, 20000, 100, 100);
bindings[7] = exchange1.bindQueue("sub8", "topic1", null, false, true, ms, pm, 20000, 100, 100);
- bindings[8] = exchange1.bindQueue("sub1", "topic2", null, false, false, ms, pm, 20000, 100, 100);
- bindings[9] = exchange1.bindQueue("sub2", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[8] = exchange1.bindQueue("sub9", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[9] = exchange1.bindQueue("sub10", "topic2", null, false, false, ms, pm, 20000, 100, 100);
- bindings[10] = exchange2.bindQueue("sub3", "topic2", null, false, false, ms, pm, 20000, 100, 100);
- bindings[11] = exchange2.bindQueue("sub4", "topic2", null, false, false, ms, pm, 20000, 100, 100);
- bindings[12] = exchange2.bindQueue("sub5", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[10] = exchange2.bindQueue("sub11", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[11] = exchange2.bindQueue("sub12", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[12] = exchange2.bindQueue("sub13", "topic2", null, false, true, ms, pm, 20000, 100, 100);
- bindings[13] = exchange1.bindQueue("sub6", "topic2", null, false, false, ms, pm, 20000, 100, 100);
- bindings[14] = exchange1.bindQueue("sub7", "topic2", null, false, true, ms, pm, 20000, 100, 100);
- bindings[15] = exchange1.bindQueue("sub8", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[13] = exchange1.bindQueue("sub14", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[14] = exchange1.bindQueue("sub15", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[15] = exchange1.bindQueue("sub16", "topic2", null, false, true, ms, pm, 20000, 100, 100);
MessageQueue[] queues = new MessageQueue[16];
SimpleReceiver[] receivers = new SimpleReceiver[16];
@@ -428,157 +484,89 @@
for (int i = 0; i < 16; i++)
{
queues[i] = bindings[i].getQueue();
- receivers[i] = new SimpleReceiver(SimpleReceiver.ACCEPTING);
+ receivers[i] = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
+ queues[i].add(receivers[i]);
}
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
+ Message msg = MessageFactory.createCoreMessage(1, persistentMessage, null);
+ MessageReference ref = ms.reference(msg);
- boolean routed = exchange1.route(ref1, "topic1", null);
+ boolean routed = exchange1.route(ref, "topic1", null);
assertTrue(routed);
- List msgs = receivers[0].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- Message msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[0].acknowledge(msgRec, null);
- msgs = queues[0].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
- msgs = receivers[1].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[1].acknowledge(msgRec, null);
- msgs = queues[1].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ Message msgRec = (Message)msgs.get(0);
+ assertEquals(msg.getMessageID(), msgRec.getMessageID());
+ receivers[i].acknowledge(msgRec, null);
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ receivers[i].clear();
+ }
- msgs = receivers[2].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[2].acknowledge(msgRec, null);
- msgs = queues[2].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ //Now route to topic2
- msgs = receivers[3].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[3].acknowledge(msgRec, null);
- msgs = queues[3].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ msg = MessageFactory.createCoreMessage(2, persistentMessage, null);;
+ ref = ms.reference(msg);
+
+ routed = exchange1.route(ref, "topic2", null);
+ assertTrue(routed);
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
- msgs = receivers[4].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[4].acknowledge(msgRec, null);
- msgs = queues[4].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
- msgs = receivers[5].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[5].acknowledge(msgRec, null);
- msgs = queues[5].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[6].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[6].acknowledge(msgRec, null);
- msgs = queues[6].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[7].getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertEquals(msg1.getMessageID(), msgRec.getMessageID());
- receivers[7].acknowledge(msgRec, null);
- msgs = queues[7].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[8].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[8].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[9].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[9].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[10].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[10].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[11].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[11].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[12].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[12].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[13].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[13].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[14].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[14].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receivers[15].getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
- msgs = queues[15].browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
-
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ Message msgRec = (Message)msgs.get(0);
+ assertEquals(msg.getMessageID(), msgRec.getMessageID());
+ receivers[i].acknowledge(msgRec, null);
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ receivers[i].clear();
+ }
+
}
finally
{
if (exchange1 != null)
{
+ exchange2.unbindQueue("sub5");
+ exchange1.unbindQueue("sub7");
+ exchange1.unbindQueue("sub8");
+ exchange2.unbindQueue("sub13");
+ exchange1.unbindQueue("sub15");
+ exchange1.unbindQueue("sub16");
+
exchange1.stop();
}
@@ -586,54 +574,580 @@
{
exchange2.stop();
}
-
- if (exchange3 != null)
- {
- exchange2.stop();
- }
}
}
-
-
- public void testClusteredTopic() throws Exception
+ protected void clusteredTransactionalRoute(boolean persistent) throws Throwable
{
Exchange exchange1 = null;
Exchange exchange2 = null;
try
- {
+ {
+ //Start two exchanges
+
exchange1 = createExchange("node1", "testgroup");
+ exchange2 = createExchange("node2", "testgroup");
+
- Binding binding1 = exchange1.bindQueue("sub1", "topic1", null, false, true, ms, pm, 20000, 100, 100);
+ //Two topics with a mixture of durable and non durable subscriptions
- exchange2 = createExchange("node2", "testgroup");
+ Binding[] bindings = new Binding[16];
- Binding binding2 = exchange1.bindQueue("sub2", "topic1", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[0] = exchange1.bindQueue("sub1", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[1] = exchange1.bindQueue("sub2", "topic1", null, false, false, ms, pm, 20000, 100, 100);
- Binding binding3 = exchange2.bindQueue("sub3", "topic1", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[2] = exchange2.bindQueue("sub3", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[3] = exchange2.bindQueue("sub4", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[4] = exchange2.bindQueue("sub5", "topic1", null, false, true, ms, pm, 20000, 100, 100);
- Message msg1 = MessageFactory.createCoreMessage(1);
+ bindings[5] = exchange1.bindQueue("sub6", "topic1", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[6] = exchange1.bindQueue("sub7", "topic1", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[7] = exchange1.bindQueue("sub8", "topic1", null, false, true, ms, pm, 20000, 100, 100);
+
+ bindings[8] = exchange1.bindQueue("sub9", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[9] = exchange1.bindQueue("sub10", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+
+ bindings[10] = exchange2.bindQueue("sub11", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[11] = exchange2.bindQueue("sub12", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[12] = exchange2.bindQueue("sub13", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+
+ bindings[13] = exchange1.bindQueue("sub14", "topic2", null, false, false, ms, pm, 20000, 100, 100);
+ bindings[14] = exchange1.bindQueue("sub15", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+ bindings[15] = exchange1.bindQueue("sub16", "topic2", null, false, true, ms, pm, 20000, 100, 100);
+
+ MessageQueue[] queues = new MessageQueue[16];
+ SimpleReceiver[] receivers = new SimpleReceiver[16];
+
+ for (int i = 0; i < 16; i++)
+ {
+ queues[i] = bindings[i].getQueue();
+ receivers[i] = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
+ queues[i].add(receivers[i]);
+ }
+
+ //First for topic 1
+
+ Message msg1 = MessageFactory.createCoreMessage(1, persistent, null);;
MessageReference ref1 = ms.reference(msg1);
- boolean routed = exchange1.route(ref1, "topic1", null);
+ Message msg2 = MessageFactory.createCoreMessage(2, persistent, null);;
+ MessageReference ref2 = ms.reference(msg2);
- //For non reliable messages may take little while for messages to arrive
- //Since they are just put on the bus and the caller continues - so we sleep
- Thread.sleep(500);
+ Transaction tx = tr.createTransaction();
+
+ boolean routed = exchange1.route(ref1, "topic1", tx);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic1", tx);
+ assertTrue(routed);
+
- checkQueueContainsRef(binding1, ref1);
- checkQueueContainsRef(binding2, ref1);
- checkQueueContainsRef(binding3, ref1);
+ for (int i = 0; i < 16; i++)
+ {
+ log.info("i is: " + i);
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
- log.info("Done test");
+ tx.commit();
+
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+ receivers[i].acknowledge(msgRec1, null);
+ receivers[i].acknowledge(msgRec2, null);
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ receivers[i].clear();
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);;
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);;
+ ref2 = ms.reference(msg2);
+
+ tx = tr.createTransaction();
+
+ routed = exchange1.route(ref1, "topic1", tx);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic1", tx);
+ assertTrue(routed);
+
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ tx.rollback();
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ //Now send some non transactionally
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);
+ ref2 = ms.reference(msg2);
+
+ routed = exchange1.route(ref1, "topic1", null);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic1", null);
+ assertTrue(routed);
+
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
+
+ //And acknowledge transactionally
+
+ tx = tr.createTransaction();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].acknowledge(msgRec1, tx);
+ receivers[i].acknowledge(msgRec2, tx);
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].clear();
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ log.info("*** COMMITTING THE TX");
+ tx.commit();
+ log.info("*** COMMITTED THE TX");
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+
+ // and the rollback
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);;
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);;
+ ref2 = ms.reference(msg2);
+
+ routed = exchange1.route(ref1, "topic1", null);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic1", null);
+ assertTrue(routed);
+
+ Thread.sleep(1000);
+
+ tx = tr.createTransaction();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].acknowledge(msgRec1, tx);
+ receivers[i].acknowledge(msgRec2, tx);
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ tx.rollback();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].acknowledge(msgRec1, null);
+ receivers[i].acknowledge(msgRec2, null);
+
+ receivers[i].clear();
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+
+ // Now for topic 2
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);
+ ref2 = ms.reference(msg2);
+
+ tx = tr.createTransaction();
+
+ routed = exchange1.route(ref1, "topic2", tx);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic2", tx);
+ assertTrue(routed);
+
+
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ tx.commit();
+
+ //Messages are sent asych so may take some finite time to arrive
+ Thread.sleep(1000);
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+ receivers[i].acknowledge(msgRec1, null);
+ receivers[i].acknowledge(msgRec2, null);
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ receivers[i].clear();
+ }
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);;
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);;
+ ref2 = ms.reference(msg2);
+
+ tx = tr.createTransaction();
+
+ routed = exchange1.route(ref1, "topic1", tx);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic1", tx);
+ assertTrue(routed);
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ tx.rollback();
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ //Now send some non transactionally
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);
+ ref2 = ms.reference(msg2);
+
+ routed = exchange1.route(ref1, "topic2", null);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic2", null);
+ assertTrue(routed);
+
+ Thread.sleep(1000);
+
+ //And acknowledge transactionally
+
+ tx = tr.createTransaction();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].acknowledge(msgRec1, tx);
+ receivers[i].acknowledge(msgRec2, tx);
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].clear();
+ }
+
+
+
+ tx.commit();
+
+ for (int i = 0; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+
+ // and the rollback
+
+ msg1 = MessageFactory.createCoreMessage(1, persistent, null);;
+ ref1 = ms.reference(msg1);
+
+ msg2 = MessageFactory.createCoreMessage(2, persistent, null);;
+ ref2 = ms.reference(msg2);
+
+ routed = exchange1.route(ref1, "topic2", null);
+ assertTrue(routed);
+ routed = exchange1.route(ref2, "topic2", null);
+ assertTrue(routed);
+
+ Thread.sleep(1000);
+
+ tx = tr.createTransaction();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+
+ receivers[i].acknowledge(msgRec1, tx);
+ receivers[i].acknowledge(msgRec2, tx);
+
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+ }
+
+
+
+ tx.rollback();
+
+ for (int i = 0; i < 8; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ msgs = queues[i].browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+
+ for (int i = 8; i < 16; i++)
+ {
+ List msgs = receivers[i].getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ Message msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ msgs = queues[i].browse();
+
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
+ msgRec2 = (Message)msgs.get(1);
+ assertEquals(msg2.getMessageID(), msgRec2.getMessageID());
+
+ receivers[i].acknowledge(msgRec1, null);
+ receivers[i].acknowledge(msgRec2, null);
+
+ receivers[i].clear();
+ }
}
finally
{
if (exchange1 != null)
{
+ exchange2.unbindQueue("sub5");
+ exchange1.unbindQueue("sub7");
+ exchange1.unbindQueue("sub8");
+ exchange2.unbindQueue("sub13");
+ exchange1.unbindQueue("sub15");
+ exchange1.unbindQueue("sub16");
exchange1.stop();
}
@@ -644,25 +1158,6 @@
}
}
- private void checkQueueContainsRef(Binding binding, MessageReference ref)
- {
- MessageQueue queue = binding.getQueue();
-
- List refs = queue.browse();
-
- assertNotNull(refs);
-
- assertEquals(1, refs.size());
-
- Message msg = (Message)refs.get(0);
-
- assertEquals(ref.getMessageID(), msg.getMessageID());
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
protected Exchange createExchange() throws Exception
{
ClusteredTopicExchange exchange = new ClusteredTopicExchange(sc.getDataSource(), sc.getTransactionManager());
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/DirectExchangeTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/DirectExchangeTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/DirectExchangeTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -72,69 +72,46 @@
super.tearDown();
}
- public final void testRoute() throws Throwable
+ public final void testRouteNPMessageNDQueue() throws Throwable
{
- Exchange exchange = createExchange();
+ route(false, false);
+ }
+
+ public final void testRouteNPMessageDQueue() throws Throwable
+ {
+ route(false, true);
+ }
+
+ public final void testRoutePMessageNDQueue() throws Throwable
+ {
+ route(true, false);
+ }
+
+ public final void testRoutePMessageDQueue() throws Throwable
+ {
+ route(true, true);
+ }
- Binding binding1 =
- exchange.bindQueue("queue1", "queue1", null, false, true, ms, pm, 1000, 20, 20);
- Binding binding2 =
- exchange.bindQueue("queue2", "queue2", null, false, true, ms, pm, 1000, 20, 20);
-
- MessageQueue queue1 = binding1.getQueue();
- MessageQueue queue2 = binding2.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver1);
- SimpleReceiver receiver2 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver2);
-
- assertTrue(binding1.isActive());
- assertTrue(binding2.isActive());
-
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
-
- boolean routed = exchange.route(ref1, "queue1", null);
- assertTrue(routed);
-
- List msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- Message msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver1.acknowledge(msgRec, null);
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver1.clear();
- receiver2.clear();
-
- Message msg2 = MessageFactory.createCoreMessage(2);
- MessageReference ref2 = ms.reference(msg2);
-
- routed = exchange.route(ref2, "queue2", null);
- assertTrue(routed);
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg2 == msgRec);
- receiver2.acknowledge(msgRec, null);
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ public final void testRouteTransactionalNPMessageNDQueue() throws Throwable
+ {
+ routeTransactional(false, false);
}
+ public final void testRouteTransactionalNPMessageDQueue() throws Throwable
+ {
+ routeTransactional(false, true);
+ }
+
+ public final void testRouteTransactionalPMessageNDQueue() throws Throwable
+ {
+ routeTransactional(true, false);
+ }
+
+ public final void testRouteTransactionalPMessageDQueue() throws Throwable
+ {
+ routeTransactional(true, true);
+ }
+
public final void testRouteInactive() throws Throwable
{
Exchange exchange = createExchange();
@@ -146,16 +123,16 @@
MessageQueue queue1 = binding1.getQueue();
MessageQueue queue2 = binding2.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
queue1.add(receiver1);
- SimpleReceiver receiver2 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver2);
+ SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
+ queue2.add(receiver2);
//Now make one bindings inactive
binding1.deactivate();
assertFalse(binding1.isActive());
- assertFalse(binding2.isActive());
+ assertTrue(binding2.isActive());
Message msg1 = MessageFactory.createCoreMessage(1);
MessageReference ref1 = ms.reference(msg1);
@@ -219,23 +196,30 @@
assertTrue(msgs.isEmpty());
}
- public final void testRouteTransactional() throws Throwable
+
+
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ protected void routeTransactional(boolean persistentMessage, boolean durableQueue) throws Throwable
{
Exchange exchange = createExchange();
Binding binding1 =
- exchange.bindQueue("queue1", "queue1", null, false, true, ms, pm, 1000, 20, 20);
+ exchange.bindQueue("queue1", "queue1", null, false, durableQueue, ms, pm, 1000, 20, 20);
MessageQueue queue1 = binding1.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
queue1.add(receiver1);
assertTrue(binding1.isActive());
- Message msg1 = MessageFactory.createCoreMessage(1);
+ Message msg1 = MessageFactory.createCoreMessage(1, persistentMessage, null);
MessageReference ref1 = ms.reference(msg1);
- Message msg2 = MessageFactory.createCoreMessage(2);
+ Message msg2 = MessageFactory.createCoreMessage(2, persistentMessage, null);
MessageReference ref2 = ms.reference(msg2);
Transaction tx = tr.createTransaction();
@@ -270,17 +254,17 @@
receiver1.clear();
- Message msg3 = MessageFactory.createCoreMessage(3);
+ Message msg3 = MessageFactory.createCoreMessage(3, persistentMessage, null);
MessageReference ref3 = ms.reference(msg3);
- Message msg4 = MessageFactory.createCoreMessage(4);
+ Message msg4 = MessageFactory.createCoreMessage(4, persistentMessage, null);
MessageReference ref4 = ms.reference(msg4);
- Transaction tx2 = tr.createTransaction();
+ tx = tr.createTransaction();
- routed = exchange.route(ref3, "queue1", tx2);
+ routed = exchange.route(ref3, "queue1", tx);
assertTrue(routed);
- routed = exchange.route(ref4, "queue1", tx2);
+ routed = exchange.route(ref4, "queue1", tx);
assertTrue(routed);
msgs = queue1.browse();
@@ -296,10 +280,10 @@
receiver1.clear();
- Message msg5 = MessageFactory.createCoreMessage(5);
+ Message msg5 = MessageFactory.createCoreMessage(5, persistentMessage, null);
MessageReference ref5 = ms.reference(msg5);
- Message msg6 = MessageFactory.createCoreMessage(6);
+ Message msg6 = MessageFactory.createCoreMessage(6, persistentMessage, null);
MessageReference ref6 = ms.reference(msg6);
routed = exchange.route(ref5, "queue1", null);
@@ -339,10 +323,10 @@
receiver1.clear();
- Message msg7 = MessageFactory.createCoreMessage(7);
+ Message msg7 = MessageFactory.createCoreMessage(7, persistentMessage, null);
MessageReference ref7 = ms.reference(msg7);
- Message msg8 = MessageFactory.createCoreMessage(8);
+ Message msg8 = MessageFactory.createCoreMessage(8, persistentMessage, null);
MessageReference ref8 = ms.reference(msg8);
routed = exchange.route(ref7, "queue1", null);
@@ -385,8 +369,74 @@
}
-
- // Package protected ---------------------------------------------
+ protected void route(boolean persistentMessage, boolean durableQueue) throws Throwable
+ {
+ Exchange exchange = createExchange();
+
+ Binding binding1 =
+ exchange.bindQueue("queue1", "queue1", null, false, durableQueue, ms, pm, 1000, 20, 20);
+ Binding binding2 =
+ exchange.bindQueue("queue2", "queue2", null, false, durableQueue, ms, pm, 1000, 20, 20);
+
+ MessageQueue queue1 = binding1.getQueue();
+ MessageQueue queue2 = binding2.getQueue();
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
+ queue1.add(receiver1);
+ SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue2.add(receiver2);
+
+ assertTrue(binding1.isActive());
+ assertTrue(binding2.isActive());
+
+ Message msg1 = MessageFactory.createCoreMessage(1, persistentMessage, null);
+ MessageReference ref1 = ms.reference(msg1);
+
+ boolean routed = exchange.route(ref1, "queue1", null);
+ assertTrue(routed);
+
+ List msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ Message msgRec = (Message)msgs.get(0);
+ assertTrue(msg1 == msgRec);
+
+ if (msg1 == msgRec)
+ {
+ log.info("&&&&&&&&&&&&&& THEY ARE ONE AND THE SAME");
+ }
+
+ receiver1.acknowledge(msgRec, null);
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver1.clear();
+ receiver2.clear();
+
+ Message msg2 = MessageFactory.createCoreMessage(2);
+ MessageReference ref2 = ms.reference(msg2);
+
+ routed = exchange.route(ref2, "queue2", null);
+ assertTrue(routed);
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg2 == msgRec);
+ receiver2.acknowledge(msgRec, null);
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
protected Exchange createExchange() throws Exception
{
@@ -399,8 +449,6 @@
return exchange;
}
- // Protected -----------------------------------------------------
-
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/JDBCPersistenceManagerTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/JDBCPersistenceManagerTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/JDBCPersistenceManagerTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -683,8 +683,8 @@
//First load exactly 10
PersistenceManager.InitialLoadInfo info = pm.getInitialReferenceInfos(channel.getChannelID(), 10);
- assertEquals(-1, info.getMinPageOrdering());
- assertEquals(-1, info.getMaxPageOrdering());
+ assertNull(info.getMinPageOrdering());
+ assertNull(info.getMaxPageOrdering());
List refInfos = info.getRefInfos();
@@ -705,8 +705,8 @@
//fullSize has increased to 15 - only 10 should be loadeed still
info = pm.getInitialReferenceInfos(channel.getChannelID(), 15);
- assertEquals(-1, info.getMinPageOrdering());
- assertEquals(-1, info.getMaxPageOrdering());
+ assertNull(info.getMinPageOrdering());
+ assertNull(info.getMaxPageOrdering());
refInfos = info.getRefInfos();
assertNotNull(refInfos);
@@ -726,8 +726,8 @@
//fullSize has gone down to 7 - 7 should be loaded and the other 3 marked as paged
info = pm.getInitialReferenceInfos(channel.getChannelID(), 7);
- assertEquals(0, info.getMinPageOrdering());
- assertEquals(2, info.getMaxPageOrdering());
+ assertEquals(0, info.getMinPageOrdering().longValue());
+ assertEquals(2, info.getMaxPageOrdering().longValue());
refInfos = info.getRefInfos();
assertNotNull(refInfos);
@@ -752,8 +752,8 @@
info = pm.getInitialReferenceInfos(channel.getChannelID(), 4);
- assertEquals(0, info.getMinPageOrdering());
- assertEquals(5, info.getMaxPageOrdering());
+ assertEquals(0, info.getMinPageOrdering().longValue());
+ assertEquals(5, info.getMaxPageOrdering().longValue());
refInfos = info.getRefInfos();
assertNotNull(refInfos);
@@ -778,8 +778,8 @@
info = pm.getInitialReferenceInfos(channel.getChannelID(), 6);
- assertEquals(2, info.getMinPageOrdering());
- assertEquals(5, info.getMaxPageOrdering());
+ assertEquals(2, info.getMinPageOrdering().longValue());
+ assertEquals(5, info.getMaxPageOrdering().longValue());
refInfos = info.getRefInfos();
assertNotNull(refInfos);
@@ -811,8 +811,8 @@
info = pm.getInitialReferenceInfos(channel.getChannelID(), 12);
- assertEquals(-1, info.getMinPageOrdering());
- assertEquals(-1, info.getMaxPageOrdering());
+ assertNull(info.getMinPageOrdering());
+ assertNull(info.getMaxPageOrdering());
refInfos = info.getRefInfos();
assertNotNull(refInfos);
@@ -827,7 +827,7 @@
assertEquals(ref7.getMessageID(), ((PersistenceManager.ReferenceInfo)refInfos.get(6)).getMessageId());
assertEquals(ref8.getMessageID(), ((PersistenceManager.ReferenceInfo)refInfos.get(7)).getMessageId());
assertEquals(ref9.getMessageID(), ((PersistenceManager.ReferenceInfo)refInfos.get(8)).getMessageId());
- assertEquals(ref10.getMessageID(), ((PersistenceManager.ReferenceInfo)refInfos.get(9)).getMessageId());
+ assertEquals(ref10.getMessageID(), ((PersistenceManager.ReferenceInfo)refInfos.get(9)).getMessageId());
}
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/JGroupsUtil.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/JGroupsUtil.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/JGroupsUtil.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -38,7 +38,7 @@
public static String getDataStackProperties(int PING_timeout,
- int PING_num_initial_members)
+ int PING_num_initial_members)
{
String host = System.getProperty("test.bind.address");
if (host == null)
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/TopicExchangeTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/TopicExchangeTest.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/TopicExchangeTest.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -72,559 +72,631 @@
super.tearDown();
}
- public final void testRoute() throws Throwable
+ public final void testRoutePersistent() throws Throwable
{
- Exchange exchange = createExchange();
-
- Binding binding1 =
- exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding2 =
- exchange.bindQueue("sub2", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding3 =
- exchange.bindQueue("sub3", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding4 =
- exchange.bindQueue("sub4", "topic2", null, false, true, ms, pm, 1000, 20, 20);
- Binding binding5 =
- exchange.bindQueue("sub5", "topic2", null, false, true, ms, pm, 1000, 20, 20);
- Binding binding6 =
- exchange.bindQueue("sub6", "topic2", null, false, true, ms, pm, 1000, 20, 20);
-
- MessageQueue queue1 = binding1.getQueue();
- MessageQueue queue2 = binding2.getQueue();
- MessageQueue queue3 = binding3.getQueue();
- MessageQueue queue4 = binding4.getQueue();
- MessageQueue queue5 = binding5.getQueue();
- MessageQueue queue6 = binding6.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver1);
- SimpleReceiver receiver2 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue2.add(receiver2);
- SimpleReceiver receiver3 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue3.add(receiver3);
- SimpleReceiver receiver4 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue4.add(receiver4);
- SimpleReceiver receiver5 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue5.add(receiver5);
- SimpleReceiver receiver6 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue6.add(receiver6);
-
- assertTrue(binding1.isActive());
- assertTrue(binding2.isActive());
- assertTrue(binding3.isActive());
- assertTrue(binding4.isActive());
- assertTrue(binding5.isActive());
- assertTrue(binding6.isActive());
-
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
-
- boolean routed = exchange.route(ref1, "topic1", null);
- assertTrue(routed);
-
- List msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- Message msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver1.acknowledge(msgRec, null);
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver2.acknowledge(msgRec, null);
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver3.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver3.acknowledge(msgRec, null);
- msgs = queue3.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver4.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver5.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver6.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver1.clear();
- receiver2.clear();
- receiver3.clear();
-
-
- Message msg2 = MessageFactory.createCoreMessage(2);
- MessageReference ref2 = ms.reference(msg2);
-
- routed = exchange.route(ref2, "topic2", null);
- assertTrue(routed);
-
- msgs = receiver4.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg2 == msgRec);
- receiver4.acknowledge(msgRec, null);
- msgs = queue4.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver5.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg2 == msgRec);
- receiver5.acknowledge(msgRec, null);
- msgs = queue5.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver6.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg2 == msgRec);
- receiver6.acknowledge(msgRec, null);
- msgs = queue6.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver3.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ route(true);
}
+ public final void testRouteNonPersistent() throws Throwable
+ {
+ route(false);
+ }
+
+ public final void testRouteTransactionalPersistent() throws Throwable
+ {
+ routeTransactional(true);
+ }
+
+ public final void testRouteTransactionalNonPersistent() throws Throwable
+ {
+ routeTransactional(false);
+ }
+
+
public final void testRouteInactive() throws Throwable
{
- Exchange exchange = createExchange();
+ Exchange exchange = null;
- Binding binding1 =
- exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding2 =
- exchange.bindQueue("sub2", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding3 =
- exchange.bindQueue("sub3", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding4 =
- exchange.bindQueue("sub4", "topic2", null, false, true, ms, pm, 1000, 20, 20);
- Binding binding5 =
- exchange.bindQueue("sub5", "topic2", null, false, true, ms, pm, 1000, 20, 20);
- Binding binding6 =
- exchange.bindQueue("sub6", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+ try
+ {
- MessageQueue queue1 = binding1.getQueue();
- MessageQueue queue2 = binding2.getQueue();
- MessageQueue queue3 = binding3.getQueue();
- MessageQueue queue4 = binding4.getQueue();
- MessageQueue queue5 = binding5.getQueue();
- MessageQueue queue6 = binding6.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver1);
- SimpleReceiver receiver2 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue2.add(receiver2);
- SimpleReceiver receiver3 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue3.add(receiver3);
- SimpleReceiver receiver4 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue4.add(receiver4);
- SimpleReceiver receiver5 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue5.add(receiver5);
- SimpleReceiver receiver6 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue6.add(receiver6);
-
- binding1.deactivate();
- binding2.deactivate();
- binding5.deactivate();
- binding6.deactivate();
-
- assertFalse(binding1.isActive());
- assertFalse(binding2.isActive());
- assertFalse(binding5.isActive());
- assertFalse(binding6.isActive());
- assertTrue(binding3.isActive());
- assertTrue(binding4.isActive());
-
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
-
- boolean routed = exchange.route(ref1, "topic1", null);
- assertTrue(routed);
-
- List msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver3.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- Message msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver3.acknowledge(msgRec, null);
- msgs = queue3.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver4.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver5.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver6.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver3.clear();
-
-
-
- Message msg2 = MessageFactory.createCoreMessage(2);
- MessageReference ref2 = ms.reference(msg2);
-
- routed = exchange.route(ref2, "topic2", null);
- assertTrue(routed);
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver3.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver4.getMessages();
- assertNotNull(msgs);
- assertEquals(1, msgs.size());
- msgRec = (Message)msgs.get(0);
- assertTrue(msg1 == msgRec);
- receiver4.acknowledge(msgRec, null);
- msgs = queue4.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver5.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = receiver6.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ exchange = createExchange();
+
+ Binding binding1 =
+ exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding2 =
+ exchange.bindQueue("sub2", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding3 =
+ exchange.bindQueue("sub3", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding4 =
+ exchange.bindQueue("sub4", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+ Binding binding5 =
+ exchange.bindQueue("sub5", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+ Binding binding6 =
+ exchange.bindQueue("sub6", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+
+ MessageQueue queue1 = binding1.getQueue();
+ MessageQueue queue2 = binding2.getQueue();
+ MessageQueue queue3 = binding3.getQueue();
+ MessageQueue queue4 = binding4.getQueue();
+ MessageQueue queue5 = binding5.getQueue();
+ MessageQueue queue6 = binding6.getQueue();
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue1.add(receiver1);
+ SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue2.add(receiver2);
+ SimpleReceiver receiver3 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue3.add(receiver3);
+ SimpleReceiver receiver4 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue4.add(receiver4);
+ SimpleReceiver receiver5 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue5.add(receiver5);
+ SimpleReceiver receiver6 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue6.add(receiver6);
+
+ binding1.deactivate();
+ binding2.deactivate();
+ binding5.deactivate();
+ binding6.deactivate();
+
+ assertFalse(binding1.isActive());
+ assertFalse(binding2.isActive());
+ assertFalse(binding5.isActive());
+ assertFalse(binding6.isActive());
+ assertTrue(binding3.isActive());
+ assertTrue(binding4.isActive());
+
+ Message msg1 = MessageFactory.createCoreMessage(1);
+ MessageReference ref1 = ms.reference(msg1);
+
+ boolean routed = exchange.route(ref1, "topic1", null);
+ assertTrue(routed);
+
+ List msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver3.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ Message msgRec = (Message)msgs.get(0);
+ assertTrue(msg1 == msgRec);
+ receiver3.acknowledge(msgRec, null);
+ msgs = queue3.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver4.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver5.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver6.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver3.clear();
+
+ Message msg2 = MessageFactory.createCoreMessage(2);
+ MessageReference ref2 = ms.reference(msg2);
+
+ routed = exchange.route(ref2, "topic2", null);
+ assertTrue(routed);
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver3.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver4.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg2 == msgRec);
+ receiver4.acknowledge(msgRec, null);
+ msgs = queue4.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver5.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver6.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
}
public final void testRouteNoBinding() throws Throwable
{
- Exchange exchange = createExchange();
+ Exchange exchange = null;
- Binding binding1 =
- exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ try
+ {
+ exchange = createExchange();
+
+ Binding binding1 =
+ exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+
+ MessageQueue queue1 = binding1.getQueue();
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue1.add(receiver1);
+
+ assertTrue(binding1.isActive());
+
+ Message msg1 = MessageFactory.createCoreMessage(1);
+ MessageReference ref1 = ms.reference(msg1);
+
+ boolean routed = exchange.route(ref1, "this won't match anything", null);
+
+ //A topic exchange always returns true even if there is no binding
+ assertTrue(routed);
+
+ List msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
+ }
+
+
+
+ // Package protected ---------------------------------------------
- MessageQueue queue1 = binding1.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver1);
-
- assertTrue(binding1.isActive());
-
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
+ // Protected -----------------------------------------------------
+
+ protected void route(boolean persistentMessage) throws Throwable
+ {
+ Exchange exchange = null;
- boolean routed = exchange.route(ref1, "this won't match anything", null);
+ try
+ {
+ exchange = createExchange();
- //A topic exchange always returns true even if there is no binding
- assertTrue(routed);
-
- List msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
+ Binding binding1 =
+ exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding2 =
+ exchange.bindQueue("sub2", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding3 =
+ exchange.bindQueue("sub3", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding4 =
+ exchange.bindQueue("sub4", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+ Binding binding5 =
+ exchange.bindQueue("sub5", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+ Binding binding6 =
+ exchange.bindQueue("sub6", "topic2", null, false, true, ms, pm, 1000, 20, 20);
+
+ MessageQueue queue1 = binding1.getQueue();
+ MessageQueue queue2 = binding2.getQueue();
+ MessageQueue queue3 = binding3.getQueue();
+ MessageQueue queue4 = binding4.getQueue();
+ MessageQueue queue5 = binding5.getQueue();
+ MessageQueue queue6 = binding6.getQueue();
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue1.add(receiver1);
+ SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue2.add(receiver2);
+ SimpleReceiver receiver3 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue3.add(receiver3);
+ SimpleReceiver receiver4 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue4.add(receiver4);
+ SimpleReceiver receiver5 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue5.add(receiver5);
+ SimpleReceiver receiver6 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue6.add(receiver6);
+
+ assertTrue(binding1.isActive());
+ assertTrue(binding2.isActive());
+ assertTrue(binding3.isActive());
+ assertTrue(binding4.isActive());
+ assertTrue(binding5.isActive());
+ assertTrue(binding6.isActive());
+
+ Message msg1 = MessageFactory.createCoreMessage(1, persistentMessage, null);
+ MessageReference ref1 = ms.reference(msg1);
+
+ boolean routed = exchange.route(ref1, "topic1", null);
+ assertTrue(routed);
+
+ List msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ Message msgRec = (Message)msgs.get(0);
+ assertTrue(msg1 == msgRec);
+ receiver1.acknowledge(msgRec, null);
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg1 == msgRec);
+ receiver2.acknowledge(msgRec, null);
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver3.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg1 == msgRec);
+ receiver3.acknowledge(msgRec, null);
+ msgs = queue3.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver4.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver5.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver6.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver1.clear();
+ receiver2.clear();
+ receiver3.clear();
+
+
+ Message msg2 = MessageFactory.createCoreMessage(2, persistentMessage, null);
+ MessageReference ref2 = ms.reference(msg2);
+
+ routed = exchange.route(ref2, "topic2", null);
+ assertTrue(routed);
+
+ msgs = receiver4.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg2 == msgRec);
+ receiver4.acknowledge(msgRec, null);
+ msgs = queue4.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver5.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg2 == msgRec);
+ receiver5.acknowledge(msgRec, null);
+ msgs = queue5.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver6.getMessages();
+ assertNotNull(msgs);
+ assertEquals(1, msgs.size());
+ msgRec = (Message)msgs.get(0);
+ assertTrue(msg2 == msgRec);
+ receiver6.acknowledge(msgRec, null);
+ msgs = queue6.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = receiver3.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
}
- public final void testRouteTransactional() throws Throwable
+ protected void routeTransactional(boolean persistentMessage) throws Throwable
{
- Exchange exchange = createExchange();
+ Exchange exchange = null;
- Binding binding1 =
- exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
- Binding binding2 =
- exchange.bindQueue("sub2", "topic1", null, false, false, ms, pm, 1000, 20, 20);
-
- MessageQueue queue1 = binding1.getQueue();
- SimpleReceiver receiver1 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue1.add(receiver1);
- MessageQueue queue2 = binding2.getQueue();
- SimpleReceiver receiver2 = new SimpleReceiver(SimpleReceiver.ACCEPTING);
- queue2.add(receiver2);
-
- assertTrue(binding1.isActive());
- assertTrue(binding2.isActive());
-
- Message msg1 = MessageFactory.createCoreMessage(1);
- MessageReference ref1 = ms.reference(msg1);
+ try
+ {
+ exchange = createExchange();
- Message msg2 = MessageFactory.createCoreMessage(2);
- MessageReference ref2 = ms.reference(msg2);
-
- Transaction tx = tr.createTransaction();
-
- boolean routed = exchange.route(ref1, "topic1", tx);
- assertTrue(routed);
- routed = exchange.route(ref2, "topic1", tx);
- assertTrue(routed);
-
- List msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- tx.commit();
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- Message msgRec1 = (Message)msgs.get(0);
- Message msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg1);
- assertTrue(msgRec2 == msg2);
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg1);
- assertTrue(msgRec2 == msg2);
-
- //Acknowledge non transactionally
- receiver1.acknowledge(msgRec1, null);
- receiver1.acknowledge(msgRec2, null);
-
- receiver2.acknowledge(msgRec1, null);
- receiver2.acknowledge(msgRec2, null);
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver1.clear();
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver2.clear();
-
- Message msg3 = MessageFactory.createCoreMessage(3);
- MessageReference ref3 = ms.reference(msg3);
-
- Message msg4 = MessageFactory.createCoreMessage(4);
- MessageReference ref4 = ms.reference(msg4);
-
- Transaction tx2 = tr.createTransaction();
-
- routed = exchange.route(ref3, "topic1", tx2);
- assertTrue(routed);
- routed = exchange.route(ref4, "topic1", tx2);
- assertTrue(routed);
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- tx.rollback();
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver1.clear();
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver2.clear();
-
-
- Message msg5 = MessageFactory.createCoreMessage(5);
- MessageReference ref5 = ms.reference(msg5);
-
- Message msg6 = MessageFactory.createCoreMessage(6);
- MessageReference ref6 = ms.reference(msg6);
-
- routed = exchange.route(ref5, "topic1", null);
- assertTrue(routed);
- routed = exchange.route(ref6, "topic1", null);
- assertTrue(routed);
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg5);
- assertTrue(msgRec2 == msg6);
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg5);
- assertTrue(msgRec2 == msg6);
-
- //Acknowledge transactionally
-
- tx = tr.createTransaction();
-
- receiver1.acknowledge(msgRec1, tx);
- receiver1.acknowledge(msgRec2, tx);
-
- receiver2.acknowledge(msgRec1, tx);
- receiver2.acknowledge(msgRec2, tx);
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg5);
- assertTrue(msgRec2 == msg6);
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg5);
- assertTrue(msgRec2 == msg6);
-
- tx.commit();
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver1.clear();
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertTrue(msgs.isEmpty());
-
- receiver2.clear();
-
- Message msg7 = MessageFactory.createCoreMessage(7);
- MessageReference ref7 = ms.reference(msg7);
-
- Message msg8 = MessageFactory.createCoreMessage(8);
- MessageReference ref8 = ms.reference(msg8);
-
- routed = exchange.route(ref7, "topic1", null);
- assertTrue(routed);
- routed = exchange.route(ref8, "topic1", null);
- assertTrue(routed);
-
- msgs = receiver1.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
-
- msgs = receiver2.getMessages();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
-
- //Acknowledge transactionally
-
- tx = tr.createTransaction();
-
- receiver1.acknowledge(msgRec1, tx);
- receiver1.acknowledge(msgRec2, tx);
-
- receiver2.acknowledge(msgRec1, tx);
- receiver2.acknowledge(msgRec2, tx);
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
-
- tx.rollback();
-
- msgs = queue1.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
-
- msgs = queue2.browse();
- assertNotNull(msgs);
- assertEquals(2, msgs.size());
- msgRec1 = (Message)msgs.get(0);
- msgRec2 = (Message)msgs.get(1);
- assertTrue(msgRec1 == msg7);
- assertTrue(msgRec2 == msg8);
+ Binding binding1 =
+ exchange.bindQueue("sub1", "topic1", null, false, false, ms, pm, 1000, 20, 20);
+ Binding binding2 =
+ exchange.bindQueue("sub2", "topic1", null, false, true, ms, pm, 1000, 20, 20);
+
+ MessageQueue queue1 = binding1.getQueue();
+ SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue1.add(receiver1);
+ MessageQueue queue2 = binding2.getQueue();
+ SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
+ queue2.add(receiver2);
+
+ assertTrue(binding1.isActive());
+ assertTrue(binding2.isActive());
+
+ Message msg1 = MessageFactory.createCoreMessage(1, persistentMessage, null);
+ MessageReference ref1 = ms.reference(msg1);
+
+ Message msg2 = MessageFactory.createCoreMessage(2, persistentMessage, null);
+ MessageReference ref2 = ms.reference(msg2);
+
+ Transaction tx = tr.createTransaction();
+
+ boolean routed = exchange.route(ref1, "topic1", tx);
+ assertTrue(routed);
+ routed = exchange.route(ref2, "topic1", tx);
+ assertTrue(routed);
+
+ List msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ tx.commit();
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ Message msgRec1 = (Message)msgs.get(0);
+ Message msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg1);
+ assertTrue(msgRec2 == msg2);
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg1);
+ assertTrue(msgRec2 == msg2);
+
+ //Acknowledge non transactionally
+ receiver1.acknowledge(msgRec1, null);
+ receiver1.acknowledge(msgRec2, null);
+
+ receiver2.acknowledge(msgRec1, null);
+ receiver2.acknowledge(msgRec2, null);
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver1.clear();
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver2.clear();
+
+ Message msg3 = MessageFactory.createCoreMessage(3, persistentMessage, null);
+ MessageReference ref3 = ms.reference(msg3);
+
+ Message msg4 = MessageFactory.createCoreMessage(4, persistentMessage, null);
+ MessageReference ref4 = ms.reference(msg4);
+
+ tx = tr.createTransaction();
+
+ routed = exchange.route(ref3, "topic1", tx);
+ assertTrue(routed);
+ routed = exchange.route(ref4, "topic1", tx);
+ assertTrue(routed);
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ tx.rollback();
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver1.clear();
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver2.clear();
+
+
+ Message msg5 = MessageFactory.createCoreMessage(5, persistentMessage, null);
+ MessageReference ref5 = ms.reference(msg5);
+
+ Message msg6 = MessageFactory.createCoreMessage(6, persistentMessage, null);
+ MessageReference ref6 = ms.reference(msg6);
+
+ routed = exchange.route(ref5, "topic1", null);
+ assertTrue(routed);
+ routed = exchange.route(ref6, "topic1", null);
+ assertTrue(routed);
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg5);
+ assertTrue(msgRec2 == msg6);
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg5);
+ assertTrue(msgRec2 == msg6);
+
+ //Acknowledge transactionally
+
+ tx = tr.createTransaction();
+
+ receiver1.acknowledge(msgRec1, tx);
+ receiver1.acknowledge(msgRec2, tx);
+
+ receiver2.acknowledge(msgRec1, tx);
+ receiver2.acknowledge(msgRec2, tx);
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg5);
+ assertTrue(msgRec2 == msg6);
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg5);
+ assertTrue(msgRec2 == msg6);
+
+ tx.commit();
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver1.clear();
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertTrue(msgs.isEmpty());
+
+ receiver2.clear();
+
+ Message msg7 = MessageFactory.createCoreMessage(7, persistentMessage, null);
+ MessageReference ref7 = ms.reference(msg7);
+
+ Message msg8 = MessageFactory.createCoreMessage(8, persistentMessage, null);
+ MessageReference ref8 = ms.reference(msg8);
+
+ routed = exchange.route(ref7, "topic1", null);
+ assertTrue(routed);
+ routed = exchange.route(ref8, "topic1", null);
+ assertTrue(routed);
+
+ msgs = receiver1.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+
+ msgs = receiver2.getMessages();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+
+ //Acknowledge transactionally
+
+ tx = tr.createTransaction();
+
+ receiver1.acknowledge(msgRec1, tx);
+ receiver1.acknowledge(msgRec2, tx);
+
+ receiver2.acknowledge(msgRec1, tx);
+ receiver2.acknowledge(msgRec2, tx);
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+
+ tx.rollback();
+
+ msgs = queue1.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+
+ msgs = queue2.browse();
+ assertNotNull(msgs);
+ assertEquals(2, msgs.size());
+ msgRec1 = (Message)msgs.get(0);
+ msgRec2 = (Message)msgs.get(1);
+ assertTrue(msgRec1 == msg7);
+ assertTrue(msgRec2 == msg8);
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
}
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
protected Exchange createExchange() throws Exception
{
TopicExchange exchange = new TopicExchange(sc.getDataSource(), sc.getTransactionManager());
Modified: trunk/tests/src/org/jboss/test/messaging/core/plugin/base/ExchangeTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/plugin/base/ExchangeTestBase.java 2006-09-01 21:40:31 UTC (rev 1251)
+++ trunk/tests/src/org/jboss/test/messaging/core/plugin/base/ExchangeTestBase.java 2006-09-01 22:07:43 UTC (rev 1252)
@@ -120,262 +120,317 @@
// Public --------------------------------------------------------
+
public final void testBind() throws Throwable
{
- Exchange exchange1 = createExchange();
+ Exchange exchange1 = null;
- //Bind one durable
+ Exchange exchange2 = null;
- Filter filter1 = new Selector("x = 'cheese'");
- Filter filter2 = new Selector("y = 'bread'");
+ Exchange exchange3 = null;
- Binding binding1 =
- exchange1.bindQueue("durableQueue", "condition1", filter1, true, true, ms, pm, 2000, 100, 100);
-
- //Binding twice with the same name should fail
try
- {
- Binding bindFail = exchange1.bindQueue("durableQueue", "condition1", filter1, true, true, ms, pm, 2000, 100, 100);
- fail();
+ {
+ exchange1 = createExchange();
+
+ //Bind one durable
+
+ Filter filter1 = new Selector("x = 'cheese'");
+ Filter filter2 = new Selector("y = 'bread'");
+
+ Binding binding1 =
+ exchange1.bindQueue("durableQueue", "condition1", filter1, true, true, ms, pm, 2000, 100, 100);
+
+ //Binding twice with the same name should fail
+ try
+ {
+ Binding bindFail = exchange1.bindQueue("durableQueue", "condition1", filter1, true, true, ms, pm, 2000, 100, 100);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ //Ok
+ }
+
+ //Bind one non durable
+ Binding binding2 =
+ exchange1.bindQueue("nonDurableQueue", "condition2", filter2, true, false, ms, pm, 2000, 100, 100);
+
+ //Check they're there
+
+ Binding binding3 = exchange1.getBindingForName("durableQueue");
+ assertNotNull(binding3);
+ assertTrue(binding1 == binding3);
+ assertEquivalent(binding1, binding3);
+ assertNotNull(binding3.getQueue());
+ assertEquals(true, binding3.getQueue().isRecoverable());
+
+
+ Binding binding4 = exchange1.getBindingForName("nonDurableQueue");
+ assertNotNull(binding4);
+ assertTrue(binding2 == binding4);
+ assertEquivalent(binding2, binding4);
+ assertNotNull(binding4.getQueue());
+ assertEquals(false, binding4.getQueue().isRecoverable());
+
+ exchange1.stop();
+
+ //Throw away the exchange and create another
+ exchange2 = createExchange();
+
+ //Only one binding should be there
+ Binding binding5 = exchange2.getBindingForName("durableQueue");
+ assertNotNull(binding5);
+ assertEquivalent(binding1, binding5);
+ //Should be unloaded
+ assertNull(binding5.getQueue());
+
+ Binding binding6 = exchange2.getBindingForName("nonDurableQueue");
+ assertNull(binding6);
+
+ //ReLoad the durable queue - or we won't be able to unbind it
+ exchange2.reloadQueues("condition1", ms, pm, 2000, 100, 100);
+
+ //Unbind the binding
+ Binding binding7 = exchange2.unbindQueue("durableQueue");
+ assertNotNull(binding7);
+ assertEquivalent(binding1, binding7);
+
+ //Make sure no longer there
+ Binding binding8 = exchange2.getBindingForName("durableQueue");
+ assertNull(binding8);
+
+ exchange2.stop();
+
+ //Throw away exchange and start another
+ exchange3 = createExchange();
+
+ //Make sure not there
+ Binding binding9 = exchange3.getBindingForName("durableQueue");
+ assertNull(binding9);
+
+ exchange3.stop();
}
- catch (Exception e)
+ finally
{
- //Ok
+ if (exchange1 != null)
+ {
+ exchange1.stop();
+ }
+
+ if (exchange2 != null)
+ {
+ exchange2.stop();
+ }
+
+ if (exchange3 != null)
+ {
+ exchange2.stop();
+ }
}
- //Bind one non durable
- Binding binding2 =
- exchange1.bindQueue("nonDurableQueue", "condition2", filter2, true, false, ms, pm, 2000, 100, 100);
-
- //Check they're there
-
- Binding binding3 = exchange1.getBindingForName("durableQueue");
- assertNotNull(binding3);
- assertTrue(binding1 == binding3);
- assertEquivalent(binding1, binding3);
- assertNotNull(binding3.getQueue());
- assertEquals(true, binding3.getQueue().isRecoverable());
-
-
- Binding binding4 = exchange1.getBindingForName("nonDurableQueue");
- assertNotNull(binding4);
- assertTrue(binding2 == binding4);
- assertEquivalent(binding2, binding4);
- assertNotNull(binding4.getQueue());
- assertEquals(false, binding4.getQueue().isRecoverable());
-
- //Throw away the exchange and create another
- Exchange exchange2 = createExchange();
-
- //Only one binding should be there
- Binding binding5 = exchange2.getBindingForName("durableQueue");
- assertNotNull(binding5);
- assertEquivalent(binding1, binding5);
- //Should be unloaded
- assertNull(binding5.getQueue());
-
- Binding binding6 = exchange2.getBindingForName("nonDurableQueue");
- assertNull(binding6);
-
- //ReLoad the durable queue - or we won't be able to unbind it
- exchange2.reloadQueues("condition1", ms, pm, 2000, 100, 100);
-
- //Unbind the binding
- Binding binding7 = exchange2.unbindQueue("durableQueue");
- assertNotNull(binding7);
- assertEquivalent(binding1, binding7);
-
- //Make sure no longer there
- Binding binding8 = exchange2.getBindingForName("durableQueue");
- assertNull(binding8);
-
- //Throw away exchange and start another
- Exchange exchange3 = createExchange();
-
- //Make sure not there
- Binding binding9 = exchange3.getBindingForName("durableQueue");
- assertNull(binding9);
-
}
public final void testListBindings() throws Throwable
{
- Exchange exchange = createExchange();
+ Exchange exchange = null;
- Binding binding1 =
- exchange.bindQueue("queue1", "condition1", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding2 =
- exchange.bindQueue("queue2", "condition1", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding3 =
- exchange.bindQueue("queue3", "condition1", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding4 =
- exchange.bindQueue("queue4", "condition1", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding5 =
- exchange.bindQueue("queue5", "condition2", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding6 =
- exchange.bindQueue("queue6", "condition2", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding7 =
- exchange.bindQueue("queue7", "condition2", null, true, false, ms, pm, 2000, 100, 100);
- Binding binding8 =
- exchange.bindQueue("queue8", "condition2", null, true, false, ms, pm, 2000, 100, 100);
-
- List bindings = exchange.listBindingsForWildcard("dummy");
- assertNotNull(bindings);
- assertTrue(bindings.isEmpty());
-
- //We don't match on substrings
- bindings = exchange.listBindingsForWildcard("condition123");
- assertNotNull(bindings);
- assertTrue(bindings.isEmpty());
-
- //We don't currently support hierarchies
- bindings = exchange.listBindingsForWildcard("condition1.subcondition");
- assertNotNull(bindings);
- assertTrue(bindings.isEmpty());
-
- //We currently just do an exact match
- bindings = exchange.listBindingsForWildcard("condition1");
- assertNotNull(bindings);
- assertEquals(4, bindings.size());
-
- assertEquivalent((Binding)bindings.get(0), binding1);
- assertEquivalent((Binding)bindings.get(1), binding2);
- assertEquivalent((Binding)bindings.get(2), binding3);
- assertEquivalent((Binding)bindings.get(3), binding4);
-
- bindings = exchange.listBindingsForWildcard("condition2");
- assertNotNull(bindings);
- assertEquals(4, bindings.size());
-
- assertEquivalent((Binding)bindings.get(0), binding5);
- assertEquivalent((Binding)bindings.get(1), binding6);
- assertEquivalent((Binding)bindings.get(2), binding7);
- assertEquivalent((Binding)bindings.get(3), binding8);
+ try
+ {
+ exchange = createExchange();
+ Binding binding1 =
+ exchange.bindQueue("queue1", "condition1", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding2 =
+ exchange.bindQueue("queue2", "condition1", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding3 =
+ exchange.bindQueue("queue3", "condition1", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding4 =
+ exchange.bindQueue("queue4", "condition1", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding5 =
+ exchange.bindQueue("queue5", "condition2", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding6 =
+ exchange.bindQueue("queue6", "condition2", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding7 =
+ exchange.bindQueue("queue7", "condition2", null, true, false, ms, pm, 2000, 100, 100);
+ Binding binding8 =
+ exchange.bindQueue("queue8", "condition2", null, true, false, ms, pm, 2000, 100, 100);
+
+ List bindings = exchange.listBindingsForWildcard("dummy");
+ assertNotNull(bindings);
+ assertTrue(bindings.isEmpty());
+
+ //We don't match on substrings
+ bindings = exchange.listBindingsForWildcard("condition123");
+ assertNotNull(bindings);
+ assertTrue(bindings.isEmpty());
+
+ //We don't currently support hierarchies
+ bindings = exchange.listBindingsForWildcard("condition1.subcondition");
+ assertNotNull(bindings);
+ assertTrue(bindings.isEmpty());
+
+ //We currently just do an exact match
+ bindings = exchange.listBindingsForWildcard("condition1");
+ assertNotNull(bindings);
+ assertEquals(4, bindings.size());
+
+ assertEquivalent((Binding)bindings.get(0), binding1);
+ assertEquivalent((Binding)bindings.get(1), binding2);
+ assertEquivalent((Binding)bindings.get(2), binding3);
+ assertEquivalent((Binding)bindings.get(3), binding4);
+
+ bindings = exchange.listBindingsForWildcard("condition2");
+ assertNotNull(bindings);
+ assertEquals(4, bindings.size());
+
+ assertEquivalent((Binding)bindings.get(0), binding5);
+ assertEquivalent((Binding)bindings.get(1), binding6);
+ assertEquivalent((Binding)bindings.get(2), binding7);
+ assertEquivalent((Binding)bindings.get(3), binding8);
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
+
}
public final void testUnloadReload() throws Exception
{
- Exchange exchange = createExchange();
+ Exchange exchange = null;
- Binding binding1 =
- exchange.bindQueue("reloadqueue1", "condition3", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding2 =
- exchange.bindQueue("reloadqueue2", "condition3", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding3 =
- exchange.bindQueue("reloadqueue3", "condition3", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding4 =
- exchange.bindQueue("reloadqueue4", "condition3", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding5 =
- exchange.bindQueue("reloadqueue5", "condition4", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding6 =
- exchange.bindQueue("reloadqueue6", "condition4", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding7 =
- exchange.bindQueue("reloadqueue7", "condition4", null, true, true, ms, pm, 2000, 100, 100);
- Binding binding8 =
- exchange.bindQueue("reloadqueue8", "condition4", null, true, true, ms, pm, 2000, 100, 100);
+ try
+ {
+ exchange = createExchange();
- assertNotNull(binding1.getQueue());
- assertTrue(binding1.isActive());
- assertNotNull(binding2.getQueue());
- assertTrue(binding2.isActive());
- assertNotNull(binding3.getQueue());
- assertTrue(binding3.isActive());
- assertNotNull(binding4.getQueue());
- assertTrue(binding4.isActive());
-
- assertNotNull(binding5.getQueue());
- assertTrue(binding5.isActive());
- assertNotNull(binding6.getQueue());
- assertTrue(binding6.isActive());
- assertNotNull(binding7.getQueue());
- assertTrue(binding7.isActive());
- assertNotNull(binding8.getQueue());
- assertTrue(binding8.isActive());
-
- exchange.unloadQueues("condition3");
- assertNull(binding1.getQueue());
- assertFalse(binding1.isActive());
- assertNull(binding2.getQueue());
- assertFalse(binding2.isActive());
- assertNull(binding3.getQueue());
- assertFalse(binding3.isActive());
- assertNull(binding4.getQueue());
- assertFalse(binding4.isActive());
-
- assertNotNull(binding5.getQueue());
- assertTrue(binding5.isActive());
- assertNotNull(binding6.getQueue());
- assertTrue(binding6.isActive());
- assertNotNull(binding7.getQueue());
- assertTrue(binding7.isActive());
- assertNotNull(binding8.getQueue());
- assertTrue(binding8.isActive());
-
- exchange.unloadQueues("condition4");
- assertNull(binding1.getQueue());
- assertFalse(binding1.isActive());
- assertNull(binding2.getQueue());
- assertFalse(binding2.isActive());
- assertNull(binding3.getQueue());
- assertFalse(binding3.isActive());
- assertNull(binding4.getQueue());
- assertFalse(binding4.isActive());
-
- assertNull(binding5.getQueue());
- assertFalse(binding5.isActive());
- assertNull(binding6.getQueue());
- assertFalse(binding6.isActive());
- assertNull(binding7.getQueue());
- assertFalse(binding7.isActive());
- assertNull(binding8.getQueue());
- assertFalse(binding8.isActive());
-
- exchange.reloadQueues("condition3", ms, pm, 2000, 100, 100);
- assertNotNull(binding1.getQueue());
- assertTrue(binding1.isActive());
- assertNotNull(binding2.getQueue());
- assertTrue(binding2.isActive());
- assertNotNull(binding3.getQueue());
- assertTrue(binding3.isActive());
- assertNotNull(binding4.getQueue());
- assertTrue(binding4.isActive());
-
- assertNull(binding5.getQueue());
- assertFalse(binding5.isActive());
- assertNull(binding6.getQueue());
- assertFalse(binding6.isActive());
- assertNull(binding7.getQueue());
- assertFalse(binding7.isActive());
- assertNull(binding8.getQueue());
- assertFalse(binding8.isActive());
-
- exchange.reloadQueues("condition4", ms, pm, 2000, 100, 100);
-
- assertNotNull(binding1.getQueue());
- assertTrue(binding1.isActive());
- assertNotNull(binding2.getQueue());
- assertTrue(binding2.isActive());
- assertNotNull(binding3.getQueue());
- assertTrue(binding3.isActive());
- assertNotNull(binding4.getQueue());
- assertTrue(binding4.isActive());
-
- assertNotNull(binding5.getQueue());
- assertTrue(binding5.isActive());
- assertNotNull(binding6.getQueue());
- assertTrue(binding6.isActive());
- assertNotNull(binding7.getQueue());
- assertTrue(binding7.isActive());
- assertNotNull(binding8.getQueue());
- assertTrue(binding8.isActive());
+ Binding binding1 =
+ exchange.bindQueue("reloadqueue1", "condition3", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding2 =
+ exchange.bindQueue("reloadqueue2", "condition3", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding3 =
+ exchange.bindQueue("reloadqueue3", "condition3", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding4 =
+ exchange.bindQueue("reloadqueue4", "condition3", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding5 =
+ exchange.bindQueue("reloadqueue5", "condition4", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding6 =
+ exchange.bindQueue("reloadqueue6", "condition4", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding7 =
+ exchange.bindQueue("reloadqueue7", "condition4", null, true, true, ms, pm, 2000, 100, 100);
+ Binding binding8 =
+ exchange.bindQueue("reloadqueue8", "condition4", null, true, true, ms, pm, 2000, 100, 100);
+
+ assertNotNull(binding1.getQueue());
+ assertTrue(binding1.isActive());
+ assertNotNull(binding2.getQueue());
+ assertTrue(binding2.isActive());
+ assertNotNull(binding3.getQueue());
+ assertTrue(binding3.isActive());
+ assertNotNull(binding4.getQueue());
+ assertTrue(binding4.isActive());
+
+ assertNotNull(binding5.getQueue());
+ assertTrue(binding5.isActive());
+ assertNotNull(binding6.getQueue());
+ assertTrue(binding6.isActive());
+ assertNotNull(binding7.getQueue());
+ assertTrue(binding7.isActive());
+ assertNotNull(binding8.getQueue());
+ assertTrue(binding8.isActive());
+
+ exchange.unloadQueues("condition3");
+
+ assertNull(binding1.getQueue());
+ assertFalse(binding1.isActive());
+ assertNull(binding2.getQueue());
+ assertFalse(binding2.isActive());
+ assertNull(binding3.getQueue());
+ assertFalse(binding3.isActive());
+ assertNull(binding4.getQueue());
+ assertFalse(binding4.isActive());
+
+ assertNotNull(binding5.getQueue());
+ assertTrue(binding5.isActive());
+ assertNotNull(binding6.getQueue());
+ assertTrue(binding6.isActive());
+ assertNotNull(binding7.getQueue());
+ assertTrue(binding7.isActive());
+ assertNotNull(binding8.getQueue());
+ assertTrue(binding8.isActive());
+
+ exchange.unloadQueues("condition4");
+
+ assertNull(binding1.getQueue());
+ assertFalse(binding1.isActive());
+ assertNull(binding2.getQueue());
+ assertFalse(binding2.isActive());
+ assertNull(binding3.getQueue());
+ assertFalse(binding3.isActive());
+ assertNull(binding4.getQueue());
+ assertFalse(binding4.isActive());
+
+ assertNull(binding5.getQueue());
+ assertFalse(binding5.isActive());
+ assertNull(binding6.getQueue());
+ assertFalse(binding6.isActive());
+ assertNull(binding7.getQueue());
+ assertFalse(binding7.isActive());
+ assertNull(binding8.getQueue());
+ assertFalse(binding8.isActive());
+
+ exchange.reloadQueues("condition3", ms, pm, 2000, 100, 100);
+
+ assertNotNull(binding1.getQueue());
+ assertTrue(binding1.isActive());
+ assertNotNull(binding2.getQueue());
+ assertTrue(binding2.isActive());
+ assertNotNull(binding3.getQueue());
+ assertTrue(binding3.isActive());
+ assertNotNull(binding4.getQueue());
+ assertTrue(binding4.isActive());
+
+ assertNull(binding5.getQueue());
+ assertFalse(binding5.isActive());
+ assertNull(binding6.getQueue());
+ assertFalse(binding6.isActive());
+ assertNull(binding7.getQueue());
+ assertFalse(binding7.isActive());
+ assertNull(binding8.getQueue());
+ assertFalse(binding8.isActive());
+
+ exchange.reloadQueues("condition4", ms, pm, 2000, 100, 100);
+
+ assertNotNull(binding1.getQueue());
+ assertTrue(binding1.isActive());
+ assertNotNull(binding2.getQueue());
+ assertTrue(binding2.isActive());
+ assertNotNull(binding3.getQueue());
+ assertTrue(binding3.isActive());
+ assertNotNull(binding4.getQueue());
+ assertTrue(binding4.isActive());
+
+ assertNotNull(binding5.getQueue());
+ assertTrue(binding5.isActive());
+ assertNotNull(binding6.getQueue());
+ assertTrue(binding6.isActive());
+ assertNotNull(binding7.getQueue());
+ assertTrue(binding7.isActive());
+ assertNotNull(binding8.getQueue());
+ assertTrue(binding8.isActive());
+ }
+ finally
+ {
+ if (exchange != null)
+ {
+ exchange.stop();
+ }
+ }
}
-
-
-
-
-
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -385,51 +440,14 @@
protected void assertEquivalent(Binding binding1, Binding binding2)
{
assertEquals(binding1.getNodeId(), binding2.getNodeId());
- assertEquals(binding1.getQueueName(), binding2.getQueueName());
+ log.info("b1:" + binding1.getQueueName() + " b2:" + binding2.getQueueName());
+ assertEquals(binding1.getQueueName(), binding2.getQueueName());
assertEquals(binding1.getSelector(), binding2.getSelector());
assertEquals(binding1.getChannelId(), binding2.getChannelId());
assertEquals(binding1.isDurable(), binding2.isDurable());
assertEquals(binding1.isNoLocal(), binding2.isNoLocal());
}
-// protected void checkHasMessages(Message[] msgArray, MessageQueue queue, SimpleReceiver receiver)
-// {
-// List msgs = receiver.getMessages();
-//
-// assertNotNull(msgs);
-// assertEquals(msgArray.length, msgs.size());
-// for (int i = 0; i < msgArray.length; i++)
-// {
-// assertEquals(msgArray[i].getMessageID(), ((Message)msgs.get(i)).getMessageID());
-// }
-//
-// msgs = queue.browse();
-// assertNotNull(msgs);
-// assertEquals(msgArray.length, msgs.size());
-// for (int i = 0; i < msgArray.length; i++)
-// {
-// assertEquals(msgArray[i].getMessageID(), ((Message)msgs.get(i)).getMessageID());
-// }
-// }
-//
-// protected void ackMessages(Message[] msgArray, SimpleReceiver receiver, Transaction tx) throws Throwable
-// {
-// for (int i = 0; i < msgArray.length; i++)
-// {
-// receiver.acknowledge(msgArray[i], tx);
-// }
-// }
-//
-// protected void checkHasntMessages(MessageQueue queue, SimpleReceiver receiver)
-// {
-// List msgs = receiver.getMessages();
-// assertNotNull(msgs);
-// assertTrue(msgs.isEmpty());
-//
-// msgs = queue.browse();
-// assertNotNull(msgs);
-// assertTrue(msgs.isEmpty());
-// }
// Private -------------------------------------------------------
More information about the jboss-cvs-commits
mailing list