diff options
author | Keith Wall <kwall@apache.org> | 2014-03-26 08:54:25 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2014-03-26 08:54:25 +0000 |
commit | 0f126a7715502f4d9d6edc9d32632892cec865a7 (patch) | |
tree | 38c89a660f538292f27a40c8b1ee117d8c5a3623 | |
parent | cd6130384dc5f27ad494eabf8a2b15ca79280aa1 (diff) | |
download | qpid-python-0f126a7715502f4d9d6edc9d32632892cec865a7.tar.gz |
NO-JIRA: Accidentally ommitted from last commit
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1581752 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java | 338 |
1 files changed, 0 insertions, 338 deletions
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java deleted file mode 100644 index 5872383702..0000000000 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java +++ /dev/null @@ -1,338 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -package org.apache.qpid.server.virtualhost; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.File; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.server.binding.BindingImpl; -import org.apache.qpid.server.exchange.AbstractExchange; -import org.apache.qpid.server.exchange.ExchangeImpl; -import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.Model; -import org.apache.qpid.server.model.UUIDGenerator; -import org.apache.qpid.server.queue.AMQQueue; -import org.apache.qpid.server.security.SecurityManager; -import org.apache.qpid.server.stats.StatisticsGatherer; -import org.apache.qpid.server.store.ConfigurationRecoveryHandler; -import org.apache.qpid.server.store.DurableConfigurationStore; -import org.apache.qpid.server.store.JsonFileConfigStore; -import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.store.TestableMemoryMessageStore; -import org.apache.qpid.server.util.BrokerTestHelper; -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; -import org.apache.qpid.util.FileUtils; -import org.codehaus.jackson.map.ObjectMapper; - -public class StandardVirtualHostTest extends QpidTestCase -{ - private VirtualHostRegistry _virtualHostRegistry; - private File _storeFolder; - - @Override - public void setUp() throws Exception - { - super.setUp(); - BrokerTestHelper.setUp(); - _storeFolder = TestFileUtils.createTestDirectory(".tmp.store", true); - } - - @Override - public void tearDown() throws Exception - { - try - { - if (_virtualHostRegistry != null) - { - _virtualHostRegistry.close(); - } - } - finally - { - BrokerTestHelper.tearDown(); - super.tearDown(); - FileUtils.delete(_storeFolder, false); - } - - } - - /** - * Tests that custom routing keys for the queue specified in the configuration - * file are correctly bound to the exchange (in addition to the queue name) - */ - public void testSpecifyingCustomBindings() throws Exception - { - customBindingTestImpl(new String[]{"custom1","custom2"}); - } - - /** - * Tests that a queue specified in the configuration file to be bound to a - * specified(non-default) direct exchange is a correctly bound to the exchange - * and the default exchange using the queue name. - */ - public void testQueueSpecifiedInConfigurationIsBoundToDefaultExchange() throws Exception - { - customBindingTestImpl(new String[0]); - } - - public void testVirtualHostBecomesActive() throws Exception - { - writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]); - VirtualHost vhost = createVirtualHost(getName()); - assertNotNull(vhost); - assertEquals(State.ACTIVE, vhost.getState()); - } - - public void testVirtualHostHavingStoreSetAsTypeBecomesActive() throws Exception - { - String virtualHostName = getName(); - VirtualHost host = createVirtualHost(virtualHostName); - assertNotNull(host); - assertEquals(State.ACTIVE, host.getState()); - } - - public void testVirtualHostBecomesStoppedOnClose() throws Exception - { - writeConfigFile(getName(), getName(), getName() +".direct", false, new String[0]); - VirtualHost vhost = createVirtualHost(getName()); - assertNotNull(vhost); - assertEquals(State.ACTIVE, vhost.getState()); - vhost.close(); - _virtualHostRegistry.unregisterVirtualHost(vhost); - assertEquals(State.STOPPED, vhost.getState()); - assertEquals(0, vhost.getHouseKeepingActiveCount()); - } - - public void testVirtualHostHavingStoreSetAsTypeBecomesStoppedOnClose() throws Exception - { - String virtualHostName = getName(); - VirtualHost host = createVirtualHost(virtualHostName); - assertNotNull(host); - assertEquals(State.ACTIVE, host.getState()); - host.close(); - _virtualHostRegistry.unregisterVirtualHost(host); - assertEquals(State.STOPPED, host.getState()); - assertEquals(0, host.getHouseKeepingActiveCount()); - } - - /** - * Tests that specifying an unknown exchange to bind the queue to results in failure to create the vhost - */ - public void testSpecifyingUnknownExchangeThrowsException() throws Exception - { - final String queueName = getName(); - final String exchangeName = "made-up-exchange"; - writeConfigFile(queueName, queueName, exchangeName, true, new String[0]); - - try - { - createVirtualHost(queueName); - fail("virtualhost creation should have failed due to illegal configuration"); - } - catch (IllegalConfigurationException e) - { - // pass - } - } - - public void testBindingArguments() throws Exception - { - String exchangeName = getName() +".direct"; - String vhostName = getName(); - String queueName = getName(); - - Map<String, String[]> bindingArguments = new HashMap<String, String[]>(); - bindingArguments.put("ping", new String[]{"x-filter-jms-selector=select=1", "x-qpid-no-local"}); - bindingArguments.put("pong", new String[]{"x-filter-jms-selector=select='pong'"}); - writeConfigFile(vhostName, queueName, exchangeName, false, new String[]{"ping","pong"}, bindingArguments); - VirtualHost vhost = createVirtualHost(vhostName); - - ExchangeImpl exch = vhost.getExchange(getName() +".direct"); - Collection<BindingImpl> bindings = ((AbstractExchange)exch).getBindings(); - assertNotNull("Bindings cannot be null", bindings); - assertEquals("Unexpected number of bindings", 3, bindings.size()); - - boolean foundPong = false; - boolean foundPing = false; - for (BindingImpl binding : bindings) - { - String qn = binding.getAMQQueue().getName(); - assertEquals("Unexpected queue name", getName(), qn); - Map<String, Object> arguments = binding.getArguments(); - - if ("ping".equals(binding.getBindingKey())) - { - foundPing = true; - assertEquals("Unexpected number of binding arguments for ping", 2, arguments.size()); - assertEquals("Unexpected x-filter-jms-selector for ping", "select=1", arguments.get("x-filter-jms-selector")); - assertTrue("Unexpected x-qpid-no-local for ping", arguments.containsKey("x-qpid-no-local")); - } - else if ("pong".equals(binding.getBindingKey())) - { - foundPong = true; - assertEquals("Unexpected number of binding arguments for pong", 1, arguments.size()); - assertEquals("Unexpected x-filter-jms-selector for pong", "select='pong'", arguments.get("x-filter-jms-selector")); - } - } - - assertTrue("Pong binding is not found", foundPong); - assertTrue("Ping binding is not found", foundPing); - } - - private void customBindingTestImpl(final String[] routingKeys) throws Exception - { - String exchangeName = getName() +".direct"; - String vhostName = getName(); - String queueName = getName(); - - writeConfigFile(vhostName, queueName, exchangeName, false, routingKeys); - VirtualHost vhost = createVirtualHost(vhostName); - assertNotNull("virtualhost should exist", vhost); - - AMQQueue queue = vhost.getQueue(queueName); - assertNotNull("queue should exist", queue); - - ExchangeImpl exch = vhost.getExchange(exchangeName); - assertTrue("queue should have been bound to " + exchangeName + " with its name", exch.isBound(queueName, queue)); - - for(String key: routingKeys) - { - assertTrue("queue should have been bound to " + exchangeName + " with key " + key, exch.isBound(key, queue)); - } - } - - - private VirtualHost createVirtualHost(String virtualHostName) throws Exception - { - Broker<?> broker = BrokerTestHelper.createBrokerMock(); - - _virtualHostRegistry = broker.getVirtualHostRegistry(); - - org.apache.qpid.server.model.VirtualHost<?> model = mock(org.apache.qpid.server.model.VirtualHost.class); - Map<String, Object> configurationStoreSettings = new HashMap<String, Object>(); - when(model.getConfigurationStoreSettings()).thenReturn(configurationStoreSettings); - configurationStoreSettings.put(DurableConfigurationStore.STORE_TYPE, JsonFileConfigStore.TYPE); - configurationStoreSettings.put(DurableConfigurationStore.STORE_PATH, _storeFolder.getAbsolutePath()); - - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_TYPE, TestableMemoryMessageStore.TYPE); - when(model.getMessageStoreSettings()).thenReturn(messageStoreSettings); - when(model.getName()).thenReturn(virtualHostName); - - VirtualHost host = new StandardVirtualHostFactory().createVirtualHost(_virtualHostRegistry, mock(StatisticsGatherer.class), - new SecurityManager(broker, false), model); - _virtualHostRegistry.registerVirtualHost(host); - return host; - } - - /** - * Create a configuration file for testing virtualhost creation - * - * @param vhostName name of the virtualhost - * @param queueName name of the queue - * @param exchangeName name of a direct exchange to declare (unless dontDeclare = true) and bind the queue to (null = none) - * @param dontDeclare if true then don't declare the exchange, even if its name is non-null - * @param routingKeys routingKeys to bind the queue with (empty array = none) - * @return - * @throws Exception - */ - private void writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys) throws Exception - { - writeConfigFile(vhostName, queueName, exchangeName, dontDeclare, routingKeys, null); - } - - private void writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, - String[] routingKeys, Map<String, String[]> bindingArguments) throws Exception - { - Map<String, Object> data = new HashMap<String, Object>(); - data.put("modelVersion", Model.MODEL_VERSION); - data.put("configVersion", org.apache.qpid.server.model.VirtualHost.CURRENT_CONFIG_VERSION); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.writeValue(new File(_storeFolder, vhostName + ".json"), data); - - JsonFileConfigStore store = new JsonFileConfigStore(); - Map<String, Object> configurationStoreSettings = new HashMap<String, Object>(); - configurationStoreSettings.put(DurableConfigurationStore.STORE_TYPE, JsonFileConfigStore.TYPE); - configurationStoreSettings.put(DurableConfigurationStore.STORE_PATH, _storeFolder.getAbsolutePath()); - - store.openConfigurationStore(vhostName, configurationStoreSettings); - - UUID exchangeId = UUIDGenerator.generateExchangeUUID(exchangeName == null? "amq.direct" : exchangeName, vhostName); - if(exchangeName != null && !dontDeclare) - { - Map<String, Object> exchangeAttributes = new HashMap<String, Object>(); - exchangeAttributes.put(org.apache.qpid.server.model.Exchange.NAME, exchangeName); - exchangeAttributes.put(org.apache.qpid.server.model.Exchange.TYPE, "direct"); - exchangeAttributes.put(org.apache.qpid.server.model.Exchange.DURABLE, true); - store.create(exchangeId, org.apache.qpid.server.model.Exchange.class.getSimpleName(), exchangeAttributes); - } - - UUID queueId = UUID.randomUUID(); - Map<String, Object> queueAttributes = new HashMap<String, Object>(); - queueAttributes.put(org.apache.qpid.server.model.Queue.NAME, queueName); - queueAttributes.put(org.apache.qpid.server.model.Queue.DURABLE, true); - store.create(queueId, org.apache.qpid.server.model.Queue.class.getSimpleName(), queueAttributes); - - Map<String, Object> bindingAttributes = new HashMap<String, Object>(); - bindingAttributes.put(org.apache.qpid.server.model.Binding.NAME, queueName); - bindingAttributes.put(org.apache.qpid.server.model.Binding.QUEUE, queueId); - bindingAttributes.put(org.apache.qpid.server.model.Binding.EXCHANGE, exchangeId ); - store.create(UUID.randomUUID(), org.apache.qpid.server.model.Binding.class.getSimpleName(), bindingAttributes); - - for (int i = 0; i < routingKeys.length; i++) - { - Map<String, Object> attributes = new HashMap<String, Object>(); - attributes.put(org.apache.qpid.server.model.Binding.NAME, routingKeys[i]); - attributes.put(org.apache.qpid.server.model.Binding.QUEUE, queueId); - attributes.put(org.apache.qpid.server.model.Binding.EXCHANGE, exchangeId ); - if (bindingArguments != null && bindingArguments.containsKey(routingKeys[i])) - { - String[] args = (String[])bindingArguments.get(routingKeys[i]); - Map<String, Object> arguments = new HashMap<String, Object>(); - for (int j = 0; j < args.length; j++) - { - int pos = args[j].indexOf('='); - if (pos == -1) - { - arguments.put(args[j], null); - } - else - { - arguments.put(args[j].substring(0, pos), args[j].substring(pos + 1)); - } - } - attributes.put(org.apache.qpid.server.model.Binding.ARGUMENTS, arguments ); - } - store.create(UUID.randomUUID(), org.apache.qpid.server.model.Binding.class.getSimpleName(), attributes); - } - store.closeConfigurationStore(); - } - -} |