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%2FDataChangeListenerTest.java;h=b39cc84ceff6943d045c7a609afcbb996e212b31;hp=fd610322201f1ffb168640d413f5afe0c8d743d7;hb=351a78c9840c5b98a478b91ffd50befad998eb0e;hpb=17d82f582a6bc13c78be3b19954ff8c021180e93 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java index fd61032220..b39cc84cef 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java @@ -6,6 +6,7 @@ import akka.testkit.JavaTestKit; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.messages.DataChanged; import org.opendaylight.controller.cluster.datastore.messages.DataChangedReply; +import org.opendaylight.controller.cluster.datastore.messages.EnableNotification; import org.opendaylight.controller.md.cluster.datastore.model.CompositeModel; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; @@ -23,9 +24,9 @@ import static org.junit.Assert.assertTrue; public class DataChangeListenerTest extends AbstractActorTest { private static class MockDataChangedEvent implements AsyncDataChangeEvent> { - Map> createdData = new HashMap(); - Map> updatedData = new HashMap(); - Map> originalData = new HashMap(); + Map> createdData = new HashMap<>(); + Map> updatedData = new HashMap<>(); + Map> originalData = new HashMap<>(); @@ -86,24 +87,30 @@ public class DataChangeListenerTest extends AbstractActorTest { } @Test - public void testDataChanged(){ + public void testDataChangedWhenNotificationsAreEnabled(){ new JavaTestKit(getSystem()) {{ final MockDataChangeListener listener = new MockDataChangeListener(); - final Props props = DataChangeListener.props(CompositeModel.createTestContext(),listener,CompositeModel.FAMILY_PATH ); + final Props props = DataChangeListener.props(listener); final ActorRef subject = - getSystem().actorOf(props, "testDataChanged"); + getSystem().actorOf(props, "testDataChangedNotificationsEnabled"); new Within(duration("1 seconds")) { + @Override protected void run() { + // Let the DataChangeListener know that notifications should + // be enabled + subject.tell(new EnableNotification(true), getRef()); + subject.tell( - new DataChanged(CompositeModel.createTestContext(),new MockDataChangedEvent()).toSerializable(), + new DataChanged(CompositeModel.createTestContext(),new MockDataChangedEvent()), getRef()); - final Boolean out = new ExpectMsg("dataChanged") { + final Boolean out = new ExpectMsg(duration("800 millis"), "dataChanged") { // do not put code outside this method, will run afterwards + @Override protected Boolean match(Object in) { - if (in.getClass().equals(DataChangedReply.SERIALIZABLE_CLASS)) { + if (in != null && in.getClass().equals(DataChangedReply.class)) { return true; } else { @@ -115,11 +122,31 @@ public class DataChangeListenerTest extends AbstractActorTest { assertTrue(out); assertTrue(listener.gotIt()); assertNotNull(listener.getChange().getCreatedData()); - // Will wait for the rest of the 3 seconds + expectNoMsg(); } + }; + }}; + } + @Test + public void testDataChangedWhenNotificationsAreDisabled(){ + new JavaTestKit(getSystem()) {{ + final MockDataChangeListener listener = new MockDataChangeListener(); + final Props props = DataChangeListener.props(listener); + final ActorRef subject = + getSystem().actorOf(props, "testDataChangedNotificationsDisabled"); + new Within(duration("1 seconds")) { + @Override + protected void run() { + + subject.tell( + new DataChanged(CompositeModel.createTestContext(),new MockDataChangedEvent()), + getRef()); + + expectNoMsg(); + } }; }}; }