You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2012/11/21 18:27:25 UTC

svn commit: r1412203 - in /qpid/trunk/qpid/java/bdbstore/src/test: java/org/apache/qpid/server/store/berkeleydb/ java/org/apache/qpid/server/store/berkeleydb/upgrade/ resources/upgrade/bdbstore-v4/test-store/ resources/upgrade/bdbstore-v5/test-store/

Author: orudyy
Date: Wed Nov 21 17:27:23 2012
New Revision: 1412203

URL: http://svn.apache.org/viewvc?rev=1412203&view=rev
Log:
QPID-4441: Improve BDB store upgrade tests to cover the upgrade of configuration for queues having creation arguments

Modified:
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/AbstractUpgradeTestCase.java
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4to5Test.java
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom5To6Test.java
    qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v4/test-store/00000000.jdb
    qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000000.jdb
    qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000001.jdb

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java Wed Nov 21 17:27:23 2012
@@ -20,6 +20,9 @@
  */
 package org.apache.qpid.server.store.berkeleydb;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.jms.Connection;
 import javax.jms.DeliveryMode;
 import javax.jms.Destination;
@@ -35,6 +38,11 @@ import javax.jms.TopicConnection;
 import javax.jms.TopicPublisher;
 import javax.jms.TopicSession;
 import javax.jms.TopicSubscriber;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
 
 import org.apache.qpid.client.AMQConnectionFactory;
 import org.apache.qpid.client.AMQDestination;
@@ -62,6 +70,11 @@ public class BDBStoreUpgradeTestPreparer
     public static final String QUEUE_NAME="myUpgradeQueue";
     public static final String NON_DURABLE_QUEUE_NAME="queue-non-durable";
 
+    public static final String PRIORITY_QUEUE_NAME="myPriorityQueue";
+    public static final String QUEUE_WITH_DLQ_NAME="myQueueWithDLQ";
+    public static final String NONEXCLUSIVE_WITH_ERRONEOUS_OWNER = "nonexclusive-with-erroneous-owner";
+    public static final String MISUSED_OWNER = "misused-owner-as-description";
+
     private static AMQConnectionFactory _connFac;
     private static final String CONN_URL =
         "amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'";
@@ -86,10 +99,10 @@ public class BDBStoreUpgradeTestPreparer
     {
         Connection connection = _connFac.createConnection();
         AMQSession<?, ?> session = (AMQSession<?,?>)connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        AMQShortString queueName = AMQShortString.valueOf(NON_DURABLE_QUEUE_NAME);
+        AMQShortString queueName = new AMQShortString(NON_DURABLE_QUEUE_NAME);
         AMQDestination destination = (AMQDestination) session.createQueue(NON_DURABLE_QUEUE_NAME);
         session.sendCreateQueue(queueName, false, false, false, null);
-        session.bindQueue(queueName, queueName, null, AMQShortString.valueOf("amq.direct"), destination);
+        session.bindQueue(queueName, queueName, null, new AMQShortString("amq.direct"), destination);
         MessageProducer messageProducer = session.createProducer(destination);
         sendMessages(session, messageProducer, destination, DeliveryMode.PERSISTENT, 1024, 3);
         connection.close();
@@ -140,11 +153,56 @@ public class BDBStoreUpgradeTestPreparer
 
         // Publish 5 persistent messages which will NOT be committed and so should be 'lost'
         sendMessages(session, messageProducer, queue, DeliveryMode.PERSISTENT, 1*1024, 5);
+        messageProducer.close();
+        session.close();
 
+        session = connection.createSession(true,  Session.SESSION_TRANSACTED);
+        // Create a priority queue on broker
+        final Map<String,Object> priorityQueueArguments = new HashMap<String, Object>();
+        priorityQueueArguments.put("x-qpid-priorities",10);
+        createAndBindQueueOnBroker(session, PRIORITY_QUEUE_NAME, priorityQueueArguments);
+
+        // Create a queue that has a DLQ
+        final Map<String,Object> queueWithDLQArguments = new HashMap<String, Object>();
+        queueWithDLQArguments.put("x-qpid-dlq-enabled", true);
+        queueWithDLQArguments.put("x-qpid-maximum-delivery-count", 2);
+        createAndBindQueueOnBroker(session, QUEUE_WITH_DLQ_NAME, queueWithDLQArguments);
+
+        // Send message to the DLQ
+        Queue dlq = session.createQueue("fanout://" + QUEUE_WITH_DLQ_NAME + "_DLE//does-not-matter");
+        MessageProducer dlqMessageProducer = session.createProducer(dlq);
+        sendMessages(session, dlqMessageProducer, dlq, DeliveryMode.PERSISTENT, 1*1024, 1);
+        session.commit();
+
+        // Create a queue with JMX specifying an owner, so it can later be moved into description
+        createAndBindQueueOnBrokerWithJMX(NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, MISUSED_OWNER, priorityQueueArguments);
         session.close();
         connection.close();
     }
 
