Improve segmented journal actor metrics
[controller.git] / opendaylight / md-sal / eos-dom-akka / src / test / java / org / opendaylight / controller / eos / akka / ThreeNodeReachabilityTest.java
index 871bc005cc8531a5a8fac94d9d667b8231dec034..7699799ba235b19f5be67c66dfebfa23a0eb0bb9 100644 (file)
@@ -57,7 +57,6 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
         ActorTestKit.shutdown(node1.getActorSystem(), Duration.ofSeconds(20));
         ActorTestKit.shutdown(node2.getActorSystem(), Duration.ofSeconds(20));
 
-
         if (node3 != null) {
             ActorTestKit.shutdown(node3.getActorSystem(), Duration.ofSeconds(20));
         }
@@ -142,7 +141,7 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
         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);
@@ -152,14 +151,14 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
         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);
@@ -169,7 +168,7 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
         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);
@@ -224,6 +223,39 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
         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);
     }
@@ -233,7 +265,7 @@ public class ThreeNodeReachabilityTest extends AbstractNativeEosTest {
 
         // 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;