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%2Fentityownership%2FEntityOwnershipListenerSupportTest.java;h=dc40f0fa9318424ebe32888c97b7516235de95ad;hp=9e41757be19d8c1e24ca8fe0e7e3a897d169ed8c;hb=7a602c554a1421ceb0da9f1ae297c17f705f663f;hpb=16263ee5c532e75ca6f14ed5fa9053a38694af14 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupportTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupportTest.java index 9e41757be1..dc40f0fa93 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupportTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupportTest.java @@ -14,21 +14,24 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; + import akka.actor.ActorContext; import akka.actor.ActorRef; import akka.actor.Props; import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; +import com.google.common.util.concurrent.Uninterruptibles; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.cluster.raft.TestActorFactory; import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; -import org.opendaylight.controller.md.sal.common.api.clustering.Entity; -import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipChange; -import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListener; +import org.opendaylight.mdsal.eos.dom.api.DOMEntity; +import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipChange; +import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import scala.collection.Iterator; @@ -60,20 +63,21 @@ public class EntityOwnershipListenerSupportTest extends AbstractEntityOwnershipT public void testNotifyEntityOwnershipListeners() { EntityOwnershipListenerSupport support = new EntityOwnershipListenerSupport(actorContext, "test"); - EntityOwnershipListener mockListener1 = mock(EntityOwnershipListener.class, "EntityOwnershipListener1"); - EntityOwnershipListener mockListener2 = mock(EntityOwnershipListener.class, "EntityOwnershipListener2"); - EntityOwnershipListener mockListener1_2 = mock(EntityOwnershipListener.class, "EntityOwnershipListener1_2"); + DOMEntityOwnershipListener mockListener1 = mock(DOMEntityOwnershipListener.class, "EntityOwnershipListener1"); + DOMEntityOwnershipListener mockListener2 = mock(DOMEntityOwnershipListener.class, "EntityOwnershipListener2"); + DOMEntityOwnershipListener mockListener12 = mock(DOMEntityOwnershipListener.class, + "EntityOwnershipListener1_2"); String entityType1 = "type1"; String entityType2 = "type2"; - Entity entity1 = new Entity(entityType1, YangInstanceIdentifier.of(QName.create("test", "id1"))); - Entity entity2 = new Entity(entityType2, YangInstanceIdentifier.of(QName.create("test", "id2"))); - Entity entity3 = new Entity("noListener", YangInstanceIdentifier.of(QName.create("test", "id5"))); + final DOMEntity entity1 = new DOMEntity(entityType1, YangInstanceIdentifier.of(QName.create("test", "id1"))); + final DOMEntity entity2 = new DOMEntity(entityType2, YangInstanceIdentifier.of(QName.create("test", "id2"))); + final DOMEntity entity3 = new DOMEntity("noListener", YangInstanceIdentifier.of(QName.create("test", "id5"))); // Add EntityOwnershipListener registrations. support.addEntityOwnershipListener(entityType1, mockListener1); support.addEntityOwnershipListener(entityType1, mockListener1); // register again - should be noop - support.addEntityOwnershipListener(entityType1, mockListener1_2); + support.addEntityOwnershipListener(entityType1, mockListener12); support.addEntityOwnershipListener(entityType2, mockListener2); // Notify entity1 changed and verify appropriate listeners are notified. @@ -81,29 +85,32 @@ public class EntityOwnershipListenerSupportTest extends AbstractEntityOwnershipT support.notifyEntityOwnershipListeners(entity1, false, true, true); verify(mockListener1, timeout(5000)).ownershipChanged(ownershipChange(entity1, false, true, true)); - verify(mockListener1_2, timeout(5000)).ownershipChanged(ownershipChange(entity1, false, true, true)); - verify(mockListener2, timeout(300).never()).ownershipChanged(any(EntityOwnershipChange.class)); + verify(mockListener12, timeout(5000)).ownershipChanged(ownershipChange(entity1, false, true, true)); + Uninterruptibles.sleepUninterruptibly(300, TimeUnit.MILLISECONDS); + verify(mockListener2, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); assertEquals("# of listener actors", 2, actorContext.children().size()); - reset(mockListener1, mockListener2, mockListener1_2); + reset(mockListener1, mockListener2, mockListener12); // Notify entity2 changed and verify appropriate listeners are notified. support.notifyEntityOwnershipListeners(entity2, false, true, true); verify(mockListener2, timeout(5000)).ownershipChanged(ownershipChange(entity2, false, true, true)); - verify(mockListener1, timeout(300).never()).ownershipChanged(any(EntityOwnershipChange.class)); - verify(mockListener1_2, never()).ownershipChanged(any(EntityOwnershipChange.class)); + Uninterruptibles.sleepUninterruptibly(300, TimeUnit.MILLISECONDS); + verify(mockListener1, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + verify(mockListener12, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); assertEquals("# of listener actors", 3, actorContext.children().size()); - reset(mockListener1, mockListener2, mockListener1_2); + reset(mockListener1, mockListener2, mockListener12); // Notify entity3 changed and verify no listeners are notified. support.notifyEntityOwnershipListeners(entity3, true, false, true); - verify(mockListener1, timeout(300).never()).ownershipChanged(any(EntityOwnershipChange.class)); - verify(mockListener2, never()).ownershipChanged(any(EntityOwnershipChange.class)); - verify(mockListener1_2, never()).ownershipChanged(any(EntityOwnershipChange.class)); - reset(mockListener1, mockListener2, mockListener1_2); + Uninterruptibles.sleepUninterruptibly(300, TimeUnit.MILLISECONDS); + verify(mockListener1, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + verify(mockListener2, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + verify(mockListener12, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + reset(mockListener1, mockListener2, mockListener12); Iterable listenerActors = actorContext.children(); assertEquals("# of listener actors", 3, listenerActors.size()); @@ -113,25 +120,26 @@ public class EntityOwnershipListenerSupportTest extends AbstractEntityOwnershipT support.removeEntityOwnershipListener(entityType1, mockListener1); support.notifyEntityOwnershipListeners(entity1, true, false, true); - verify(mockListener1_2, timeout(5000)).ownershipChanged(ownershipChange(entity1, true, false, true)); - verify(mockListener1, timeout(300).never()).ownershipChanged(any(EntityOwnershipChange.class)); - reset(mockListener1, mockListener2, mockListener1_2); + verify(mockListener12, timeout(5000)).ownershipChanged(ownershipChange(entity1, true, false, true)); + Uninterruptibles.sleepUninterruptibly(300, TimeUnit.MILLISECONDS); + verify(mockListener1, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + reset(mockListener1, mockListener2, mockListener12); // Unregister all listeners and verify their listener actors are destroyed. List watchers = new ArrayList<>(); - for(Iterator iter = listenerActors.iterator(); iter.hasNext();) { + for (Iterator iter = listenerActors.iterator(); iter.hasNext();) { JavaTestKit kit = new JavaTestKit(getSystem()); kit.watch(iter.next()); watchers.add(kit); } - support.removeEntityOwnershipListener(entityType1, mockListener1_2); - support.removeEntityOwnershipListener(entityType1, mockListener1_2); // un-register again - should be noop + support.removeEntityOwnershipListener(entityType1, mockListener12); + support.removeEntityOwnershipListener(entityType1, mockListener12); // un-register again - should be noop support.removeEntityOwnershipListener(entityType2, mockListener2); Iterator iter = listenerActors.iterator(); - for(JavaTestKit kit: watchers) { + for (JavaTestKit kit: watchers) { kit.expectTerminated(JavaTestKit.duration("3 seconds"), iter.next()); } @@ -145,33 +153,12 @@ public class EntityOwnershipListenerSupportTest extends AbstractEntityOwnershipT support.notifyEntityOwnershipListeners(entity1, false, false, true); verify(mockListener1, timeout(5000)).ownershipChanged(ownershipChange(entity1, false, false, true)); - verify(mockListener1_2, never()).ownershipChanged(any(EntityOwnershipChange.class)); - verify(mockListener2, never()).ownershipChanged(any(EntityOwnershipChange.class)); + verify(mockListener12, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); + verify(mockListener2, never()).ownershipChanged(any(DOMEntityOwnershipChange.class)); // Quickly register and unregister mockListener2 - expecting no exceptions. support.addEntityOwnershipListener(entityType1, mockListener2); support.removeEntityOwnershipListener(entityType1, mockListener2); } - - @Test - public void testHasCandidateForEntity() { - EntityOwnershipListenerSupport support = new EntityOwnershipListenerSupport(actorContext, "test"); - Entity entity = new Entity("type", YangInstanceIdentifier.of(QName.create("test", "id"))); - - assertEquals("hasCandidateForEntity", false, support.hasCandidateForEntity(entity)); - - support.setHasCandidateForEntity(entity); - support.setHasCandidateForEntity(entity); // set again - should be noop - assertEquals("hasCandidateForEntity", true, support.hasCandidateForEntity(entity)); - - support.unsetHasCandidateForEntity(entity); - assertEquals("hasCandidateForEntity", false, support.hasCandidateForEntity(entity)); - - support.unsetHasCandidateForEntity(entity); // unset again - should be noop - assertEquals("hasCandidateForEntity", false, support.hasCandidateForEntity(entity)); - - support.setHasCandidateForEntity(entity); - assertEquals("hasCandidateForEntity", true, support.hasCandidateForEntity(entity)); - } }