+    private void createAndBindQueueOnBroker(Session session, String queueName, final Map<String, Object> arguments) throws Exception
+    {
+        ((AMQSession<?,?>) session).createQueue(new AMQShortString(queueName), false, true, false, arguments);
+        Queue queue = (Queue) session.createQueue("direct://amq.direct/"+queueName+"/"+queueName+"?durable='true'");
+        ((AMQSession<?,?>) session).declareAndBind((AMQDestination)queue);
+    }
+
+    private void createAndBindQueueOnBrokerWithJMX(String queueName, String owner, final Map<String, Object> arguments)  throws Exception
+    {
+        Map<String, Object> environment = new HashMap<String, Object>();
+         environment.put(JMXConnector.CREDENTIALS, new String[] {"admin","admin"});
+         JMXServiceURL url =  new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8999/jmxrmi");
+         JMXConnector jmxConnector = JMXConnectorFactory.connect(url, environment);
+         MBeanServerConnection mbsc =  jmxConnector.getMBeanServerConnection();
+         ObjectName virtualHost = new ObjectName("org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost=\"test\"");
+
+         Object[] params = new Object[] {queueName, owner, true, arguments};
+         String[] signature = new String[] {String.class.getName(), String.class.getName(), boolean.class.getName(), Map.class.getName()};
+         mbsc.invoke(virtualHost, "createNewQueue", params, signature);
+
+         ObjectName directExchange = new ObjectName("org.apache.qpid:type=VirtualHost.Exchange,VirtualHost=\"test\",name=\"amq.direct\",ExchangeType=direct");
+         mbsc.invoke(directExchange, "createNewBinding", new Object[] {queueName, queueName}, new String[] {String.class.getName(), String.class.getName()});
+    }
     /**
      * Prepare a DurableSubscription backing queue for use in testing selector
      * recovery and queue exclusivity marking during the upgrade process.

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java Wed Nov 21 17:27:23 2012
@@ -302,11 +302,12 @@ public class BDBUpgradeTest extends Qpid
         Queue queue = session.createQueue(NON_DURABLE_QUEUE_NAME);
         MessageConsumer messageConsumer = session.createConsumer(queue);
 
-        for (int i = 0; i < 3; i++)
+        for (int i = 1; i <= 3; i++)
         {
             Message message = messageConsumer.receive(1000);
             assertNotNull("Message was not migrated!", message);
             assertTrue("Unexpected message received!", message instanceof TextMessage);
+            assertEquals("ID property did not match", i, message.getIntProperty("ID"));
         }
     }
 

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/AbstractUpgradeTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/AbstractUpgradeTestCase.java?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/AbstractUpgradeTestCase.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/AbstractUpgradeTestCase.java Wed Nov 21 17:27:23 2012
@@ -20,6 +20,12 @@
  */
 package org.apache.qpid.server.store.berkeleydb.upgrade;
 
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.NONEXCLUSIVE_WITH_ERRONEOUS_OWNER;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.NON_DURABLE_QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.PRIORITY_QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.QUEUE_WITH_DLQ_NAME;
+
 import java.io.File;
 
 import org.apache.qpid.server.logging.LogSubject;
@@ -51,15 +57,15 @@ public abstract class AbstractUpgradeTes
         }
     }
 
-    public static final String[] QUEUE_NAMES = { "clientid:myDurSubName", "clientid:mySelectorDurSubName", "myUpgradeQueue",
-            "queue-non-durable", "nonexclusive-with-erroneous-owner" };
-    public static int[] QUEUE_SIZES = { 1, 1, 10, 3, 0};
-    public static int TOTAL_MESSAGE_NUMBER = 15;
+    public static final String[] QUEUE_NAMES = { "clientid:myDurSubName", "clientid:mySelectorDurSubName", QUEUE_NAME, NON_DURABLE_QUEUE_NAME,
+            NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, PRIORITY_QUEUE_NAME, QUEUE_WITH_DLQ_NAME, QUEUE_WITH_DLQ_NAME + "_DLQ" };
+    public static int[] QUEUE_SIZES = { 1, 1, 10, 3, 0, 0, 0, 1};
+    public static int TOTAL_MESSAGE_NUMBER = 16;
     protected static final LogSubject LOG_SUBJECT = new TestBlankSubject();
 
