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%2FDataTreeChangeListenerActorTest.java;h=a71d99e055380d4acfaf1290d4d4f444ecd91eec;hp=37a6197dd8170d76ea4800c858bac69b5f2b5baa;hb=2fd1fa721510a30f58b3bc277deb05fce58badd6;hpb=6fdcecdc2ecc9f8489de7c72f0709d28b6a1da87 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerActorTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerActorTest.java index 37a6197dd8..a71d99e055 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerActorTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerActorTest.java @@ -7,134 +7,130 @@ */ package org.opendaylight.controller.cluster.datastore; +import static org.junit.Assert.assertFalse; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.TEST_PATH; + import akka.actor.ActorRef; import akka.actor.DeadLetter; import akka.actor.Props; -import akka.testkit.JavaTestKit; +import akka.testkit.javadsl.TestKit; import com.google.common.collect.ImmutableList; -import org.junit.Assert; +import java.time.Duration; +import org.junit.Before; import org.junit.Test; -import org.mockito.Matchers; -import org.mockito.Mockito; import org.opendaylight.controller.cluster.datastore.messages.DataTreeChanged; import org.opendaylight.controller.cluster.datastore.messages.DataTreeChangedReply; import org.opendaylight.controller.cluster.datastore.messages.EnableNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; +import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; public class DataTreeChangeListenerActorTest extends AbstractActorTest { + private TestKit testKit; + + @Before + public void before() { + testKit = new TestKit(getSystem()); + } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void testDataChangedWhenNotificationsAreEnabled(){ - new JavaTestKit(getSystem()) {{ - final DataTreeCandidate mockTreeCandidate = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); - final DOMDataTreeChangeListener mockListener = Mockito.mock(DOMDataTreeChangeListener.class); - final Props props = DataTreeChangeListenerActor.props(mockListener); - final ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedNotificationsEnabled"); + public void testDataChangedWhenNotificationsAreEnabled() { + final DataTreeCandidate mockTreeCandidate = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); + final DOMDataTreeChangeListener mockListener = mock(DOMDataTreeChangeListener.class); + final Props props = DataTreeChangeListenerActor.props(mockListener, TEST_PATH); + final ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedNotificationsEnabled"); - // Let the DataChangeListener know that notifications should be enabled - subject.tell(new EnableNotification(true), getRef()); + // Let the DataChangeListener know that notifications should be + // enabled + subject.tell(new EnableNotification(true, "test"), testKit.getRef()); - subject.tell(new DataTreeChanged(mockCandidates), - getRef()); + subject.tell(new DataTreeChanged(mockCandidates), testKit.getRef()); - expectMsgClass(DataTreeChangedReply.class); + testKit.expectMsgClass(DataTreeChangedReply.class); - Mockito.verify(mockListener).onDataTreeChanged(mockCandidates); - }}; + verify(mockListener).onDataTreeChanged(mockCandidates); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void testDataChangedWhenNotificationsAreDisabled(){ - new JavaTestKit(getSystem()) {{ - final DataTreeCandidate mockTreeCandidate = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); - final DOMDataTreeChangeListener mockListener = Mockito.mock(DOMDataTreeChangeListener.class); - final Props props = DataTreeChangeListenerActor.props(mockListener); - final ActorRef subject = - getSystem().actorOf(props, "testDataTreeChangedNotificationsDisabled"); - - subject.tell(new DataTreeChanged(mockCandidates), - getRef()); - - new Within(duration("1 seconds")) { - @Override - protected void run() { - expectNoMsg(); - - Mockito.verify(mockListener, Mockito.never()).onDataTreeChanged( - Matchers.anyCollectionOf(DataTreeCandidate.class)); - } - }; - }}; + public void testDataChangedWhenNotificationsAreDisabled() { + final DataTreeCandidate mockTreeCandidate = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); + final DOMDataTreeChangeListener mockListener = mock(DOMDataTreeChangeListener.class); + final Props props = DataTreeChangeListenerActor.props(mockListener, TEST_PATH); + final ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedNotificationsDisabled"); + + subject.tell(new DataTreeChanged(mockCandidates), testKit.getRef()); + + testKit.within(Duration.ofSeconds(1), () -> { + testKit.expectNoMessage(); + verify(mockListener, never()).onDataTreeChanged(anyCollection()); + return null; + }); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void testDataChangedWithNoSender(){ - new JavaTestKit(getSystem()) {{ - final DataTreeCandidate mockTreeCandidate = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); - final DOMDataTreeChangeListener mockListener = Mockito.mock(DOMDataTreeChangeListener.class); - final Props props = DataTreeChangeListenerActor.props(mockListener); - final ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedWithNoSender"); - - getSystem().eventStream().subscribe(getRef(), DeadLetter.class); - - subject.tell(new DataTreeChanged(mockCandidates), ActorRef.noSender()); - - // Make sure no DataChangedReply is sent to DeadLetters. - while(true) { - DeadLetter deadLetter; - try { - deadLetter = expectMsgClass(duration("1 seconds"), DeadLetter.class); - } catch (AssertionError e) { - // Timed out - got no DeadLetter - this is good - break; - } - - // We may get DeadLetters for other messages we don't care about. - Assert.assertFalse("Unexpected DataTreeChangedReply", - deadLetter.message() instanceof DataTreeChangedReply); + public void testDataChangedWithNoSender() { + final DataTreeCandidate mockTreeCandidate = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates = ImmutableList.of(mockTreeCandidate); + final DOMDataTreeChangeListener mockListener = mock(DOMDataTreeChangeListener.class); + final Props props = DataTreeChangeListenerActor.props(mockListener, TEST_PATH); + final ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedWithNoSender"); + + getSystem().eventStream().subscribe(testKit.getRef(), DeadLetter.class); + + subject.tell(new DataTreeChanged(mockCandidates), ActorRef.noSender()); + + // Make sure no DataChangedReply is sent to DeadLetters. + while (true) { + DeadLetter deadLetter; + try { + deadLetter = testKit.expectMsgClass(Duration.ofSeconds(1), DeadLetter.class); + } catch (AssertionError e) { + // Timed out - got no DeadLetter - this is good + break; } - }}; + + // We may get DeadLetters for other messages we don't care + // about. + assertFalse("Unexpected DataTreeChangedReply", deadLetter.message() instanceof DataTreeChangedReply); + } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void testDataChangedWithListenerRuntimeEx(){ - new JavaTestKit(getSystem()) {{ - final DataTreeCandidate mockTreeCandidate1 = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates1 = ImmutableList.of(mockTreeCandidate1); - final DataTreeCandidate mockTreeCandidate2 = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates2 = ImmutableList.of(mockTreeCandidate2); - final DataTreeCandidate mockTreeCandidate3 = Mockito.mock(DataTreeCandidate.class); - final ImmutableList mockCandidates3 = ImmutableList.of(mockTreeCandidate3); + public void testDataChangedWithListenerRuntimeEx() { + final DataTreeCandidate mockTreeCandidate1 = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates1 = ImmutableList.of(mockTreeCandidate1); + final DataTreeCandidate mockTreeCandidate2 = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates2 = ImmutableList.of(mockTreeCandidate2); + final DataTreeCandidate mockTreeCandidate3 = mock(DataTreeCandidate.class); + final ImmutableList mockCandidates3 = ImmutableList.of(mockTreeCandidate3); - final DOMDataTreeChangeListener mockListener = Mockito.mock(DOMDataTreeChangeListener.class); - Mockito.doThrow(new RuntimeException("mock")).when(mockListener).onDataTreeChanged(mockCandidates2); + final DOMDataTreeChangeListener mockListener = mock(DOMDataTreeChangeListener.class); + doThrow(new RuntimeException("mock")).when(mockListener).onDataTreeChanged(mockCandidates2); - Props props = DataTreeChangeListenerActor.props(mockListener); - ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedWithListenerRuntimeEx"); + Props props = DataTreeChangeListenerActor.props(mockListener, TEST_PATH); + ActorRef subject = getSystem().actorOf(props, "testDataTreeChangedWithListenerRuntimeEx"); - // Let the DataChangeListener know that notifications should be enabled - subject.tell(new EnableNotification(true), getRef()); + // Let the DataChangeListener know that notifications should be + // enabled + subject.tell(new EnableNotification(true, "test"), testKit.getRef()); - subject.tell(new DataTreeChanged(mockCandidates1),getRef()); - expectMsgClass(DataTreeChangedReply.class); + subject.tell(new DataTreeChanged(mockCandidates1), testKit.getRef()); + testKit.expectMsgClass(DataTreeChangedReply.class); - subject.tell(new DataTreeChanged(mockCandidates2),getRef()); - expectMsgClass(DataTreeChangedReply.class); + subject.tell(new DataTreeChanged(mockCandidates2), testKit.getRef()); + testKit.expectMsgClass(DataTreeChangedReply.class); - subject.tell(new DataTreeChanged(mockCandidates3),getRef()); - expectMsgClass(DataTreeChangedReply.class); + subject.tell(new DataTreeChanged(mockCandidates3), testKit.getRef()); + testKit.expectMsgClass(DataTreeChangedReply.class); - Mockito.verify(mockListener).onDataTreeChanged(mockCandidates1); - Mockito.verify(mockListener).onDataTreeChanged(mockCandidates2); - Mockito.verify(mockListener).onDataTreeChanged(mockCandidates3); - }}; + verify(mockListener).onDataTreeChanged(mockCandidates1); + verify(mockListener).onDataTreeChanged(mockCandidates2); + verify(mockListener).onDataTreeChanged(mockCandidates3); } }