X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmessagebus-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmessagebus%2Fapp%2Fimpl%2FNetconfEventSourceTest.java;h=58da9e3eb13dfe54ec3eb41f74b12f8681b8d95b;hb=fe45ad923c8cf83d730cf4d576c310967afabdf3;hp=73117c12bae74c25e51475ea6e03c5b121be4adb;hpb=f84f3b8fb24b1ee2074fbbb3f5c64e3ba3191e3e;p=controller.git 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..58da9e3eb1 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 @@ -7,22 +7,36 @@ */ package org.opendaylight.controller.messagebus.app.impl; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; +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.times; +import static org.mockito.Mockito.verify; + +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 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,38 +47,22 @@ 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.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 com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; public class NetconfEventSourceTest { NetconfEventSource netconfEventSource; DOMMountPoint domMountPointMock; JoinTopicInput joinTopicInputMock; - - @BeforeClass - public static void initTestClass() throws IllegalAccessException, InstantiationException { - } + AsyncDataChangeEvent asyncDataChangeEventMock; + Node dataObjectMock; @Before public void setUp() throws Exception { @@ -81,62 +79,16 @@ 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); - } - - @Test - public void constructorTest() { - assertNotNull("Instance has not been created correctly.", netconfEventSource); - } - - @Test - public void joinTopicTest() throws Exception{ - joinTopicTestHelper(); - assertNotNull("JoinTopic return value has not been created correctly.", netconfEventSource.joinTopic(joinTopicInputMock)); - } - - private void joinTopicTestHelper() throws Exception{ - joinTopicInputMock = mock(JoinTopicInput.class); - NotificationPattern notificationPatternMock = mock(NotificationPattern.class); - doReturn(notificationPatternMock).when(joinTopicInputMock).getNotificationPattern(); - doReturn("regexString1").when(notificationPatternMock).getValue(); - - SchemaContext schemaContextMock = mock(SchemaContext.class); - doReturn(schemaContextMock).when(domMountPointMock).getSchemaContext(); - Set notificationDefinitionSet = new HashSet<>(); - NotificationDefinition notificationDefinitionMock = mock(NotificationDefinition.class); - notificationDefinitionSet.add(notificationDefinitionMock); - - URI uri = new URI("uriStr1"); - QName qName = new QName(uri, "localName1"); - org.opendaylight.yangtools.yang.model.api.SchemaPath schemaPath = SchemaPath.create(true, qName); - doReturn(notificationDefinitionSet).when(schemaContextMock).getNotifications(); - doReturn(schemaPath).when(notificationDefinitionMock).getPath(); - - Optional domNotificationServiceOptionalMock = (Optional) mock(Optional.class); - doReturn(domNotificationServiceOptionalMock).when(domMountPointMock).getService(DOMNotificationService.class); - doReturn(true).when(domNotificationServiceOptionalMock).isPresent(); - - DOMNotificationService domNotificationServiceMock = mock(DOMNotificationService.class); - 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); + 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() { + 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); @@ -145,20 +97,23 @@ public class NetconfEventSourceTest { 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 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(); @@ -176,6 +131,44 @@ public class NetconfEventSourceTest { assertEquals("Size of set has not been set correctly.", 1, getActiveStreams().size()); } + @Test + public void joinTopicTest() throws Exception{ + joinTopicTestHelper(); + assertNotNull("JoinTopic return value has not been created correctly.", netconfEventSource.joinTopic(joinTopicInputMock)); + } + + 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(); + + SchemaContext schemaContextMock = mock(SchemaContext.class); + doReturn(schemaContextMock).when(domMountPointMock).getSchemaContext(); + Set notificationDefinitionSet = new HashSet<>(); + NotificationDefinition notificationDefinitionMock = mock(NotificationDefinition.class); + notificationDefinitionSet.add(notificationDefinitionMock); + + URI uri = new URI("uriStr1"); + QName qName = new QName(uri, "localName1"); + org.opendaylight.yangtools.yang.model.api.SchemaPath schemaPath = SchemaPath.create(true, qName); + doReturn(notificationDefinitionSet).when(schemaContextMock).getNotifications(); + doReturn(schemaPath).when(notificationDefinitionMock).getPath(); + + Optional domNotificationServiceOptionalMock = (Optional) mock(Optional.class); + doReturn(domNotificationServiceOptionalMock).when(domMountPointMock).getService(DOMNotificationService.class); + doReturn(true).when(domNotificationServiceOptionalMock).isPresent(); + + DOMNotificationService domNotificationServiceMock = mock(DOMNotificationService.class); + doReturn(domNotificationServiceMock).when(domNotificationServiceOptionalMock).get(); + ListenerRegistration listenerRegistrationMock = mock(ListenerRegistration.class); + doReturn(listenerRegistrationMock).when(domNotificationServiceMock).registerNotificationListener(any(NetconfEventSource.class), any(List.class)); + } + +//TODO: create Test for NetConfEventSource#onNotification + private Set getActiveStreams() throws Exception{ Field nesField = NetconfEventSource.class.getDeclaredField("activeStreams"); nesField.setAccessible(true);