X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FActorContextTest.java;h=5874eccda40f4f2d08f6b829757206213a743696;hb=575cb53156868951bb1f11f0282c2e32d84e800a;hp=3dd0214e9b213c49a4821c303362f13eebe11371;hpb=83140d53722ad77dd804f7b4d761a673110b83b3;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java index 3dd0214e9b..5874eccda4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java @@ -2,12 +2,20 @@ package org.opendaylight.controller.cluster.datastore.utils; import akka.actor.ActorRef; import akka.actor.ActorSystem; +import akka.actor.Props; +import akka.actor.UntypedActor; +import akka.japi.Creator; +import akka.testkit.JavaTestKit; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.AbstractActorTest; import org.opendaylight.controller.cluster.datastore.ClusterWrapper; import org.opendaylight.controller.cluster.datastore.Configuration; +import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard; +import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound; +import org.opendaylight.controller.cluster.datastore.messages.LocalShardNotFound; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.mockito.Mockito.mock; public class ActorContextTest extends AbstractActorTest{ @@ -44,4 +52,145 @@ public class ActorContextTest extends AbstractActorTest{ System.out.println(actorContext .actorFor("akka://system/user/shardmanager/shard/transaction")); } + + + private static class MockShardManager extends UntypedActor { + + private final boolean found; + private final ActorRef actorRef; + + private MockShardManager(boolean found, ActorRef actorRef){ + + this.found = found; + this.actorRef = actorRef; + } + + @Override public void onReceive(Object message) throws Exception { + if(found){ + getSender().tell(new LocalShardFound(actorRef), getSelf()); + } else { + getSender().tell(new LocalShardNotFound(((FindLocalShard) message).getShardName()), getSelf()); + } + } + + private static Props props(final boolean found, final ActorRef actorRef){ + return Props.create(new Creator() { + + @Override public MockShardManager create() + throws Exception { + return new MockShardManager(found, + actorRef); + } + }); + } + } + + @Test + public void testExecuteLocalShardOperationWithShardFound(){ + new JavaTestKit(getSystem()) {{ + + new Within(duration("1 seconds")) { + protected void run() { + + ActorRef shardActorRef = getSystem().actorOf(Props.create(EchoActor.class)); + + ActorRef shardManagerActorRef = getSystem() + .actorOf(MockShardManager.props(true, shardActorRef)); + + ActorContext actorContext = + new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class), + mock(Configuration.class)); + + Object out = actorContext.executeLocalShardOperation("default", "hello", duration("1 seconds")); + + assertEquals("hello", out); + + + expectNoMsg(); + } + }; + }}; + + } + + @Test + public void testExecuteLocalShardOperationWithShardNotFound(){ + new JavaTestKit(getSystem()) {{ + + new Within(duration("1 seconds")) { + protected void run() { + + ActorRef shardManagerActorRef = getSystem() + .actorOf(MockShardManager.props(false, null)); + + ActorContext actorContext = + new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class), + mock(Configuration.class)); + + Object out = actorContext.executeLocalShardOperation("default", "hello", duration("1 seconds")); + + assertNull(out); + + + expectNoMsg(); + } + }; + }}; + + } + + + @Test + public void testFindLocalShardWithShardFound(){ + new JavaTestKit(getSystem()) {{ + + new Within(duration("1 seconds")) { + protected void run() { + + ActorRef shardActorRef = getSystem().actorOf(Props.create(EchoActor.class)); + + ActorRef shardManagerActorRef = getSystem() + .actorOf(MockShardManager.props(true, shardActorRef)); + + ActorContext actorContext = + new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class), + mock(Configuration.class)); + + Object out = actorContext.findLocalShard("default"); + + assertEquals(shardActorRef, out); + + + expectNoMsg(); + } + }; + }}; + + } + + @Test + public void testFindLocalShardWithShardNotFound(){ + new JavaTestKit(getSystem()) {{ + + new Within(duration("1 seconds")) { + protected void run() { + + ActorRef shardManagerActorRef = getSystem() + .actorOf(MockShardManager.props(false, null)); + + ActorContext actorContext = + new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class), + mock(Configuration.class)); + + Object out = actorContext.findLocalShard("default"); + + assertNull(out); + + + expectNoMsg(); + } + }; + }}; + + } }