diff options
| author | Keith Wall <kwall@apache.org> | 2014-08-11 16:55:15 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-08-11 16:55:15 +0000 |
| commit | 7d193fef0a947cb71e8f9de93d90f26d4f11ca2d (patch) | |
| tree | 2f59930e9adca2331e7c0455326005951aba6356 /qpid/java | |
| parent | 19d06780b7d15bd68d7f451ede011adf40cbf381 (diff) | |
| download | qpid-python-7d193fef0a947cb71e8f9de93d90f26d4f11ca2d.tar.gz | |
QPID-5988: [Java Broker] Default VHN/VH store paths to path location based on QPID_WORK
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1617325 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
21 files changed, 96 insertions, 106 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java index 12511ad9e0..ac8d33685a 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java @@ -38,7 +38,7 @@ public interface BDBVirtualHost<X extends BDBVirtualHost<X>> extends VirtualHost Math.min(200l*1024l*1024l, Runtime.getRuntime().maxMemory()/20l)); - @ManagedAttribute(mandatory = true) + @ManagedAttribute(mandatory = true, defaultValue = "${qpid.work_dir}${file.separator}${this:name}${file.separator}messages") String getStorePath(); @ManagedAttribute(mandatory = true, defaultValue = "0") diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java index 763b59146b..61b0d1882a 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java @@ -26,6 +26,6 @@ public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends org { String STORE_PATH = "storePath"; - @ManagedAttribute(mandatory = true) + @ManagedAttribute(mandatory = true, defaultValue = "${qpid.work_dir}${file.separator}${this:name}${file.separator}config") String getStorePath(); } diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/add.html index f9e9d0a82f..9ce23084c5 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/add.html @@ -20,15 +20,13 @@ --> <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter store path'" /> </div> </div> diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html index b08c734e35..820a94e754 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/existinggroup/add.html @@ -81,15 +81,13 @@ </div> </div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter store path'" /> </div> </div> diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html index 3d06d15d5c..1d3b2a1906 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html @@ -45,15 +45,13 @@ </div> </div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter store path'" /> </div> </div> diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html index c18ca34fdb..189eb6f7b6 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html @@ -45,15 +45,13 @@ </div> </div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Configuration store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Configuration store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="editVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter configuration store path'" /> </div> </div> diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java index c855fd84ba..66bee0cce6 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java @@ -47,7 +47,6 @@ import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.systest.rest.Asserts; import org.apache.qpid.systest.rest.QpidRestTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; -import org.apache.qpid.util.FileUtils; public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase { @@ -60,7 +59,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase private int _node3HaPort; private String _hostName; - private File _storeBaseDir; private String _baseNodeRestUrl; @Override @@ -72,8 +70,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase _hostName = getTestName(); _baseNodeRestUrl = "virtualhostnode/"; - _storeBaseDir = new File(TMP_FOLDER, "store-" + _hostName + "-" + System.currentTimeMillis()); - _node1HaPort = findFreePort(); _node2HaPort = getNextAvailable(_node1HaPort + 1); _node3HaPort = getNextAvailable(_node2HaPort + 1); @@ -82,22 +78,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase } @Override - public void tearDown() throws Exception - { - try - { - super.tearDown(); - } - finally - { - if (_storeBaseDir != null) - { - FileUtils.delete(_storeBaseDir, true); - } - } - } - - @Override protected void customizeConfiguration() throws IOException { super.customizeConfiguration(); @@ -311,7 +291,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase Map<String, Object> nodeData = new HashMap<String, Object>(); nodeData.put(BDBHAVirtualHostNode.NAME, nodeName); nodeData.put(BDBHAVirtualHostNode.TYPE, "BDB_HA"); - nodeData.put(BDBHAVirtualHostNode.STORE_PATH, _storeBaseDir.getPath() + File.separator + nodeName); nodeData.put(BDBHAVirtualHostNode.GROUP_NAME, _hostName); nodeData.put(BDBHAVirtualHostNode.ADDRESS, "localhost:" + nodePort); nodeData.put(BDBHAVirtualHostNode.HELPER_ADDRESS, "localhost:" + helperPort); @@ -332,7 +311,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase Map<String, Object> nodeData = getRestTestHelper().getJsonAsSingletonList(_baseNodeRestUrl + nodeName + "?depth=0"); assertEquals("Unexpected name", nodeName, nodeData.get(BDBHAVirtualHostNode.NAME)); assertEquals("Unexpected type", "BDB_HA", nodeData.get(BDBHAVirtualHostNode.TYPE)); - assertEquals("Unexpected path", new File(_storeBaseDir, nodeName).getPath(), nodeData.get(BDBHAVirtualHostNode.STORE_PATH)); assertEquals("Unexpected address", "localhost:" + nodePort, nodeData.get(BDBHAVirtualHostNode.ADDRESS)); assertEquals("Unexpected helper address", "localhost:" + nodeHelperPort, nodeData.get(BDBHAVirtualHostNode.HELPER_ADDRESS)); assertEquals("Unexpected group name", _hostName, nodeData.get(BDBHAVirtualHostNode.GROUP_NAME)); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java index 34a18c884f..58fd8d73d0 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNode.java @@ -26,6 +26,6 @@ public interface JsonVirtualHostNode<X extends JsonVirtualHostNode<X>> extends o String STORE_PATH = "storePath"; - @ManagedAttribute(mandatory = true) + @ManagedAttribute(mandatory = true, defaultValue = "${qpid.work_dir}${file.separator}${this:name}${file.separator}config") String getStorePath(); } 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 74aedd14af..9f1f779559 100644 --- a/qpid/java/broker-core/src/main/resources/initial-config.json +++ b/qpid/java/broker-core/src/main/resources/initial-config.json @@ -55,9 +55,8 @@ "virtualhostnodes" : [ { "name" : "default", "type" : "JSON", - "storePath" : "${qpid.work_dir}${file.separator}default${file.separator}config", "context" : { - "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"storePath\" : \"${json:qpid.work_dir}${json:file.separator}default${json:file.separator}messages\" }" + "virtualhostBlueprint" : "{ \"type\" : \"DERBY\" }" } } ], "plugins" : [ { diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java index 9411d7906d..4935d5e707 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHost.java @@ -29,7 +29,7 @@ public interface DerbyVirtualHost<X extends DerbyVirtualHost<X>> extends Virtual { String STORE_PATH = "storePath"; - @ManagedAttribute(mandatory = true) + @ManagedAttribute(mandatory = true, defaultValue = "${qpid.work_dir}${file.separator}${this:name}${file.separator}messages") String getStorePath(); @ManagedAttribute(mandatory = true, defaultValue = "0") 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 3b31f4e7e0..81a9167924 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 @@ -26,6 +26,6 @@ public interface DerbyVirtualHostNode<X extends DerbyVirtualHostNode<X>> extends { String STORE_PATH = "storePath"; - @ManagedAttribute(mandatory = true) + @ManagedAttribute(mandatory = true, defaultValue = "${qpid.work_dir}${file.separator}${this:name}${file.separator}config") String getStorePath(); } diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/resources/virtualhostnode/derby/add.html b/qpid/java/broker-plugins/derby-store/src/main/java/resources/virtualhostnode/derby/add.html index fa4f0d64f1..0ec1e89c24 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/resources/virtualhostnode/derby/add.html +++ b/qpid/java/broker-plugins/derby-store/src/main/java/resources/virtualhostnode/derby/add.html @@ -20,15 +20,13 @@ --> <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter store path'" /> </div> </div> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/add.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/add.html index 7cf789e520..88ca0b3807 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/add.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/add.html @@ -19,15 +19,13 @@ <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Message store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Message store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHost.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter message store path'" /> </div> </div> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/edit.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/edit.html index 9e240a83c4..60b8faef56 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/edit.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhost/sizemonitoring/edit.html @@ -20,15 +20,13 @@ <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Message store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Message store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="editVirtualHost.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', disabled: true, title: 'Enter message store path'" /> </div> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/filebased/edit.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/filebased/edit.html index a132444268..2f0d72fe9a 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/filebased/edit.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/filebased/edit.html @@ -20,15 +20,13 @@ <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Configuration store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Configuration store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="editVirtualHostNode.storePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter configuration store path'" /> </div> </div> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/json/add.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/json/add.html index 622eb17b63..ec3ef79fa0 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/json/add.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/virtualhostnode/json/add.html @@ -20,15 +20,13 @@ --> <div> <div class="clear"> - <div class="formLabel-labelCell tableContainer-labelCell">Store path*:</div> + <div class="formLabel-labelCell tableContainer-labelCell">Store path:</div> <div class="formLabel-controlCell tableContainer-valueCell"> <input type="text" id="addVirtualHostNode.jsonStorePath" data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props=" name: 'storePath', placeHolder: 'path/to/store', - required: true, - missingMessage: 'Store path must be supplied', title: 'Enter store path'" /> </div> </div> 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 3e49f63cff..9569b90251 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 @@ -55,14 +55,33 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase public void testCreateAndDeleteVirtualHostNode() throws Exception { - String storeType = getTestProfileVirtualHostNodeType(); + String virtualhostNodeType = getTestProfileVirtualHostNodeType(); String nodeName = "virtualhostnode-" + getTestName(); File storePathAsFile = new File(getStoreLocation(nodeName)); - createAndDeleteVirtualHostNode(storeType, nodeName, storePathAsFile); + createAndDeleteVirtualHostNode(virtualhostNodeType, nodeName, storePathAsFile); assertFalse("Store should not exist after deletion", storePathAsFile.exists()); } + public void testCreateVirtualHostNodeWithDefaultStorePath() throws Exception + { + String virtualhostNodeType = getTestProfileVirtualHostNodeType(); + String nodeName = "virtualhostnode-" + getTestName(); + + createVirtualHostNode(nodeName, virtualhostNodeType); + + 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); + + List<Map<String, Object>> virtualHostNodes = getRestTestHelper().getJsonAsList(restUrl); + assertEquals("Host should be deleted", 0, virtualHostNodes.size()); + } + public void testRecoverVirtualHostNodeWithDesiredStateStopped() throws Exception { stopBroker(); @@ -149,7 +168,10 @@ 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(JsonVirtualHostNode.STORE_PATH, configStorePath); + if (configStorePath != null) + { + nodeData.put(JsonVirtualHostNode.STORE_PATH, configStorePath); + } getRestTestHelper().submitRequest("virtualhostnode/" + nodeName, "PUT", @@ -157,6 +179,11 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase HttpServletResponse.SC_CREATED); } + private void createVirtualHostNode(String nodeName, final String storeType) throws Exception + { + createVirtualHostNode(nodeName, null, storeType); + } + private String getStoreLocation(String hostName) { return new File(TMP_FOLDER, "store-" + hostName + "-" + System.currentTimeMillis()).getAbsolutePath(); 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 243b93e798..45cbee205d 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 @@ -20,7 +20,6 @@ */ package org.apache.qpid.systest.rest; -import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashMap; @@ -33,18 +32,18 @@ import javax.jms.Session; import javax.servlet.http.HttpServletResponse; import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHostImpl; -import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.VirtualHost; -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.virtualhost.AbstractVirtualHost; -import org.apache.qpid.util.FileUtils; +import org.apache.qpid.server.virtualhost.derby.DerbyVirtualHostImpl; +import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNodeImpl; +import org.apache.qpid.test.utils.TestBrokerConfiguration; public class VirtualHostRestTest extends QpidRestTestCase { @@ -52,8 +51,19 @@ public class VirtualHostRestTest extends QpidRestTestCase public static final String VIRTUALHOST_QUEUES_ATTRIBUTE = "queues"; public static final String VIRTUALHOST_CONNECTIONS_ATTRIBUTE = "connections"; + public static final String EMPTY_VIRTUALHOSTNODE_NAME = "emptyVHN"; + private AMQConnection _connection; + @Override + protected void customizeConfiguration() throws IOException + { + super.customizeConfiguration(); + + TestBrokerConfiguration config = getBrokerConfiguration(); + createTestVirtualHostNode(0, EMPTY_VIRTUALHOSTNODE_NAME, false); + } + public void testGet() throws Exception { List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("virtualhost"); @@ -106,27 +116,30 @@ public class VirtualHostRestTest extends QpidRestTestCase Asserts.assertConnection(connections.get(0), _connection); } - public void testPutCreateVirtualHostUsingProfileNodeType() throws Exception + public void testPutCreateProvidedVirtualHost() throws Exception { String hostName = getTestName(); - String virtualhostNodeType = getTestProfileVirtualHostNodeType(); - String storeLocation = createVirtualHostNodeAndVirtualHost(hostName, virtualhostNodeType); - try - { - // make sure that the host is saved in the broker store - restartBroker(); - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + hostName); - Asserts.assertVirtualHost(hostName, hostDetails); + createVirtualHost(hostName, ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE); - assertNewVirtualHost(hostDetails); - } - finally + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); + Asserts.assertVirtualHost(hostName, hostDetails); + + assertNewVirtualHost(hostDetails); + } + + public void testPutCreateVirtualHost() throws Exception + { + String hostName = getTestName(); + String vhnType = getTestProfileVirtualHostNodeType(); + if (JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE.equals(vhnType)) { - if (storeLocation != null) - { - FileUtils.delete(new File(storeLocation), true); - } + vhnType = DerbyVirtualHostImpl.VIRTUAL_HOST_TYPE; } + createVirtualHost(hostName, vhnType); + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); + Asserts.assertVirtualHost(hostName, hostDetails); + + assertNewVirtualHost(hostDetails); } public void testDeleteHost() throws Exception @@ -562,34 +575,17 @@ public class VirtualHostRestTest extends QpidRestTestCase return getRestTestHelper().submitRequest("queue/test/test/" + queueName, "PUT", queueData); } - private String createVirtualHostNodeAndVirtualHost(String virtualHostName, - String virtualHostNodeType) throws Exception + private void createVirtualHost(final String virtualHostName, + final String virtualHostType) throws IOException { - String storePath = getStoreLocation(virtualHostName); - - Map<String, Object> nodeData = new HashMap<>(); - nodeData.put(VirtualHostNode.NAME, virtualHostName); - nodeData.put(VirtualHostNode.TYPE, virtualHostNodeType); - nodeData.put(JsonVirtualHostNode.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, ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE); + virtualhostData.put(VirtualHost.TYPE, virtualHostType); - getRestTestHelper().submitRequest("virtualhost/" + virtualHostName + "/" + virtualHostName, + getRestTestHelper().submitRequest("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + virtualHostName, "PUT", virtualhostData, HttpServletResponse.SC_CREATED); - - - return storePath; - } - - private String getStoreLocation(String hostName) - { - return new File(TMP_FOLDER, "store-" + hostName + "-" + System.currentTimeMillis()).getAbsolutePath(); } private void assertNewVirtualHost(Map<String, Object> hostDetails) 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 82fcadfcf9..0f558f3abe 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 @@ -848,7 +848,7 @@ public class QpidBrokerTestCase extends QpidTestCase * @param brokerPort broker port * @param virtualHostNodeName virtual host node name */ - protected void createTestVirtualHostNode(int brokerPort, String virtualHostNodeName) + protected void createTestVirtualHostNode(int brokerPort, String virtualHostNodeName, boolean withBlueprint) { String storeType = getTestProfileVirtualHostNodeType(); String storeDir = null; @@ -871,15 +871,24 @@ public class QpidBrokerTestCase extends QpidTestCase attributes.put(JsonVirtualHostNode.STORE_PATH, storeDir); } - final String blueprint = getTestProfileVirtualHostNodeBlueprint(); + if (withBlueprint) + { + final String blueprint = getTestProfileVirtualHostNodeBlueprint(); - attributes.put(ConfiguredObject.CONTEXT, Collections.singletonMap(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, - blueprint)); + attributes.put(ConfiguredObject.CONTEXT, + Collections.singletonMap(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, + blueprint)); + } int port = getPort(brokerPort); getBrokerConfiguration(port).addObjectConfiguration(VirtualHostNode.class, attributes); } + protected void createTestVirtualHostNode(int brokerPort, String virtualHostNodeName) + { + createTestVirtualHostNode(brokerPort, virtualHostNodeName, true); + } + /** * Set a System property that is to be applied only to the external test * broker. diff --git a/qpid/java/test-profiles/JavaJsonExcludes b/qpid/java/test-profiles/JavaJsonExcludes index 1c4524987b..77b4e3d704 100644 --- a/qpid/java/test-profiles/JavaJsonExcludes +++ b/qpid/java/test-profiles/JavaJsonExcludes @@ -22,5 +22,5 @@ org.apache.qpid.server.store.berkeleydb.replication.* org.apache.qpid.server.store.SplitStoreTest#* org.apache.qpid.systest.rest.acl.VirtualHostACLTest#* org.apache.qpid.systest.rest.VirtualHostNodeRestTest#testCreateAndDeleteVirtualHostNode -org.apache.qpid.systest.rest.VirtualHostRestTest#testPutCreateVirtualHostUsingProfileNodeType +org.apache.qpid.systest.rest.VirtualHostRestTest#testPutCreateProvidedVirtualHost org.apache.qpid.server.BrokerStartupTest#testStartupWithNoConfig diff --git a/qpid/java/test-profiles/JavaTransientExcludes b/qpid/java/test-profiles/JavaTransientExcludes index 3bfeba92b3..70056d6968 100644 --- a/qpid/java/test-profiles/JavaTransientExcludes +++ b/qpid/java/test-profiles/JavaTransientExcludes @@ -55,7 +55,6 @@ 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.VirtualHostRestTest#testMutateStateOfVirtualHostWithQueuesAndMessages |
