import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
import org.opendaylight.controller.cluster.raft.client.messages.GetOnDemandRaftState;
}
public void waitForMembersUp(String... otherMembers) {
- Set<String> otherMembersSet = Sets.newHashSet(otherMembers);
+ kit.waitForMembersUp(otherMembers);
+ }
+
+ public void waitForMemberDown(String member) {
Stopwatch sw = Stopwatch.createStarted();
while(sw.elapsed(TimeUnit.SECONDS) <= 10) {
CurrentClusterState state = Cluster.get(kit.getSystem()).state();
+ for(Member m: state.getUnreachable()) {
+ if(member.equals(m.getRoles().iterator().next())) {
+ return;
+ }
+ }
+
for(Member m: state.getMembers()) {
- if(m.status() == MemberStatus.up() && otherMembersSet.remove(m.getRoles().iterator().next()) &&
- otherMembersSet.isEmpty()) {
+ if(m.status() != MemberStatus.up() && member.equals(m.getRoles().iterator().next())) {
return;
}
}
Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
}
- fail("Member(s) " + otherMembersSet + " are not Up");
+ fail("Member " + member + " is now down");
}
public void cleanup() {
if(!cleanedUp) {
cleanedUp = true;
- kit.cleanup(configDataStore);
- kit.cleanup(operDataStore);
- kit.shutdownActorSystem(kit.getSystem(), Boolean.TRUE);
+ if (configDataStore != null) {
+ configDataStore.close();
+ }
+ if (operDataStore != null) {
+ operDataStore.close();
+ }
+
+ IntegrationTestKit.shutdownActorSystem(kit.getSystem(), Boolean.TRUE);
}
}
String... peerMemberNames) throws Exception {
final Set<String> peerIds = Sets.newHashSet();
for(String p: peerMemberNames) {
- peerIds.add(ShardIdentifier.builder().memberName(p).shardName(shardName).
- type(datastore.getActorContext().getDataStoreName()).build().toString());
+ peerIds.add(ShardIdentifier.create(shardName, MemberName.forName(p),
+ datastore.getActorContext().getDataStoreName()).toString());
}
- verifyRaftState(datastore, shardName, new RaftStateVerifier() {
- @Override
- public void verify(OnDemandRaftState raftState) {
- assertEquals("Peers for shard " + shardName, peerIds, raftState.getPeerAddresses().keySet());
- }
- });
+ verifyRaftState(datastore, shardName, raftState -> assertEquals("Peers for shard " + shardName, peerIds,
+ raftState.getPeerAddresses().keySet()));
}
public static void verifyNoShardPresent(DistributedDataStore datastore, String shardName) {
node.kit = new IntegrationTestKit(system, datastoreContextBuilder);
- String memberName = new ClusterWrapperImpl(system).getCurrentMemberName();
+ String memberName = new ClusterWrapperImpl(system).getCurrentMemberName().getName();
node.kit.getDatastoreContextBuilder().shardManagerPersistenceId("shard-manager-config-" + memberName);
node.configDataStore = node.kit.setupDistributedDataStore("config_" + testName, moduleShardsConfig,
true, schemaContext, waitForshardLeader);