summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-07 19:01:03 +0000
committerKeith Wall <kwall@apache.org>2014-06-07 19:01:03 +0000
commit2a511e6a3b5f278f9c8b572a306b96490f180805 (patch)
treea6c30ce39a23aeeb86844fb6434a21c669fba854 /qpid/java
parent21aceae395ef19dca56dc603ed3f2af744b620a7 (diff)
downloadqpid-python-2a511e6a3b5f278f9c8b572a306b96490f180805.tar.gz
QPID-5803: [Java Broker] Add ability for the virtualhostnode to create a virtualhost using a blueprint supplied by context variable
* This commit reenables the SplitStoreTest. * The UI has not been refactored by this commit, so it will not be possible to create a non-HA virtualhost from the UI (the UI will create only a virtualhostnode).. REST API is okay. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1601163 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java58
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java4
-rw-r--r--qpid/java/broker-core/src/main/resources/initial-config.json5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java6
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java12
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java4
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java4
-rw-r--r--qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java3
-rw-r--r--qpid/java/systests/etc/config-systests.json5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/SplitStoreTest.java40
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/VirtualHostMessageStoreTest.java15
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java29
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java23
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java50
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java4
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java13
-rw-r--r--qpid/java/test-profiles/JavaTransientExcludes5
19 files changed, 147 insertions, 139 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
index 591623510f..61c01c7003 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
@@ -30,9 +30,11 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.berkeleydb.BDBConfigurationStore;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-@ManagedObject( category = false, type = "BDB" )
+@ManagedObject(type = BDBVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false)
public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBVirtualHostNodeImpl> implements BDBVirtualHostNode<BDBVirtualHostNodeImpl>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "BDB";
+
@ManagedAttributeField
private String _storePath;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
index e37eeb17bf..9ce4779a1c 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.virtualhostnode;
-import java.io.File;
import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.Collections;
@@ -39,15 +38,13 @@ import org.apache.qpid.server.model.RemoteReplicationNode;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.MessageStoreProvider;
import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer;
-import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandardVirtualHostNode<X>> extends AbstractVirtualHostNode<X>
implements VirtualHostNode<X>
{
private static final Logger LOGGER = Logger.getLogger(AbstractStandardVirtualHostNode.class);
+ public static final String VIRTUALHOST_BLUEPRINT_CONTEXT_VAR = "virtualhostBlueprint";
public AbstractStandardVirtualHostNode(Map<String, Object> attributes,
Broker<?> parent)
@@ -100,25 +97,32 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
if (host == null)
{
- // TODO normal case - we should not create VH,
- // TODO out if box case - if blueprint vh context variable is set, use it to create a VH
- if (LOGGER.isDebugEnabled())
+ if (getContext() != null && getContext().containsKey(VIRTUALHOST_BLUEPRINT_CONTEXT_VAR))
{
- LOGGER.debug("Creating new virtualhost with name : " + getName());
- }
- Map<String, Object> hostAttributes = new HashMap<String, Object>();
- hostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
- hostAttributes.put(VirtualHost.NAME, getName());
- if (getConfigurationStore() instanceof MessageStoreProvider)
- {
- hostAttributes.put(VirtualHost.TYPE, ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
- }
- else
- {
- hostAttributes.put(VirtualHost.TYPE, "DERBY");
- hostAttributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, getDefaultMessageStoreSettings());
+ Map<String, Object> virtualhostBlueprint = getContextValue(Map.class, VIRTUALHOST_BLUEPRINT_CONTEXT_VAR);
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Using virtualhost blueprint " + virtualhostBlueprint);
+ }
+
+ Map<String, Object> virtualhostAttributes = new HashMap<>();
+ virtualhostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
+ virtualhostAttributes.put(VirtualHost.NAME, getName());
+ virtualhostAttributes.putAll(virtualhostBlueprint);
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Creating new virtualhost named " + virtualhostAttributes.get(VirtualHost.NAME));
+ }
+
+ host = createChild(VirtualHost.class, virtualhostAttributes);
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Created new virtualhost: " + host);
+ }
}
- host = createChild(VirtualHost.class, hostAttributes);
}
else
{
@@ -146,16 +150,4 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
{
return Collections.emptyList();
}
-
- // protected for unit testing purposes
- protected Map<String, Object> getDefaultMessageStoreSettings()
- {
- // TODO perhaps look for the MS with the default annotation and associated default.
- Map<String, Object> settings = new HashMap<String, Object>();
- settings.put(MessageStore.STORE_TYPE, "DERBY");
- settings.put(MessageStore.STORE_PATH, "${qpid.work_dir}" + File.separator + "derbystore" + File.separator + getName());
- return settings;
- }
-
-
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
index 67f690a2b9..6d26decd72 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
@@ -29,9 +29,11 @@ import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.JsonFileConfigStore;
-@ManagedObject(category=false, type="JSON")
+@ManagedObject(type=JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category=false)
public class JsonVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JsonVirtualHostNodeImpl> implements FileBasedVirtualHostNode<JsonVirtualHostNodeImpl>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "JSON";
+
@ManagedAttributeField
private String _storePath;
diff --git a/qpid/java/broker-core/src/main/resources/initial-config.json b/qpid/java/broker-core/src/main/resources/initial-config.json
index 45b02bd550..d220fefa50 100644
--- a/qpid/java/broker-core/src/main/resources/initial-config.json
+++ b/qpid/java/broker-core/src/main/resources/initial-config.json
@@ -55,7 +55,10 @@
"virtualhostnodes" : [ {
"name" : "default",
"type" : "JSON",
- "storePath" : "${qpid.work_dir}/json/default"
+ "storePath" : "${qpid.work_dir}/default/config",
+ "context" : {
+ "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"messageStoreSettings\" : { \"storePath\" : \"${qpid.work_dir}/default/messages\" }}"
+ }
} ],
"plugins" : [ {
"type" : "MANAGEMENT-HTTP",
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
index e0a56bc39c..397f83b712 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
@@ -136,12 +136,8 @@ public class AbstractStandardVirtualHostNodeTest extends QpidTestCase
node.start();
VirtualHost<?, ?, ?> virtualHost = node.getVirtualHost();
- assertNotNull("Virtual host was not created", virtualHost);
+ assertNull("Virtual host should not be automatically created", virtualHost);
- // Virtualhost name taken from VHN and ID is random.
- assertEquals("Unexpected virtual host name", TEST_VIRTUAL_HOST_NODE_NAME, virtualHost.getName());
- assertEquals("Unexpected virtual host state", State.ACTIVE, virtualHost.getState());
- assertNotNull("Unexpected virtual host id", virtualHost.getId());
}
private ConfiguredObjectRecord createMockVirtualHostCOR(UUID virtualHostId)
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
index 16a9aa5550..18d394d4f7 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
@@ -20,18 +20,17 @@
*/
package org.apache.qpid.server.virtualhostnode;
-import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TestMemoryMessageStore;
-@ManagedObject(type="TestMemory", category=false)
+@ManagedObject(type=TestVirtualHostNode.VIRTUAL_HOST_NODE_TYPE, category=false)
public class TestVirtualHostNode extends AbstractStandardVirtualHostNode<TestVirtualHostNode>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "TestMemory";
+
private final DurableConfigurationStore _store;
public TestVirtualHostNode(Broker<?> parent, Map<String, Object> attributes)
@@ -53,9 +52,4 @@ public class TestVirtualHostNode extends AbstractStandardVirtualHostNode<TestVir
return _store;
}
- @Override
- public Map<String, Object> getDefaultMessageStoreSettings()
- {
- return Collections.<String, Object>singletonMap(MessageStore.STORE_TYPE, TestMemoryMessageStore.TYPE);
- }
}
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
index 9dc68d0343..ffc19832fa 100644
--- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
+++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
@@ -32,9 +32,11 @@ import org.apache.qpid.server.store.derby.DerbyMessageStore;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
-@ManagedObject( category = false, type = "DERBY" )
+@ManagedObject( category = false, type = DerbyVirtualHostNode.VIRTUAL_HOST_NODE_TYPE )
public class DerbyVirtualHostNode extends AbstractStandardVirtualHostNode<DerbyVirtualHostNode> implements FileBasedVirtualHostNode<DerbyVirtualHostNode>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "DERBY";
+
@ManagedAttributeField
private String _storePath;
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
index 29986335d0..2108b4e09a 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
@@ -30,9 +30,11 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.jdbc.JDBCMessageStore;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-@ManagedObject( category = false, type = "JDBC" )
+@ManagedObject(type = JDBCVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false )
public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDBCVirtualHostNodeImpl> implements JDBCVirtualHostNode<JDBCVirtualHostNodeImpl>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "JDBC";
+
@ManagedAttributeField
private String _connectionUrl;
diff --git a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
index 1fd4717ae1..fec2432d5b 100644
--- a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
+++ b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
@@ -29,9 +29,10 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MemoryConfigurationStore;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
-@ManagedObject(type="Memory",category=false)
+@ManagedObject(type=MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE, category=false)
public class MemoryVirtualHostNode extends AbstractStandardVirtualHostNode<MemoryVirtualHostNode>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "Memory";
@ManagedObjectFactoryConstructor
public MemoryVirtualHostNode(Map<String, Object> attributes, Broker<?> parent)
diff --git a/qpid/java/systests/etc/config-systests.json b/qpid/java/systests/etc/config-systests.json
index 91d79a4319..ac5c46ad6a 100644
--- a/qpid/java/systests/etc/config-systests.json
+++ b/qpid/java/systests/etc/config-systests.json
@@ -60,6 +60,9 @@
"virtualhostnodes" : [ {
"name" : "test",
"type" : "${messagestore.type}",
- "storePath" : "${QPID_WORK}/test/${test.port}"
+ "storePath" : "${QPID_WORK}/${test.port}/test/config",
+ "context" : {
+ "virtualhostBlueprint" : "{ \"type\" : \"ProvidedStore\" }"
+ }
} ]
}
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 53c0563aee..0f67121212 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
@@ -21,6 +21,7 @@
package org.apache.qpid.server.store;
import java.io.File;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -32,10 +33,11 @@ import javax.jms.Session;
import org.apache.qpid.configuration.ClientProperties;
import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
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
@@ -72,39 +74,27 @@ public class SplitStoreTest extends QpidBrokerTestCase
// Overridden to prevent QBTC starting the Broker.
}
- public void testPass()
+ public void testJsonConfigurationStoreWithPersistentMessageStore() throws Exception
{
-
+ doTest(JsonFileConfigStore.TYPE, getTestProfileMessageStoreType());
}
- // TODO reenable once we can specify a virtualhost blueprint context variable with necessary message store location
- public void xtestJsonConfigurationStoreWithPersistentMessageStore() throws Exception
+ public void testSeparateConfigurationAndMessageStoresOfTheSameType() throws Exception
{
-
- doTest(JsonFileConfigStore.TYPE, _configStorePath);
+ doTest(getTestProfileVirtualHostNodeType(), getTestProfileMessageStoreType());
}
- // TODO test will currently create a provided VH which will share config/message store
- // TODO reenable once we can specify a virtualhost blueprint context variable
- public void xtestSeparateConfigurationAndMessageStoresOfTheSameType() throws Exception
+ private void configureAndStartBroker(String virtualHostNodeType, String virtualHostType) throws Exception
{
- doTest(getTestProfileVirtualHostNodeType(), _configStorePath);
- }
+ final String blueprint = String.format(
+ "{ \"type\" : \"%s\", \"messageStoreSettings\" : { \"storePath\" : \"%s\" } }", virtualHostType, _messageStorePath);
+ final Map<String, String> contextMap = Collections.singletonMap(AbstractStandardVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR,
+ blueprint);
- 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);
-
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_TYPE, getTestProfileMessageStoreType());
- messageStoreSettings.put(MessageStore.STORE_PATH, _messageStorePath);
-
- // TODO initialise the virtualhost with the required attributes using the virtualhost blueprint
- // mechanism.
-
- //TestUtils.createStoreWithVirtualHostEntry(messageStoreSettings, config, nodeType);
+ config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.TYPE, virtualHostNodeType);
+ config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, VirtualHostNode.CONTEXT, contextMap);
+ config.setObjectAttribute(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST, FileBasedVirtualHostNode.STORE_PATH, _configStorePath);
super.startBroker();
}
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 256690ea71..430fadc2f1 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
@@ -30,7 +30,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.util.UUID;
import javax.security.auth.Subject;
@@ -57,6 +56,7 @@ 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.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
@@ -121,7 +121,8 @@ public class VirtualHostMessageStoreTest extends QpidTestCase
{
super.setUp();
- String hostName = getName();
+ String nodeName = "node" + getName();
+ String hostName = "host" + getName();
_storePath = System.getProperty("QPID_WORK", TMP_FOLDER + File.separator + getTestName()) + File.separator + hostName;
cleanup(new File(_storePath));
@@ -131,14 +132,18 @@ public class VirtualHostMessageStoreTest extends QpidTestCase
when(broker.getTaskExecutor()).thenReturn(_taskExecutor);
ConfiguredObjectFactory factory = broker.getObjectFactory();
- Map<String, Object> nodeAttributes = new HashMap<String, Object>();
+ Map<String, Object> nodeAttributes = new HashMap<>();
nodeAttributes.put(ConfiguredObject.TYPE, getTestProfileVirtualHostNodeType());
nodeAttributes.put(FileBasedVirtualHostNode.STORE_PATH, _storePath);
- nodeAttributes.put(VirtualHostNode.NAME, hostName);
- nodeAttributes.put(VirtualHostNode.ID, UUID.randomUUID());
+ nodeAttributes.put(VirtualHostNode.NAME, nodeName);
_node = factory.create(VirtualHostNode.class, nodeAttributes, broker);
_node.start();
+ final Map<String,Object> virtualHostAttributes = new HashMap<>();
+ virtualHostAttributes.put(VirtualHost.NAME, hostName);
+
+ _node.createChild(VirtualHost.class, virtualHostAttributes, _node);
+
_virtualHost = (VirtualHostImpl<?,?,?>)_node.getVirtualHost();
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
index 78db198185..b79c4bdc40 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/MBeanLifeCycleTest.java
@@ -25,14 +25,18 @@ import java.util.HashMap;
import java.util.Map;
import javax.management.ObjectName;
+import javax.servlet.http.HttpServletResponse;
import org.apache.qpid.management.common.mbeans.ManagedBroker;
import org.apache.qpid.server.management.plugin.HttpManagement;
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.AnonymousAuthenticationManager;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
+import org.apache.qpid.server.virtualhostnode.memory.MemoryVirtualHostNode;
import org.apache.qpid.systest.rest.QpidRestTestCase;
import org.apache.qpid.test.utils.JMXTestUtils;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
@@ -81,14 +85,24 @@ public class MBeanLifeCycleTest extends QpidRestTestCase
public void testVirtualHostMBeanIsRegisteredOnVirtualHostCreation() throws Exception
{
- String nodeName = "tmp";
- Map<String, Object> nodeData = new HashMap<String, Object>();
+ String nodeName = "ntmp";
+ String hostName = "htmp";
+
+ Map<String, Object> nodeData = new HashMap<>();
nodeData.put(VirtualHostNode.NAME, nodeName);
- nodeData.put(VirtualHostNode.TYPE, "Memory");
- int status = getRestTestHelper().submitRequest("virtualhostnode/" + nodeName, "PUT", nodeData);
- assertEquals("Unexpected code", 201, status);
+ nodeData.put(VirtualHostNode.TYPE, MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE);
+ getRestTestHelper().submitRequest("virtualhostnode/" + nodeName, "PUT", nodeData, HttpServletResponse.SC_CREATED);
+
+ Map<String, Object> virtualhostData = new HashMap<>();
+ virtualhostData.put(VirtualHost.NAME, nodeName);
+ virtualhostData.put(VirtualHost.TYPE, ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
+ getRestTestHelper().submitRequest("virtualhost/" + nodeName + "/" + hostName,
+ "PUT",
+ virtualhostData,
+ HttpServletResponse.SC_CREATED);
+
- ManagedBroker managedBroker = _jmxUtils.getManagedBroker(nodeName);
+ ManagedBroker managedBroker = _jmxUtils.getManagedBroker(hostName);
assertNotNull("Host mBean is not created", managedBroker);
}
@@ -99,8 +113,7 @@ public class MBeanLifeCycleTest extends QpidRestTestCase
boolean mBeanExists =_jmxUtils.doesManagedObjectExist(query);
assertTrue("Host mBean is not registered", mBeanExists);
- int status = getRestTestHelper().submitRequest("virtualhostnode/" + TEST2_VIRTUALHOST, "DELETE");
- assertEquals("Unexpected code", 200, status);
+ getRestTestHelper().submitRequest("virtualhostnode/" + TEST2_VIRTUALHOST, "DELETE", HttpServletResponse.SC_OK);
mBeanExists =_jmxUtils.doesManagedObjectExist(query);
assertFalse("Host mBean is not unregistered", mBeanExists);
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 86c37cd50a..63c9852dc4 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
@@ -277,7 +277,7 @@ public class RestTestHelper
List<Map<String, Object>> response = getJsonAsList(path);
Assert.assertNotNull("Response cannot be null", response);
- Assert.assertEquals("Unexpected response", 1, response.size());
+ Assert.assertEquals("Unexpected response from " + path, 1, response.size());
return response.get(0);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
index 2d5f083380..8004a91168 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java
@@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
/**
@@ -53,7 +53,7 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase
}
}
- public void testCreateAndDeleteNodeWithTestProfileStore() throws Exception
+ public void testCreateAndDeleteVirtualHostNode() throws Exception
{
String storeType = getTestProfileVirtualHostNodeType();
String nodeName = "virtualhostnode-" + getTestName();
@@ -63,17 +63,6 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase
assertFalse("Store should not exist after deletion", storePathAsFile.exists());
}
- public void testCreateAndDeleteNodeWithJsonStore() throws Exception
- {
- String storeType = "JSON";
- String nodeName = "virtualhostnode-" + getTestName();
- File storePathAsFile = new File(getStoreLocation(nodeName));
-
- createAndDeleteVirtualHostNode(storeType, nodeName, storePathAsFile);
- // TODO Defect: JSON store currently can't delete itself, uncomment once this is resolved
- //assertFalse("Store should not exist after deletion", storePathAsFile.exists());
- }
-
public void testRecoverVirtualHostNodeWithDesiredStateStopped() throws Exception
{
stopBroker();
@@ -118,18 +107,20 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase
assertEquals(newDescription, virtualhostNode.get(VirtualHostNode.DESCRIPTION));
}
- private void createAndDeleteVirtualHostNode(final String storeType,
+ private void createAndDeleteVirtualHostNode(final String virtualhostNodeType,
final String nodeName,
final File storePathAsFile) throws Exception
{
assertFalse("Store should not exist", storePathAsFile.exists());
- createVirtualHostNode(nodeName, storePathAsFile.getAbsolutePath(), storeType);
+ createVirtualHostNode(nodeName, storePathAsFile.getAbsolutePath(), virtualhostNodeType);
assertTrue("Store should exist after creation of node", storePathAsFile.exists());
String restUrl = "virtualhostnode/" + nodeName;
Map<String, Object> virtualhostNode = getRestTestHelper().getJsonAsSingletonList(restUrl);
Asserts.assertVirtualHostNode(nodeName, virtualhostNode);
+ assertNull("Virtualhostnode should not automatically get a virtualhost child",
+ virtualhostNode.get("virtualhosts"));
getRestTestHelper().submitRequest(restUrl, "DELETE", HttpServletResponse.SC_OK);
@@ -158,7 +149,7 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase
Map<String, Object> nodeData = new HashMap<String, Object>();
nodeData.put(VirtualHostNode.NAME, nodeName);
nodeData.put(VirtualHostNode.TYPE, storeType);
- nodeData.put(DurableConfigurationStore.STORE_PATH, configStorePath);
+ nodeData.put(FileBasedVirtualHostNode.STORE_PATH, configStorePath);
getRestTestHelper().submitRequest("virtualhostnode/" + nodeName,
"PUT",
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 392ed362a4..54dca95e9b 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
@@ -41,8 +41,9 @@ import org.apache.qpid.server.model.VirtualHostNode;
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.DurableConfigurationStore;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
+import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
import org.apache.qpid.util.FileUtils;
public class VirtualHostRestTest extends QpidRestTestCase
@@ -105,11 +106,11 @@ public class VirtualHostRestTest extends QpidRestTestCase
Asserts.assertConnection(connections.get(0), _connection);
}
- public void testPutCreateVirtualHostUsingStoreType() throws Exception
+ public void testPutCreateVirtualHostUsingProfileNodeType() throws Exception
{
String hostName = getTestName();
- String storeType = getTestProfileVirtualHostNodeType();
- String storeLocation = createHost(hostName, storeType, null);
+ String virtualhostNodeType = getTestProfileVirtualHostNodeType();
+ String storeLocation = createVirtualHostNodeAndVirtualHost(hostName, virtualhostNodeType);
try
{
// make sure that the host is saved in the broker store
@@ -525,12 +526,28 @@ public class VirtualHostRestTest extends QpidRestTestCase
return getRestTestHelper().submitRequest("queue/test/test/" + queueName, "PUT", queueData);
}
- private String createHost(String hostName, String storeType, String configPath) throws IOException, JsonGenerationException,
- JsonMappingException
+ private String createVirtualHostNodeAndVirtualHost(String virtualHostName,
+ String virtualHostNodeType) throws Exception
{
- String storePath = getStoreLocation(hostName);
- int responseCode = tryCreateVirtualHostNode(hostName, storeType, storePath, configPath);
- assertEquals("Unexpected response code", 201, responseCode);
+ String storePath = getStoreLocation(virtualHostName);
+
+ Map<String, Object> nodeData = new HashMap<>();
+ nodeData.put(VirtualHostNode.NAME, virtualHostName);
+ nodeData.put(VirtualHostNode.TYPE, virtualHostNodeType);
+ nodeData.put(FileBasedVirtualHostNode.STORE_PATH, storePath);
+
+ getRestTestHelper().submitRequest("virtualhostnode/" + virtualHostName, "PUT", nodeData, HttpServletResponse.SC_CREATED);
+
+ Map<String, Object> virtualhostData = new HashMap<>();
+ virtualhostData.put(VirtualHost.NAME, virtualHostName);
+ virtualhostData.put(VirtualHost.TYPE, ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
+
+ getRestTestHelper().submitRequest("virtualhost/" + virtualHostName + "/" + virtualHostName,
+ "PUT",
+ virtualhostData,
+ HttpServletResponse.SC_CREATED);
+
+
return storePath;
}
@@ -539,21 +556,6 @@ public class VirtualHostRestTest extends QpidRestTestCase
return new File(TMP_FOLDER, "store-" + hostName + "-" + System.currentTimeMillis()).getAbsolutePath();
}
- private int tryCreateVirtualHostNode(String hostName,
- String virtualHostNodeType,
- String storePath,
- String configPath) throws IOException,
- JsonGenerationException, JsonMappingException
- {
-
- Map<String, Object> hostData = new HashMap<String, Object>();
- hostData.put(VirtualHostNode.NAME, hostName);
- hostData.put(VirtualHostNode.TYPE, virtualHostNodeType);
- hostData.put(DurableConfigurationStore.STORE_PATH, storePath);
-
- return getRestTestHelper().submitRequest("virtualhostnode/" + hostName, "PUT", hostData);
- }
-
private void assertNewVirtualHost(Map<String, Object> hostDetails)
{
@SuppressWarnings("unchecked")
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 8a9da5d93c..4fd0695545 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
@@ -49,7 +49,7 @@ import org.apache.qpid.server.security.access.FileAccessControlProviderConstants
import org.apache.qpid.server.security.acl.AbstractACLTestCase;
import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
import org.apache.qpid.server.security.auth.manager.PlainPasswordDatabaseAuthenticationManager;
-import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
import org.apache.qpid.systest.rest.QpidRestTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.test.utils.TestFileUtils;
@@ -982,7 +982,7 @@ public class BrokerACLTest extends QpidRestTestCase
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));
+ data.put(FileBasedVirtualHostNode.STORE_PATH, getStoreLocation(virtualHostNodeName));
return getRestTestHelper().submitRequest("virtualhostnode/" + virtualHostNodeName, "PUT", data);
}
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 16526c9d84..88e7ee20c8 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
@@ -22,6 +22,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -63,11 +64,15 @@ import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutorImpl;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MemoryConfigurationStore;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
+import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
import org.apache.qpid.url.URLSyntaxException;
import org.apache.qpid.util.FileUtils;
import org.apache.qpid.util.SystemUtils;
@@ -859,14 +864,18 @@ public class QpidBrokerTestCase extends QpidTestCase
storeDir = "${QPID_WORK}" + File.separator + virtualHostNodeName + File.separator + brokerPort;
}
- // add new virtual host configuration to the broker store
+ // add new virtual host node with vhost blueprint configuration to the broker store
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHostNode.NAME, virtualHostNodeName);
attributes.put(VirtualHostNode.TYPE, storeType);
if (storeDir != null)
{
- attributes.put(DurableConfigurationStore.STORE_PATH, storeDir);
+ attributes.put(FileBasedVirtualHostNode.STORE_PATH, storeDir);
}
+ final String blueprint = String.format("{ \"type\" : \"%s\" } }", ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
+ attributes.put(ConfiguredObject.CONTEXT, Collections.singletonMap(AbstractStandardVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR,
+ blueprint));
+
int port = getPort(brokerPort);
getBrokerConfiguration(port).addObjectConfiguration(VirtualHostNode.class, attributes);
}
diff --git a/qpid/java/test-profiles/JavaTransientExcludes b/qpid/java/test-profiles/JavaTransientExcludes
index 2252d0962f..31bae4849a 100644
--- a/qpid/java/test-profiles/JavaTransientExcludes
+++ b/qpid/java/test-profiles/JavaTransientExcludes
@@ -53,8 +53,9 @@ org.apache.qpid.systest.management.jmx.QueueManagementTest#testCopyMessageBetwee
org.apache.qpid.test.unit.client.MaxDeliveryCountTest#testWhenBrokerIsRestartedAfterEnqeuingMessages
+org.apache.qpid.systest.rest.VirtualHostRestTest#testPutCreateVirtualHostUsingProfileNodeType
org.apache.qpid.systest.rest.VirtualHostRestTest#testRecoverVirtualHostInDesiredStateStoppedWithDescription
-org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteNodeWithTestProfileStore
-org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteNodeWithJsonStore
+org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteVirtualHostNode
+