Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java (original) +++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java Mon Jul 1 09:56:29 2013 @@ -19,13 +19,21 @@ package org.apache.qpid.server.virtualho * */ +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; +import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.model.adapter.VirtualHostAdapter; +import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.store.MemoryMessageStore; +import org.apache.qpid.server.store.MessageStoreConstants; import org.apache.qpid.server.store.MessageStoreCreator; public class StandardVirtualHostFactory implements VirtualHostFactory @@ -43,9 +51,10 @@ public class StandardVirtualHostFactory public VirtualHost createVirtualHost(VirtualHostRegistry virtualHostRegistry, StatisticsGatherer brokerStatisticsGatherer, org.apache.qpid.server.security.SecurityManager parentSecurityManager, - VirtualHostConfiguration hostConfig) throws Exception + VirtualHostConfiguration hostConfig, + org.apache.qpid.server.model.VirtualHost virtualHost) throws Exception { - return new StandardVirtualHost(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig); + return new StandardVirtualHost(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig, virtualHost); } @@ -94,13 +103,26 @@ public class StandardVirtualHostFactory convertedMap.put("store.type", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE)); convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH)); - // TODO - this should all be inverted to populate vhost from xml and then pass model object to the store + return convertedMap; + } + + @Override + public Map<String, Object> convertVirtualHostConfiguration(Configuration configuration) + { + Map<String,Object> convertedMap = new LinkedHashMap<String, Object>(); + Configuration storeConfiguration = configuration.subset("store"); + convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_TYPE, storeConfiguration.getString("type")); + convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_PATH, storeConfiguration.getString(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY)); - convertedMap.put("store.pool.type",virtualHostAdapter.getAttribute("connectionPool")); - convertedMap.put("store.pool.minConnectionsPerPartition",virtualHostAdapter.getAttribute("minConnectionsPerPartition")); - convertedMap.put("store.pool.maxConnectionsPerPartition",virtualHostAdapter.getAttribute("maxConnectionsPerPartition")); - convertedMap.put("store.pool.partitionCount",virtualHostAdapter.getAttribute("partitionCount")); + convertedMap.put(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.OVERFULL_SIZE_PROPERTY)); + convertedMap.put(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.UNDERFULL_SIZE_PROPERTY)); + + for(MessageStoreFactory mf : new MessageStoreCreator().getFactories()) + { + convertedMap.putAll(mf.convertStoreConfiguration(storeConfiguration)); + } return convertedMap; + } }
Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/DurableConfigurationStoreTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/DurableConfigurationStoreTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/DurableConfigurationStoreTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/DurableConfigurationStoreTest.java Mon Jul 1 09:56:29 2013 @@ -49,6 +49,7 @@ import org.apache.qpid.server.logging.ac import org.apache.qpid.server.logging.actors.TestLogActor; import org.apache.qpid.server.message.EnqueableMessage; import org.apache.qpid.server.model.UUIDGenerator; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.queue.MockStoredMessage; import org.apache.qpid.server.store.ConfigurationRecoveryHandler.BindingRecoveryHandler; @@ -67,6 +68,7 @@ public class DurableConfigurationStoreTe private String _storeName; private MessageStore _messageStore; private Configuration _configuration; + private VirtualHost _virtualHost; private ConfigurationRecoveryHandler _recoveryHandler; private QueueRecoveryHandler _queueRecoveryHandler; @@ -107,6 +109,7 @@ public class DurableConfigurationStoreTe _messageStoreRecoveryHandler = mock(MessageStoreRecoveryHandler.class); _queueEntryRecoveryHandler = mock(TransactionLogRecoveryHandler.QueueEntryRecoveryHandler.class); _dtxRecordRecoveryHandler = mock(TransactionLogRecoveryHandler.DtxRecordRecoveryHandler.class); + _virtualHost = mock(VirtualHost.class); when(_messageStoreRecoveryHandler.begin()).thenReturn(_storedMessageRecoveryHandler); when(_recoveryHandler.begin(isA(MessageStore.class))).thenReturn(_exchangeRecoveryHandler); @@ -118,6 +121,7 @@ public class DurableConfigurationStoreTe when(_exchange.getId()).thenReturn(_exchangeId); when(_configuration.getString(eq(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY), anyString())).thenReturn( _storePath); + when(_virtualHost.getAttribute(eq(VirtualHost.STORE_PATH))).thenReturn(_storePath); _bindingArgs = new FieldTable(); AMQShortString argKey = AMQPFilterTypes.JMS_SELECTOR.getValue(); @@ -314,8 +318,8 @@ public class DurableConfigurationStoreTe _messageStore = createMessageStore(); _configStore = createConfigStore(); - _configStore.configureConfigStore(_storeName, _recoveryHandler, _configuration); - _messageStore.configureMessageStore(_storeName, _messageStoreRecoveryHandler, _logRecoveryHandler, _configuration); + _configStore.configureConfigStore(_storeName, _recoveryHandler, _virtualHost); + _messageStore.configureMessageStore(_storeName, _messageStoreRecoveryHandler, _logRecoveryHandler); _messageStore.activate(); } Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreQuotaEventsTestBase.java Mon Jul 1 09:56:29 2013 @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import org.apache.commons.configuration.XMLConfiguration; import org.apache.log4j.Logger; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.BasicContentHeaderProperties; @@ -37,9 +36,14 @@ import org.apache.qpid.framing.abstracti import org.apache.qpid.framing.abstraction.MessagePublishInfoImpl; import org.apache.qpid.server.message.EnqueableMessage; import org.apache.qpid.server.message.MessageMetaData; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.util.FileUtils; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public abstract class MessageStoreQuotaEventsTestBase extends QpidTestCase implements EventListener, TransactionLogResource { private static final Logger _logger = Logger.getLogger(MessageStoreQuotaEventsTestBase.class); @@ -54,7 +58,7 @@ public abstract class MessageStoreQuotaE protected abstract MessageStore createStore() throws Exception; - protected abstract void applyStoreSpecificConfiguration(XMLConfiguration config); + protected abstract void applyStoreSpecificConfiguration(VirtualHost virtualHost); protected abstract int getNumberOfMessagesToFillStore(); @@ -66,12 +70,13 @@ public abstract class MessageStoreQuotaE _storeLocation = new File(new File(TMP_FOLDER), getTestName()); FileUtils.delete(_storeLocation, true); - XMLConfiguration config = new XMLConfiguration(); - config.addProperty("environment-path", _storeLocation.getAbsolutePath()); - applyStoreSpecificConfiguration(config); + + VirtualHost vhost = mock(VirtualHost.class); + when(vhost.getAttribute(eq(VirtualHost.STORE_PATH))).thenReturn(_storeLocation.getAbsolutePath()); + applyStoreSpecificConfiguration(vhost); _store = createStore(); - ((DurableConfigurationStore)_store).configureConfigStore("test", null, config); + ((DurableConfigurationStore)_store).configureConfigStore("test", null, vhost); _transactionResource = UUID.randomUUID(); _events = new ArrayList<Event>(); Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java Mon Jul 1 09:56:29 2013 @@ -62,6 +62,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + /** * This tests the MessageStores by using the available interfaces. * @@ -98,26 +102,42 @@ public class MessageStoreTest extends Qp private PropertiesConfiguration _config; private VirtualHost _virtualHost; + private org.apache.qpid.server.model.VirtualHost _virtualHostModel; private Broker _broker; + private String _storePath; public void setUp() throws Exception { super.setUp(); BrokerTestHelper.setUp(); - String storePath = System.getProperty("QPID_WORK") + File.separator + getName(); + _storePath = System.getProperty("QPID_WORK") + File.separator + getName(); _config = new PropertiesConfiguration(); _config.addProperty("store.class", getTestProfileMessageStoreClassName()); - _config.addProperty("store.environment-path", storePath); + _config.addProperty("store.environment-path", _storePath); + _virtualHostModel = mock(org.apache.qpid.server.model.VirtualHost.class); + when(_virtualHostModel.getAttribute(eq(org.apache.qpid.server.model.VirtualHost.STORE_PATH))).thenReturn(_storePath); + + - cleanup(new File(storePath)); + cleanup(new File(_storePath)); _broker = BrokerTestHelper.createBrokerMock(); reloadVirtualHost(); } + protected String getStorePath() + { + return _storePath; + } + + protected org.apache.qpid.server.model.VirtualHost getVirtualHostModel() + { + return _virtualHostModel; + } + @Override public void tearDown() throws Exception { @@ -164,7 +184,7 @@ public class MessageStoreTest extends Qp try { - _virtualHost = BrokerTestHelper.createVirtualHost(new VirtualHostConfiguration(getClass().getName(), _config, _broker)); + _virtualHost = BrokerTestHelper.createVirtualHost(new VirtualHostConfiguration(getClass().getName(), _config, _broker),null,getVirtualHostModel()); } catch (Exception e) { Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java Mon Jul 1 09:56:29 2013 @@ -25,8 +25,7 @@ import static org.mockito.Matchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.ConfigurationRecoveryHandler.BindingRecoveryHandler; import org.apache.qpid.server.store.ConfigurationRecoveryHandler.ExchangeRecoveryHandler; import org.apache.qpid.server.store.ConfigurationRecoveryHandler.QueueRecoveryHandler; @@ -44,9 +43,9 @@ public abstract class MessageStoreTestCa private TransactionLogRecoveryHandler _logRecoveryHandler; private TransactionLogRecoveryHandler.QueueEntryRecoveryHandler _queueEntryRecoveryHandler; private TransactionLogRecoveryHandler.DtxRecordRecoveryHandler _dtxRecordRecoveryHandler; + private VirtualHost _virtualHost; private MessageStore _store; - private Configuration _storeConfiguration; public void setUp() throws Exception { @@ -61,6 +60,7 @@ public abstract class MessageStoreTestCa _messageStoreRecoveryHandler = mock(MessageStoreRecoveryHandler.class); _queueEntryRecoveryHandler = mock(TransactionLogRecoveryHandler.QueueEntryRecoveryHandler.class); _dtxRecordRecoveryHandler = mock(TransactionLogRecoveryHandler.DtxRecordRecoveryHandler.class); + _virtualHost = mock(VirtualHost.class); when(_messageStoreRecoveryHandler.begin()).thenReturn(_storedMessageRecoveryHandler); when(_recoveryHandler.begin(isA(MessageStore.class))).thenReturn(_exchangeRecoveryHandler); @@ -69,15 +69,15 @@ public abstract class MessageStoreTestCa when(_logRecoveryHandler.begin(any(MessageStore.class))).thenReturn(_queueEntryRecoveryHandler); when(_queueEntryRecoveryHandler.completeQueueEntryRecovery()).thenReturn(_dtxRecordRecoveryHandler); - _storeConfiguration = new PropertiesConfiguration(); - setUpStoreConfiguration(_storeConfiguration); + setUpStoreConfiguration(_virtualHost); _store = createMessageStore(); - ((DurableConfigurationStore)_store).configureConfigStore(getTestName(), _recoveryHandler, _storeConfiguration); - _store.configureMessageStore(getTestName(), _messageStoreRecoveryHandler, _logRecoveryHandler, _storeConfiguration); + ((DurableConfigurationStore)_store).configureConfigStore(getTestName(), _recoveryHandler, _virtualHost); + + _store.configureMessageStore(getTestName(), _messageStoreRecoveryHandler, _logRecoveryHandler); } - protected abstract void setUpStoreConfiguration(Configuration storeConfiguration) throws Exception; + protected abstract void setUpStoreConfiguration(VirtualHost virtualHost) throws Exception; protected abstract MessageStore createMessageStore(); @@ -86,8 +86,4 @@ public abstract class MessageStoreTestCa return _store; } - public Configuration getStoreConfiguration() - { - return _storeConfiguration; - } } Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreQuotaEventsTest.java Mon Jul 1 09:56:29 2013 @@ -20,11 +20,15 @@ */ package org.apache.qpid.server.store.derby; -import org.apache.commons.configuration.XMLConfiguration; import org.apache.log4j.Logger; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; +import org.apache.qpid.server.store.MessageStoreConstants; import org.apache.qpid.server.store.MessageStoreQuotaEventsTestBase; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.when; + public class DerbyMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestBase { private static final Logger _logger = Logger.getLogger(DerbyMessageStoreQuotaEventsTest.class); @@ -46,12 +50,12 @@ public class DerbyMessageStoreQuotaEvent } @Override - protected void applyStoreSpecificConfiguration(XMLConfiguration config) + protected void applyStoreSpecificConfiguration(VirtualHost vhost) { _logger.debug("Applying store specific config. overfull-sze=" + OVERFULL_SIZE + ", underfull-size=" + UNDERFULL_SIZE); - config.addProperty("overfull-size", OVERFULL_SIZE); - config.addProperty("underfull-size", UNDERFULL_SIZE); + when(vhost.getAttribute(eq(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE))).thenReturn(OVERFULL_SIZE); + when(vhost.getAttribute(eq(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE))).thenReturn(UNDERFULL_SIZE); } @Override Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java Mon Jul 1 09:56:29 2013 @@ -22,11 +22,14 @@ package org.apache.qpid.server.store.der import java.io.File; -import org.apache.commons.configuration.Configuration; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreTestCase; import org.apache.qpid.util.FileUtils; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.when; + public class DerbyMessageStoreTest extends MessageStoreTestCase { private String _storeLocation; @@ -57,10 +60,10 @@ public class DerbyMessageStoreTest exten } @Override - protected void setUpStoreConfiguration(Configuration storeConfiguration) throws Exception + protected void setUpStoreConfiguration(VirtualHost virtualHost) throws Exception { _storeLocation = TMP_FOLDER + File.separator + getTestName(); - storeConfiguration.setProperty("environment-path", _storeLocation); + when(virtualHost.getAttribute(eq(VirtualHost.STORE_PATH))).thenReturn(_storeLocation); deleteStoreIfExists(); } Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java Mon Jul 1 09:56:29 2013 @@ -28,11 +28,14 @@ import java.sql.SQLException; import java.util.HashSet; import java.util.Set; -import org.apache.commons.configuration.Configuration; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreTestCase; import org.apache.qpid.server.store.derby.DerbyMessageStore; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.when; + public class JDBCMessageStoreTest extends MessageStoreTestCase { private String _connectionURL; @@ -61,10 +64,11 @@ public class JDBCMessageStoreTest extend } @Override - protected void setUpStoreConfiguration(Configuration storeConfiguration) throws Exception + protected void setUpStoreConfiguration(VirtualHost virtualHost) throws Exception { _connectionURL = "jdbc:derby:memory:/" + getTestName() + ";create=true"; - storeConfiguration.addProperty("connectionUrl", _connectionURL); + + when(virtualHost.getAttribute(eq("connectionURL"))).thenReturn(_connectionURL); } @Override Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java Mon Jul 1 09:56:29 2013 @@ -58,7 +58,6 @@ import org.apache.qpid.server.store.Test import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory; import org.apache.qpid.server.virtualhost.VirtualHost; import org.apache.qpid.server.plugin.VirtualHostFactory; -import org.apache.qpid.server.virtualhost.VirtualHostFactoryRegistry; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; public class BrokerTestHelper @@ -98,6 +97,12 @@ public class BrokerTestHelper public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration, VirtualHostRegistry virtualHostRegistry) throws Exception { + return createVirtualHost(virtualHostConfiguration, virtualHostRegistry, mock(org.apache.qpid.server.model.VirtualHost.class)); + } + + public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration, VirtualHostRegistry virtualHostRegistry, org.apache.qpid.server.model.VirtualHost modelVHost) + throws Exception + { StatisticsGatherer statisticsGatherer = mock(StatisticsGatherer.class); final VirtualHostFactory factory = virtualHostConfiguration == null ? new StandardVirtualHostFactory() @@ -105,18 +110,18 @@ public class BrokerTestHelper VirtualHost host = factory.createVirtualHost(virtualHostRegistry, statisticsGatherer, new SecurityManager(mock(Broker.class), false), - virtualHostConfiguration); - virtualHostRegistry.registerVirtualHost(host); + virtualHostConfiguration, + modelVHost); + if(virtualHostRegistry != null) + { + virtualHostRegistry.registerVirtualHost(host); + } return host; } public static VirtualHost createVirtualHost(VirtualHostConfiguration virtualHostConfiguration) throws Exception { - final VirtualHostFactory factory = - virtualHostConfiguration == null ? new StandardVirtualHostFactory() - : VirtualHostFactory.FACTORIES.get(virtualHostConfiguration.getType()); - - return factory.createVirtualHost(null, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), virtualHostConfiguration); + return createVirtualHost(virtualHostConfiguration, null); } public static VirtualHost createVirtualHost(String name, VirtualHostRegistry virtualHostRegistry) throws Exception Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java (original) +++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java Mon Jul 1 09:56:29 2013 @@ -264,7 +264,8 @@ public class StandardVirtualHostTest ext _virtualHostRegistry = broker.getVirtualHostRegistry(); VirtualHostConfiguration configuration = new VirtualHostConfiguration(vhostName, config, broker); - VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration); + VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration, + mock(org.apache.qpid.server.model.VirtualHost.class)); _virtualHostRegistry.registerVirtualHost(host); return host; @@ -364,7 +365,8 @@ public class StandardVirtualHostTest ext Configuration config = new PropertiesConfiguration(); config.setProperty("store.type", MemoryMessageStore.TYPE); VirtualHostConfiguration configuration = new VirtualHostConfiguration(virtualHostName, config, broker); - VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration); + VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(mock(Broker.class), false), configuration, + mock(org.apache.qpid.server.model.VirtualHost.class)); _virtualHostRegistry.registerVirtualHost(host); return host; } Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java (original) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java Mon Jul 1 09:56:29 2013 @@ -23,10 +23,10 @@ package org.apache.qpid.server.store; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; -import org.apache.commons.configuration.Configuration; import org.apache.qpid.AMQStoreException; import org.apache.qpid.server.message.EnqueableMessage; import org.apache.qpid.server.message.MessageContentSource; +import org.apache.qpid.server.model.VirtualHost; public class QuotaMessageStore extends NullMessageStore { @@ -47,12 +47,27 @@ public class QuotaMessageStore extends N } @Override - public void configureConfigStore(String name, ConfigurationRecoveryHandler recoveryHandler, Configuration config) + public void configureConfigStore(String name, + ConfigurationRecoveryHandler recoveryHandler, + VirtualHost virtualHost) throws Exception { - _persistentSizeHighThreshold = config.getLong(MessageStoreConstants.OVERFULL_SIZE_PROPERTY, Long.MAX_VALUE); - _persistentSizeLowThreshold = config.getLong(MessageStoreConstants.UNDERFULL_SIZE_PROPERTY, - _persistentSizeHighThreshold); + Object overfullAttr = virtualHost.getAttribute(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE); + _persistentSizeHighThreshold = overfullAttr == null + ? Long.MAX_VALUE + : overfullAttr instanceof Number + ? ((Number)overfullAttr).longValue() + : Long.parseLong(overfullAttr.toString()); + + Object underfullAttr = virtualHost.getAttribute(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE); + + _persistentSizeLowThreshold = overfullAttr == null + ? _persistentSizeHighThreshold + : underfullAttr instanceof Number + ? ((Number)underfullAttr).longValue() + : Long.parseLong(underfullAttr.toString()); + + if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l) { _persistentSizeLowThreshold = _persistentSizeHighThreshold; @@ -62,7 +77,7 @@ public class QuotaMessageStore extends N @Override public void configureMessageStore(String name, MessageStoreRecoveryHandler recoveryHandler, - TransactionLogRecoveryHandler tlogRecoveryHandler, Configuration config) throws Exception + TransactionLogRecoveryHandler tlogRecoveryHandler) throws Exception { _stateManager.attainState(State.INITIALISED); } Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java (original) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java Mon Jul 1 09:56:29 2013 @@ -20,7 +20,8 @@ */ package org.apache.qpid.server.store; -import org.apache.commons.configuration.Configuration; +import java.util.Collections; +import java.util.Map; import org.apache.log4j.Logger; import org.apache.qpid.AMQStoreException; @@ -29,11 +30,11 @@ import org.apache.qpid.server.binding.Bi import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.message.EnqueableMessage; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.queue.AMQQueue; import java.nio.ByteBuffer; import java.util.HashMap; -import java.util.Iterator; public class SlowMessageStore implements MessageStore, DurableConfigurationStore { @@ -51,19 +52,22 @@ public class SlowMessageStore implements // ***** MessageStore Interface. public void configureConfigStore(String name, - ConfigurationRecoveryHandler recoveryHandler, - Configuration config) throws Exception + ConfigurationRecoveryHandler recoveryHandler, + VirtualHost virtualHost) throws Exception { _logger.info("Starting SlowMessageStore on Virtualhost:" + name); - Configuration delays = config.subset(DELAYS); + Object delaysAttr = virtualHost.getAttribute("slowMessageStoreDelays"); + + Map delays = (delaysAttr instanceof Map) ? (Map) delaysAttr : Collections.emptyMap(); configureDelays(delays); - String messageStoreClass = config.getString("realStore"); + final Object realStoreAttr = virtualHost.getAttribute("realStore"); + String messageStoreClass = realStoreAttr == null ? null : realStoreAttr.toString(); if (delays.containsKey(DEFAULT_DELAY)) { - _defaultDelay = delays.getLong(DEFAULT_DELAY); + _defaultDelay = Long.parseLong(String.valueOf(delays.get(DEFAULT_DELAY))); } if (messageStoreClass != null) @@ -83,25 +87,23 @@ public class SlowMessageStore implements _durableConfigurationStore = (DurableConfigurationStore)o; } } - _durableConfigurationStore.configureConfigStore(name, recoveryHandler, config); + _durableConfigurationStore.configureConfigStore(name, recoveryHandler, virtualHost); } - private void configureDelays(Configuration config) + private void configureDelays(Map<Object, Object> config) { - @SuppressWarnings("unchecked") - Iterator<String> delays = config.getKeys(); - while (delays.hasNext()) + for(Map.Entry<Object, Object> entry : config.entrySet()) { - String key = (String) delays.next(); - if (key.endsWith(PRE)) + String key = String.valueOf(entry.getKey()); + if (key.startsWith(PRE)) { - _preDelays.put(key.substring(0, key.length() - PRE.length() - 1), config.getLong(key)); + _preDelays.put(key.substring(PRE.length()), Long.parseLong(String.valueOf(entry.getValue()))); } - else if (key.endsWith(POST)) + else if (key.startsWith(POST)) { - _postDelays.put(key.substring(0, key.length() - POST.length() - 1), config.getLong(key)); + _postDelays.put(key.substring(POST.length()), Long.parseLong(String.valueOf(entry.getValue()))); } } } @@ -156,10 +158,9 @@ public class SlowMessageStore implements public void configureMessageStore(String name, MessageStoreRecoveryHandler messageRecoveryHandler, - TransactionLogRecoveryHandler tlogRecoveryHandler, - Configuration config) throws Exception + TransactionLogRecoveryHandler tlogRecoveryHandler) throws Exception { - _realStore.configureMessageStore(name, messageRecoveryHandler, tlogRecoveryHandler, config); + _realStore.configureMessageStore(name, messageRecoveryHandler, tlogRecoveryHandler); } public void close() throws Exception Added: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStoreFactory.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStoreFactory.java?rev=1498345&view=auto ============================================================================== --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStoreFactory.java (added) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStoreFactory.java Mon Jul 1 09:56:29 2013 @@ -0,0 +1,78 @@ +package org.apache.qpid.server.store;/* + * + * 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. + * + */ + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import org.apache.commons.configuration.Configuration; +import org.apache.qpid.server.plugin.MessageStoreFactory; + +public class SlowMessageStoreFactory implements MessageStoreFactory +{ + @Override + public String getType() + { + return "SLOW"; + } + + @Override + public MessageStore createMessageStore() + { + return new SlowMessageStore(); + } + + @Override + public Map<String, Object> convertStoreConfiguration(Configuration storeConfiguration) + { + Map<String, Object> convertedMap = new HashMap<String, Object>(); + Configuration delaysConfig = storeConfiguration.subset("delays"); + + @SuppressWarnings("unchecked") + Iterator<String> delays = delaysConfig.getKeys(); + + Map<String,Long> delaysMap = new HashMap<String, Long>(); + + while (delays.hasNext()) + { + String key = delays.next(); + + if (key.endsWith("pre")) + { + delaysMap.put("pre"+key.substring(0, key.length() - 4), delaysConfig.getLong(key)); + } + else if (key.endsWith("post")) + { + delaysMap.put("post"+key.substring(0, key.length() - 5), delaysConfig.getLong(key)); + } + } + + if(!delaysMap.isEmpty()) + { + convertedMap.put("slowMessageStoreDelays",delaysMap); + } + + + convertedMap.put("realStore", storeConfiguration.getString("realStore", null)); + + + return convertedMap; + } +} Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java?rev=1498345&r1=1498344&r2=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java (original) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java Mon Jul 1 09:56:29 2013 @@ -55,10 +55,10 @@ public class SyncWaitDelayTest extends Q public void setUp() throws Exception { - setVirtualHostConfigurationProperty("virtualhosts.virtualhost." + VIRTUALHOST+".type", - StandardVirtualHostFactory.TYPE); - setVirtualHostConfigurationProperty("virtualhosts.virtualhost." + VIRTUALHOST+".store.class", "org.apache.qpid.server.store.SlowMessageStore"); - setVirtualHostConfigurationProperty("virtualhosts.virtualhost." + VIRTUALHOST+".store.delays.commitTran.post", String.valueOf(POST_COMMIT_DELAY)); + final String prefix = "virtualhosts.virtualhost." + VIRTUALHOST; + setVirtualHostConfigurationProperty(prefix + ".type", StandardVirtualHostFactory.TYPE); + setVirtualHostConfigurationProperty(prefix + ".store.class", "org.apache.qpid.server.store.SlowMessageStore"); + setVirtualHostConfigurationProperty(prefix + ".store.delays.commitTran.post", String.valueOf(POST_COMMIT_DELAY)); super.setUp(); Copied: qpid/trunk/qpid/java/systests/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory (from r1497335, qpid/trunk/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory) URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory?p2=qpid/trunk/qpid/java/systests/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory&p1=qpid/trunk/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory&r1=1497335&r2=1498345&rev=1498345&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory (original) +++ qpid/trunk/qpid/java/systests/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.MessageStoreFactory Mon Jul 1 09:56:29 2013 @@ -16,6 +16,4 @@ # specific language governing permissions and limitations # under the License. # -org.apache.qpid.server.store.derby.DerbyMessageStoreFactory -org.apache.qpid.server.store.MemoryMessageStoreFactory -org.apache.qpid.server.store.jdbc.JDBCMessageStoreFactory +org.apache.qpid.server.store.SlowMessageStoreFactory --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
