diff options
Diffstat (limited to 'qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java')
-rw-r--r-- | qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java | 112 |
1 files changed, 61 insertions, 51 deletions
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java index 4304b59d10..1de24e371d 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java @@ -26,17 +26,16 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.util.ServerScopedRuntimeException; import org.apache.qpid.test.utils.QpidTestCase; +import org.apache.qpid.test.utils.TestFileUtils; +import org.apache.qpid.util.FileUtils; import org.mockito.ArgumentMatcher; import org.mockito.InOrder; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyMap; -import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.inOrder; @@ -48,8 +47,11 @@ import static org.mockito.Mockito.when; public class JsonFileConfigStoreTest extends QpidTestCase { private final ConfigurationRecoveryHandler _recoveryHandler = mock(ConfigurationRecoveryHandler.class); - private VirtualHost _virtualHost; + private JsonFileConfigStore _store; + private HashMap<String, Object> _configurationStoreSettings; + private ConfiguredObject<?> _virtualHost; + private File _storeLocation; private static final UUID ANY_UUID = UUID.randomUUID(); @@ -59,34 +61,35 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void setUp() throws Exception { super.setUp(); - removeStoreFile(); - _virtualHost = mock(VirtualHost.class); + + _virtualHost = mock(ConfiguredObject.class); when(_virtualHost.getName()).thenReturn(getName()); - when(_virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH)).thenReturn(TMP_FOLDER); + _storeLocation = TestFileUtils.createTestDirectory("json", true); + _configurationStoreSettings = new HashMap<String, Object>(); + _configurationStoreSettings.put(JsonFileConfigStore.STORE_TYPE, JsonFileConfigStore.TYPE); + _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, _storeLocation.getAbsolutePath()); _store = new JsonFileConfigStore(); } @Override public void tearDown() throws Exception { - removeStoreFile(); - } - - private void removeStoreFile() - { - File file = new File(TMP_FOLDER, getName() + ".json"); - if(file.exists()) + try + { + super.tearDown(); + } + finally { - file.delete(); + FileUtils.delete(_storeLocation, true); } } public void testNoStorePath() throws Exception { - when(_virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH)).thenReturn(null); + _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, null); try { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); fail("Store should not successfully configure if there is no path set"); } catch (ServerScopedRuntimeException e) @@ -98,10 +101,10 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testInvalidStorePath() throws Exception { - when(_virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH)).thenReturn(System.getProperty("file.separator")); + _configurationStoreSettings.put(JsonFileConfigStore.STORE_PATH, System.getProperty("file.separator")); try { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); fail("Store should not successfully configure if there is an invalid path set"); } catch (ServerScopedRuntimeException e) @@ -112,12 +115,13 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testStartFromNoStore() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); InOrder inorder = inOrder(_recoveryHandler); inorder.verify(_recoveryHandler).beginConfigurationRecovery(eq(_store), eq(0)); inorder.verify(_recoveryHandler,never()).configuredObject(any(ConfiguredObjectRecord.class)); inorder.verify(_recoveryHandler).completeConfigurationRecovery(); - _store.close(); + _store.closeConfigurationStore(); } public void testUpdatedConfigVersionIsRetained() throws Exception @@ -125,10 +129,12 @@ public class JsonFileConfigStoreTest extends QpidTestCase final int NEW_CONFIG_VERSION = 42; when(_recoveryHandler.completeConfigurationRecovery()).thenReturn(NEW_CONFIG_VERSION); - _store.configureConfigStore(_virtualHost, _recoveryHandler); - _store.close(); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); + _store.closeConfigurationStore(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); InOrder inorder = inOrder(_recoveryHandler); // first time the config version should be the initial version - 0 @@ -137,27 +143,28 @@ public class JsonFileConfigStoreTest extends QpidTestCase // second time the config version should be the updated version inorder.verify(_recoveryHandler).beginConfigurationRecovery(eq(_store), eq(NEW_CONFIG_VERSION)); - _store.close(); + _store.closeConfigurationStore(); } public void testCreateObject() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID queueId = new UUID(0, 1); final String queueType = Queue.class.getSimpleName(); final Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1"); _store.create(new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr)); - _store.close(); + _store.closeConfigurationStore(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); verify(_recoveryHandler).configuredObject(matchesRecord(queueId, queueType, queueAttr)); - _store.close(); + _store.closeConfigurationStore(); } public void testCreateAndUpdateObject() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID queueId = new UUID(0, 1); final String queueType = Queue.class.getSimpleName(); Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1"); @@ -169,17 +176,18 @@ public class JsonFileConfigStoreTest extends QpidTestCase queueAttr.put("owner", "theowner"); _store.update(false, new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr)); - _store.close(); + _store.closeConfigurationStore(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); verify(_recoveryHandler).configuredObject(matchesRecord(queueId, queueType, queueAttr)); - _store.close(); + _store.closeConfigurationStore(); } public void testCreateAndRemoveObject() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID queueId = new UUID(0, 1); final String queueType = Queue.class.getSimpleName(); Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1"); @@ -190,16 +198,17 @@ public class JsonFileConfigStoreTest extends QpidTestCase _store.remove(record); - _store.close(); + _store.closeConfigurationStore(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); verify(_recoveryHandler, never()).configuredObject(any(ConfiguredObjectRecord.class)); - _store.close(); + _store.closeConfigurationStore(); } public void testCreateUnknownObjectType() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); try { _store.create(new ConfiguredObjectRecordImpl(UUID.randomUUID(), "wibble", Collections.<String, Object>emptyMap())); @@ -213,7 +222,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testTwoObjectsWithSameId() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID id = UUID.randomUUID(); _store.create(new ConfiguredObjectRecordImpl(id, "Queue", Collections.<String, Object>emptyMap())); try @@ -230,11 +239,11 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testChangeTypeOfObject() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID id = UUID.randomUUID(); _store.create(new ConfiguredObjectRecordImpl(id, "Queue", Collections.<String, Object>emptyMap())); - _store.close(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.closeConfigurationStore(); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); try { @@ -249,21 +258,21 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testLockFileGuaranteesExclusiveAccess() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); JsonFileConfigStore secondStore = new JsonFileConfigStore(); try { - secondStore.configureConfigStore(_virtualHost, _recoveryHandler); + secondStore.openConfigurationStore(_virtualHost, _configurationStoreSettings); fail("Should not be able to open a second store with the same path"); } catch(ServerScopedRuntimeException e) { // pass } - _store.close(); - secondStore.configureConfigStore(_virtualHost, _recoveryHandler); + _store.closeConfigurationStore(); + secondStore.openConfigurationStore(_virtualHost, _configurationStoreSettings); } @@ -271,7 +280,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase public void testCreatedNestedObjects() throws Exception { - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); final UUID queueId = new UUID(0, 1); final UUID queue2Id = new UUID(1, 1); @@ -300,14 +309,15 @@ public class JsonFileConfigStoreTest extends QpidTestCase final ConfiguredObjectRecordImpl binding2Record = new ConfiguredObjectRecordImpl(binding2Id, "Binding", EMPTY_ATTR, binding2Parents); _store.update(true, bindingRecord, binding2Record); - _store.close(); - _store.configureConfigStore(_virtualHost, _recoveryHandler); + _store.closeConfigurationStore(); + _store.openConfigurationStore(_virtualHost, _configurationStoreSettings); + _store.recoverConfigurationStore(_recoveryHandler); verify(_recoveryHandler).configuredObject(matchesRecord(queueId, "Queue", EMPTY_ATTR)); verify(_recoveryHandler).configuredObject(matchesRecord(queue2Id, "Queue", EMPTY_ATTR)); verify(_recoveryHandler).configuredObject(matchesRecord(exchangeId, "Exchange", EMPTY_ATTR)); verify(_recoveryHandler).configuredObject(matchesRecord(bindingId, "Binding", EMPTY_ATTR)); verify(_recoveryHandler).configuredObject(matchesRecord(binding2Id, "Binding", EMPTY_ATTR)); - _store.close(); + _store.closeConfigurationStore(); } |