diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-03-12 13:19:29 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-03-12 13:19:29 +0000 |
| commit | f10abece85c408a2185afe8f3075f0ed82451aeb (patch) | |
| tree | b56a98d59e5786a39901a08f7fde53b7aa218541 /qpid/java/bdbstore | |
| parent | a038ecc0c2da1fdd8cff38051bba3c8ffca4df1e (diff) | |
| download | qpid-python-f10abece85c408a2185afe8f3075f0ed82451aeb.tar.gz | |
QPID-5624: Remove virtualhost xml configuration. Move virtual host configuration into broker configuration store"
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1576732 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore')
10 files changed, 90 insertions, 315 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java index 3fdc12ba31..e41b81f846 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java @@ -21,7 +21,6 @@ package org.apache.qpid.server.store.berkeleydb; */ import org.apache.log4j.Logger; -import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.connection.IConnectionRegistry; import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject; import org.apache.qpid.server.model.VirtualHost; @@ -54,13 +53,12 @@ public class BDBHAVirtualHost extends AbstractVirtualHost BDBHAVirtualHost(VirtualHostRegistry virtualHostRegistry, StatisticsGatherer brokerStatisticsGatherer, org.apache.qpid.server.security.SecurityManager parentSecurityManager, - VirtualHostConfiguration hostConfig, VirtualHost virtualHost) { - super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig, virtualHost); + super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, virtualHost); } - protected void initialiseStorage(VirtualHostConfiguration hostConfig, VirtualHost virtualHost) + protected void initialiseStorage(VirtualHost virtualHost) { _messageStore = new BDBMessageStore(new ReplicatedEnvironmentFacadeFactory()); @@ -179,7 +177,7 @@ public class BDBHAVirtualHost extends AbstractVirtualHost @Override public void event(Event event) { - initialiseModel(getConfiguration()); + initialiseModel(); } } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java index 7a308920b3..f5d930dc5a 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java @@ -19,16 +19,11 @@ package org.apache.qpid.server.store.berkeleydb;/* * */ -import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; -import org.apache.commons.configuration.Configuration; -import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.model.adapter.VirtualHostAdapter; import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.stats.StatisticsGatherer; -import org.apache.qpid.server.store.MessageStoreConstants; import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; @@ -47,13 +42,11 @@ public class BDBHAVirtualHostFactory implements VirtualHostFactory public VirtualHost createVirtualHost(VirtualHostRegistry virtualHostRegistry, StatisticsGatherer brokerStatisticsGatherer, org.apache.qpid.server.security.SecurityManager parentSecurityManager, - VirtualHostConfiguration hostConfig, org.apache.qpid.server.model.VirtualHost virtualHost) { return new BDBHAVirtualHost(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, - hostConfig, virtualHost); } @@ -86,73 +79,4 @@ public class BDBHAVirtualHostFactory implements VirtualHostFactory return convertedMap; } - public Map<String, Object> convertVirtualHostConfiguration(Configuration configuration) - { - - LinkedHashMap<String,Object> convertedMap = new LinkedHashMap<String, Object>(); - - Configuration storeConfiguration = configuration.subset("store"); - - convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_PATH, storeConfiguration.getString(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY)); - convertedMap.put(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.OVERFULL_SIZE_PROPERTY)); - convertedMap.put(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.UNDERFULL_SIZE_PROPERTY)); - convertedMap.put("haGroupName", configuration.getString("store.highAvailability.groupName")); - convertedMap.put("haNodeName", configuration.getString("store.highAvailability.nodeName")); - convertedMap.put("haNodeAddress", configuration.getString("store.highAvailability.nodeHostPort")); - convertedMap.put("haHelperAddress", configuration.getString("store.highAvailability.helperHostPort")); - - final Object haDurability = configuration.getString("store.highAvailability.durability"); - if(haDurability !=null) - { - convertedMap.put("haDurability", haDurability); - } - - final Object designatedPrimary = configuration.getString("store.highAvailability.designatedPrimary"); - if(designatedPrimary!=null) - { - convertedMap.put("haDesignatedPrimary", designatedPrimary); - } - - final Object coalescingSync = configuration.getString("store.highAvailability.coalescingSync"); - if(coalescingSync!=null) - { - convertedMap.put("haCoalescingSync", coalescingSync); - } - - - Map<String, String> attributes = getEnvironmentMap(storeConfiguration, "envConfig"); - - if(!attributes.isEmpty()) - { - convertedMap.put("bdbEnvironmentConfig",attributes); - } - - attributes = getEnvironmentMap(storeConfiguration, "repConfig"); - - if(!attributes.isEmpty()) - { - convertedMap.put("haReplicationConfig",attributes); - } - - return convertedMap; - - } - - private Map<String, String> getEnvironmentMap(Configuration storeConfiguration, String configName) - { - final List<Object> argumentNames = storeConfiguration.getList(configName +".name"); - final List<Object> argumentValues = storeConfiguration.getList(configName +".value"); - final int initialSize = argumentNames.size(); - - final Map<String,String> attributes = new HashMap<String,String>(initialSize); - - for (int i = 0; i < argumentNames.size(); i++) - { - final String argName = argumentNames.get(i).toString(); - final String argValue = argumentValues.get(i).toString(); - - attributes.put(argName, argValue); - } - return attributes; - } } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java index 4abe81c56c..04efc77b8b 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java @@ -20,12 +20,7 @@ */ package org.apache.qpid.server.store.berkeleydb; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; import java.util.Map; - -import org.apache.commons.configuration.Configuration; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory; import org.apache.qpid.server.plugin.MessageStoreFactory; @@ -54,35 +49,6 @@ public class BDBMessageStoreFactory implements MessageStoreFactory, DurableConfi } @Override - public Map<String, Object> convertStoreConfiguration(Configuration storeConfiguration) - { - final List<Object> argumentNames = storeConfiguration.getList("envConfig.name"); - final List<Object> argumentValues = storeConfiguration.getList("envConfig.value"); - final int initialSize = argumentNames.size(); - - final Map<String,String> attributes = new HashMap<String,String>(initialSize); - - for (int i = 0; i < argumentNames.size(); i++) - { - final String argName = argumentNames.get(i).toString(); - final String argValue = argumentValues.get(i).toString(); - - attributes.put(argName, argValue); - } - - if(initialSize != 0) - { - return Collections.singletonMap(BDBMessageStore.ENVIRONMENT_CONFIGURATION, (Object)attributes); - } - else - { - return Collections.emptyMap(); - } - - - } - - @Override public void validateAttributes(Map<String, Object> attributes) { if(getType().equals(attributes.get(VirtualHost.STORE_TYPE))) diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java index a05a30b459..488d14bdf4 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java @@ -27,7 +27,6 @@ import java.io.File; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.UUID; import org.apache.qpid.server.configuration.ConfigurationEntry; @@ -41,24 +40,21 @@ import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade; import org.apache.qpid.server.util.BrokerTestHelper; -import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory; import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; import org.apache.qpid.util.FileUtils; -import com.sleepycat.je.EnvironmentConfig; import com.sleepycat.je.rep.ReplicatedEnvironment; import com.sleepycat.je.rep.ReplicationConfig; public class VirtualHostTest extends QpidTestCase { - private Broker _broker; + private Broker<?> _broker; private StatisticsGatherer _statisticsGatherer; private RecovererProvider _recovererProvider; private File _configFile; private File _bdbStorePath; - private VirtualHost _host; + private VirtualHost<?> _host; private ConfigurationEntryStore _store; @Override @@ -103,106 +99,64 @@ public class VirtualHostTest extends QpidTestCase } } - - public void testCreateBdbVirtualHostFromConfigurationFile() + public void testCreateBdbHaVirtualHostFromConfigurationEntry() { - String hostName = getName(); - long logFileMax = 2000000; - _host = createHostFromConfiguration(hostName, logFileMax); - _host.setDesiredState(State.INITIALISING, State.ACTIVE); - assertEquals("Unexpected host name", hostName, _host.getName()); - assertEquals("Unexpected host type", StandardVirtualHostFactory.TYPE, _host.getType()); - assertEquals("Unexpected store type", new BDBMessageStoreFactory().getType(), _host.getAttribute(VirtualHost.STORE_TYPE)); - assertEquals("Unexpected store path", _bdbStorePath.getAbsolutePath(), _host.getAttribute(VirtualHost.STORE_PATH)); - - BDBMessageStore messageStore = (BDBMessageStore) _host.getMessageStore(); - EnvironmentConfig envConfig = messageStore.getEnvironmentFacade().getEnvironment().getConfig(); - assertEquals("Unexpected JE log file max", String.valueOf(logFileMax), envConfig.getConfigParam(EnvironmentConfig.LOG_FILE_MAX)); - - } - - public void testCreateBdbHaVirtualHostFromConfigurationFile() - { - String hostName = getName(); - String repStreamTimeout = "2 h"; String nodeName = "node"; String groupName = "group"; String nodeHostPort = "localhost:" + findFreePort(); String helperHostPort = nodeHostPort; String durability = "NO_SYNC,SYNC,NONE"; - _host = createHaHostFromConfiguration(hostName, groupName, nodeName, nodeHostPort, helperHostPort, durability, repStreamTimeout); + String hostName = getName(); + + Map<String, Object> virtualHostAttributes = new HashMap<String, Object>(); + virtualHostAttributes.put("haNodeName", nodeName); + virtualHostAttributes.put("haGroupName", groupName); + virtualHostAttributes.put("haNodeAddress", nodeHostPort); + virtualHostAttributes.put("haHelperAddress", helperHostPort); + virtualHostAttributes.put("haDurability", durability); + virtualHostAttributes.put(VirtualHost.STORE_PATH, _bdbStorePath.getAbsolutePath()); + virtualHostAttributes.put("haReplicationConfig", + Collections.singletonMap(ReplicationConfig.REP_STREAM_TIMEOUT, repStreamTimeout)); + virtualHostAttributes.put(VirtualHost.NAME, hostName); + virtualHostAttributes.put(VirtualHost.TYPE, BDBHAVirtualHostFactory.TYPE); + + _host = createHost(virtualHostAttributes); _host.setDesiredState(State.INITIALISING, State.ACTIVE); + assertEquals("Unexpected host name", hostName, _host.getName()); assertEquals("Unexpected host type", BDBHAVirtualHostFactory.TYPE, _host.getType()); assertEquals("Unexpected store type", ReplicatedEnvironmentFacade.TYPE, _host.getAttribute(VirtualHost.STORE_TYPE)); + + assertEquals(nodeName, _host.getAttribute("haNodeName")); + assertEquals(groupName, _host.getAttribute("haGroupName")); + assertEquals(nodeHostPort, _host.getAttribute("haNodeAddress")); + assertEquals(helperHostPort, _host.getAttribute("haHelperAddress")); + assertEquals(durability, _host.getAttribute("haDurability")); assertEquals("Unexpected store path", _bdbStorePath.getAbsolutePath(), _host.getAttribute(VirtualHost.STORE_PATH)); BDBMessageStore messageStore = (BDBMessageStore) _host.getMessageStore(); ReplicatedEnvironment environment = (ReplicatedEnvironment) messageStore.getEnvironmentFacade().getEnvironment(); - ReplicationConfig repConfig = environment.getRepConfig(); - assertEquals("Unexpected JE replication groupName", groupName, repConfig.getConfigParam(ReplicationConfig.GROUP_NAME)); - assertEquals("Unexpected JE replication nodeName", nodeName, repConfig.getConfigParam(ReplicationConfig.NODE_NAME)); - assertEquals("Unexpected JE replication nodeHostPort", nodeHostPort, repConfig.getConfigParam(ReplicationConfig.NODE_HOST_PORT)); - assertEquals("Unexpected JE replication nodeHostPort", helperHostPort, repConfig.getConfigParam(ReplicationConfig.HELPER_HOSTS)); - assertEquals("Unexpected JE replication nodeHostPort", "false", repConfig.getConfigParam(ReplicationConfig.DESIGNATED_PRIMARY)); - assertEquals("Unexpected JE replication stream timeout", repStreamTimeout, repConfig.getConfigParam(ReplicationConfig.REP_STREAM_TIMEOUT)); - } + ReplicationConfig replicationConfig = environment.getRepConfig(); - private VirtualHost createHost(Map<String, Object> attributes, Set<UUID> children) - { - ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(), attributes, - children, _store); + assertEquals(nodeName, environment.getNodeName()); + assertEquals(groupName, environment.getGroup().getName()); + assertEquals(nodeHostPort, replicationConfig.getNodeHostPort()); + assertEquals(helperHostPort, replicationConfig.getHelperHosts()); + assertEquals(durability, environment.getConfig().getDurability().toString()); + assertEquals("Unexpected JE replication stream timeout", repStreamTimeout, replicationConfig.getConfigParam(ReplicationConfig.REP_STREAM_TIMEOUT)); - return new VirtualHostRecoverer(_statisticsGatherer).create(_recovererProvider, entry, _broker); } - private VirtualHost createHost(Map<String, Object> attributes) - { - return createHost(attributes, Collections.<UUID> emptySet()); - } - private VirtualHost createHostFromConfiguration(String hostName, long logFileMax) + private VirtualHost<?> createHost(Map<String, Object> attributes) { - String content = "<virtualhosts><virtualhost><name>" + hostName + "</name><" + hostName + ">" - + "<store><class>" + BDBMessageStore.class.getName() + "</class>" - + "<environment-path>" + _bdbStorePath.getAbsolutePath() + "</environment-path>" - + "<envConfig><name>" + EnvironmentConfig.LOG_FILE_MAX + "</name><value>" + logFileMax + "</value></envConfig>" - + "</store>" - + "</" + hostName + "></virtualhost></virtualhosts>"; - Map<String, Object> attributes = writeConfigAndGenerateAttributes(content); - return createHost(attributes); - } - + ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(), attributes, + Collections.<UUID>emptySet(), _store); - private VirtualHost createHaHostFromConfiguration(String hostName, String groupName, String nodeName, String nodeHostPort, String helperHostPort, String durability, String repStreamTimeout) - { - String content = "<virtualhosts><virtualhost><name>" + hostName + "</name><" + hostName + ">" - + "<type>" + BDBHAVirtualHostFactory.TYPE + "</type>" - + "<store><class>" + BDBMessageStore.class.getName() + "</class>" - + "<environment-path>" + _bdbStorePath.getAbsolutePath() + "</environment-path>" - + "<highAvailability>" - + "<groupName>" + groupName + "</groupName>" - + "<nodeName>" + nodeName + "</nodeName>" - + "<nodeHostPort>" + nodeHostPort + "</nodeHostPort>" - + "<helperHostPort>" + helperHostPort + "</helperHostPort>" - + "<durability>" + durability.replaceAll(",", "\\\\,") + "</durability>" - + "</highAvailability>" - + "<repConfig><name>" + ReplicationConfig.REP_STREAM_TIMEOUT + "</name><value>" + repStreamTimeout + "</value></repConfig>" - + "</store>" - + "</" + hostName + "></virtualhost></virtualhosts>"; - Map<String, Object> attributes = writeConfigAndGenerateAttributes(content); - return createHost(attributes); + return new VirtualHostRecoverer(_statisticsGatherer).create(_recovererProvider, entry, _broker); } - private Map<String, Object> writeConfigAndGenerateAttributes(String content) - { - _configFile = TestFileUtils.createTempFile(this, ".virtualhost.xml", content); - Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(VirtualHost.NAME, getName()); - attributes.put(VirtualHost.CONFIG_PATH, _configFile.getAbsolutePath()); - return attributes; - } }
\ No newline at end of file diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java index 1b9fa0be9c..b6a178ac8a 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java @@ -31,6 +31,7 @@ import javax.jms.MessageConsumer; import javax.jms.Session; import org.apache.log4j.Logger; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.Piper; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.util.FileUtils; @@ -59,12 +60,8 @@ public class BDBBackupTest extends QpidBrokerTestCase super.setUp(); _backupToDir = new File(SYSTEM_TMP_DIR + File.separator + getTestName()); _backupToDir.mkdirs(); - - final String qpidWork = getBroker(DEFAULT_PORT).getWorkingDirectory(); - - // It would be preferable to lookup the store path using #getConfigurationStringProperty("virtualhosts...") - // but the config as known to QBTC does not pull-in the virtualhost section from its separate source file - _backupFromDir = new File(qpidWork + File.separator + TEST_VHOST + "-store"); + Map<String, Object> virtualHostAttributes = getBrokerConfiguration().getObjectAttributes(TEST_VHOST); + _backupFromDir = new File((String)virtualHostAttributes.get(VirtualHost.STORE_PATH)); boolean fromDirExistsAndIsDir = _backupFromDir.isDirectory(); assertTrue("backupFromDir " + _backupFromDir + " should already exist", fromDirExistsAndIsDir); } diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java index 04817ad36c..835deb4a4c 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java @@ -29,7 +29,6 @@ import java.util.Arrays; import java.util.List; import java.util.UUID; -import org.apache.qpid.server.store.StoreException; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.BasicContentHeaderProperties; import org.apache.qpid.framing.ContentHeaderBody; @@ -38,18 +37,19 @@ import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.framing.abstraction.MessagePublishInfo; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.EnqueueableMessage; -import org.apache.qpid.server.protocol.v0_10.MessageMetaDataType_0_10; -import org.apache.qpid.server.protocol.v0_8.MessageMetaData; -import org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; import org.apache.qpid.server.model.UUIDGenerator; +import org.apache.qpid.server.protocol.v0_10.MessageMetaDataType_0_10; +import org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10; +import org.apache.qpid.server.protocol.v0_8.MessageMetaData; import org.apache.qpid.server.protocol.v0_8.MessageMetaDataType_0_8; +import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreRecoveryHandler; import org.apache.qpid.server.store.MessageStoreRecoveryHandler.StoredMessageRecoveryHandler; import org.apache.qpid.server.store.MessageStoreTest; -import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.StorableMessageMetaData; +import org.apache.qpid.server.store.StoreException; import org.apache.qpid.server.store.StoredMessage; import org.apache.qpid.server.store.Transaction; import org.apache.qpid.server.store.TransactionLogResource; diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java index 755168ca9c..3d6a2bac67 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java @@ -22,6 +22,7 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; import java.io.InputStream; +import java.util.Map; import javax.jms.Connection; import javax.jms.DeliveryMode; @@ -43,8 +44,10 @@ import javax.management.openmbean.TabularDataSupport; import org.apache.qpid.management.common.mbeans.ManagedExchange; import org.apache.qpid.management.common.mbeans.ManagedQueue; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.JMXTestUtils; import org.apache.qpid.test.utils.QpidBrokerTestCase; +import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.util.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -80,7 +83,8 @@ public class BDBUpgradeTest extends QpidBrokerTestCase public void setUp() throws Exception { assertNotNull("QPID_WORK must be set", QPID_WORK_ORIG); - _storeLocation = getWorkDirBaseDir() + File.separator + "test-store"; + Map<String, Object> virtualHostAttributes = getBrokerConfiguration().getObjectAttributes(TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + _storeLocation = (String)virtualHostAttributes.get(VirtualHost.STORE_PATH); //Clear the two target directories if they exist. File directory = new File(_storeLocation); diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java index e8d18971ad..bef35e163f 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java @@ -184,7 +184,7 @@ public class HAClusterManagementTest extends QpidBrokerTestCase final int oldBdbPort = _clusterCreator.getBdbPortForBrokerPort(brokerPortNumberToBeMoved); final int newBdbPort = getNextAvailable(oldBdbPort + 1); - storeBean.updateAddress(_clusterCreator.getNodeNameForNodeAt(oldBdbPort), _clusterCreator.getIpAddressOfBrokerHost(), newBdbPort); + storeBean.updateAddress(_clusterCreator.getNodeNameForNodeAt(oldBdbPort), "localhost", newBdbPort); _clusterCreator.modifyClusterNodeBdbAddress(brokerPortNumberToBeMoved, newBdbPort); diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java index 95626f7fa5..cf4a6c87e3 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java @@ -34,8 +34,6 @@ import org.apache.qpid.server.store.berkeleydb.jmx.ManagedBDBHAMessageStore; import org.apache.qpid.test.utils.JMXTestUtils; import org.apache.qpid.test.utils.QpidBrokerTestCase; -import com.sleepycat.je.rep.ReplicationConfig; - public class HAClusterTwoNodeTest extends QpidBrokerTestCase { private static final long RECEIVE_TIMEOUT = 5000l; @@ -83,15 +81,6 @@ public class HAClusterTwoNodeTest extends QpidBrokerTestCase private void startCluster(boolean designedPrimary) throws Exception { setSystemProperty("java.util.logging.config.file", "etc" + File.separator + "log.properties"); - - String storeConfigKeyPrefix = _clusterCreator.getStoreConfigKeyPrefix(); - - setVirtualHostConfigurationProperty(storeConfigKeyPrefix + ".repConfig(0).name", ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT); - setVirtualHostConfigurationProperty(storeConfigKeyPrefix + ".repConfig(0).value", "2 s"); - - setVirtualHostConfigurationProperty(storeConfigKeyPrefix + ".repConfig(1).name", ReplicationConfig.ELECTIONS_PRIMARY_RETRIES); - setVirtualHostConfigurationProperty(storeConfigKeyPrefix + ".repConfig(1).value", "0"); - _clusterCreator.configureClusterNodes(); _clusterCreator.setDesignatedPrimaryOnFirstBroker(designedPrimary); _brokerFailoverUrl = _clusterCreator.getConnectionUrlForAllClusterNodes(); diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java index 353c3a0ec5..1a65b095b4 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java @@ -19,6 +19,7 @@ */ package org.apache.qpid.server.store.berkeleydb; +import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; @@ -26,7 +27,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.Callable; @@ -38,15 +38,17 @@ import java.util.concurrent.TimeUnit; import javax.jms.Connection; -import org.apache.commons.configuration.XMLConfiguration; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQConnectionURL; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.url.URLSyntaxException; +import com.sleepycat.je.rep.ReplicationConfig; + public class HATestClusterCreator { protected static final Logger LOGGER = Logger.getLogger(HATestClusterCreator.class); @@ -65,17 +67,14 @@ public class HATestClusterCreator private static final int CONNECTDELAY = 75; private final QpidBrokerTestCase _testcase; - private final Map<Integer, Integer> _brokerPortToBdbPortMap = new HashMap<Integer, Integer>(); - private final Map<Integer, BrokerConfigHolder> _brokerConfigurations = new TreeMap<Integer, BrokerConfigHolder>(); + private final Map<Integer, Integer> _brokerPortToBdbPortMap = new TreeMap<Integer, Integer>(); private final String _virtualHostName; - private final String _vhostStoreConfigKeyPrefix; private final String _ipAddressOfBroker; private final String _groupName ; private final int _numberOfNodes; private int _bdbHelperPort; private int _primaryBrokerPort; - private String _vhostConfigKeyPrefix; public HATestClusterCreator(QpidBrokerTestCase testcase, String virtualHostName, int numberOfNodes) { @@ -84,8 +83,6 @@ public class HATestClusterCreator _groupName = "group" + _testcase.getName(); _ipAddressOfBroker = getIpAddressOfBrokerHost(); _numberOfNodes = numberOfNodes; - _vhostConfigKeyPrefix = "virtualhosts.virtualhost." + _virtualHostName + "."; - _vhostStoreConfigKeyPrefix = _vhostConfigKeyPrefix + "store."; _bdbHelperPort = 0; } @@ -104,13 +101,23 @@ public class HATestClusterCreator _bdbHelperPort = bdbPort; } - configureClusterNode(brokerPort, bdbPort); TestBrokerConfiguration brokerConfiguration = _testcase.getBrokerConfiguration(brokerPort); brokerConfiguration.addJmxManagementConfiguration(); - collectConfig(brokerPort, brokerConfiguration, _testcase.getTestVirtualhosts()); + String nodeName = getNodeNameForNodeAt(bdbPort); + brokerConfiguration.setObjectAttribute(_virtualHostName, VirtualHost.TYPE, BDBHAVirtualHostFactory.TYPE); + brokerConfiguration.setObjectAttribute(_virtualHostName, VirtualHost.STORE_PATH, System.getProperty("QPID_WORK") + File.separator + brokerPort); + brokerConfiguration.setObjectAttribute(_virtualHostName, "haGroupName", _groupName); + brokerConfiguration.setObjectAttribute(_virtualHostName, "haNodeName", nodeName); + brokerConfiguration.setObjectAttribute(_virtualHostName, "haNodeAddress", getNodeHostPortForNodeAt(bdbPort)); + brokerConfiguration.setObjectAttribute(_virtualHostName, "haHelperAddress", getHelperHostPort()); + Map<String, String> repSettings = new HashMap<String, String>(); + repSettings.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s"); + repSettings.put(ReplicationConfig.ELECTIONS_PRIMARY_RETRIES, "0"); + brokerConfiguration.setObjectAttribute(_virtualHostName, "haReplicationConfig", repSettings ); brokerPort = _testcase.getNextAvailable(bdbPort + 1); } + _primaryBrokerPort = getPrimaryBrokerPort(); } public void setDesignatedPrimaryOnFirstBroker(boolean designatedPrimary) throws Exception @@ -119,35 +126,24 @@ public class HATestClusterCreator { throw new IllegalArgumentException("Only two nodes groups have the concept of primary"); } - - final Entry<Integer, BrokerConfigHolder> brokerConfigEntry = _brokerConfigurations.entrySet().iterator().next(); - final String configKey = getConfigKey("highAvailability.designatedPrimary"); - brokerConfigEntry.getValue().getTestVirtualhosts().setProperty(configKey, Boolean.toString(designatedPrimary)); - _primaryBrokerPort = brokerConfigEntry.getKey(); + TestBrokerConfiguration config = _testcase.getBrokerConfiguration(_primaryBrokerPort); + config.setObjectAttribute("test", "haDesignatedPrimary", designatedPrimary); + config.setSaved(false); } - /** - * @param configKeySuffix "highAvailability.designatedPrimary", for example - * @return "virtualhost.test.store.highAvailability.designatedPrimary", for example - */ - private String getConfigKey(String configKeySuffix) + private int getPrimaryBrokerPort() { - final String configKey = StringUtils.substringAfter(_vhostStoreConfigKeyPrefix + configKeySuffix, "virtualhosts."); - return configKey; + return _brokerPortToBdbPortMap.keySet().iterator().next(); } public void startNode(final int brokerPortNumber) throws Exception { - final BrokerConfigHolder brokerConfigHolder = _brokerConfigurations.get(brokerPortNumber); - - _testcase.setTestVirtualhosts(brokerConfigHolder.getTestVirtualhosts()); - _testcase.startBroker(brokerPortNumber); } public void startCluster() throws Exception { - for (final Integer brokerPortNumber : _brokerConfigurations.keySet()) + for (final Integer brokerPortNumber : _brokerPortToBdbPortMap.keySet()) { startNode(brokerPortNumber); } @@ -155,21 +151,20 @@ public class HATestClusterCreator public void startClusterParallel() throws Exception { - final ExecutorService executor = Executors.newFixedThreadPool(_brokerConfigurations.size()); + final ExecutorService executor = Executors.newFixedThreadPool(_brokerPortToBdbPortMap.size()); try { List<Future<Object>> brokers = new CopyOnWriteArrayList<Future<Object>>(); - for (final Integer brokerPortNumber : _brokerConfigurations.keySet()) + for (final Integer brokerPortNumber : _brokerPortToBdbPortMap.keySet()) { - final BrokerConfigHolder brokerConfigHolder = _brokerConfigurations.get(brokerPortNumber); + final TestBrokerConfiguration brokerConfig = _testcase.getBrokerConfiguration(brokerPortNumber); Future<Object> future = executor.submit(new Callable<Object>() { public Object call() { try { - _testcase.startBroker(brokerPortNumber, brokerConfigHolder.getTestConfiguration(), - brokerConfigHolder.getTestVirtualhosts()); + _testcase.startBroker(brokerPortNumber, brokerConfig); return "OK"; } catch (Exception e) @@ -213,7 +208,7 @@ public class HATestClusterCreator public void stopCluster() throws Exception { - for (final Integer brokerPortNumber : _brokerConfigurations.keySet()) + for (final Integer brokerPortNumber : _brokerPortToBdbPortMap.keySet()) { try { @@ -345,22 +340,9 @@ public class HATestClusterCreator public Set<Integer> getBrokerPortNumbersForNodes() { - return new HashSet<Integer>(_brokerConfigurations.keySet()); + return new HashSet<Integer>(_brokerPortToBdbPortMap.keySet()); } - private void configureClusterNode(final int brokerPort, final int bdbPort) throws Exception - { - final String nodeName = getNodeNameForNodeAt(bdbPort); - - - _testcase.setVirtualHostConfigurationProperty(_vhostConfigKeyPrefix + "type", BDBHAVirtualHostFactory.TYPE); - _testcase.setVirtualHostConfigurationProperty(_vhostStoreConfigKeyPrefix + "class", "org.apache.qpid.server.store.berkeleydb.BDBHAMessageStore"); - - _testcase.setVirtualHostConfigurationProperty(_vhostStoreConfigKeyPrefix + "highAvailability.groupName", _groupName); - _testcase.setVirtualHostConfigurationProperty(_vhostStoreConfigKeyPrefix + "highAvailability.nodeName", nodeName); - _testcase.setVirtualHostConfigurationProperty(_vhostStoreConfigKeyPrefix + "highAvailability.nodeHostPort", getNodeHostPortForNodeAt(bdbPort)); - _testcase.setVirtualHostConfigurationProperty(_vhostStoreConfigKeyPrefix + "highAvailability.helperHostPort", getHelperHostPort()); - } public String getIpAddressOfBrokerHost() { @@ -375,55 +357,16 @@ public class HATestClusterCreator } } - private void collectConfig(final int brokerPortNumber, TestBrokerConfiguration testConfiguration, XMLConfiguration testVirtualhosts) - { - _brokerConfigurations.put(brokerPortNumber, new BrokerConfigHolder(testConfiguration, - (XMLConfiguration) testVirtualhosts.clone())); - } - - public class BrokerConfigHolder - { - private final TestBrokerConfiguration _testConfiguration; - private final XMLConfiguration _testVirtualhosts; - - public BrokerConfigHolder(TestBrokerConfiguration testConfiguration, XMLConfiguration testVirtualhosts) - { - _testConfiguration = testConfiguration; - _testVirtualhosts = testVirtualhosts; - } - - public TestBrokerConfiguration getTestConfiguration() - { - return _testConfiguration; - } - - public XMLConfiguration getTestVirtualhosts() - { - return _testVirtualhosts; - } - } - public void modifyClusterNodeBdbAddress(int brokerPortNumberToBeMoved, int newBdbPort) { - final BrokerConfigHolder brokerConfigHolder = _brokerConfigurations.get(brokerPortNumberToBeMoved); - final XMLConfiguration virtualHostConfig = brokerConfigHolder.getTestVirtualhosts(); - - final String configKey = getConfigKey("highAvailability.nodeHostPort"); - final String oldBdbHostPort = virtualHostConfig.getString(configKey); - - final String[] oldHostAndPort = StringUtils.split(oldBdbHostPort, ":"); - final String oldHost = oldHostAndPort[0]; - - final String newBdbHostPort = oldHost + ":" + newBdbPort; - - virtualHostConfig.setProperty(configKey, newBdbHostPort); - collectConfig(brokerPortNumberToBeMoved, brokerConfigHolder.getTestConfiguration(), virtualHostConfig); + TestBrokerConfiguration config = _testcase.getBrokerConfiguration(brokerPortNumberToBeMoved); + config.setObjectAttribute(_virtualHostName, "haNodeAddress", "localhost:" + newBdbPort); + String oldBdbHostPort = (String)config.getObjectAttributes(_virtualHostName).get("haNodeAddress"); + String[] oldHostAndPort = StringUtils.split(oldBdbHostPort, ":"); + String oldHost = oldHostAndPort[0]; + String newBdbHostPort = oldHost + ":" + newBdbPort; + config.setObjectAttribute(_virtualHostName, "haNodeAddress", newBdbHostPort); + config.setSaved(false); } - public String getStoreConfigKeyPrefix() - { - return _vhostStoreConfigKeyPrefix; - } - - } |
