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