X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-cluster-admin-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fadmin%2FClusterAdminRpcServiceTest.java;h=9703ebc4873ea675c6940da9472f100d8311ced6;hp=6aebe06a23941b7ee0d0e756942956bdd390db28;hb=729e3f9606dae61f98bd0bca0cfb082c22e5b8d8;hpb=7e62b4a59f9e43bcd0585845f1aeb55c44199f27 diff --git a/opendaylight/md-sal/sal-cluster-admin-impl/src/test/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcServiceTest.java b/opendaylight/md-sal/sal-cluster-admin-impl/src/test/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcServiceTest.java index 6aebe06a23..9703ebc487 100644 --- a/opendaylight/md-sal/sal-cluster-admin-impl/src/test/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcServiceTest.java +++ b/opendaylight/md-sal/sal-cluster-admin-impl/src/test/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcServiceTest.java @@ -11,11 +11,11 @@ import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.opendaylight.controller.cluster.datastore.MemberNode.verifyNoShardPresent; @@ -26,7 +26,6 @@ import akka.actor.ActorRef; import akka.actor.PoisonPill; import akka.actor.Status.Success; import akka.cluster.Cluster; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -44,6 +43,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SerializationUtils; @@ -114,6 +114,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controll import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.member.voting.states.input.MemberVotingStateBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.shard.result.output.ShardResult; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.shard.result.output.ShardResultBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.shard.result.output.ShardResultKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -165,18 +166,18 @@ public class ClusterAdminRpcServiceTest { ImmutableMap map = ImmutableMap.of(snapshots.get(0).getType(), snapshots.get(0), snapshots.get(1).getType(), snapshots.get(1)); - verifyDatastoreSnapshot(node.configDataStore().getActorContext().getDataStoreName(), - map.get(node.configDataStore().getActorContext().getDataStoreName()), "cars", "people"); + verifyDatastoreSnapshot(node.configDataStore().getActorUtils().getDataStoreName(), + map.get(node.configDataStore().getActorUtils().getDataStoreName()), "cars", "people"); } finally { new File(fileName).delete(); } // Test failure by killing a shard. - node.configDataStore().getActorContext().getShardManager().tell(node.datastoreContextBuilder() + node.configDataStore().getActorUtils().getShardManager().tell(node.datastoreContextBuilder() .shardInitializationTimeout(200, TimeUnit.MILLISECONDS).build(), ActorRef.noSender()); - ActorRef carsShardActor = node.configDataStore().getActorContext().findLocalShard("cars").get(); + ActorRef carsShardActor = node.configDataStore().getActorUtils().findLocalShard("cars").get(); node.kit().watch(carsShardActor); carsShardActor.tell(PoisonPill.getInstance(), ActorRef.noSender()); node.kit().expectTerminated(carsShardActor); @@ -214,14 +215,14 @@ public class ClusterAdminRpcServiceTest { replicaNode2.kit().waitForMembersUp("member-1", "member-3"); replicaNode3.kit().waitForMembersUp("member-1", "member-2"); - final ActorRef shardManager1 = member1.configDataStore().getActorContext().getShardManager(); + final ActorRef shardManager1 = member1.configDataStore().getActorUtils().getShardManager(); shardManager1.tell(new PrefixShardCreated(new PrefixShardConfiguration( new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, CarsModel.BASE_PATH), "prefix", Collections.singleton(MEMBER_1))), ActorRef.noSender()); - member1.kit().waitUntilLeader(member1.configDataStore().getActorContext(), + member1.kit().waitUntilLeader(member1.configDataStore().getActorUtils(), ClusterUtils.getCleanShardName(CarsModel.BASE_PATH)); final InstanceIdentifier identifier = InstanceIdentifier.create(Cars.class); @@ -258,7 +259,7 @@ public class ClusterAdminRpcServiceTest { final MemberNode member1 = MemberNode.builder(memberNodes).akkaConfig("Member1").testName(name) .moduleShardsConfig(moduleShardsConfig).build(); - member1.kit().waitUntilLeader(member1.configDataStore().getActorContext(), "default"); + member1.kit().waitUntilLeader(member1.configDataStore().getActorUtils(), "default"); final RpcResult successResult = getShardRole(member1, Mockito.mock(BindingNormalizedNodeSerializer.class), "default"); @@ -270,14 +271,14 @@ public class ClusterAdminRpcServiceTest { verifyFailedRpcResult(failedResult); - final ActorRef shardManager1 = member1.configDataStore().getActorContext().getShardManager(); + final ActorRef shardManager1 = member1.configDataStore().getActorUtils().getShardManager(); shardManager1.tell(new PrefixShardCreated(new PrefixShardConfiguration( new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, CarsModel.BASE_PATH), "prefix", Collections.singleton(MEMBER_1))), ActorRef.noSender()); - member1.kit().waitUntilLeader(member1.configDataStore().getActorContext(), + member1.kit().waitUntilLeader(member1.configDataStore().getActorUtils(), ClusterUtils.getCleanShardName(CarsModel.BASE_PATH)); final InstanceIdentifier identifier = InstanceIdentifier.create(Cars.class); @@ -307,7 +308,7 @@ public class ClusterAdminRpcServiceTest { final MemberNode member1 = MemberNode.builder(memberNodes).akkaConfig("Member1").testName(name) .moduleShardsConfig(moduleShardsConfig).build(); - member1.kit().waitUntilLeader(member1.configDataStore().getActorContext(), "default"); + member1.kit().waitUntilLeader(member1.configDataStore().getActorUtils(), "default"); } @@ -389,8 +390,8 @@ public class ClusterAdminRpcServiceTest { // 2 ServerConfigurationPayload entries, the transaction payload entry plus a purge payload. RaftStateVerifier verifier = raftState -> { - assertEquals("Commit index", 3, raftState.getCommitIndex()); - assertEquals("Last applied index", 3, raftState.getLastApplied()); + assertEquals("Commit index", 4, raftState.getCommitIndex()); + assertEquals("Last applied index", 4, raftState.getLastApplied()); }; verifyRaftState(leaderNode1.configDataStore(), "cars", verifier); @@ -454,8 +455,8 @@ public class ClusterAdminRpcServiceTest { private static void readCarsNodeAndVerify(final AbstractDataStore readFromStore, final NormalizedNode expCarsNode) throws Exception { - java.util.Optional> optional = readFromStore.newReadOnlyTransaction() - .read(CarsModel.BASE_PATH).get(15, TimeUnit.SECONDS); + Optional> optional = readFromStore.newReadOnlyTransaction().read(CarsModel.BASE_PATH) + .get(15, TimeUnit.SECONDS); assertTrue("isPresent", optional.isPresent()); assertEquals("Data node", expCarsNode, optional.get()); } @@ -506,7 +507,7 @@ public class ClusterAdminRpcServiceTest { verifySuccessfulRpcResult(rpcResult); verifyRaftPeersPresent(memberNode.configDataStore(), shardName, peerMemberNames); - Optional optional = memberNode.configDataStore().getActorContext().findLocalShard(shardName); + Optional optional = memberNode.configDataStore().getActorUtils().findLocalShard(shardName); assertTrue("Replica shard not present", optional.isPresent()); } @@ -541,7 +542,7 @@ public class ClusterAdminRpcServiceTest { verifyRaftPeersPresent(memberNode.configDataStore(), shardName, peerMemberNames); - Optional optional = memberNode.operDataStore().getActorContext().findLocalShard(shardName); + Optional optional = memberNode.operDataStore().getActorUtils().findLocalShard(shardName); assertFalse("Oper shard present", optional.isPresent()); rpcResult = service.addShardReplica(new AddShardReplicaInputBuilder().setShardName(shardName) @@ -697,10 +698,10 @@ public class ClusterAdminRpcServiceTest { ModuleShardConfiguration petsModuleConfig = new ModuleShardConfiguration(URI.create("pets-ns"), "pets-module", "pets", null, Collections.singletonList(MEMBER_1)); - leaderNode1.configDataStore().getActorContext().getShardManager().tell( + leaderNode1.configDataStore().getActorUtils().getShardManager().tell( new CreateShard(petsModuleConfig, Shard.builder(), null), leaderNode1.kit().getRef()); leaderNode1.kit().expectMsgClass(Success.class); - leaderNode1.kit().waitUntilLeader(leaderNode1.configDataStore().getActorContext(), "pets"); + leaderNode1.kit().waitUntilLeader(leaderNode1.configDataStore().getActorUtils(), "pets"); MemberNode newReplicaNode2 = MemberNode.builder(memberNodes).akkaConfig("Member2").testName(name) .moduleShardsConfig(moduleShardsConfig).build(); @@ -708,11 +709,11 @@ public class ClusterAdminRpcServiceTest { leaderNode1.waitForMembersUp("member-2"); newReplicaNode2.waitForMembersUp("member-1"); - newReplicaNode2.configDataStore().getActorContext().getShardManager().tell( + newReplicaNode2.configDataStore().getActorUtils().getShardManager().tell( new CreateShard(petsModuleConfig, Shard.builder(), null), newReplicaNode2.kit().getRef()); newReplicaNode2.kit().expectMsgClass(Success.class); - newReplicaNode2.operDataStore().getActorContext().getShardManager().tell( + newReplicaNode2.operDataStore().getActorUtils().getShardManager().tell( new CreateShard(new ModuleShardConfiguration(URI.create("no-leader-ns"), "no-leader-module", "no-leader", null, Collections.singletonList(MEMBER_1)), @@ -762,15 +763,15 @@ public class ClusterAdminRpcServiceTest { ModuleShardConfiguration petsModuleConfig = new ModuleShardConfiguration(URI.create("pets-ns"), "pets-module", "pets", null, Arrays.asList(MEMBER_1, MEMBER_2, MEMBER_3)); - leaderNode1.configDataStore().getActorContext().getShardManager().tell( + leaderNode1.configDataStore().getActorUtils().getShardManager().tell( new CreateShard(petsModuleConfig, Shard.builder(), null), leaderNode1.kit().getRef()); leaderNode1.kit().expectMsgClass(Success.class); - replicaNode2.configDataStore().getActorContext().getShardManager().tell( + replicaNode2.configDataStore().getActorUtils().getShardManager().tell( new CreateShard(petsModuleConfig, Shard.builder(), null), replicaNode2.kit().getRef()); replicaNode2.kit().expectMsgClass(Success.class); - replicaNode3.configDataStore().getActorContext().getShardManager().tell( + replicaNode3.configDataStore().getActorUtils().getShardManager().tell( new CreateShard(petsModuleConfig, Shard.builder(), null), replicaNode3.kit().getRef()); replicaNode3.kit().expectMsgClass(Success.class); @@ -933,8 +934,8 @@ public class ClusterAdminRpcServiceTest { String moduleShardsConfig = "module-shards-member1-and-2-and-3.conf"; final MemberNode leaderNode1 = MemberNode.builder(memberNodes).akkaConfig("Member1").testName(name) - .moduleShardsConfig(moduleShardsConfig).datastoreContextBuilder( - DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(300).shardElectionTimeoutFactor(1)) + .moduleShardsConfig(moduleShardsConfig).datastoreContextBuilder(DatastoreContext.newBuilder() + .shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(10)) .build(); final MemberNode replicaNode2 = MemberNode.builder(memberNodes).akkaConfig("Member2").testName(name) @@ -971,13 +972,13 @@ public class ClusterAdminRpcServiceTest { // Leadership should have transferred to member 3 since it is the only remaining voting member. verifyRaftState(leaderNode1.configDataStore(), "cars", raftState -> { assertNotNull("Expected non-null leader Id", raftState.getLeader()); - assertTrue("Expected leader member-1. Actual: " + raftState.getLeader(), + assertTrue("Expected leader member-3. Actual: " + raftState.getLeader(), raftState.getLeader().contains("member-3")); }); verifyRaftState(leaderNode1.operDataStore(), "cars", raftState -> { assertNotNull("Expected non-null leader Id", raftState.getLeader()); - assertTrue("Expected leader member-1. Actual: " + raftState.getLeader(), + assertTrue("Expected leader member-3. Actual: " + raftState.getLeader(), raftState.getLeader().contains("member-3")); }); @@ -1173,16 +1174,16 @@ public class ClusterAdminRpcServiceTest { @SafeVarargs private static void verifyVotingStates(final AbstractDataStore datastore, final String shardName, final SimpleEntry... expStates) throws Exception { - String localMemberName = datastore.getActorContext().getCurrentMemberName().getName(); + String localMemberName = datastore.getActorUtils().getCurrentMemberName().getName(); Map expStateMap = new HashMap<>(); for (Entry e: expStates) { expStateMap.put(ShardIdentifier.create(shardName, MemberName.forName(e.getKey()), - datastore.getActorContext().getDataStoreName()).toString(), e.getValue()); + datastore.getActorUtils().getDataStoreName()).toString(), e.getValue()); } verifyRaftState(datastore, shardName, raftState -> { String localPeerId = ShardIdentifier.create(shardName, MemberName.forName(localMemberName), - datastore.getActorContext().getDataStoreName()).toString(); + datastore.getActorUtils().getDataStoreName()).toString(); assertEquals("Voting state for " + localPeerId, expStateMap.get(localPeerId), raftState.isVoting()); for (Entry e: raftState.getPeerVotingStates().entrySet()) { assertEquals("Voting state for " + e.getKey(), expStateMap.get(e.getKey()), e.getValue()); @@ -1190,18 +1191,19 @@ public class ClusterAdminRpcServiceTest { }); } - private static void verifyShardResults(final List shardResults, final ShardResult... expShardResults) { + private static void verifyShardResults(final Map shardResults, + final ShardResult... expShardResults) { Map expResultsMap = new HashMap<>(); for (ShardResult r: expShardResults) { expResultsMap.put(r.getShardName() + "-" + r.getDataStoreType(), r); } - for (ShardResult result: shardResults) { + for (ShardResult result: shardResults.values()) { ShardResult exp = expResultsMap.remove(result.getShardName() + "-" + result.getDataStoreType()); assertNotNull(String.format("Unexpected result for shard %s, type %s", result.getShardName(), result.getDataStoreType()), exp); - assertEquals("isSucceeded", exp.isSucceeded(), result.isSucceeded()); - if (exp.isSucceeded()) { + assertEquals("isSucceeded", exp.getSucceeded(), result.getSucceeded()); + if (exp.getSucceeded()) { assertNull("Expected null error message", result.getErrorMessage()); } else { assertNotNull("Expected error message", result.getErrorMessage());