diff options
4 files changed, 100 insertions, 14 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java index 30bf8aba5d..e6c5dee90d 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java @@ -114,7 +114,7 @@ public class QueueConfiguration public long getMemoryUsageMaximum() { - return _config.getLong("maximumMemoryUsage", -1); + return _config.getLong("maximumMemoryUsage", 100 * 1024 * 1024); //100Meg } public long getMemoryUsageMinimum() diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java index a2b514af68..6ba22321f1 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java @@ -89,7 +89,7 @@ public class AMQQueueFactory "Queue create request with negative size:" + queueSize, null); } - q.setMaximumMessageSize(queueSize); + q.setMemoryUsageMaximum(queueSize); } else { diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryPriorityTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryPriorityTest.java new file mode 100644 index 0000000000..0d6c5948b4 --- /dev/null +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryPriorityTest.java @@ -0,0 +1,70 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.server.queue; + +import org.apache.qpid.AMQException; +import org.apache.qpid.framing.AMQShortString; + +public class AMQQueueFactoryPriorityTest extends AMQQueueFactoryTest +{ + private static final int PRIORITIES = 5; + + @Override + public void setUp() + { + super.setUp(); + _arguments.put(new AMQShortString(AMQQueueFactory.X_QPID_PRIORITIES), PRIORITIES); + } + + @Override + public void testQueueRegistration() + { + try + { + AMQQueue queue = createQueue(); + + assertEquals("Queue not a priorty queue", AMQPriorityQueue.class, queue.getClass()); + + assertEquals("Incorrect number of priorities set", PRIORITIES, ((AMQPriorityQueue) queue).getPriorities()); + } + catch (AMQException e) + { + fail(e.getMessage()); + } + } + + @Override + public void testQueueValuesAfterCreation() + { + try + { + AMQQueue queue = createQueue(); + + assertEquals("MemoryMaximumSize not set correctly:", MAX_SIZE, queue.getMemoryUsageMaximum()); + //NOTE: Priority queue will show 0 as minimum as the minimum value is actually spread between its sub QELs + assertEquals("MemoryMinimumSize not 0 as expected for a priority queue:", 0, queue.getMemoryUsageMinimum()); + } + catch (AMQException e) + { + fail(e.getMessage()); + } + } +} diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java index 520e49c56a..b8aa8272ba 100644 --- a/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java @@ -29,8 +29,11 @@ import org.apache.qpid.AMQException; public class AMQQueueFactoryTest extends TestCase { + final int MAX_SIZE = 50; + QueueRegistry _queueRegistry; VirtualHost _virtualHost; + protected FieldTable _arguments; public void setUp() { @@ -41,6 +44,15 @@ public class AMQQueueFactoryTest extends TestCase _queueRegistry = _virtualHost.getQueueRegistry(); assertEquals("Queues registered on an empty virtualhost", 0, _queueRegistry.getQueues().size()); + + + _arguments = new FieldTable(); + + //Ensure we can call createQueue with a priority int value + _arguments.put(AMQQueueFactory.QPID_POLICY_TYPE, AMQQueueFactory.QPID_FLOW_TO_DISK); + // each message in the QBAAT is around 9-10 bytes each so only give space for half + + _arguments.put(AMQQueueFactory.QPID_MAX_SIZE, MAX_SIZE); } public void tearDown() @@ -50,17 +62,19 @@ public class AMQQueueFactoryTest extends TestCase } - public void testPriorityQueueRegistration() + protected AMQQueue createQueue() throws AMQException { - FieldTable fieldTable = new FieldTable(); - fieldTable.put(new AMQShortString(AMQQueueFactory.X_QPID_PRIORITIES), 5); + return AMQQueueFactory.createAMQQueueImpl(new AMQShortString(this.getName()), false, new AMQShortString("owner"), false, + _virtualHost, _arguments); + } + + public void testQueueRegistration() + { try { - AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString("testPriorityQueue"), false, new AMQShortString("owner"), false, - _virtualHost, fieldTable); - - assertEquals("Queue not a priorty queue", AMQPriorityQueue.class, queue.getClass()); + AMQQueue queue = createQueue(); + assertEquals("Queue not a simple queue", SimpleAMQQueue.class, queue.getClass()); } catch (AMQException e) { @@ -68,18 +82,20 @@ public class AMQQueueFactoryTest extends TestCase } } - - public void testSimpleQueueRegistration() + public void testQueueValuesAfterCreation() { try { - AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString("testQueue"), false, new AMQShortString("owner"), false, - _virtualHost, null); - assertEquals("Queue not a simple queue", SimpleAMQQueue.class, queue.getClass()); + AMQQueue queue = createQueue(); + + assertEquals("MemoryMaximumSize not set correctly:", MAX_SIZE, queue.getMemoryUsageMaximum()); + assertEquals("MemoryMinimumSize not defaulted to half maximum:", MAX_SIZE / 2, queue.getMemoryUsageMinimum()); + } catch (AMQException e) { fail(e.getMessage()); } } + } |
