summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
diff options
context:
space:
mode:
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.java113
1 files changed, 82 insertions, 31 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 224a22687f..4304b59d10 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
@@ -31,11 +31,13 @@ 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.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;
import static org.mockito.Mockito.mock;
@@ -49,6 +51,10 @@ public class JsonFileConfigStoreTest extends QpidTestCase
private VirtualHost _virtualHost;
private JsonFileConfigStore _store;
+
+ private static final UUID ANY_UUID = UUID.randomUUID();
+ private static final Map<String, Object> ANY_MAP = new HashMap<String, Object>();
+
@Override
public void setUp() throws Exception
{
@@ -109,7 +115,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
_store.configureConfigStore(_virtualHost, _recoveryHandler);
InOrder inorder = inOrder(_recoveryHandler);
inorder.verify(_recoveryHandler).beginConfigurationRecovery(eq(_store), eq(0));
- inorder.verify(_recoveryHandler,never()).configuredObject(any(UUID.class),anyString(),anyMap());
+ inorder.verify(_recoveryHandler,never()).configuredObject(any(ConfiguredObjectRecord.class));
inorder.verify(_recoveryHandler).completeConfigurationRecovery();
_store.close();
}
@@ -141,11 +147,11 @@ public class JsonFileConfigStoreTest extends QpidTestCase
final String queueType = Queue.class.getSimpleName();
final Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1");
- _store.create(queueId, queueType, queueAttr);
+ _store.create(new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr));
_store.close();
_store.configureConfigStore(_virtualHost, _recoveryHandler);
- verify(_recoveryHandler).configuredObject(eq(queueId), eq(queueType), eq(queueAttr));
+ verify(_recoveryHandler).configuredObject(matchesRecord(queueId, queueType, queueAttr));
_store.close();
}
@@ -156,17 +162,17 @@ public class JsonFileConfigStoreTest extends QpidTestCase
final String queueType = Queue.class.getSimpleName();
Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1");
- _store.create(queueId, queueType, queueAttr);
+ _store.create(new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr));
queueAttr = new HashMap<String,Object>(queueAttr);
queueAttr.put("owner", "theowner");
- _store.update(queueId, queueType, queueAttr);
+ _store.update(false, new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr));
_store.close();
_store.configureConfigStore(_virtualHost, _recoveryHandler);
- verify(_recoveryHandler).configuredObject(eq(queueId), eq(queueType), eq(queueAttr));
+ verify(_recoveryHandler).configuredObject(matchesRecord(queueId, queueType, queueAttr));
_store.close();
}
@@ -178,15 +184,16 @@ public class JsonFileConfigStoreTest extends QpidTestCase
final String queueType = Queue.class.getSimpleName();
Map<String,Object> queueAttr = Collections.singletonMap("name", (Object) "q1");
- _store.create(queueId, queueType, queueAttr);
+ final ConfiguredObjectRecordImpl record = new ConfiguredObjectRecordImpl(queueId, queueType, queueAttr);
+ _store.create(record);
- _store.remove(queueId, queueType);
+ _store.remove(record);
_store.close();
_store.configureConfigStore(_virtualHost, _recoveryHandler);
- verify(_recoveryHandler, never()).configuredObject(any(UUID.class), anyString(), anyMap());
+ verify(_recoveryHandler, never()).configuredObject(any(ConfiguredObjectRecord.class));
_store.close();
}
@@ -195,7 +202,7 @@ public class JsonFileConfigStoreTest extends QpidTestCase
_store.configureConfigStore(_virtualHost, _recoveryHandler);
try
{
- _store.create(UUID.randomUUID(), "wibble", Collections.<String, Object>emptyMap());
+ _store.create(new ConfiguredObjectRecordImpl(UUID.randomUUID(), "wibble", Collections.<String, Object>emptyMap()));
fail("Should not be able to create instance of type wibble");
}
catch (StoreException e)
@@ -208,10 +215,10 @@ public class JsonFileConfigStoreTest extends QpidTestCase
{
_store.configureConfigStore(_virtualHost, _recoveryHandler);
final UUID id = UUID.randomUUID();
- _store.create(id, "Queue", Collections.<String, Object>emptyMap());
+ _store.create(new ConfiguredObjectRecordImpl(id, "Queue", Collections.<String, Object>emptyMap()));
try
{
- _store.create(id, "Exchange", Collections.<String, Object>emptyMap());
+ _store.create(new ConfiguredObjectRecordImpl(id, "Exchange", Collections.<String, Object>emptyMap()));
fail("Should not be able to create two objects with same id");
}
catch (StoreException e)
@@ -225,13 +232,13 @@ public class JsonFileConfigStoreTest extends QpidTestCase
{
_store.configureConfigStore(_virtualHost, _recoveryHandler);
final UUID id = UUID.randomUUID();
- _store.create(id, "Queue", Collections.<String, Object>emptyMap());
+ _store.create(new ConfiguredObjectRecordImpl(id, "Queue", Collections.<String, Object>emptyMap()));
_store.close();
_store.configureConfigStore(_virtualHost, _recoveryHandler);
try
{
- _store.update(id, "Exchange", Collections.<String, Object>emptyMap());
+ _store.update(false, new ConfiguredObjectRecordImpl(id, "Exchange", Collections.<String, Object>emptyMap()));
fail("Should not be able to update object to different type");
}
catch (StoreException e)
@@ -270,31 +277,75 @@ public class JsonFileConfigStoreTest extends QpidTestCase
final Map<String, Object> EMPTY_ATTR = Collections.emptyMap();
final UUID exchangeId = new UUID(0, 2);
- final Map<String, Object> bindingAttributes = new HashMap<String, Object>();
- bindingAttributes.put(Binding.EXCHANGE, exchangeId);
- bindingAttributes.put(Binding.QUEUE, queueId);
- final Map<String, Object> binding2Attributes = new HashMap<String, Object>();
- binding2Attributes.put(Binding.EXCHANGE, exchangeId);
- binding2Attributes.put(Binding.QUEUE, queue2Id);
final UUID bindingId = new UUID(0, 3);
final UUID binding2Id = new UUID(1, 3);
- _store.create(queueId, "Queue", EMPTY_ATTR);
- _store.create(queue2Id, "Queue", EMPTY_ATTR);
- _store.create(exchangeId, "Exchange", EMPTY_ATTR);
- _store.update(true,
- new ConfiguredObjectRecord(bindingId, "Binding", bindingAttributes),
- new ConfiguredObjectRecord(binding2Id, "Binding", binding2Attributes));
+ final ConfiguredObjectRecordImpl queueRecord = new ConfiguredObjectRecordImpl(queueId, "Queue", EMPTY_ATTR);
+ _store.create(queueRecord);
+ final ConfiguredObjectRecordImpl queue2Record = new ConfiguredObjectRecordImpl(queue2Id, "Queue", EMPTY_ATTR);
+ _store.create(queue2Record);
+ final ConfiguredObjectRecordImpl exchangeRecord = new ConfiguredObjectRecordImpl(exchangeId, "Exchange", EMPTY_ATTR);
+ _store.create(exchangeRecord);
+ Map<String,ConfiguredObjectRecord> bindingParents = new HashMap<String, ConfiguredObjectRecord>();
+ bindingParents.put("Exchange", exchangeRecord);
+ bindingParents.put("Queue", queueRecord);
+ final ConfiguredObjectRecordImpl bindingRecord =
+ new ConfiguredObjectRecordImpl(bindingId, "Binding", EMPTY_ATTR, bindingParents);
+
+
+ Map<String,ConfiguredObjectRecord> binding2Parents = new HashMap<String, ConfiguredObjectRecord>();
+ binding2Parents.put("Exchange", exchangeRecord);
+ binding2Parents.put("Queue", queue2Record);
+ final ConfiguredObjectRecordImpl binding2Record =
+ new ConfiguredObjectRecordImpl(binding2Id, "Binding", EMPTY_ATTR, binding2Parents);
+ _store.update(true, bindingRecord, binding2Record);
_store.close();
_store.configureConfigStore(_virtualHost, _recoveryHandler);
- verify(_recoveryHandler).configuredObject(eq(queueId), eq("Queue"), eq(EMPTY_ATTR));
- verify(_recoveryHandler).configuredObject(eq(queue2Id), eq("Queue"), eq(EMPTY_ATTR));
- verify(_recoveryHandler).configuredObject(eq(exchangeId), eq("Exchange"), eq(EMPTY_ATTR));
- verify(_recoveryHandler).configuredObject(eq(bindingId),eq("Binding"), eq(bindingAttributes));
- verify(_recoveryHandler).configuredObject(eq(binding2Id),eq("Binding"), eq(binding2Attributes));
+ 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();
}
+ private ConfiguredObjectRecord matchesRecord(UUID id, String type, Map<String, Object> attributes)
+ {
+ return argThat(new ConfiguredObjectMatcher(id, type, attributes));
+ }
+
+ private static class ConfiguredObjectMatcher extends ArgumentMatcher<ConfiguredObjectRecord>
+ {
+ private final Map<String,Object> _matchingMap;
+ private final UUID _id;
+ private final String _name;
+
+ private ConfiguredObjectMatcher(final UUID id, final String type, final Map<String, Object> matchingMap)
+ {
+ _id = id;
+ _name = type;
+ _matchingMap = matchingMap;
+ }
+
+ @Override
+ public boolean matches(final Object argument)
+ {
+ if(argument instanceof ConfiguredObjectRecord)
+ {
+ ConfiguredObjectRecord binding = (ConfiguredObjectRecord) argument;
+
+ Map<String,Object> arg = new HashMap<String, Object>(binding.getAttributes());
+ arg.remove("createdBy");
+ arg.remove("createdTime");
+ return (_id == ANY_UUID || _id.equals(binding.getId()))
+ && _name.equals(binding.getType())
+ && (_matchingMap == ANY_MAP || arg.equals(_matchingMap));
+
+ }
+ return false;
+ }
+ }
+
}