ActorTestKit.shutdown(node1.getActorSystem(), Duration.ofSeconds(20));
ActorTestKit.shutdown(node2.getActorSystem(), Duration.ofSeconds(20));
-
if (node3 != null) {
ActorTestKit.shutdown(node3.getActorSystem(), Duration.ofSeconds(20));
}
verifyListenerState(secondEntityListener2, ENTITY_2, true, true, false);
verifyListenerState(secondEntityListener3, ENTITY_2, true, false, false);
- unreachableMember(node1, "member-2");
+ unreachableMember(node1, "member-2", DEFAULT_DATACENTER);
verifyListenerState(firstEntityListener1, ENTITY_1, true, true, false);
verifyListenerState(firstEntityListener2, ENTITY_1, true, false, true);
verifyListenerState(secondEntityListener2, ENTITY_2, true, false, true);
verifyListenerState(secondEntityListener3, ENTITY_2, true, false, false);
- unreachableMember(node1, "member-3");
+ unreachableMember(node1, "member-3", DEFAULT_DATACENTER);
verifyListenerState(firstEntityListener1, ENTITY_1, true, true, false);
verifyListenerState(firstEntityListener2, ENTITY_1, true, false, true);
verifyListenerState(firstEntityListener3, ENTITY_1, true, false, false);
- unregisterCandidates(node1, ENTITY_1, "member-1");
- unregisterCandidates(node1, ENTITY_2, "member-1");
+ unregisterCandidates(node1, ENTITY_1, "member-1", DEFAULT_DATACENTER);
+ unregisterCandidates(node1, ENTITY_2, "member-1", DEFAULT_DATACENTER);
verifyListenerState(firstEntityListener1, ENTITY_1, false, false, true);
verifyListenerState(firstEntityListener2, ENTITY_1, false, false, false);
verifyListenerState(secondEntityListener2, ENTITY_2, false, false, false);
verifyListenerState(secondEntityListener3, ENTITY_2, false, false, false);
- reachableMember(node1, "member-2");
+ reachableMember(node1, "member-2", DEFAULT_DATACENTER);
verifyListenerState(firstEntityListener1, ENTITY_1, true, false, false);
verifyListenerState(firstEntityListener2, ENTITY_1, true, true, false);
verifyListenerState(firstEntityListener3, ENTITY_1, true, false, false);
verifyListenerState(node1Listener, ENTITY_1, true, false, false);
}
+ @Test
+ public void testOwnerNotReassignedWhenOnlyCandidate() throws Exception {
+ startNode3();
+ final MockEntityOwnershipListener listener1 = registerListener(node1, ENTITY_1);
+ final MockEntityOwnershipListener listener2 = registerListener(node2, ENTITY_1);
+ verifyNoNotifications(listener1);
+ verifyNoNotifications(listener2);
+
+ registerCandidates(node3, ENTITY_1, "member-3");
+ waitUntillOwnerPresent(node1, ENTITY_1);
+
+ MockEntityOwnershipListener listener3 = registerListener(node3, ENTITY_1);
+ verifyListenerState(listener1, ENTITY_1, true, false, false);
+ verifyListenerState(listener3, ENTITY_1, true, true, false);
+
+ ActorTestKit.shutdown(node3.getActorSystem(), Duration.ofSeconds(20));
+
+ verifyListenerState(listener1, ENTITY_1, true, false, false);
+ verifyListenerState(listener2, ENTITY_1, true, false, false);
+
+ startNode3();
+ verifyListenerState(listener1, ENTITY_1, false, false, false);
+
+ listener3 = registerListener(node3, ENTITY_1);
+ verifyListenerState(listener3, ENTITY_1, false, false, false);
+
+ registerCandidates(node1, ENTITY_1, "member-1");
+
+ verifyListenerState(listener1, ENTITY_1, true, true, false);
+ verifyListenerState(listener3, ENTITY_1, true, false, false);
+
+ }
+
private void startNode3() throws Exception {
startNode3(3);
}
// need to wait until all nodes are ready
final Cluster cluster = Cluster.get(node2.getActorSystem());
- await().atMost(Duration.ofSeconds(20)).until(() -> {
+ await().atMost(Duration.ofSeconds(30)).until(() -> {
final List<Member> members = ImmutableList.copyOf(cluster.state().getMembers());
if (members.size() != membersPresent) {
return false;