X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmessagebus-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmessagebus%2Fapp%2Fimpl%2FNetconfEventSourceTest.java;h=ed9025780a949ab08ba900613a014e301f047a29;hp=73117c12bae74c25e51475ea6e03c5b121be4adb;hb=a7e57cf252c2a19a1acfbc23402eed634ae2ac5a;hpb=f3473ee42d45f1524dcafa6cc37e19e0393e9693 diff --git a/opendaylight/md-sal/messagebus-impl/src/test/java/org/opendaylight/controller/messagebus/app/impl/NetconfEventSourceTest.java b/opendaylight/md-sal/messagebus-impl/src/test/java/org/opendaylight/controller/messagebus/app/impl/NetconfEventSourceTest.java index 73117c12ba..ed9025780a 100644 --- a/opendaylight/md-sal/messagebus-impl/src/test/java/org/opendaylight/controller/messagebus/app/impl/NetconfEventSourceTest.java +++ b/opendaylight/md-sal/messagebus-impl/src/test/java/org/opendaylight/controller/messagebus/app/impl/NetconfEventSourceTest.java @@ -10,19 +10,19 @@ package org.opendaylight.controller.messagebus.app.impl; import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.BindingService; import org.opendaylight.controller.md.sal.binding.api.MountPoint; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMService; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.controller.md.sal.dom.api.DOMService; +import org.opendaylight.controller.messagebus.eventsources.netconf.NetconfEventSource; import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.NotificationPattern; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventsource.rev141202.JoinTopicInput; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.NotificationsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; @@ -33,28 +33,27 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.inventory.rev1 import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.common.QName; - import java.lang.reflect.Field; import java.net.URI; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; -import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; public class NetconfEventSourceTest { @@ -62,14 +61,10 @@ public class NetconfEventSourceTest { DOMMountPoint domMountPointMock; JoinTopicInput joinTopicInputMock; - @BeforeClass - public static void initTestClass() throws IllegalAccessException, InstantiationException { - } - @Before public void setUp() throws Exception { Map streamMap = new HashMap<>(); - streamMap.put("string1", "string2"); + streamMap.put("uriStr1", "string2"); domMountPointMock = mock(DOMMountPoint.class); DOMNotificationPublishService domNotificationPublishServiceMock = mock(DOMNotificationPublishService.class); MountPoint mountPointMock = mock(MountPoint.class); @@ -81,12 +76,56 @@ public class NetconfEventSourceTest { doReturn(onlyOptionalMock).when(mountPointMock).getService(RpcConsumerRegistry.class); doReturn(rpcConsumerRegistryMock).when(onlyOptionalMock).get(); doReturn(notificationsServiceMock).when(rpcConsumerRegistryMock).getRpcService(NotificationsService.class); - netconfEventSource = new NetconfEventSource("nodeId1", streamMap, domMountPointMock, domNotificationPublishServiceMock, mountPointMock); + org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node node + = mock(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node.class); + org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId nodeId + = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId("NodeId1"); + doReturn(nodeId).when(node).getNodeId(); + netconfEventSource = new NetconfEventSource(node, streamMap, domMountPointMock, domNotificationPublishServiceMock, mountPointMock); + } + + @Test + public void onDataChangedTest(){ + InstanceIdentifier brmIdent = InstanceIdentifier.create(Nodes.class) + .child(Node.class, new NodeKey(new NodeId("brm"))).augmentation(NetconfNode.class); + AsyncDataChangeEvent asyncDataChangeEventMock = mock(AsyncDataChangeEvent.class); + NetconfNode dataObjectMock = mock(NetconfNode.class); + Map dataChangeMap = new HashMap<>(); + dataChangeMap.put(brmIdent, dataObjectMock); + doReturn(dataChangeMap).when(asyncDataChangeEventMock).getOriginalData(); + doReturn(dataChangeMap).when(asyncDataChangeEventMock).getUpdatedData(); + doReturn(true).when(dataObjectMock).isConnected(); + netconfEventSource.onDataChanged(asyncDataChangeEventMock); + verify(dataObjectMock, times(2)).isConnected(); } @Test - public void constructorTest() { - assertNotNull("Instance has not been created correctly.", netconfEventSource); + public void onDataChangedResubscribeTest() throws Exception{ + + InstanceIdentifier brmIdent = InstanceIdentifier.create(Nodes.class) + .child(Node.class, new NodeKey(new NodeId("brm"))).augmentation(NetconfNode.class); + + AsyncDataChangeEvent asyncDataChangeEventMock = mock(AsyncDataChangeEvent.class); + NetconfNode dataObjectMock = mock(NetconfNode.class); + Map dataChangeMap = new HashMap<>(); + dataChangeMap.put(brmIdent, dataObjectMock); + doReturn(dataChangeMap).when(asyncDataChangeEventMock).getUpdatedData(); + doReturn(new HashMap()).when(asyncDataChangeEventMock).getOriginalData(); + doReturn(true).when(dataObjectMock).isConnected(); + + Set localSet = getActiveStreams(); + localSet.add("activeStream1"); + + Optional optionalMock = (Optional) mock(Optional.class); + doReturn(optionalMock).when(domMountPointMock).getService(DOMRpcService.class); + DOMRpcService domRpcServiceMock = mock(DOMRpcService.class); + doReturn(domRpcServiceMock).when(optionalMock).get(); + CheckedFuture checkedFutureMock = mock(CheckedFuture.class); + doReturn(checkedFutureMock).when(domRpcServiceMock).invokeRpc(any(SchemaPath.class), any(ContainerNode.class)); + + netconfEventSource.onDataChanged(asyncDataChangeEventMock); + verify(dataObjectMock, times(1)).isConnected(); + assertEquals("Size of set has not been set correctly.", 1, getActiveStreams().size()); } @Test @@ -97,9 +136,11 @@ public class NetconfEventSourceTest { private void joinTopicTestHelper() throws Exception{ joinTopicInputMock = mock(JoinTopicInput.class); + TopicId topicId = new TopicId("topicID007"); + doReturn(topicId).when(joinTopicInputMock).getTopicId(); NotificationPattern notificationPatternMock = mock(NotificationPattern.class); doReturn(notificationPatternMock).when(joinTopicInputMock).getNotificationPattern(); - doReturn("regexString1").when(notificationPatternMock).getValue(); + doReturn("uriStr1").when(notificationPatternMock).getValue(); SchemaContext schemaContextMock = mock(SchemaContext.class); doReturn(schemaContextMock).when(domMountPointMock).getSchemaContext(); @@ -121,48 +162,6 @@ public class NetconfEventSourceTest { doReturn(domNotificationServiceMock).when(domNotificationServiceOptionalMock).get(); ListenerRegistration listenerRegistrationMock = mock(ListenerRegistration.class); doReturn(listenerRegistrationMock).when(domNotificationServiceMock).registerNotificationListener(any(NetconfEventSource.class), any(List.class)); - } - - @Test (expected=NullPointerException.class) - public void onNotificationTest() { - DOMNotification domNotificationMock = mock(DOMNotification.class); - ContainerNode containerNodeMock = mock(ContainerNode.class); - SchemaContext schemaContextMock = mock(SchemaContext.class); - SchemaPath schemaPathMock = mock(SchemaPath.class); - doReturn(schemaContextMock).when(domMountPointMock).getSchemaContext(); - doReturn(schemaPathMock).when(domNotificationMock).getType(); - doReturn(containerNodeMock).when(domNotificationMock).getBody(); - netconfEventSource.onNotification(domNotificationMock); - } - - @Test - public void onDataChangedTest() { - InstanceIdentifier brmIdent = InstanceIdentifier.create(Nodes.class) - .child(Node.class, new NodeKey(new NodeId("brm"))).augmentation(NetconfNode.class); - AsyncDataChangeEvent asyncDataChangeEventMock = mock(AsyncDataChangeEvent.class); - NetconfNode dataObjectMock = mock(NetconfNode.class); - Map dataChangeMap = new HashMap<>(); - dataChangeMap.put(brmIdent, dataObjectMock); - doReturn(dataChangeMap).when(asyncDataChangeEventMock).getOriginalData(); - doReturn(dataChangeMap).when(asyncDataChangeEventMock).getUpdatedData(); - - netconfEventSource.onDataChanged(asyncDataChangeEventMock); - verify(dataObjectMock, times(2)).isConnected(); - } - - @Test - public void onDataChangedResubscribeTest() throws Exception{ - InstanceIdentifier brmIdent = InstanceIdentifier.create(Nodes.class) - .child(Node.class, new NodeKey(new NodeId("brm"))).augmentation(NetconfNode.class); - AsyncDataChangeEvent asyncDataChangeEventMock = mock(AsyncDataChangeEvent.class); - NetconfNode dataObjectMock = mock(NetconfNode.class); - Map dataChangeMap = new HashMap<>(); - dataChangeMap.put(brmIdent, dataObjectMock); - doReturn(dataChangeMap).when(asyncDataChangeEventMock).getUpdatedData(); - doReturn(true).when(dataObjectMock).isConnected(); - - Set localSet = getActiveStreams(); - localSet.add("activeStream1"); Optional optionalMock = (Optional) mock(Optional.class); doReturn(optionalMock).when(domMountPointMock).getService(DOMRpcService.class); @@ -170,16 +169,14 @@ public class NetconfEventSourceTest { doReturn(domRpcServiceMock).when(optionalMock).get(); CheckedFuture checkedFutureMock = mock(CheckedFuture.class); doReturn(checkedFutureMock).when(domRpcServiceMock).invokeRpc(any(SchemaPath.class), any(ContainerNode.class)); - - netconfEventSource.onDataChanged(asyncDataChangeEventMock); - verify(dataObjectMock, times(1)).isConnected(); - assertEquals("Size of set has not been set correctly.", 1, getActiveStreams().size()); } +//TODO: create Test for NetConfEventSource#onNotification + private Set getActiveStreams() throws Exception{ Field nesField = NetconfEventSource.class.getDeclaredField("activeStreams"); nesField.setAccessible(true); return (Set) nesField.get(netconfEventSource); } -} +} \ No newline at end of file