X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardManagerTest.java;h=f164446897011ca7190f9e8a02fe9cf0d1127dec;hp=6f3946d42219ed963b0ed03da2448a675165cf12;hb=357eb2684de759f296d1315e587308db5f1c54d4;hpb=f1c3050779d7770ef6a12a67a1870765c3dfd9eb diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java index 6f3946d422..f164446897 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java @@ -23,6 +23,7 @@ import akka.actor.AddressFromURIString; import akka.actor.PoisonPill; import akka.actor.Props; import akka.actor.Status; +import akka.actor.Status.Failure; import akka.cluster.Cluster; import akka.cluster.ClusterEvent; import akka.dispatch.Dispatchers; @@ -44,9 +45,11 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.junit.After; @@ -68,6 +71,8 @@ import org.opendaylight.controller.cluster.datastore.messages.ActorInitialized; import org.opendaylight.controller.cluster.datastore.messages.AddShardReplica; import org.opendaylight.controller.cluster.datastore.messages.CreateShard; import org.opendaylight.controller.cluster.datastore.messages.CreateShardReply; +import org.opendaylight.controller.cluster.datastore.messages.DatastoreSnapshot; +import org.opendaylight.controller.cluster.datastore.messages.DatastoreSnapshot.ShardSnapshot; import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard; import org.opendaylight.controller.cluster.datastore.messages.FindPrimary; import org.opendaylight.controller.cluster.datastore.messages.LocalPrimaryShardFound; @@ -90,6 +95,7 @@ import org.opendaylight.controller.cluster.notifications.RoleChangeNotification; import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.base.messages.FollowerInitialSyncUpStatus; import org.opendaylight.controller.cluster.raft.base.messages.SwitchBehavior; +import org.opendaylight.controller.cluster.raft.client.messages.GetSnapshot; import org.opendaylight.controller.cluster.raft.messages.AddServer; import org.opendaylight.controller.cluster.raft.messages.AddServerReply; import org.opendaylight.controller.cluster.raft.messages.ServerChangeStatus; @@ -1136,6 +1142,46 @@ public class ShardManagerTest extends AbstractActorTest { }}; } + @Test + public void testGetSnapshot() throws Throwable { + JavaTestKit kit = new JavaTestKit(getSystem()); + + MockConfiguration mockConfig = new MockConfiguration(ImmutableMap.>builder(). + put("shard1", Arrays.asList("member-1")). + put("shard2", Arrays.asList("member-1")).build()); + + ActorRef shardManager = getSystem().actorOf(newShardMgrProps(mockConfig).withDispatcher( + Dispatchers.DefaultDispatcherId())); + + shardManager.tell(GetSnapshot.INSTANCE, kit.getRef()); + Failure failure = kit.expectMsgClass(Failure.class); + assertEquals("Failure cause type", IllegalStateException.class, failure.cause().getClass()); + + kit = new JavaTestKit(getSystem()); + + shardManager.tell(new UpdateSchemaContext(TestModel.createTestContext()), ActorRef.noSender()); + + shardManager.tell(new FindLocalShard("shard1", true), kit.getRef()); + kit.expectMsgClass(LocalShardFound.class); + shardManager.tell(new FindLocalShard("shard2", true), kit.getRef()); + kit.expectMsgClass(LocalShardFound.class); + + shardManager.tell(GetSnapshot.INSTANCE, kit.getRef()); + + DatastoreSnapshot datastoreSnapshot = kit.expectMsgClass(DatastoreSnapshot.class); + + assertEquals("getType", shardMrgIDSuffix, datastoreSnapshot.getType()); + List shardSnapshots = datastoreSnapshot.getShardSnapshots(); + Set actualShardNames = new HashSet<>(); + for(ShardSnapshot s: shardSnapshots) { + actualShardNames.add(s.getName()); + } + + assertEquals("Shard names", Sets.newHashSet("shard1", "shard2"), actualShardNames); + + shardManager.tell(PoisonPill.getInstance(), ActorRef.noSender()); + } + @Test public void testAddShardReplicaForNonExistentShard() throws Exception { new JavaTestKit(getSystem()) {{