-    // one binding per exchange
-    protected static final int TOTAL_BINDINGS = QUEUE_NAMES.length * 2;
-    protected static final int TOTAL_EXCHANGES = 5;
+    // myQueueWithDLQ_DLQ is not bound to the default exchange
+    protected static final int TOTAL_BINDINGS = QUEUE_NAMES.length * 2 - 1;
+    protected static final int TOTAL_EXCHANGES = 6;
 
     private File _storeLocation;
     protected Environment _environment;

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4to5Test.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4to5Test.java?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4to5Test.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4to5Test.java Wed Nov 21 17:27:23 2012
@@ -20,6 +20,13 @@
  */
 package org.apache.qpid.server.store.berkeleydb.upgrade;
 
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.NONEXCLUSIVE_WITH_ERRONEOUS_OWNER;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.NON_DURABLE_QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.QUEUE_WITH_DLQ_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.SELECTOR_TOPIC_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.TOPIC_NAME;
+
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,7 +41,6 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.qpid.common.AMQPFilterTypes;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
-import org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom4To5.BindingRecord;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom4To5.BindingTuple;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom4To5.MessageContentKey;
@@ -50,9 +56,6 @@ import com.sleepycat.je.Transaction;
 
 public class UpgradeFrom4to5Test extends AbstractUpgradeTestCase
 {
-    private static final String NON_DURABLE_QUEUE = BDBStoreUpgradeTestPreparer.NON_DURABLE_QUEUE_NAME;
-    private static final String DURABLE_QUEUE = BDBStoreUpgradeTestPreparer.QUEUE_NAME;
-    private static final String NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER = "nonexclusive-with-erroneous-owner";
     private static final String DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR = "clientid:mySelectorDurSubName";
     private static final String DURABLE_SUBSCRIPTION_QUEUE = "clientid:myDurSubName";
     private static final String EXCHANGE_DB_NAME = "exchangeDb_v5";
@@ -85,15 +88,14 @@ public class UpgradeFrom4to5Test extends
 
         final List<BindingRecord> queueBindings = loadBindings();
 
-        assertEquals("Unxpected list size", TOTAL_BINDINGS, queueBindings.size());
-        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE, "amq.topic", BDBStoreUpgradeTestPreparer.TOPIC_NAME, "");
-        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR, "amq.topic",
-                BDBStoreUpgradeTestPreparer.SELECTOR_TOPIC_NAME, "testprop='true'");
-        assertBindingRecord(queueBindings, DURABLE_QUEUE, "amq.direct", DURABLE_QUEUE, null);
-        assertBindingRecord(queueBindings, NON_DURABLE_QUEUE, "amq.direct", NON_DURABLE_QUEUE, null);
-        assertBindingRecord(queueBindings, NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER, "amq.direct", NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER, null);
+        assertEquals("Unxpected bindings size", TOTAL_BINDINGS, queueBindings.size());
+        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE, "amq.topic", TOPIC_NAME, "");
+        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR, "amq.topic", SELECTOR_TOPIC_NAME, "testprop='true'");
+        assertBindingRecord(queueBindings, QUEUE_NAME, "amq.direct", QUEUE_NAME, null);
+        assertBindingRecord(queueBindings, NON_DURABLE_QUEUE_NAME, "amq.direct", NON_DURABLE_QUEUE_NAME, null);
+        assertBindingRecord(queueBindings, NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, "amq.direct", NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, null);
 
-        assertQueueHasOwner(NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER, "misused-owner-as-description");
+        assertQueueHasOwner(NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, "misused-owner-as-description");
 
         assertContent();
     }
