package org.opendaylight.controller.cluster.datastore.utils;
-
+import static org.junit.Assert.assertNotNull;
import akka.actor.ActorRef;
import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
public class MockActorContext extends ActorContext {
- private Object executeShardOperationResponse;
- private Object executeRemoteOperationResponse;
- private Object executeLocalOperationResponse;
+ private volatile Object executeShardOperationResponse;
+ private volatile Object executeRemoteOperationResponse;
+ private volatile Object executeLocalOperationResponse;
+ private volatile Object executeLocalShardOperationResponse;
+ private volatile Exception executeRemoteOperationFailure;
+ private volatile Object inputMessage;
public MockActorContext(ActorSystem actorSystem) {
- super(actorSystem, null, new MockConfiguration());
+ super(actorSystem, null, new MockClusterWrapper(), new MockConfiguration());
}
public MockActorContext(ActorSystem actorSystem, ActorRef shardManager) {
- super(actorSystem, shardManager, new MockConfiguration());
+ super(actorSystem, shardManager, new MockClusterWrapper(), new MockConfiguration());
}
executeRemoteOperationResponse = response;
}
+ public void setExecuteRemoteOperationFailure(Exception executeRemoteOperationFailure) {
+ this.executeRemoteOperationFailure = executeRemoteOperationFailure;
+ }
+
public void setExecuteLocalOperationResponse(
Object executeLocalOperationResponse) {
this.executeLocalOperationResponse = executeLocalOperationResponse;
}
+
+ public void setExecuteLocalShardOperationResponse(
+ Object executeLocalShardOperationResponse) {
+ this.executeLocalShardOperationResponse = executeLocalShardOperationResponse;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T getInputMessage(Class<T> expType) throws Exception {
+ assertNotNull("Input message was null", inputMessage);
+ return (T) expType.getMethod("fromSerializable", Object.class).invoke(null, inputMessage);
+ }
+
+ @Override
+ public Object executeLocalOperation(ActorRef actor,
+ Object message, FiniteDuration duration) {
+ return this.executeLocalOperationResponse;
+ }
+
+ @Override
+ public Object executeLocalShardOperation(String shardName,
+ Object message, FiniteDuration duration) {
+ return this.executeLocalShardOperationResponse;
+ }
}