Author: rgodfrey
Date: Wed May 20 10:05:23 2015
New Revision: 1680510

URL: http://svn.apache.org/r1680510
Log:
QPID-6550 : upgrader incorrectly adds vhost aliases to non-AMQP ports

Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java?rev=1680510&r1=1680509&r2=1680510&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
 Wed May 20 10:05:23 2015
@@ -284,9 +284,10 @@ public class BrokerStoreUpgraderAndRecov
             Object protocols = attributes.get(Port.PROTOCOLS);
             String protocolString = protocols == null ? null : 
protocols.toString();
             return "AMQP".equals(type)
-                   || protocolString == null
-                   || !protocolString.matches(".*\\w.*")
-                   || protocolString.contains("AMQP");
+                   || ((type == null || "".equals(type.toString().trim()))
+                       && (protocolString == null
+                           || !protocolString.matches(".*\\w.*")
+                           || protocolString.contains("AMQP")));
 
         }
 

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1680510&r1=1680509&r2=1680510&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
 Wed May 20 10:05:23 2015
@@ -386,6 +386,68 @@ public class BrokerStoreUpgraderAndRecov
         upgradeBrokerRecordAndAssertUpgradeResults();
     }
 
+    public void testUpgradeNonAMQPPort()
+    {
+        Map<String, Object> hostAttributes = new HashMap<>();
+        hostAttributes.put("name", "nonAMQPPort");
+        hostAttributes.put("type", "AMQP");
+
+        _brokerRecord.getAttributes().put("modelVersion", "2.0");
+
+
+        ConfiguredObjectRecord portRecord = new 
ConfiguredObjectRecordImpl(UUID.randomUUID(), "Port",
+                                                                               
   hostAttributes, Collections.singletonMap("Broker", _brokerRecord.getId()));
+        DurableConfigurationStore dcs = new 
DurableConfigurationStoreStub(_brokerRecord, portRecord);
+
+        BrokerStoreUpgraderAndRecoverer recoverer = new 
BrokerStoreUpgraderAndRecoverer(_systemConfig);
+        List<ConfiguredObjectRecord> records = recoverer.upgrade(dcs);
+
+        assertTrue("No virtualhostalias rescords should be returned",
+                   findRecordByType("VirtualHostAlias", records).isEmpty());
+
+    }
+
+    public void testUpgradeImpliedAMQPPort()
+    {
+        Map<String, Object> hostAttributes = new HashMap<>();
+        hostAttributes.put("name", "impliedPort");
+
+        _brokerRecord.getAttributes().put("modelVersion", "2.0");
+
+
+        ConfiguredObjectRecord portRecord = new 
ConfiguredObjectRecordImpl(UUID.randomUUID(), "Port",
+                                                                           
hostAttributes, Collections.singletonMap("Broker", _brokerRecord.getId()));
+        DurableConfigurationStore dcs = new 
DurableConfigurationStoreStub(_brokerRecord, portRecord);
+
+        BrokerStoreUpgraderAndRecoverer recoverer = new 
BrokerStoreUpgraderAndRecoverer(_systemConfig);
+        List<ConfiguredObjectRecord> records = recoverer.upgrade(dcs);
+
+        assertFalse("VirtualHostAlias rescords should be returned",
+                    findRecordByType("VirtualHostAlias", records).isEmpty());
+
+    }
+
+
+    public void testUpgradeImpliedNonAMQPPort()
+    {
+        Map<String, Object> hostAttributes = new HashMap<>();
+        hostAttributes.put("name", "nonAMQPPort");
+        hostAttributes.put("protocols", "HTTP");
+
+        _brokerRecord.getAttributes().put("modelVersion", "2.0");
+
+
+        ConfiguredObjectRecord portRecord = new 
ConfiguredObjectRecordImpl(UUID.randomUUID(), "Port",
+                                                                           
hostAttributes, Collections.singletonMap("Broker", _brokerRecord.getId()));
+        DurableConfigurationStore dcs = new 
DurableConfigurationStoreStub(_brokerRecord, portRecord);
+
+        BrokerStoreUpgraderAndRecoverer recoverer = new 
BrokerStoreUpgraderAndRecoverer(_systemConfig);
+        List<ConfiguredObjectRecord> records = recoverer.upgrade(dcs);
+
+        assertTrue("No virtualhostalias rescords should be returned",
+                   findRecordByType("VirtualHostAlias", records).isEmpty());
+
+    }
     private void upgradeBrokerRecordAndAssertUpgradeResults()
     {
         DurableConfigurationStore dcs = new 
DurableConfigurationStoreStub(_brokerRecord);
@@ -431,6 +493,20 @@ public class BrokerStoreUpgraderAndRecov
         return null;
     }
 
+    private List<ConfiguredObjectRecord> findRecordByType(String type, 
List<ConfiguredObjectRecord> records)
+    {
+        List<ConfiguredObjectRecord> results = new ArrayList<>();
+
+        for (ConfiguredObjectRecord configuredObjectRecord : records)
+        {
+            if (configuredObjectRecord.getType().equals(type))
+            {
+                results.add(configuredObjectRecord);
+            }
+        }
+        return results;
+    }
+
     class DurableConfigurationStoreStub implements DurableConfigurationStore
     {
         private ConfiguredObjectRecord[] records;



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

Reply via email to