@@ -102,26 +104,29 @@ public class UpgradeFrom4to5Test extends
     {
         UpgradeFrom4To5 upgrade = new UpgradeFrom4To5();
         upgrade.performUpgrade(_environment, new StaticAnswerHandler(UpgradeInteractionResponse.NO), getVirtualHostName());
-        assertQueues(new HashSet<String>(Arrays.asList(DURABLE_SUBSCRIPTION_QUEUE, DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR, DURABLE_QUEUE, NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER)));
+        HashSet<String> queues = new HashSet<String>(Arrays.asList(QUEUE_NAMES));
+        assertTrue(NON_DURABLE_QUEUE_NAME + " should be in the list of queues" , queues.remove(NON_DURABLE_QUEUE_NAME));
+
+        assertQueues(queues);
 
-        assertDatabaseRecordCount(DELIVERY_DB_NAME, 12);
-        assertDatabaseRecordCount(MESSAGE_META_DATA_DB_NAME, 12);
+        assertDatabaseRecordCount(DELIVERY_DB_NAME, 13);
+        assertDatabaseRecordCount(MESSAGE_META_DATA_DB_NAME, 13);
         assertDatabaseRecordCount(EXCHANGE_DB_NAME, TOTAL_EXCHANGES);
 
         assertQueueMessages(DURABLE_SUBSCRIPTION_QUEUE, 1);
         assertQueueMessages(DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR, 1);
-        assertQueueMessages(DURABLE_QUEUE, 10);
+        assertQueueMessages(QUEUE_NAME, 10);
+        assertQueueMessages(QUEUE_WITH_DLQ_NAME + "_DLQ", 1);
 
         final List<BindingRecord> queueBindings = loadBindings();
 
         assertEquals("Unxpected list size", TOTAL_BINDINGS - 2, queueBindings.size());
-        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE, "amq.topic", BDBStoreUpgradeTestPreparer.TOPIC_NAME,
-                "");
+        assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE, "amq.topic", TOPIC_NAME, "");
         assertBindingRecord(queueBindings, DURABLE_SUBSCRIPTION_QUEUE_WITH_SELECTOR, "amq.topic",
-                BDBStoreUpgradeTestPreparer.SELECTOR_TOPIC_NAME, "testprop='true'");
-        assertBindingRecord(queueBindings, DURABLE_QUEUE, "amq.direct", DURABLE_QUEUE, null);
+                SELECTOR_TOPIC_NAME, "testprop='true'");
+        assertBindingRecord(queueBindings, QUEUE_NAME, "amq.direct", QUEUE_NAME, null);
 
-        assertQueueHasOwner(NON_EXCLUSIVE_WITH_ERRONEOUS_OWNER, "misused-owner-as-description");
+        assertQueueHasOwner(NONEXCLUSIVE_WITH_ERRONEOUS_OWNER, "misused-owner-as-description");
 
         assertContent();
     }

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom5To6Test.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom5To6Test.java?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom5To6Test.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom5To6Test.java Wed Nov 21 17:27:23 2012
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.store.berkeleydb.upgrade;
 
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.PRIORITY_QUEUE_NAME;
+import static org.apache.qpid.server.store.berkeleydb.BDBStoreUpgradeTestPreparer.QUEUE_WITH_DLQ_NAME;
 import static org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.CONFIGURED_OBJECTS_DB_NAME;
 import static org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.NEW_CONTENT_DB_NAME;
 import static org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.NEW_DELIVERY_DB_NAME;
@@ -42,6 +44,7 @@ import java.util.UUID;
 import org.apache.log4j.Logger;
 import org.apache.qpid.server.model.Binding;
 import org.apache.qpid.server.model.Exchange;
+import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.UUIDGenerator;
 import org.apache.qpid.server.queue.AMQQueueFactory;
@@ -50,7 +53,6 @@ import org.apache.qpid.server.store.berk
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.CompoundKey;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.CompoundKeyBinding;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.ConfiguredObjectBinding;
-import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.UpgradeConfiguredObjectRecord;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.NewDataBinding;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.NewPreparedTransaction;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.NewPreparedTransactionBinding;
@@ -60,6 +62,7 @@ import org.apache.qpid.server.store.berk
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.OldPreparedTransaction;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.OldPreparedTransactionBinding;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.OldRecordImpl;
+import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.UpgradeConfiguredObjectRecord;
 import org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom5To6.UpgradeUUIDBinding;
 import org.apache.qpid.server.util.MapJsonSerializer;
 
@@ -115,8 +118,8 @@ public class UpgradeFrom5To6Test extends
 
         upgrade.performUpgrade(_environment, discardMessageInteractionHandler, getVirtualHostName());
 
