diff options
| author | Keith Wall <kwall@apache.org> | 2014-04-21 14:28:29 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-04-21 14:28:29 +0000 |
| commit | c31c0f812ac7c165c46f3783868f22a90475584d (patch) | |
| tree | 1250b75be7ba05a5d85e88d08d42e9956421d84d /qpid/java/systests/src | |
| parent | 9f70e3f0d1304971bd92e81add63cf22d0657640 (diff) | |
| download | qpid-python-c31c0f812ac7c165c46f3783868f22a90475584d.tar.gz | |
QPID-5715: [Java Broker] Add virtual host node to the model and refactor existing broker functionality to conform the new model. Save configuration model version as VHN attribute and refactor the upgraders and configuration recovery.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1588886 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/systests/src')
26 files changed, 492 insertions, 446 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java index afc630296d..15ec0f9a4d 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java @@ -98,7 +98,7 @@ public class MultipleBrokersFailoverTest extends QpidBrokerTestCase implements C { host = NON_FAILOVER_VIRTUAL_HOST; } - createTestVirtualHost(port, host); + createTestVirtualHostNode(port, host); startBroker(port); revertSystemProperties(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java index c5049467c9..31888167af 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AlertingTest.java @@ -186,7 +186,7 @@ public class AlertingTest extends AbstractTestLogging setTestSystemProperty("queue.alertThresholdQueueDepthMessages","5"); brokerConfiguration.setSaved(false); - restTestHelper.submitRequest("/rest/queue/test/" + getTestQueueName(), "PUT", Collections.<String, Object>singletonMap(org.apache.qpid.server.model.Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 5)); + restTestHelper.submitRequest("/rest/queue/test/test/" + getTestQueueName(), "PUT", Collections.<String, Object>singletonMap(org.apache.qpid.server.model.Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 5)); // Trigger the new value sendMessage(_session, _destination, 3); _session.commit(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java index 1ecf43aa9b..165fbed00c 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java @@ -45,10 +45,10 @@ public class ExternalACLJMXTest extends AbstractACLTestCase public void setUp() throws Exception { //remove the normal 'test' vhost, we will configure the vhosts below - getBrokerConfiguration(0).removeObjectConfiguration(org.apache.qpid.server.model.VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + getBrokerConfiguration(0).removeObjectConfiguration(org.apache.qpid.server.model.VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); - createTestVirtualHost(0, TEST_VHOST); - createTestVirtualHost(0, TEST2_VHOST); + createTestVirtualHostNode(0, TEST_VHOST); + createTestVirtualHostNode(0, TEST2_VHOST); getBrokerConfiguration().addJmxManagementConfiguration(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java index f2e72be447..04b8385e69 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java @@ -39,6 +39,7 @@ import org.apache.qpid.exchange.ExchangeDefaults; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.util.LogMonitor; @@ -66,14 +67,14 @@ public class StatisticsReportingTest extends QpidBrokerTestCase @Override public void setUp() throws Exception { - createTestVirtualHost(0, VHOST_NAME1); - createTestVirtualHost(0, VHOST_NAME2); - createTestVirtualHost(0, VHOST_NAME3); + createTestVirtualHostNode(0, VHOST_NAME1); + createTestVirtualHostNode(0, VHOST_NAME2); + createTestVirtualHostNode(0, VHOST_NAME3); if (getName().equals("testEnabledStatisticsReporting")) { TestBrokerConfiguration config = getBrokerConfiguration(); - config.removeObjectConfiguration(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + config.removeObjectConfiguration(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); config.setBrokerAttribute(Broker.STATISTICS_REPORTING_PERIOD, STATISTICS_REPORTING_PERIOD_IN_SECONDS); } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java index 1b7f443705..6b93338f3f 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java @@ -31,9 +31,11 @@ import javax.jms.Queue; import javax.jms.Session; import org.apache.qpid.configuration.ClientProperties; -import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; +import org.apache.qpid.test.utils.TestFileUtils; +import org.apache.qpid.test.utils.TestUtils; import org.apache.qpid.util.FileUtils; public class SplitStoreTest extends QpidBrokerTestCase @@ -52,6 +54,19 @@ public class SplitStoreTest extends QpidBrokerTestCase } @Override + protected void tearDown() throws Exception + { + try + { + super.tearDown(); + } + finally + { + TestFileUtils.delete(new File(_messageStorePath), true); + } + } + + @Override public void startBroker() throws Exception { // Overridden to prevent QBTC starting the Broker. @@ -59,38 +74,32 @@ public class SplitStoreTest extends QpidBrokerTestCase public void testJsonConfigurationStoreWithPersistentMessageStore() throws Exception { - Map<String, Object> configurationStoreSettings = new HashMap<String, Object>(); - configurationStoreSettings.put(DurableConfigurationStore.STORE_TYPE, JsonFileConfigStore.TYPE); - configurationStoreSettings.put(DurableConfigurationStore.STORE_PATH, _configStorePath); - doTest(configurationStoreSettings); + doTest(JsonFileConfigStore.TYPE, _configStorePath); } public void testSeparateConfigurationAndMessageStoresOfTheSameType() throws Exception { - Map<String, Object> configurationStoreSettings = new HashMap<String, Object>(); - configurationStoreSettings.put(DurableConfigurationStore.STORE_TYPE, getTestProfileMessageStoreType()); - configurationStoreSettings.put(DurableConfigurationStore.STORE_PATH, _configStorePath); - - doTest(configurationStoreSettings); + doTest(getTestProfileVirtualHostNodeType(), _configStorePath); } - private void configureAndStartBroker(Map<String, Object> configurationStoreSettings) throws Exception + private void configureAndStartBroker(String nodeType, String storePath) throws Exception { + TestBrokerConfiguration config = getBrokerConfiguration(); + config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.TYPE, nodeType); + config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, DurableConfigurationStore.STORE_PATH, storePath); + config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.IS_MESSAGE_STORE_PROVIDER, false); + Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); messageStoreSettings.put(MessageStore.STORE_TYPE, getTestProfileMessageStoreType()); messageStoreSettings.put(MessageStore.STORE_PATH, _messageStorePath); - - TestBrokerConfiguration config = getBrokerConfiguration(); - config.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); - config.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.CONFIGURATION_STORE_SETTINGS, configurationStoreSettings); - + TestUtils.createStoreWithVirtualHostEntry(messageStoreSettings, config, nodeType); super.startBroker(); } - private void doTest(Map<String, Object> configurationStoreSettings) throws Exception + private void doTest(String nodeType, String path) throws Exception { - configureAndStartBroker(configurationStoreSettings); + configureAndStartBroker(nodeType, path); Connection connection = getConnection(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java index 25a3571787..67484ce01b 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.store; +import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -39,9 +40,9 @@ import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.QpidBrokerTestCase; -import org.apache.qpid.test.utils.TestBrokerConfiguration; +import org.apache.qpid.test.utils.TestUtils; +import org.apache.qpid.util.FileUtils; public class StoreOverfullTest extends QpidBrokerTestCase { @@ -59,9 +60,12 @@ public class StoreOverfullTest extends QpidBrokerTestCase private MessageConsumer _consumer; private Queue _queue; + private String _storePath; + private static final int OVERFULL_SIZE = 400000; private static final int UNDERFULL_SIZE = 350000; + @Override public void setUp() throws Exception { Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); @@ -69,8 +73,7 @@ public class StoreOverfullTest extends QpidBrokerTestCase messageStoreSettings.put(MessageStore.OVERFULL_SIZE, OVERFULL_SIZE); messageStoreSettings.put(MessageStore.UNDERFULL_SIZE, UNDERFULL_SIZE); - TestBrokerConfiguration config = getBrokerConfiguration(); - config.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); + _storePath = TestUtils.createStoreWithVirtualHostEntry(messageStoreSettings, getBrokerConfiguration(), getTestProfileVirtualHostNodeType()); super.setUp(); @@ -93,7 +96,17 @@ public class StoreOverfullTest extends QpidBrokerTestCase } finally { - super.tearDown(); + try + { + super.tearDown(); + } + finally + { + if (_storePath != null) + { + FileUtils.delete(new File(_storePath), true); + } + } } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java index 1b0f44af49..c016cf25c0 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java @@ -20,13 +20,15 @@ */ package org.apache.qpid.server.store; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; - -import org.apache.log4j.Logger; +import java.util.UUID; import org.apache.qpid.common.AMQPFilterTypes; import org.apache.qpid.framing.AMQShortString; @@ -35,16 +37,22 @@ import org.apache.qpid.framing.ContentHeaderBody; import org.apache.qpid.framing.FieldTable; import org.apache.qpid.framing.abstraction.MessagePublishInfo; import org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl; +import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.exchange.DirectExchange; import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.exchange.TopicExchange; import org.apache.qpid.server.message.InstanceProperties; import org.apache.qpid.server.message.MessageSource; import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ExclusivityPolicy; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; +import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.UUIDGenerator; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.plugin.ExchangeType; import org.apache.qpid.server.protocol.v0_8.AMQMessage; import org.apache.qpid.server.protocol.v0_8.MessageMetaData; @@ -57,9 +65,8 @@ import org.apache.qpid.server.queue.StandardQueueImpl; import org.apache.qpid.server.txn.AutoCommitTransaction; import org.apache.qpid.server.txn.ServerTransaction; import org.apache.qpid.server.util.BrokerTestHelper; -import org.apache.qpid.server.virtualhost.AbstractVirtualHost; -import org.apache.qpid.server.virtualhost.StandardVirtualHost; import org.apache.qpid.server.virtualhost.VirtualHostImpl; +import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.util.FileUtils; @@ -73,7 +80,6 @@ import org.apache.qpid.util.FileUtils; */ public class VirtualHostMessageStoreTest extends QpidTestCase { - private static final Logger _logger = Logger.getLogger(VirtualHostMessageStoreTest.class); public static final int DEFAULT_PRIORTY_LEVEL = 5; public static final String SELECTOR_VALUE = "Test = 'MST'"; @@ -100,41 +106,36 @@ public class VirtualHostMessageStoreTest extends QpidTestCase private String queueOwner = "MST"; - private AbstractVirtualHost<?> _virtualHost; + private VirtualHostImpl<?,?,?> _virtualHost; private String _storePath; - private Map<String, Object> _attributes; + private VirtualHostNode<?> _node; + private TaskExecutor _taskExecutor; public void setUp() throws Exception { super.setUp(); - BrokerTestHelper.setUp(); String hostName = getName(); _storePath = System.getProperty("QPID_WORK", TMP_FOLDER + File.separator + getTestName()) + File.separator + hostName; - - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_PATH, _storePath); - messageStoreSettings.put(MessageStore.STORE_TYPE, getTestProfileMessageStoreType()); - - _attributes = new HashMap<String, Object>(); - _attributes.put(org.apache.qpid.server.model.VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); - _attributes.put(org.apache.qpid.server.model.VirtualHost.TYPE, StandardVirtualHost.TYPE); - _attributes.put(org.apache.qpid.server.model.VirtualHost.NAME, hostName); - - cleanup(new File(_storePath)); - reloadVirtualHost(); - } + Broker<?> broker = BrokerTestHelper.createBrokerMock(); + _taskExecutor = new TaskExecutor(); + _taskExecutor.start(); + when(broker.getTaskExecutor()).thenReturn(_taskExecutor); - protected String getStorePath() - { - return _storePath; - } + ConfiguredObjectFactory factory = broker.getObjectFactory(); + Map<String, Object> nodeAttributes = new HashMap<String, Object>(); + nodeAttributes.put(ConfiguredObject.TYPE, getTestProfileVirtualHostNodeType()); + nodeAttributes.put(FileBasedVirtualHostNode.STORE_PATH, _storePath); + nodeAttributes.put(VirtualHostNode.IS_MESSAGE_STORE_PROVIDER, true); + nodeAttributes.put(VirtualHostNode.NAME, hostName); + nodeAttributes.put(VirtualHostNode.ID, UUID.randomUUID()); + _node = factory.create(VirtualHostNode.class, nodeAttributes, broker); + _node.setDesiredState(_node.getState(), State.ACTIVE); + + _virtualHost = (VirtualHostImpl<?,?,?>)_node.getVirtualHost(); - protected org.apache.qpid.server.model.VirtualHost<?,?,?> getVirtualHostModel() - { - return _virtualHost; } @Override @@ -144,54 +145,31 @@ public class VirtualHostMessageStoreTest extends QpidTestCase { if (_virtualHost != null) { - _virtualHost.close(); + VirtualHostNode<?> node = _virtualHost.getParent(VirtualHostNode.class); + node.setDesiredState(node.getState(), State.STOPPED); } } finally { - BrokerTestHelper.tearDown(); + _taskExecutor.stopImmediately(); super.tearDown(); } } - public VirtualHostImpl getVirtualHost() - { - return _virtualHost; - } - protected void reloadVirtualHost() { - VirtualHostImpl original = getVirtualHost(); - - if (getVirtualHost() != null) - { - try - { - getVirtualHost().close(); - } - catch (Exception e) - { - _logger.error("Error closing virtual host", e); - fail(e.getMessage()); - } - } - - try - { - _virtualHost = (AbstractVirtualHost<?>) BrokerTestHelper.createVirtualHost(_attributes); - } - catch (Exception e) - { - _logger.error("Error creating virtual host", e); - fail(e.getMessage()); - } + assertEquals("Virtual host node is not active", State.ACTIVE, _virtualHost.getState()); + State currentState = _node.setDesiredState(State.ACTIVE, State.STOPPED); + assertEquals("Virtual host node is not stopped", State.STOPPED, currentState); - assertTrue("Virtualhost has not changed, reload was not successful", original != getVirtualHost()); + currentState = _node.setDesiredState(State.STOPPED, State.ACTIVE); + assertEquals("Virtual host node is not active", State.ACTIVE, currentState); + _virtualHost = (VirtualHostImpl<?, ?, ?>) _node.getVirtualHost(); } public void testQueueExchangeAndBindingCreation() throws Exception { - assertEquals("Should not be any existing queues", 0, getVirtualHost().getQueues().size()); + assertEquals("Should not be any existing queues", 0, _virtualHost.getQueues().size()); createAllQueues(); createAllTopicQueues(); @@ -229,7 +207,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase validateMessageOnTopics(2, true); assertEquals("Not all queues correctly registered", - 10, getVirtualHost().getQueues().size()); + 10, _virtualHost.getQueues().size()); } public void testMessagePersistence() throws Exception @@ -253,7 +231,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase testMessagePersistence(); assertEquals("Incorrect number of queues registered after recovery", - 6, getVirtualHost().getQueues().size()); + 6, _virtualHost.getQueues().size()); //clear the queue _virtualHost.getQueue(durableQueueName).clearQueue(); @@ -275,7 +253,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase public void testQueuePersistence() throws Exception { assertEquals("Should not be any existing queues", - 0, getVirtualHost().getQueues().size()); + 0, _virtualHost.getQueues().size()); //create durable and non durable queues/topics createAllQueues(); @@ -285,17 +263,17 @@ public class VirtualHostMessageStoreTest extends QpidTestCase reloadVirtualHost(); assertEquals("Incorrect number of queues registered after recovery", - 6, getVirtualHost().getQueues().size()); + 6, _virtualHost.getQueues().size()); //Validate the non-Durable Queues were not recovered. assertNull("Non-Durable queue still registered:" + priorityQueueName, - getVirtualHost().getQueue(priorityQueueName)); + _virtualHost.getQueue(priorityQueueName)); assertNull("Non-Durable queue still registered:" + queueName, - getVirtualHost().getQueue(queueName)); + _virtualHost.getQueue(queueName)); assertNull("Non-Durable queue still registered:" + priorityTopicQueueName, - getVirtualHost().getQueue(priorityTopicQueueName)); + _virtualHost.getQueue(priorityTopicQueueName)); assertNull("Non-Durable queue still registered:" + topicQueueName, - getVirtualHost().getQueue(topicQueueName)); + _virtualHost.getQueue(topicQueueName)); //Validate normally expected properties of Queues/Topics validateDurableQueueProperties(); @@ -316,23 +294,24 @@ public class VirtualHostMessageStoreTest extends QpidTestCase createQueue(durableQueueName, false, true, false, false); assertEquals("Incorrect number of queues registered before recovery", - 1, getVirtualHost().getQueues().size()); + 1, _virtualHost.getQueues().size()); reloadVirtualHost(); assertEquals("Incorrect number of queues registered after first recovery", - 1, getVirtualHost().getQueues().size()); + 1, _virtualHost.getQueues().size()); //test that removing the queue means it is not recovered next time - final AMQQueue<?> queue = getVirtualHost().getQueue(durableQueueName); - getVirtualHost().getDurableConfigurationStore().remove(queue.asObjectRecord()); + + final AMQQueue<?> queue = _virtualHost.getQueue(durableQueueName); + _virtualHost.getDurableConfigurationStore().remove(queue.asObjectRecord()); reloadVirtualHost(); assertEquals("Incorrect number of queues registered after second recovery", - 0, getVirtualHost().getQueues().size()); + 0, _virtualHost.getQueues().size()); assertNull("Durable queue was not removed:" + durableQueueName, - getVirtualHost().getQueue(durableQueueName)); + _virtualHost.getQueue(durableQueueName)); } /** @@ -342,12 +321,12 @@ public class VirtualHostMessageStoreTest extends QpidTestCase */ public void testExchangePersistence() throws Exception { - int origExchangeCount = getVirtualHost().getExchanges().size(); + int origExchangeCount = _virtualHost.getExchanges().size(); Map<String, ExchangeImpl<?>> oldExchanges = createExchanges(); assertEquals("Incorrect number of exchanges registered before recovery", - origExchangeCount + 3, getVirtualHost().getExchanges().size()); + origExchangeCount + 3, _virtualHost.getExchanges().size()); reloadVirtualHost(); @@ -362,28 +341,29 @@ public class VirtualHostMessageStoreTest extends QpidTestCase */ public void testDurableExchangeRemoval() throws Exception { - int origExchangeCount = getVirtualHost().getExchanges().size(); + int origExchangeCount = _virtualHost.getExchanges().size(); createExchange(DirectExchange.TYPE, directExchangeName, true); assertEquals("Incorrect number of exchanges registered before recovery", - origExchangeCount + 1, getVirtualHost().getExchanges().size()); + origExchangeCount + 1, _virtualHost.getExchanges().size()); reloadVirtualHost(); assertEquals("Incorrect number of exchanges registered after first recovery", - origExchangeCount + 1, getVirtualHost().getExchanges().size()); + origExchangeCount + 1, _virtualHost.getExchanges().size()); //test that removing the exchange means it is not recovered next time - final ExchangeImpl<?> exchange = getVirtualHost().getExchange(directExchangeName); - getVirtualHost().getDurableConfigurationStore().remove(exchange.asObjectRecord()); + + final ExchangeImpl<?> exchange = _virtualHost.getExchange(directExchangeName); + _virtualHost.getDurableConfigurationStore().remove(exchange.asObjectRecord()); reloadVirtualHost(); assertEquals("Incorrect number of exchanges registered after second recovery", - origExchangeCount, getVirtualHost().getExchanges().size()); + origExchangeCount, _virtualHost.getExchanges().size()); assertNull("Durable exchange was not removed:" + directExchangeName, - getVirtualHost().getExchange(directExchangeName)); + _virtualHost.getExchange(directExchangeName)); } /** @@ -394,7 +374,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase */ public void testBindingPersistence() throws Exception { - int origExchangeCount = getVirtualHost().getExchanges().size(); + int origExchangeCount = _virtualHost.getExchanges().size(); createAllQueues(); createAllTopicQueues(); @@ -410,7 +390,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase bindAllTopicQueuesToExchange(topicExchange, topicRouting); assertEquals("Incorrect number of exchanges registered before recovery", - origExchangeCount + 3, getVirtualHost().getExchanges().size()); + origExchangeCount + 3, _virtualHost.getExchanges().size()); reloadVirtualHost(); @@ -429,27 +409,27 @@ public class VirtualHostMessageStoreTest extends QpidTestCase //create durable queue and exchange, bind them ExchangeImpl<?> exch = createExchange(DirectExchange.TYPE, directExchangeName, true); createQueue(durableQueueName, false, true, false, false); - bindQueueToExchange(exch, directRouting, getVirtualHost().getQueue(durableQueueName), false); + bindQueueToExchange(exch, directRouting, _virtualHost.getQueue(durableQueueName), false); assertEquals("Incorrect number of bindings registered before recovery", - 1, getVirtualHost().getQueue(durableQueueName).getBindings().size()); + 1, _virtualHost.getQueue(durableQueueName).getBindings().size()); //verify binding is actually normally recovered reloadVirtualHost(); assertEquals("Incorrect number of bindings registered after first recovery", - 1, getVirtualHost().getQueue(durableQueueName).getBindings().size()); + 1, _virtualHost.getQueue(durableQueueName).getBindings().size()); - exch = getVirtualHost().getExchange(directExchangeName); + exch = _virtualHost.getExchange(directExchangeName); assertNotNull("Exchange was not recovered", exch); //remove the binding and verify result after recovery - unbindQueueFromExchange(exch, directRouting, getVirtualHost().getQueue(durableQueueName), false); + unbindQueueFromExchange(exch, directRouting, _virtualHost.getQueue(durableQueueName), false); reloadVirtualHost(); assertEquals("Incorrect number of bindings registered after second recovery", - 0, getVirtualHost().getQueue(durableQueueName).getBindings().size()); + 0, _virtualHost.getQueue(durableQueueName).getBindings().size()); } /** @@ -459,7 +439,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase */ private void validateExchanges(int originalNumExchanges, Map<String, ExchangeImpl<?>> oldExchanges) { - Collection<ExchangeImpl<?>> exchanges = getVirtualHost().getExchanges(); + Collection<ExchangeImpl<?>> exchanges = (Collection<ExchangeImpl<?>>) _virtualHost.getExchanges(); Collection<String> exchangeNames = new ArrayList<String>(exchanges.size()); for(ExchangeImpl<?> exchange : exchanges) { @@ -474,27 +454,26 @@ public class VirtualHostMessageStoreTest extends QpidTestCase //check the old exchange objects are not the same as the new exchanges assertTrue(directExchangeName + " exchange NOT reloaded", - getVirtualHost().getExchange(directExchangeName) != oldExchanges.get(directExchangeName)); + _virtualHost.getExchange(directExchangeName) != oldExchanges.get(directExchangeName)); assertTrue(topicExchangeName + " exchange NOT reloaded", - getVirtualHost().getExchange(topicExchangeName) != oldExchanges.get(topicExchangeName)); + _virtualHost.getExchange(topicExchangeName) != oldExchanges.get(topicExchangeName)); // There should only be the original exchanges + our 2 recovered durable exchanges assertEquals("Incorrect number of exchanges available", - originalNumExchanges + 2, getVirtualHost().getExchanges().size()); + originalNumExchanges + 2, _virtualHost.getExchanges().size()); } /** Validates the Durable queues and their properties are as expected following recovery */ - @SuppressWarnings("unchecked") private void validateBindingProperties() { - assertEquals("Incorrect number of (durable) queues following recovery", 6, getVirtualHost().getQueues().size()); + assertEquals("Incorrect number of (durable) queues following recovery", 6, _virtualHost.getQueues().size()); - validateBindingProperties(getVirtualHost().getQueue(durablePriorityQueueName).getBindings(), false); - validateBindingProperties(getVirtualHost().getQueue(durablePriorityTopicQueueName).getBindings(), true); - validateBindingProperties(getVirtualHost().getQueue(durableQueueName).getBindings(), false); - validateBindingProperties(getVirtualHost().getQueue(durableTopicQueueName).getBindings(), true); - validateBindingProperties(getVirtualHost().getQueue(durableExclusiveQueueName).getBindings(), false); + validateBindingProperties(_virtualHost.getQueue(durablePriorityQueueName).getBindings(), false); + validateBindingProperties(_virtualHost.getQueue(durablePriorityTopicQueueName).getBindings(), true); + validateBindingProperties(_virtualHost.getQueue(durableQueueName).getBindings(), false); + validateBindingProperties(_virtualHost.getQueue(durableTopicQueueName).getBindings(), true); + validateBindingProperties(_virtualHost.getQueue(durableExclusiveQueueName).getBindings(), false); } /** @@ -522,13 +501,13 @@ public class VirtualHostMessageStoreTest extends QpidTestCase private void setQueueExclusivity(boolean exclusive) throws MessageSource.ExistingConsumerPreventsExclusive { - AMQQueue<?> queue = getVirtualHost().getQueue(durableExclusiveQueueName); + AMQQueue<?> queue = _virtualHost.getQueue(durableExclusiveQueueName); queue.setAttribute(Queue.EXCLUSIVE, queue.getExclusive(), exclusive ? ExclusivityPolicy.CONTAINER : ExclusivityPolicy.NONE); } private void validateQueueExclusivityProperty(boolean expected) { - AMQQueue<?> queue = getVirtualHost().getQueue(durableExclusiveQueueName); + AMQQueue<?> queue = _virtualHost.getQueue(durableExclusiveQueueName); assertEquals("Queue exclusivity was incorrect", queue.isExclusive(), expected); } @@ -536,12 +515,12 @@ public class VirtualHostMessageStoreTest extends QpidTestCase private void validateDurableQueueProperties() { - validateQueueProperties(getVirtualHost().getQueue(durablePriorityQueueName), true, true, false, false); - validateQueueProperties(getVirtualHost().getQueue(durablePriorityTopicQueueName), true, true, false, false); - validateQueueProperties(getVirtualHost().getQueue(durableQueueName), false, true, false, false); - validateQueueProperties(getVirtualHost().getQueue(durableTopicQueueName), false, true, false, false); - validateQueueProperties(getVirtualHost().getQueue(durableExclusiveQueueName), false, true, true, false); - validateQueueProperties(getVirtualHost().getQueue(durableLastValueQueueName), false, true, true, true); + validateQueueProperties(_virtualHost.getQueue(durablePriorityQueueName), true, true, false, false); + validateQueueProperties(_virtualHost.getQueue(durablePriorityTopicQueueName), true, true, false, false); + validateQueueProperties(_virtualHost.getQueue(durableQueueName), false, true, false, false); + validateQueueProperties(_virtualHost.getQueue(durableTopicQueueName), false, true, false, false); + validateQueueProperties(_virtualHost.getQueue(durableExclusiveQueueName), false, true, true, false); + validateQueueProperties(_virtualHost.getQueue(durableLastValueQueueName), false, true, true, true); } private void validateQueueProperties(AMQQueue<?> queue, boolean usePriority, boolean durable, boolean exclusive, boolean lastValueQueue) @@ -600,13 +579,13 @@ public class VirtualHostMessageStoreTest extends QpidTestCase MessageMetaData mmd = new MessageMetaData(messageInfo, headerBody, System.currentTimeMillis()); - final StoredMessage<MessageMetaData> storedMessage = getVirtualHost().getMessageStore().addMessage(mmd); + final StoredMessage<MessageMetaData> storedMessage = _virtualHost.getMessageStore().addMessage(mmd); storedMessage.flushToStore(); final AMQMessage currentMessage = new AMQMessage(storedMessage); - ServerTransaction trans = new AutoCommitTransaction(getVirtualHost().getMessageStore()); + ServerTransaction trans = new AutoCommitTransaction(_virtualHost.getMessageStore()); exchange.send(currentMessage, routingKey, InstanceProperties.EMPTY, trans, null); } @@ -680,7 +659,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase AMQQueue<?> queue = null; //Ideally we would be able to use the QueueDeclareHandler here. - queue = getVirtualHost().createQueue(queueArguments); + queue = _virtualHost.createQueue(queueArguments); validateQueueProperties(queue, usePriority, durable, exclusive, lastValueQueue); } @@ -711,27 +690,27 @@ public class VirtualHostMessageStoreTest extends QpidTestCase attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY, durable ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT); attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, null); - exchange = getVirtualHost().createExchange(attributes); + exchange = _virtualHost.createExchange(attributes); return exchange; } private void bindAllQueuesToExchange(ExchangeImpl<?> exchange, String routingKey) { - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durablePriorityQueueName), false); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durableQueueName), false); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(priorityQueueName), false); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(queueName), false); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durableExclusiveQueueName), false); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(durablePriorityQueueName), false); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(durableQueueName), false); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(priorityQueueName), false); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(queueName), false); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(durableExclusiveQueueName), false); } private void bindAllTopicQueuesToExchange(ExchangeImpl<?> exchange, String routingKey) { - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durablePriorityTopicQueueName), true); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durableTopicQueueName), true); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(priorityTopicQueueName), true); - bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(topicQueueName), true); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(durablePriorityTopicQueueName), true); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(durableTopicQueueName), true); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(priorityTopicQueueName), true); + bindQueueToExchange(exchange, routingKey, _virtualHost.getQueue(topicQueueName), true); } @@ -805,7 +784,7 @@ public class VirtualHostMessageStoreTest extends QpidTestCase private void validateMessageOnQueue(String queueName, long messageCount) { - AMQQueue<?> queue = getVirtualHost().getQueue(queueName); + AMQQueue<?> queue = _virtualHost.getQueue(queueName); assertNotNull("Queue(" + queueName + ") not correctly registered:", queue); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/StatisticsTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/StatisticsTest.java index 6e4ea13cfc..4ea071f3ac 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/StatisticsTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/StatisticsTest.java @@ -53,8 +53,8 @@ public class StatisticsTest extends QpidBrokerTestCase @Override public void setUp() throws Exception { - createTestVirtualHost(0, TEST_VIRTUALHOST1); - createTestVirtualHost(0, TEST_VIRTUALHOST2); + createTestVirtualHostNode(0, TEST_VIRTUALHOST1); + createTestVirtualHostNode(0, TEST_VIRTUALHOST2); getBrokerConfiguration().addJmxManagementConfiguration(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java index 47a25dbbec..87a060766b 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java @@ -65,7 +65,7 @@ public class Asserts ConfiguredObject.CONTEXT, VirtualHost.SUPPORTED_QUEUE_TYPES, VirtualHost.TYPE, - VirtualHost.CONFIGURATION_STORE_SETTINGS, + VirtualHost.MESSAGE_STORE_SETTINGS, VirtualHost.SECURITY_ACL); assertEquals("Unexpected value of attribute " + VirtualHost.NAME, diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java index 6ba8df075b..ee7abd2424 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java @@ -48,25 +48,9 @@ public class BindingRestTest extends QpidRestTestCase } } - public void testGetVirtualHostBindings() throws Exception - { - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test"); - assertNotNull("Bindings cannot be null", bindings); - assertEquals("Unexpected number of bindings", RestTestHelper.EXPECTED_QUEUES.length, bindings.size()); - for (String queueName : RestTestHelper.EXPECTED_QUEUES) - { - Map<String, Object> searchAttributes = new HashMap<String, Object>(); - searchAttributes.put(Binding.NAME, queueName); - searchAttributes.put(Binding.EXCHANGE, "amq.direct"); - - Map<String, Object> binding = getRestTestHelper().find(searchAttributes, bindings); - Asserts.assertBinding(queueName, "amq.direct", binding); - } - } - public void testGetVirtualHostExchangeBindings() throws Exception { - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct"); + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/test/amq.direct"); assertNotNull("Bindings cannot be null", bindings); assertEquals("Unexpected number of bindings", RestTestHelper.EXPECTED_QUEUES.length, bindings.size()); for (String queueName : RestTestHelper.EXPECTED_QUEUES) @@ -78,7 +62,7 @@ public class BindingRestTest extends QpidRestTestCase public void testGetVirtualHostExchangeQueueBindings() throws Exception { - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue"); + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/test/amq.direct/queue"); assertNotNull("Bindings cannot be null", bindings); assertEquals("Unexpected number of bindings", 1, bindings.size()); Asserts.assertBinding("queue", "amq.direct", bindings.get(0)); @@ -87,25 +71,24 @@ public class BindingRestTest extends QpidRestTestCase public void testDeleteBinding() throws Exception { - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue/queue"); + String bindingUrl = "/rest/binding/test/test/amq.direct/queue/queue"; + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList(bindingUrl); assertEquals("Unexpected number of bindings", 1, bindings.size()); Asserts.assertBinding("queue", "amq.direct", bindings.get(0)); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct/queue/queue", "DELETE"); - connection.connect(); - assertEquals("Unexpected response code", 200, connection.getResponseCode()); + int responseCode = getRestTestHelper().submitRequest(bindingUrl, "DELETE", null); + assertEquals("Unexpected response code", 200, responseCode); - bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue/queue"); + bindings = getRestTestHelper().getJsonAsList(bindingUrl); assertEquals("Binding should be deleted", 0, bindings.size()); } public void testDeleteBindingById() throws Exception { - Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/amq.direct/queue"); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct?id=" + binding.get(Binding.ID), "DELETE"); - connection.connect(); - assertEquals("Unexpected response code", 200, connection.getResponseCode()); - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue"); + Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/test/amq.direct/queue"); + int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/test/amq.direct?id=" + binding.get(Binding.ID), "DELETE", null); + assertEquals("Unexpected response code", 200, responseCode); + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/test/amq.direct/queue"); assertEquals("Binding should be deleted", 0, bindings.size()); } @@ -117,14 +100,12 @@ public class BindingRestTest extends QpidRestTestCase bindingData.put(Binding.QUEUE, "queue"); bindingData.put(Binding.EXCHANGE, "amq.direct"); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT"); - connection.connect(); - getRestTestHelper().writeJsonRequest(connection, bindingData); - int responseCode = connection.getResponseCode(); - connection.disconnect(); + String bindingUrl = "/rest/binding/test/test/amq.direct/queue/" + bindingName; + + int responseCode = getRestTestHelper().submitRequest(bindingUrl, "PUT", bindingData); assertEquals("Unexpected response code", 201, responseCode); - Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/amq.direct/queue/" + bindingName); + Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList(bindingUrl); Asserts.assertBinding(bindingName, "queue", "amq.direct", binding); } @@ -136,16 +117,16 @@ public class BindingRestTest extends QpidRestTestCase attributes.put(Binding.QUEUE, "queue"); attributes.put(Binding.EXCHANGE, "amq.direct"); - int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes); + String bindingUrl = "/rest/binding/test/test/amq.direct/queue/" + bindingName; + int responseCode = getRestTestHelper().submitRequest(bindingUrl, "PUT", attributes); assertEquals("Unexpected response code", 201, responseCode); - Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/amq.direct/queue/" + bindingName); - + Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList(bindingUrl); Asserts.assertBinding(bindingName, "queue", "amq.direct", binding); - attributes.put(Binding.ARGUMENTS, null); + attributes.put(Binding.ARGUMENTS, "blah"); - responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(bindingUrl, "PUT", attributes); assertEquals("Update should be unsupported", 409, responseCode); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java index 20005d4f47..b68c53739c 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java @@ -40,6 +40,7 @@ import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.test.client.UnroutableMessageTestExceptionListener; import org.apache.qpid.test.utils.TestBrokerConfiguration; @@ -49,7 +50,7 @@ public class BrokerRestTest extends QpidRestTestCase { private static final String BROKER_AUTHENTICATIONPROVIDERS_ATTRIBUTE = "authenticationproviders"; private static final String BROKER_PORTS_ATTRIBUTE = "ports"; - private static final String BROKER_VIRTUALHOSTS_ATTRIBUTE = "virtualhosts"; + private static final String BROKER_VIRTUALHOST_NODES_ATTRIBUTE = "virtualhostnodes"; private static final String BROKER_STATISTICS_ATTRIBUTE = "statistics"; public void testGet() throws Exception @@ -63,12 +64,14 @@ public class BrokerRestTest extends QpidRestTestCase Asserts.assertAttributesPresent(statistics, new String[]{ "bytesIn", "messagesOut", "bytesOut", "messagesIn" }); @SuppressWarnings("unchecked") - List<Map<String, Object>> virtualhosts = (List<Map<String, Object>>) brokerDetails.get(BROKER_VIRTUALHOSTS_ATTRIBUTE); - assertEquals("Unexpected number of virtual hosts", 3, virtualhosts.size()); + List<Map<String, Object>> nodes = (List<Map<String, Object>>) brokerDetails.get(BROKER_VIRTUALHOST_NODES_ATTRIBUTE); + assertEquals("Unexpected number of virtual hosts", 3, nodes.size()); - Asserts.assertVirtualHost(TEST3_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST3_VIRTUALHOST, virtualhosts)); - Asserts.assertVirtualHost(TEST2_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST2_VIRTUALHOST, virtualhosts)); - Asserts.assertVirtualHost(TEST1_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST1_VIRTUALHOST, virtualhosts)); + for (String nodeName: EXPECTED_VIRTUALHOSTS) + { + Map<String, Object> nodeAttributes = getRestTestHelper().find(VirtualHostNode.NAME, nodeName, nodes); + assertNotNull("Node attributes are not found for node with name " + nodeName, nodeAttributes); + } @SuppressWarnings("unchecked") List<Map<String, Object>> ports = (List<Map<String, Object>>) brokerDetails.get(BROKER_PORTS_ATTRIBUTE); @@ -227,7 +230,7 @@ public class BrokerRestTest extends QpidRestTestCase assertNotNull("Unexpected value of attribute " + Broker.ID, brokerDetails.get(Broker.ID)); assertNotNull("Unexpected value of attribute statistics", brokerDetails.get(BROKER_STATISTICS_ATTRIBUTE)); - assertNotNull("Unexpected value of attribute virtualhosts", brokerDetails.get(BROKER_VIRTUALHOSTS_ATTRIBUTE)); + assertNotNull("Unexpected value of attribute virtual host nodes", brokerDetails.get(BROKER_VIRTUALHOST_NODES_ATTRIBUTE)); assertNotNull("Unexpected value of attribute ports", brokerDetails.get(BROKER_PORTS_ATTRIBUTE)); assertNotNull("Unexpected value of attribute authenticationproviders", brokerDetails.get(BROKER_AUTHENTICATIONPROVIDERS_ATTRIBUTE)); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java index f924dae56e..bf11ff9ae0 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java @@ -98,7 +98,7 @@ public class ConnectionRestTest extends QpidRestTestCase public void testGetVirtualHostConnections() throws Exception { - List<Map<String, Object>> connections = getRestTestHelper().getJsonAsList("/rest/connection/test"); + List<Map<String, Object>> connections = getRestTestHelper().getJsonAsList("/rest/connection/test/test"); assertEquals("Unexpected number of connections", 1, connections.size()); Asserts.assertConnection(connections.get(0), (AMQConnection) _connection); } @@ -108,7 +108,7 @@ public class ConnectionRestTest extends QpidRestTestCase // get connection name String connectionName = getConnectionName(); - Map<String, Object> connectionDetails = getRestTestHelper().getJsonAsSingletonList("/rest/connection/test/" + Map<String, Object> connectionDetails = getRestTestHelper().getJsonAsSingletonList("/rest/connection/test/test/" + URLDecoder.decode(connectionName, "UTF-8")); assertConnection(connectionDetails); } @@ -122,7 +122,7 @@ public class ConnectionRestTest extends QpidRestTestCase public void testGetVirtualHostSessions() throws Exception { - List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test"); + List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/test"); assertEquals("Unexpected number of sessions", 1, sessions.size()); assertSession(sessions.get(0), (AMQSession<?, ?>) _session); } @@ -132,7 +132,7 @@ public class ConnectionRestTest extends QpidRestTestCase // get connection name String connectionName = getConnectionName(); - List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/" + List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/test/" + URLDecoder.decode(connectionName, "UTF-8")); assertEquals("Unexpected number of sessions", 1, sessions.size()); assertSession(sessions.get(0), (AMQSession<?, ?>) _session); @@ -143,7 +143,7 @@ public class ConnectionRestTest extends QpidRestTestCase // get connection name String connectionName = getConnectionName(); - List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/" + List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/test/" + URLDecoder.decode(connectionName, "UTF-8") + "/" + ((AMQSession<?, ?>) _session).getChannelId()); assertEquals("Unexpected number of sessions", 1, sessions.size()); assertSession(sessions.get(0), (AMQSession<?, ?>) _session); @@ -210,7 +210,7 @@ public class ConnectionRestTest extends QpidRestTestCase private String getConnectionName() throws IOException { - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test"); + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test/test"); @SuppressWarnings("unchecked") List<Map<String, Object>> connections = (List<Map<String, Object>>) hostDetails .get(VirtualHostRestTest.VIRTUALHOST_CONNECTIONS_ATTRIBUTE); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java index 962c71583c..ef674fc95b 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java @@ -64,7 +64,7 @@ public class ExchangeRestTest extends QpidRestTestCase { for (String exchangeName : EXPECTED_EXCHANGES) { - Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/" + Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/test/" + URLDecoder.decode(exchangeName, "UTF-8")); assertExchange(exchangeName, exchange); } @@ -73,20 +73,22 @@ public class ExchangeRestTest extends QpidRestTestCase public void testSetExchangeAttributesUnsupported() throws Exception { String exchangeName = getTestName(); + String exchangeUrl = "/rest/exchange/test/test/" + exchangeName; Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put(Exchange.NAME, exchangeName); attributes.put(Exchange.TYPE, "direct"); - int responseCode =getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + int responseCode = getRestTestHelper().submitRequest(exchangeUrl, "PUT", attributes); + assertEquals("Exchange should be created", 201, responseCode); - Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/" + exchangeName); + Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList(exchangeUrl); assertNotNull("Exchange not found", exchange); attributes = new HashMap<String, Object>(); attributes.put(Exchange.NAME, exchangeName); - attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); + attributes.put(Exchange.ALTERNATE_EXCHANGE, "amq.direct"); - responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(exchangeUrl, "PUT", attributes); assertEquals("Exchange update should be unsupported", 409, responseCode); } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java index c0be10931c..1a8fe9d930 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java @@ -29,6 +29,7 @@ import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Plugin; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; @@ -54,12 +55,12 @@ public class QpidRestTestCase extends QpidBrokerTestCase getRestTestHelper().setUsernameAndPassword("webadmin", "webadmin"); //remove the normal 'test' vhost, we will configure the vhosts below - getBrokerConfiguration(0).removeObjectConfiguration(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + getBrokerConfiguration(0).removeObjectConfiguration(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); // Set up virtualhost config with queues and bindings to the amq.direct for (String virtualhost : EXPECTED_VIRTUALHOSTS) { - createTestVirtualHost(0, virtualhost); + createTestVirtualHostNode(0, virtualhost); } customizeConfiguration(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java index 8c8db3b358..70cc6414cd 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java @@ -104,7 +104,7 @@ public class QueueRestTest extends QpidRestTestCase public void testGetByName() throws Exception { String queueName = getTestQueueName(); - Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/test/" + queueName); Asserts.assertQueue(queueName, "standard", queueDetails); assertStatistics(queueDetails); @@ -130,9 +130,11 @@ public class QueueRestTest extends QpidRestTestCase Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put(Queue.NAME, queueName); - int responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + String queueUrl = "/rest/queue/test/test/" + queueName; + int responseCode = getRestTestHelper().submitRequest(queueUrl, "PUT", attributes); + assertEquals("Queue was not created", 201, responseCode); - Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList(queueUrl); Asserts.assertQueue(queueName, "standard", queueDetails); attributes = new HashMap<String, Object>(); @@ -146,10 +148,10 @@ public class QueueRestTest extends QpidRestTestCase attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 50000); attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10); - responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(queueUrl, "PUT", attributes); assertEquals("Setting of queue attributes should be allowed", 200, responseCode); - Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList(queueUrl); assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); assertEquals("Unexpected " + Queue.ALERT_REPEAT_GAP, 10000, queueData.get(Queue.ALERT_REPEAT_GAP) ); @@ -170,7 +172,7 @@ public class QueueRestTest extends QpidRestTestCase createBinding(bindingName, exchanges[i], queueName); } - Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/test/" + queueName); Asserts.assertQueue(queueName, "standard", queueDetails); @SuppressWarnings("unchecked") @@ -192,7 +194,7 @@ public class QueueRestTest extends QpidRestTestCase private void createBinding(String bindingName, String exchangeName, String queueName) throws IOException { HttpURLConnection connection = getRestTestHelper().openManagementConnection( - "/rest/binding/test/" + URLDecoder.decode(exchangeName, "UTF-8") + "/" + queueName + "/" + bindingName, + "/rest/binding/test/test/" + URLDecoder.decode(exchangeName, "UTF-8") + "/" + queueName + "/" + bindingName, "PUT"); Map<String, Object> bindingData = new HashMap<String, Object>(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java index 4dc4001c4b..9a5d833d01 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java @@ -526,13 +526,15 @@ String dataAsString = new String(data); Map<String, Object> queueData = new HashMap<String, Object>(); queueData.put(Queue.NAME, queueName); queueData.put(Queue.DURABLE, Boolean.FALSE); - submitRequest("/rest/queue/test/" + queueName, "PUT", queueData); + int responseCode = submitRequest("/rest/queue/test/test/" + queueName, "PUT", queueData); + Assert.assertEquals("Unexpected response code creating queue" + queueName, 201, responseCode); Map<String, Object> bindingData = new HashMap<String, Object>(); bindingData.put(Binding.NAME, queueName); bindingData.put(Binding.QUEUE, queueName); bindingData.put(Binding.EXCHANGE, "amq.direct"); - submitRequest("/rest/binding/test/amq.direct/" + queueName + "/" + queueName, "PUT", queueData); + responseCode = submitRequest("/rest/binding/test/test/amq.direct/" + queueName + "/" + queueName, "PUT", queueData); + Assert.assertEquals("Unexpected response code binding queue " + queueName, 201, responseCode); } } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java index cf551ae315..adc9790f36 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java @@ -44,8 +44,8 @@ public class StructureRestTest extends QpidRestTestCase assertNode(structure, "Broker"); @SuppressWarnings("unchecked") - List<Map<String, Object>> virtualhosts = (List<Map<String, Object>>) structure.get("virtualhosts"); - assertEquals("Unexpected number of virtual hosts", 3, virtualhosts.size()); + List<Map<String, Object>> virtualhostnodes = (List<Map<String, Object>>) structure.get("virtualhostnodes"); + assertEquals("Unexpected number of virtual hosts", 3, virtualhostnodes.size()); @SuppressWarnings("unchecked") List<Map<String, Object>> ports = (List<Map<String, Object>>) structure.get("ports"); @@ -55,16 +55,20 @@ public class StructureRestTest extends QpidRestTestCase List<Map<String, Object>> providers = (List<Map<String, Object>>) structure.get("authenticationproviders"); assertEquals("Unexpected number of authentication providers", 2, providers.size()); - for (String hostName : EXPECTED_VIRTUALHOSTS) + for (String nodeName : EXPECTED_VIRTUALHOSTS) { - Map<String, Object> host = getRestTestHelper().find("name", hostName, virtualhosts); - assertNotNull("Host " + hostName + " is not found ", host); - assertNode(host, hostName); + Map<String, Object> node = getRestTestHelper().find("name", nodeName, virtualhostnodes); + assertNotNull("Node " + nodeName + " is not found ", node); + assertNode(node, nodeName); } String hostName = "test"; - Map<String, Object> host = getRestTestHelper().find("name", hostName, virtualhosts); + Map<String, Object> node = getRestTestHelper().find("name", hostName, virtualhostnodes); + + @SuppressWarnings("unchecked") + List<Map<String, Object>> virtualhosts = (List<Map<String, Object>>) node.get("virtualhosts"); + Map<String, Object> host = getRestTestHelper().find("name", hostName, virtualhosts); @SuppressWarnings("unchecked") List<Map<String, Object>> queues = (List<Map<String, Object>>) host.get("queues"); assertNotNull("Host " + hostName + " queues are not found ", queues); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java index f336c7fc77..4bd1a19fe2 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java @@ -30,9 +30,6 @@ import java.util.Map; import javax.jms.Session; import javax.servlet.http.HttpServletResponse; -import org.codehaus.jackson.JsonGenerationException; -import org.codehaus.jackson.map.JsonMappingException; - import org.apache.qpid.client.AMQConnection; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; @@ -40,10 +37,13 @@ import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.queue.LastValueQueue; import org.apache.qpid.server.queue.PriorityQueue; import org.apache.qpid.server.queue.SortedQueue; -import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.virtualhost.AbstractVirtualHost; -import org.apache.qpid.server.virtualhost.StandardVirtualHost; + +import org.apache.qpid.server.model.VirtualHostNode; +import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.util.FileUtils; +import org.codehaus.jackson.JsonGenerationException; +import org.codehaus.jackson.map.JsonMappingException; public class VirtualHostRestTest extends QpidRestTestCase { @@ -55,7 +55,7 @@ public class VirtualHostRestTest extends QpidRestTestCase public void testGet() throws Exception { - List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhost/"); + List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhost"); assertNotNull("Hosts data cannot be null", hosts); assertEquals("Unexpected number of hosts", EXPECTED_VIRTUALHOSTS.length, hosts.size()); for (String hostName : EXPECTED_VIRTUALHOSTS) @@ -108,7 +108,7 @@ public class VirtualHostRestTest extends QpidRestTestCase public void testPutCreateVirtualHostUsingStoreType() throws Exception { String hostName = getTestName(); - String storeType = getTestProfileMessageStoreType(); + String storeType = getTestProfileVirtualHostNodeType(); String storeLocation = createHost(hostName, storeType, null); try { @@ -117,10 +117,6 @@ public class VirtualHostRestTest extends QpidRestTestCase Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/" + hostName); Asserts.assertVirtualHost(hostName, hostDetails); - @SuppressWarnings("unchecked") - Map<String, Object> messageStoreSettings = (Map<String, Object>) hostDetails.get(VirtualHost.MESSAGE_STORE_SETTINGS); - assertEquals("Unexpected store type", storeType, messageStoreSettings.get(MessageStore.STORE_TYPE)); - assertNewVirtualHost(hostDetails); } finally @@ -135,13 +131,10 @@ public class VirtualHostRestTest extends QpidRestTestCase public void testDeleteHost() throws Exception { String hostToDelete = TEST3_VIRTUALHOST; - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/virtualhost/" + hostToDelete, "DELETE"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/virtualhost/" + hostToDelete + "/" + hostToDelete, "DELETE"); connection.connect(); assertEquals("Unexpected response code", 200, connection.getResponseCode()); - // make sure that changes are saved in the broker store - restartBroker(); - List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhost/" + hostToDelete); assertEquals("Host should be deleted", 0, hosts.size()); } @@ -161,32 +154,22 @@ public class VirtualHostRestTest extends QpidRestTestCase public void testUpdateActiveHostFails() throws Exception { String hostToUpdate = TEST3_VIRTUALHOST; - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/" + hostToUpdate); + String restHostUrl = "/rest/virtualhost/" + hostToUpdate + "/" + hostToUpdate; + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl); Asserts.assertVirtualHost(hostToUpdate, hostDetails); - @SuppressWarnings("unchecked") - Map<String, Object> attributes = (Map<String, Object>)hostDetails.get(VirtualHost.MESSAGE_STORE_SETTINGS); - String configPath = (String) attributes.get(MessageStore.STORE_PATH); - - String storeType = getTestProfileMessageStoreType(); - String storeLocation = getStoreLocation(hostToUpdate); - Map<String, Object> newMessageStoreSettings = new HashMap<String, Object>(); - newMessageStoreSettings.put(MessageStore.STORE_TYPE, storeType); - newMessageStoreSettings.put(MessageStore.STORE_PATH, storeLocation); Map<String, Object> newAttributes = new HashMap<String, Object>(); newAttributes.put(VirtualHost.NAME, hostToUpdate); - newAttributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, newMessageStoreSettings); + newAttributes.put("fakeAttribute", "value"); - int response = getRestTestHelper().submitRequest("/rest/virtualhost/" + hostToUpdate, "PUT", newAttributes); + int response = getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes); assertEquals("Unexpected response code", 409, response); restartBroker(); - Map<String, Object> rereadHostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/" + hostToUpdate); + Map<String, Object> rereadHostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl); Asserts.assertVirtualHost(hostToUpdate, rereadHostDetails); - @SuppressWarnings("unchecked") - Map<String, Object> rereadMessageStoreSettings = (Map<String,Object>)rereadHostDetails.get(VirtualHost.MESSAGE_STORE_SETTINGS); - assertEquals("Unexpected config path", configPath, rereadMessageStoreSettings.get(MessageStore.STORE_PATH)); + assertFalse(rereadHostDetails.containsKey("fakeAttribute")); } public void testPutCreateQueue() throws Exception @@ -342,10 +325,14 @@ public class VirtualHostRestTest extends QpidRestTestCase String queueName = getTestQueueName(); createQueue(queueName, null, null); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/" + queueName, "DELETE"); + String queueUrl = "/rest/queue/test/test/" + queueName; + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList(queueUrl); + assertEquals("Queue should exist", 1, queues.size()); + + HttpURLConnection connection = getRestTestHelper().openManagementConnection(queueUrl, "DELETE"); connection.connect(); assertEquals("Unexpected response code", 200, connection.getResponseCode()); - List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName); + queues = getRestTestHelper().getJsonAsList(queueUrl); assertEquals("Queue should be deleted", 0, queues.size()); } @@ -353,12 +340,12 @@ public class VirtualHostRestTest extends QpidRestTestCase { String queueName = getTestQueueName(); createQueue(queueName, null, null); - Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/test/" + queueName); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test?id=" + queueDetails.get(Queue.ID), "DELETE"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/test?id=" + queueDetails.get(Queue.ID), "DELETE"); connection.connect(); assertEquals("Unexpected response code", 200, connection.getResponseCode()); - List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName); + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/test/" + queueName); assertEquals("Queue should be deleted", 0, queues.size()); } @@ -367,10 +354,10 @@ public class VirtualHostRestTest extends QpidRestTestCase String exchangeName = getTestName(); createExchange(exchangeName, "direct"); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/" + exchangeName, "DELETE"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/test/" + exchangeName, "DELETE"); connection.connect(); assertEquals("Unexpected response code", 200, connection.getResponseCode()); - List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName); + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/test/" + exchangeName); assertEquals("Exchange should be deleted", 0, queues.size()); } @@ -378,12 +365,12 @@ public class VirtualHostRestTest extends QpidRestTestCase { String exchangeName = getTestName(); createExchange(exchangeName, "direct"); - Map<String, Object> echangeDetails = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/" + exchangeName); + Map<String, Object> echangeDetails = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/test/" + exchangeName); - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test?id=" + echangeDetails.get(Exchange.ID), "DELETE"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/test?id=" + echangeDetails.get(Exchange.ID), "DELETE"); connection.connect(); assertEquals("Unexpected response code", 200, connection.getResponseCode()); - List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName); + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/test/" + exchangeName); assertEquals("Exchange should be deleted", 0, queues.size()); } @@ -479,7 +466,7 @@ public class VirtualHostRestTest extends QpidRestTestCase private void createExchange(String exchangeName, String exchangeType) throws IOException { - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/" + exchangeName, "PUT"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/test/" + exchangeName, "PUT"); Map<String, Object> queueData = new HashMap<String, Object>(); queueData.put(Exchange.NAME, exchangeName); @@ -502,7 +489,7 @@ public class VirtualHostRestTest extends QpidRestTestCase private int tryCreateQueue(String queueName, String queueType, Map<String, Object> attributes) throws IOException, JsonGenerationException, JsonMappingException { - HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/" + queueName, "PUT"); + HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/test/" + queueName, "PUT"); Map<String, Object> queueData = new HashMap<String, Object>(); queueData.put(Queue.NAME, queueName); @@ -536,20 +523,17 @@ public class VirtualHostRestTest extends QpidRestTestCase return new File(TMP_FOLDER, "store-" + hostName + "-" + System.currentTimeMillis()).getAbsolutePath(); } - private int tryCreateVirtualHost(String hostName, String storeType, String storePath, String configPath) throws IOException, + private int tryCreateVirtualHost(String hostName, String virtualHostNodeType, String storePath, String configPath) throws IOException, JsonGenerationException, JsonMappingException { - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_PATH, storePath); - messageStoreSettings.put(MessageStore.STORE_TYPE, storeType); - Map<String, Object> hostData = new HashMap<String, Object>(); - hostData.put(VirtualHost.NAME, hostName); - hostData.put(VirtualHost.TYPE, StandardVirtualHost.TYPE); - hostData.put(VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); + hostData.put(VirtualHostNode.NAME, hostName); + hostData.put(VirtualHostNode.TYPE, virtualHostNodeType); + hostData.put(VirtualHostNode.IS_MESSAGE_STORE_PROVIDER, true); + hostData.put(DurableConfigurationStore.STORE_PATH, storePath); - return getRestTestHelper().submitRequest("/rest/virtualhost/" + hostName, "PUT", hostData); + return getRestTestHelper().submitRequest("/rest/virtualhostnode/" + hostName, "PUT", hostData); } private void assertNewVirtualHost(Map<String, Object> hostDetails) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java index 541160cd80..2575fb7e43 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java @@ -29,7 +29,6 @@ import java.util.Map; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; - import org.apache.qpid.server.management.plugin.HttpManagement; import org.apache.qpid.server.model.AccessControlProvider; import org.apache.qpid.server.model.AuthenticationProvider; @@ -40,17 +39,16 @@ import org.apache.qpid.server.model.Plugin; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.TrustStore; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.FileBasedGroupProvider; import org.apache.qpid.server.model.adapter.FileBasedGroupProviderImpl; import org.apache.qpid.server.security.FileKeyStore; import org.apache.qpid.server.security.FileTrustStore; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.security.access.FileAccessControlProviderConstants; import org.apache.qpid.server.security.acl.AbstractACLTestCase; import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory; -import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.virtualhost.StandardVirtualHost; +import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.systest.rest.QpidRestTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.test.utils.TestFileUtils; @@ -192,56 +190,56 @@ public class BrokerACLTest extends QpidRestTestCase provider.get(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH)); } - /* === VirtualHost === */ + /* === VirtualHostNode === */ - public void testCreateVirtualHostAllowed() throws Exception + public void testCreateVirtualHostNodeAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); String hostName = getTestName(); - int responseCode = createHost(hostName); + int responseCode = createVirtualHostNode(hostName); assertEquals("Host creation should be allowed", 201, responseCode); - assertVirtualHostExists(hostName); + assertVirtualHostNodeExists(hostName); } - public void testCreateVirtualHostDenied() throws Exception + public void testCreateVirtualHostNodeDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); String hostName = getTestName(); - int responseCode = createHost(hostName); - assertEquals("Host creation should be denied", 403, responseCode); + int responseCode = createVirtualHostNode(hostName); + assertEquals("Virtual host node creation should be denied", 403, responseCode); - assertVirtualHostDoesNotExist(hostName); + assertVirtualHostNodeDoesNotExist(hostName); } - public void testDeleteVirtualHostAllowed() throws Exception + public void testDeleteVirtualHostNodeAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - assertVirtualHostExists(TEST2_VIRTUALHOST); + assertVirtualHostNodeExists(TEST2_VIRTUALHOST); - int responseCode = getRestTestHelper().submitRequest("/rest/virtualhost/" + TEST2_VIRTUALHOST, "DELETE", null); - assertEquals("Host deletion should be allowed", 200, responseCode); + int responseCode = getRestTestHelper().submitRequest("/rest/virtualhostnode/" + TEST2_VIRTUALHOST, "DELETE", null); + assertEquals("Virtual host node deletion should be allowed", 200, responseCode); - assertVirtualHostDoesNotExist(TEST2_VIRTUALHOST); + assertVirtualHostNodeDoesNotExist(TEST2_VIRTUALHOST); } - public void testDeleteVirtualHostDenied() throws Exception + public void testDeleteVirtualHostNodeDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - assertVirtualHostExists(TEST2_VIRTUALHOST); + assertVirtualHostNodeExists(TEST2_VIRTUALHOST); getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); - int responseCode = getRestTestHelper().submitRequest("/rest/virtualhost/" + TEST2_VIRTUALHOST, "DELETE", null); - assertEquals("Host deletion should be denied", 403, responseCode); + int responseCode = getRestTestHelper().submitRequest("/rest/virtualhostnode/" + TEST2_VIRTUALHOST, "DELETE", null); + assertEquals("Virtual host node deletion should be denied", 403, responseCode); - assertVirtualHostExists(TEST2_VIRTUALHOST); + assertVirtualHostNodeExists(TEST2_VIRTUALHOST); } /* === Port === */ @@ -979,34 +977,30 @@ public class BrokerACLTest extends QpidRestTestCase assertEquals("Unexpected result", exists, !trustStores.isEmpty()); } - private int createHost(String hostName) throws Exception + private int createVirtualHostNode(String virtualHostNodeName) throws Exception { - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_PATH, getStoreLocation(hostName)); - messageStoreSettings.put(MessageStore.STORE_TYPE, getTestProfileMessageStoreType()); - - Map<String, Object> hostData = new HashMap<String, Object>(); - hostData.put(VirtualHost.NAME, hostName); - hostData.put(VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); - hostData.put(VirtualHost.TYPE, StandardVirtualHost.TYPE); + Map<String, Object> data = new HashMap<String, Object>(); + data.put(VirtualHostNode.NAME, virtualHostNodeName); + data.put(VirtualHostNode.TYPE, getTestProfileVirtualHostNodeType()); + data.put(DurableConfigurationStore.STORE_PATH, getStoreLocation(virtualHostNodeName)); - return getRestTestHelper().submitRequest("/rest/virtualhost/" + hostName, "PUT", hostData); + return getRestTestHelper().submitRequest("/rest/virtualhostnode/" + virtualHostNodeName, "PUT", data); } - private void assertVirtualHostDoesNotExist(String hostName) throws Exception + private void assertVirtualHostNodeDoesNotExist(String name) throws Exception { - assertVirtualHostExistence(hostName, false); + assertVirtualHostNodeExistence(name, false); } - private void assertVirtualHostExists(String hostName) throws Exception + private void assertVirtualHostNodeExists(String name) throws Exception { - assertVirtualHostExistence(hostName, true); + assertVirtualHostNodeExistence(name, true); } - private void assertVirtualHostExistence(String hostName, boolean exists) throws Exception + private void assertVirtualHostNodeExistence(String name, boolean exists) throws Exception { - List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhost/" + hostName); - assertEquals("Unexpected result", exists, !hosts.isEmpty()); + List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhostnode/" + name); + assertEquals("Node " + name + (exists ? " does not exist" : " exists" ), exists, !hosts.isEmpty()); } private String getStoreLocation(String hostName) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java index 2eaaf7d988..0854befc0a 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java @@ -41,6 +41,8 @@ public class ExchangeRestACLTest extends QpidRestTestCase private static final String ALLOWED_USER = "user1"; private static final String DENIED_USER = "user2"; private String _queueName; + private String _exchangeName; + private String _exchangeUrl; @Override protected void customizeConfiguration() throws IOException @@ -75,85 +77,78 @@ public class ExchangeRestACLTest extends QpidRestTestCase Map<String, Object> queueData = new HashMap<String, Object>(); queueData.put(Queue.NAME, _queueName); queueData.put(Queue.DURABLE, Boolean.TRUE); - int status = getRestTestHelper().submitRequest("/rest/queue/test/" + _queueName, "PUT", queueData); + int status = getRestTestHelper().submitRequest("/rest/queue/test/test/" + _queueName, "PUT", queueData); assertEquals("Unexpected status", 201, status); + _exchangeName = getTestName(); + _exchangeUrl = "/rest/exchange/test/test/" + _exchangeName; } public void testCreateExchangeAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); + int responseCode = createExchange(); assertEquals("Exchange creation should be allowed", 201, responseCode); - assertExchangeExists(exchangeName); + assertExchangeExists(); } public void testCreateExchangeDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); + int responseCode = createExchange(); assertEquals("Exchange creation should be denied", 403, responseCode); - assertExchangeDoesNotExist(exchangeName); + assertExchangeDoesNotExist(); } public void testDeleteExchangeAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); + int responseCode = createExchange(); assertEquals("Exchange creation should be allowed", 201, responseCode); - assertExchangeExists(exchangeName); + assertExchangeExists(); + - responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "DELETE", null); + responseCode = getRestTestHelper().submitRequest(_exchangeUrl, "DELETE", null); assertEquals("Exchange deletion should be allowed", 200, responseCode); - assertExchangeDoesNotExist(TEST2_VIRTUALHOST); + assertExchangeDoesNotExist(); } public void testDeleteExchangeDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); + int responseCode = createExchange(); assertEquals("Exchange creation should be allowed", 201, responseCode); - assertExchangeExists(exchangeName); + assertExchangeExists(); getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); - responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "DELETE", null); + responseCode = getRestTestHelper().submitRequest(_exchangeUrl, "DELETE", null); assertEquals("Exchange deletion should be denied", 403, responseCode); - assertExchangeExists(exchangeName); + assertExchangeExists(); } public void testSetExchangeAttributesAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); + int responseCode = createExchange(); - assertExchangeExists(exchangeName); + assertExchangeExists(); Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.NAME, _exchangeName); attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); - responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(_exchangeUrl, "PUT", attributes); assertEquals("Setting of exchange attribites should be allowed but it is currently unsupported", 409, responseCode); } @@ -161,18 +156,16 @@ public class ExchangeRestACLTest extends QpidRestTestCase { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String exchangeName = getTestName(); - - int responseCode = createExchange(exchangeName); - assertExchangeExists(exchangeName); + int responseCode = createExchange(); + assertExchangeExists(); getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.NAME, _exchangeName); attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); - responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(_exchangeUrl, "PUT", attributes); assertEquals("Setting of exchange attribites should be allowed", 403, responseCode); } @@ -198,27 +191,27 @@ public class ExchangeRestACLTest extends QpidRestTestCase assertBindingDoesNotExist(bindingName); } - private int createExchange(String exchangeName) throws Exception + private int createExchange() throws Exception { Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.NAME, _exchangeName); attributes.put(Exchange.TYPE, "direct"); - return getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + return getRestTestHelper().submitRequest(_exchangeUrl, "PUT", attributes); } - private void assertExchangeDoesNotExist(String exchangeName) throws Exception + private void assertExchangeDoesNotExist() throws Exception { - assertExchangeExistence(exchangeName, false); + assertExchangeExistence(false); } - private void assertExchangeExists(String exchangeName) throws Exception + private void assertExchangeExists() throws Exception { - assertExchangeExistence(exchangeName, true); + assertExchangeExistence(true); } - private void assertExchangeExistence(String exchangeName, boolean exists) throws Exception + private void assertExchangeExistence(boolean exists) throws Exception { - List<Map<String, Object>> exchanges = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName); + List<Map<String, Object>> exchanges = getRestTestHelper().getJsonAsList(_exchangeUrl); assertEquals("Unexpected result", exists, !exchanges.isEmpty()); } @@ -229,7 +222,7 @@ public class ExchangeRestACLTest extends QpidRestTestCase attributes.put(Binding.QUEUE, _queueName); attributes.put(Binding.EXCHANGE, "amq.direct"); - int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/" + _queueName + "/" + bindingName, "PUT", attributes); + int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/test/amq.direct/" + _queueName + "/" + bindingName, "PUT", attributes); return responseCode; } @@ -245,7 +238,7 @@ public class ExchangeRestACLTest extends QpidRestTestCase private void assertBindingExistence(String bindingName, boolean exists) throws Exception { - List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/" + _queueName + "/" + bindingName); + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/test/amq.direct/" + _queueName + "/" + bindingName); assertEquals("Unexpected result", exists, !bindings.isEmpty()); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java index dced81277e..8acf4ee762 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java @@ -36,6 +36,16 @@ public class QueueRestACLTest extends QpidRestTestCase { private static final String ALLOWED_USER = "user1"; private static final String DENIED_USER = "user2"; + private String _queueUrl; + private String _queueName; + + @Override + public void setUp() throws Exception + { + super.setUp(); + _queueName = getTestName(); + _queueUrl = "/rest/queue/test/test/" + _queueName; + } @Override protected void customizeConfiguration() throws IOException @@ -60,80 +70,72 @@ public class QueueRestACLTest extends QpidRestTestCase { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); + int responseCode = createQueue(); assertEquals("Queue creation should be allowed", 201, responseCode); - assertQueueExists(queueName); + assertQueueExists(); } public void testCreateQueueDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); + int responseCode = createQueue(); assertEquals("Queue creation should be denied", 403, responseCode); - assertQueueDoesNotExist(queueName); + assertQueueDoesNotExist(); } public void testDeleteQueueAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); + int responseCode = createQueue(); assertEquals("Queue creation should be allowed", 201, responseCode); - assertQueueExists(queueName); + assertQueueExists(); - responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "DELETE", null); + responseCode = getRestTestHelper().submitRequest(_queueUrl, "DELETE", null); assertEquals("Queue deletion should be allowed", 200, responseCode); - assertQueueDoesNotExist(TEST2_VIRTUALHOST); + assertQueueDoesNotExist(); } public void testDeleteQueueDenied() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); + int responseCode = createQueue(); assertEquals("Queue creation should be allowed", 201, responseCode); - assertQueueExists(queueName); + assertQueueExists(); getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); - responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "DELETE", null); + responseCode = getRestTestHelper().submitRequest(_queueUrl, "DELETE", null); assertEquals("Queue deletion should be denied", 403, responseCode); - assertQueueExists(queueName); + assertQueueExists(); } + + public void testSetQueueAttributesAllowed() throws Exception { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); + int responseCode = createQueue(); - assertQueueExists(queueName); + assertQueueExists(); Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Queue.NAME, queueName); + attributes.put(Queue.NAME, _queueName); attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000); attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000); - responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(_queueUrl, "PUT", attributes); assertEquals("Setting of queue attribites should be allowed", 200, responseCode); - Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList(_queueUrl); assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); } @@ -142,47 +144,45 @@ public class QueueRestACLTest extends QpidRestTestCase { getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); - String queueName = getTestName(); - - int responseCode = createQueue(queueName); - assertQueueExists(queueName); + int responseCode = createQueue(); + assertQueueExists(); getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Queue.NAME, queueName); + attributes.put(Queue.NAME, _queueName); attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000); attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000); - responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + responseCode = getRestTestHelper().submitRequest(_queueUrl, "PUT", attributes); assertEquals("Setting of queue attribites should be allowed", 403, responseCode); - Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList(_queueUrl); assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 0, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 0, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); } - private int createQueue(String queueName) throws Exception + private int createQueue() throws Exception { Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(Queue.NAME, queueName); + attributes.put(Queue.NAME, _queueName); - return getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + return getRestTestHelper().submitRequest(_queueUrl, "PUT", attributes); } - private void assertQueueDoesNotExist(String queueName) throws Exception + private void assertQueueDoesNotExist() throws Exception { - assertQueueExistence(queueName, false); + assertQueueExistence(false); } - private void assertQueueExists(String queueName) throws Exception + private void assertQueueExists() throws Exception { - assertQueueExistence(queueName, true); + assertQueueExistence(true); } - private void assertQueueExistence(String queueName, boolean exists) throws Exception + private void assertQueueExistence(boolean exists) throws Exception { - List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName); + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList(_queueUrl); assertEquals("Unexpected result", exists, !queues.isEmpty()); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java index 8802ccac58..3436b06db0 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java @@ -48,7 +48,6 @@ import javax.naming.InitialContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.qpid.client.AMQAnyDestination; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQDestination; @@ -57,9 +56,7 @@ import org.apache.qpid.client.AMQSession_0_10; import org.apache.qpid.client.message.QpidMessageProperties; import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; import org.apache.qpid.messaging.Address; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.test.utils.QpidBrokerTestCase; -import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.transport.ExecutionErrorCode; public class AddressBasedDestinationTest extends QpidBrokerTestCase @@ -70,10 +67,6 @@ public class AddressBasedDestinationTest extends QpidBrokerTestCase @Override public void setUp() throws Exception { - TestBrokerConfiguration config = getBrokerConfiguration(); - config.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.CONTEXT, - Collections.singletonMap("queue.maximumDeliveryAttempts","0")); - super.setUp(); _connection = getConnection() ; _connection.start(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java index 17485c5445..67c3f51d46 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/timeouts/SyncWaitDelayTest.java @@ -31,14 +31,12 @@ import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.SlowMessageStore; import org.apache.qpid.test.utils.QpidBrokerTestCase; -import org.apache.qpid.test.utils.TestBrokerConfiguration; +import org.apache.qpid.test.utils.TestUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This tests that when the commit takes a long time(due to POST_COMMIT_DELAY) that the commit does not timeout @@ -66,8 +64,7 @@ public class SyncWaitDelayTest extends QpidBrokerTestCase messageStoreSettings.put(MessageStore.STORE_TYPE, SlowMessageStore.TYPE); messageStoreSettings.put(SlowMessageStore.DELAYS, slowMessageStoreDelays); - TestBrokerConfiguration config = getBrokerConfiguration(); - config.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); + TestUtils.createStoreWithVirtualHostEntry(messageStoreSettings, getBrokerConfiguration(), getTestProfileVirtualHostNodeType()); super.setUp(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java index 0e9256e1c6..60877b0cde 100755 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java @@ -49,7 +49,6 @@ import javax.naming.NamingException; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.client.AMQConnectionURL; @@ -66,6 +65,8 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; +import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.MemoryMessageStore; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.virtualhost.StandardVirtualHost; @@ -246,12 +247,7 @@ public class QpidBrokerTestCase extends QpidTestCase configuration.setObjectAttribute(Port.class, TestBrokerConfiguration.ENTRY_NAME_JMX_PORT, Port.PORT, getManagementPort(actualPort) + JMXPORT_CONNECTORSERVER_OFFSET); String workDir = System.getProperty("QPID_WORK") + File.separator + TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST + File.separator + actualPort; - Map<String, Object> virtualHostSettings = configuration.getObjectAttributes(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); - - @SuppressWarnings("unchecked") - Map<String, Object> storeSettings = (Map<String, Object>)virtualHostSettings.get(VirtualHost.MESSAGE_STORE_SETTINGS); - storeSettings.put(MessageStore.STORE_PATH, workDir); - configuration.setObjectAttribute(VirtualHost.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHost.MESSAGE_STORE_SETTINGS, storeSettings); + configuration.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, DurableConfigurationStore.STORE_PATH, workDir); } return configuration; @@ -844,13 +840,13 @@ public class QpidBrokerTestCase extends QpidTestCase } /** - * Creates a new virtual host within the test virtualhost file. + * Creates a new virtual host node in broker configuration for given broker port * @param brokerPort broker port - * @param virtualHostName virtual host name + * @param virtualHostNodeName virtual host node name */ - protected void createTestVirtualHost(int brokerPort, String virtualHostName) + protected void createTestVirtualHostNode(int brokerPort, String virtualHostNodeName) { - String storeType = getTestProfileMessageStoreType(); + String storeType = getTestProfileVirtualHostNodeType(); String storeDir = null; if (System.getProperty("profile", "").startsWith("java-dby-mem")) @@ -859,19 +855,20 @@ public class QpidBrokerTestCase extends QpidTestCase } else if (!MemoryMessageStore.TYPE.equals(storeType)) { - storeDir = "${QPID_WORK}" + File.separator + virtualHostName + File.separator + brokerPort; + storeDir = "${QPID_WORK}" + File.separator + virtualHostNodeName + File.separator + brokerPort; } // add new virtual host configuration to the broker store Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(VirtualHost.NAME, virtualHostName); - attributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE); - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_TYPE, storeType); - messageStoreSettings.put(MessageStore.STORE_PATH, storeDir); - attributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings ); + attributes.put(VirtualHostNode.NAME, virtualHostNodeName); + attributes.put(VirtualHostNode.TYPE, storeType); + attributes.put(VirtualHostNode.IS_MESSAGE_STORE_PROVIDER, true); + if (storeDir != null) + { + attributes.put(DurableConfigurationStore.STORE_PATH, storeDir); + } int port = getPort(brokerPort); - getBrokerConfiguration(port).addObjectConfiguration(VirtualHost.class, attributes); + getBrokerConfiguration(port).addObjectConfiguration(VirtualHostNode.class, attributes); } /** diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java index c93a4c6556..8e3d1262e7 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java @@ -50,6 +50,7 @@ import org.apache.qpid.server.security.access.FileAccessControlProviderConstants import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.ConfiguredObjectRecordImpl; import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler; +import org.apache.qpid.util.Strings; public class TestBrokerConfiguration { @@ -85,6 +86,34 @@ public class TestBrokerConfiguration intialStoreLocation, null, Collections.<String,String>emptyMap()); + _store.visitConfiguredObjectRecords(new ConfiguredObjectRecordHandler() + { + @Override + public boolean handle(ConfiguredObjectRecord record) + { + Map<String, Object> attributes = record.getAttributes(); + String rawType = (String)attributes.get("type"); + if (rawType != null) + { + String interpolatedType = Strings.expand(rawType, false, Strings.ENV_VARS_RESOLVER, Strings.JAVA_SYS_PROPS_RESOLVER); + if (!interpolatedType.equals(rawType)) + { + setObjectAttribute(record, "type", interpolatedType); + } + } + return true; + } + + @Override + public void end() + { + } + + @Override + public void begin() + { + } + }); } public boolean setBrokerAttribute(String name, Object value) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestUtils.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestUtils.java index c651d3ec7f..16f3c3d82c 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestUtils.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestUtils.java @@ -20,9 +20,27 @@ */ package org.apache.qpid.test.utils; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.Model; +import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.VirtualHostNode; +import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory; +import org.apache.qpid.server.store.ConfiguredObjectRecordImpl; +import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.server.store.JsonFileConfigStore; +import org.apache.qpid.server.store.MemoryMessageStore; +import org.apache.qpid.server.virtualhost.StandardVirtualHost; +import org.apache.qpid.util.Strings; public class TestUtils { @@ -51,4 +69,48 @@ public class TestUtils } return dump.toString(); } + + public static String createStoreWithVirtualHostEntry(Map<String, Object> messageStoreSettings, TestBrokerConfiguration config, String configStoreType) + { + UUID virtualHostId = UUID.randomUUID(); + Map<String, Object> virtualHostAttributes = new HashMap<String, Object>(); + virtualHostAttributes.put(VirtualHost.NAME, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + virtualHostAttributes.put(VirtualHost.ID, virtualHostId); + virtualHostAttributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE); + virtualHostAttributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings); + virtualHostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION); + + config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.IS_MESSAGE_STORE_PROVIDER, false); + // If using MMS, switch to split store with JSON config store. + if (MemoryMessageStore.TYPE.equals(configStoreType)) + { + configStoreType = JsonFileConfigStore.TYPE; + } + DurableConfigurationStoreFactory storeFactory = DurableConfigurationStoreFactory.FACTORY_LOADER.get(configStoreType); + DurableConfigurationStore store = storeFactory.createDurableConfigurationStore(); + + config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.TYPE, configStoreType); + + Map<String,Object> nodeAttributes = config.getObjectAttributes(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + String storePath = (String)nodeAttributes.get(DurableConfigurationStore.STORE_PATH); + String path = Strings.expand(storePath, false, Strings.JAVA_SYS_PROPS_RESOLVER, Strings.ENV_VARS_RESOLVER); + + Map<String, Object> attributes = new HashMap<String, Object>(nodeAttributes); + attributes.put(DurableConfigurationStore.STORE_PATH, path); + + VirtualHostNode<?> virtualHostNode = mock(VirtualHostNode.class); + when(virtualHostNode.getModel()).thenReturn(BrokerModel.getInstance()); + when(virtualHostNode.getName()).thenReturn(TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); + + try + { + store.openConfigurationStore(virtualHostNode, attributes); + store.create(new ConfiguredObjectRecordImpl(virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes)); + } + finally + { + store.closeConfigurationStore(); + } + return path; + } } |
