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;
-import scala.concurrent.duration.FiniteDuration;
+import com.google.common.base.Optional;
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());
- }
-
-
- @Override public Object executeShardOperation(String shardName,
- Object message, FiniteDuration duration) {
- return executeShardOperationResponse;
+ super(actorSystem, shardManager, new MockClusterWrapper(), new MockConfiguration());
}
- @Override public Object executeRemoteOperation(ActorSelection actor,
- Object message, FiniteDuration duration) {
+ @Override public Object executeOperation(ActorSelection actor,
+ Object message) {
return executeRemoteOperationResponse;
}
- @Override public ActorSelection findPrimary(String shardName) {
- return null;
+ @Override public Optional<ActorSelection> findPrimaryShard(String shardName) {
+ return Optional.absent();
}
public void setExecuteShardOperationResponse(Object response){
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 executeOperation(ActorRef actor,
+ Object message) {
+ return this.executeLocalOperationResponse;
+ }
+
}