-        assertDatabaseRecordCount(NEW_METADATA_DB_NAME, 11);
-        assertDatabaseRecordCount(NEW_CONTENT_DB_NAME, 11);
+        assertDatabaseRecordCount(NEW_METADATA_DB_NAME, 12);
+        assertDatabaseRecordCount(NEW_CONTENT_DB_NAME, 12);
 
         assertConfiguredObjects();
         assertQueueEntries();
@@ -264,17 +267,17 @@ public class UpgradeFrom5To6Test extends
 
     private void assertDatabaseRecordCounts()
     {
-        assertDatabaseRecordCount(CONFIGURED_OBJECTS_DB_NAME, 12);
-        assertDatabaseRecordCount(NEW_DELIVERY_DB_NAME, 12);
+        assertDatabaseRecordCount(CONFIGURED_OBJECTS_DB_NAME, 21);
+        assertDatabaseRecordCount(NEW_DELIVERY_DB_NAME, 13);
 
-        assertDatabaseRecordCount(NEW_METADATA_DB_NAME, 12);
-        assertDatabaseRecordCount(NEW_CONTENT_DB_NAME, 12);
+        assertDatabaseRecordCount(NEW_METADATA_DB_NAME, 13);
+        assertDatabaseRecordCount(NEW_CONTENT_DB_NAME, 13);
     }
 
     private void assertConfiguredObjects()
     {
         Map<UUID, UpgradeConfiguredObjectRecord> configuredObjects = loadConfiguredObjects();
-        assertEquals("Unexpected number of configured objects", 12, configuredObjects.size());
+        assertEquals("Unexpected number of configured objects", 21, configuredObjects.size());
 
         Set<Map<String, Object>> expected = new HashSet<Map<String, Object>>(12);
         List<UUID> expectedBindingIDs = new ArrayList<UUID>();
@@ -282,8 +285,26 @@ public class UpgradeFrom5To6Test extends
         expected.add(createExpectedQueueMap("myUpgradeQueue", Boolean.FALSE, null, null));
         expected.add(createExpectedQueueMap("clientid:mySelectorDurSubName", Boolean.TRUE, "clientid", null));
         expected.add(createExpectedQueueMap("clientid:myDurSubName", Boolean.TRUE, "clientid", null));
-        expected.add(createExpectedQueueMap("nonexclusive-with-erroneous-owner", Boolean.FALSE, null,
-                     Collections.singletonMap(AMQQueueFactory.X_QPID_DESCRIPTION, "misused-owner-as-description")));
+
+        final Map<String, Object> queueWithOwnerArguments = new HashMap<String, Object>();
+        queueWithOwnerArguments.put("x-qpid-priorities", 10);
+        queueWithOwnerArguments.put(AMQQueueFactory.X_QPID_DESCRIPTION, "misused-owner-as-description");
+        expected.add(createExpectedQueueMap("nonexclusive-with-erroneous-owner", Boolean.FALSE, null,queueWithOwnerArguments));
+
+        final Map<String, Object> priorityQueueArguments = new HashMap<String, Object>();
+        priorityQueueArguments.put("x-qpid-priorities", 10);
+        expected.add(createExpectedQueueMap(PRIORITY_QUEUE_NAME, Boolean.FALSE, null, priorityQueueArguments));
+
+        final Map<String, Object> queueWithDLQArguments = new HashMap<String, Object>();
+        queueWithDLQArguments.put("x-qpid-dlq-enabled", true);
+        queueWithDLQArguments.put("x-qpid-maximum-delivery-count", 2);
+        expected.add(createExpectedQueueMap(QUEUE_WITH_DLQ_NAME, Boolean.FALSE, null, queueWithDLQArguments));
+
+        final Map<String, Object> dlqArguments = new HashMap<String, Object>();
+        dlqArguments.put("x-qpid-dlq-enabled", false);
+        dlqArguments.put("x-qpid-maximum-delivery-count", 0);
+        expected.add(createExpectedQueueMap(QUEUE_WITH_DLQ_NAME + "_DLQ", Boolean.FALSE, null, dlqArguments));
+        expected.add(createExpectedExchangeMap(QUEUE_WITH_DLQ_NAME + "_DLE", "fanout"));
 
         expected.add(createExpectedQueueBindingMapAndID("myUpgradeQueue","myUpgradeQueue", "<<default>>", null, expectedBindingIDs));
         expected.add(createExpectedQueueBindingMapAndID("myUpgradeQueue", "myUpgradeQueue", "amq.direct", null, expectedBindingIDs));
@@ -296,6 +317,13 @@ public class UpgradeFrom5To6Test extends
         expected.add(createExpectedQueueBindingMapAndID("nonexclusive-with-erroneous-owner", "nonexclusive-with-erroneous-owner", "amq.direct", null, expectedBindingIDs));
         expected.add(createExpectedQueueBindingMapAndID("nonexclusive-with-erroneous-owner","nonexclusive-with-erroneous-owner", "<<default>>", null, expectedBindingIDs));
 
+        expected.add(createExpectedQueueBindingMapAndID(PRIORITY_QUEUE_NAME, PRIORITY_QUEUE_NAME, "<<default>>", null, expectedBindingIDs));
+        expected.add(createExpectedQueueBindingMapAndID(PRIORITY_QUEUE_NAME, PRIORITY_QUEUE_NAME, "amq.direct", null, expectedBindingIDs));
+
+        expected.add(createExpectedQueueBindingMapAndID(QUEUE_WITH_DLQ_NAME, QUEUE_WITH_DLQ_NAME, "<<default>>", null, expectedBindingIDs));
+        expected.add(createExpectedQueueBindingMapAndID(QUEUE_WITH_DLQ_NAME, QUEUE_WITH_DLQ_NAME, "amq.direct", null, expectedBindingIDs));
+        expected.add(createExpectedQueueBindingMapAndID(QUEUE_WITH_DLQ_NAME + "_DLQ", "dlq", QUEUE_WITH_DLQ_NAME + "_DLE", null, expectedBindingIDs));
+
         Set<String> expectedTypes = new HashSet<String>();
         expectedTypes.add(Queue.class.getName());
         expectedTypes.add(Exchange.class.getName());
@@ -305,7 +333,9 @@ public class UpgradeFrom5To6Test extends
         {
             UpgradeConfiguredObjectRecord object = entry.getValue();
             Map<String, Object> deserialized = jsonSerializer.deserialize(object.getAttributes());
-            assertTrue("Unexpected entry:" + object.getAttributes(), expected.remove(deserialized));
+
+            assertTrue("Unexpected entry in a store - json [" + object.getAttributes() + "], map [" + deserialized + "]",
+                    expected.remove(deserialized));
             String type = object.getType();
             assertTrue("Unexpected type:" + type, expectedTypes.contains(type));
             UUID key = entry.getKey();
@@ -350,7 +380,7 @@ public class UpgradeFrom5To6Test extends
         return expectedQueueBinding;
     }
 
-    private Map<String, Object> createExpectedQueueMap(String name, boolean exclusiveFlag, String owner, Map<String, String> argumentMap)
+    private Map<String, Object> createExpectedQueueMap(String name, boolean exclusiveFlag, String owner, Map<String, Object> argumentMap)
     {
         Map<String, Object> expectedQueueEntry = new HashMap<String, Object>();
         expectedQueueEntry.put(Queue.NAME, name);
@@ -363,6 +393,15 @@ public class UpgradeFrom5To6Test extends
         return expectedQueueEntry;
     }
 
+    private Map<String, Object> createExpectedExchangeMap(String name, String type)
+    {
+        Map<String, Object> expectedExchnageEntry = new HashMap<String, Object>();
+        expectedExchnageEntry.put(Exchange.NAME, name);
+        expectedExchnageEntry.put(Exchange.TYPE, type);
+        expectedExchnageEntry.put(Exchange.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name());
+        return expectedExchnageEntry;
+    }
+
     private Map<UUID, UpgradeConfiguredObjectRecord> loadConfiguredObjects()
     {
         final Map<UUID, UpgradeConfiguredObjectRecord> configuredObjectsRecords = new HashMap<UUID, UpgradeConfiguredObjectRecord>();

Modified: qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v4/test-store/00000000.jdb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v4/test-store/00000000.jdb?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
Files qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v4/test-store/00000000.jdb (original) and qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v4/test-store/00000000.jdb Wed Nov 21 17:27:23 2012 differ

Modified: qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000000.jdb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000000.jdb?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
Files qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000000.jdb (original) and qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000000.jdb Wed Nov 21 17:27:23 2012 differ

Modified: qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000001.jdb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000001.jdb?rev=1412203&r1=1412202&r2=1412203&view=diff
==============================================================================
Files qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000001.jdb (original) and qpid/trunk/qpid/java/bdbstore/src/test/resources/upgrade/bdbstore-v5/test-store/00000001.jdb Wed Nov 21 17:27:23 2012 differ



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org