X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fmessagebus-netconf%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fmessagebus%2Feventsources%2Fnetconf%2FNetconfEventSourceManagerTest.java;h=f61ea9baaa6e44df43f181fc4eacaa28c5c7771e;hb=c894986ef8b0b40d7457c8c0c54a656ea0e9a521;hp=39cdb10975d6faacff255971aa25fbd0a4a56edc;hpb=3062d9b5a6704075b4b10a8e1ad481738ca370c7;p=netconf.git diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java index 39cdb10975..f61ea9baaa 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java @@ -7,153 +7,148 @@ */ package org.opendaylight.netconf.messagebus.eventsources.netconf; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.notNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.notNull; 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 com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; -import java.util.ArrayList; +import com.google.common.util.concurrent.FluentFuture; +import java.util.Collections; import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.Optional; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.opendaylight.controller.config.yang.messagebus.netconf.NamespaceToStream; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.MountPointService; -import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker; -import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -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.DOMRpcService; import org.opendaylight.controller.messagebus.spi.EventSource; import org.opendaylight.controller.messagebus.spi.EventSourceRegistry; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.MountPointService; +import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.Streams; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -public class NetconfEventSourceManagerTest { - - NetconfEventSourceManager netconfEventSourceManager; - ListenerRegistration listenerRegistrationMock; - DOMMountPointService domMountPointServiceMock; - MountPointService mountPointServiceMock; - EventSourceRegistry eventSourceTopologyMock; - AsyncDataChangeEvent asyncDataChangeEventMock; - RpcProviderRegistry rpcProviderRegistryMock; - EventSourceRegistry eventSourceRegistry; - @BeforeClass - public static void initTestClass() throws IllegalAccessException, InstantiationException { - } +public class NetconfEventSourceManagerTest extends AbstractCodecTest { + + private NetconfEventSourceManager netconfEventSourceManager; + private ListenerRegistration listenerRegistrationMock; + private DOMMountPointService domMountPointServiceMock; + private MountPointService mountPointServiceMock; + private EventSourceRegistry eventSourceTopologyMock; + private DataTreeModification dataTreeModificationMock; + private RpcProviderService rpcProviderRegistryMock; + private EventSourceRegistry eventSourceRegistry; + @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { - DataBroker dataBrokerMock = mock(DataBroker.class); - DOMNotificationPublishService domNotificationPublishServiceMock = mock(DOMNotificationPublishService.class); + final DataBroker dataBrokerMock = mock(DataBroker.class); + final DOMNotificationPublishService domNotificationPublishServiceMock = + mock(DOMNotificationPublishService.class); domMountPointServiceMock = mock(DOMMountPointService.class); eventSourceTopologyMock = mock(EventSourceRegistry.class); - rpcProviderRegistryMock = mock(RpcProviderRegistry.class); + rpcProviderRegistryMock = mock(RpcProviderService.class); eventSourceRegistry = mock(EventSourceRegistry.class); - List namespaceToStreamList = new ArrayList<>(); listenerRegistrationMock = mock(ListenerRegistration.class); - doReturn(listenerRegistrationMock).when(dataBrokerMock).registerDataChangeListener(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class), any(NetconfEventSourceManager.class), eq( - AsyncDataBroker.DataChangeScope.SUBTREE)); + doReturn(listenerRegistrationMock).when(dataBrokerMock).registerDataTreeChangeListener( + any(DataTreeIdentifier.class), any(NetconfEventSourceManager.class)); DOMMountPoint domMountPointMock = mock(DOMMountPoint.class); Optional optionalDomMountServiceMock = Optional.of(domMountPointMock); - doReturn(optionalDomMountServiceMock).when(domMountPointServiceMock).getMountPoint((YangInstanceIdentifier)notNull()); + doReturn(optionalDomMountServiceMock).when(domMountPointServiceMock).getMountPoint((YangInstanceIdentifier) + notNull()); DOMDataBroker mpDataBroker = mock(DOMDataBroker.class); doReturn(Optional.of(mpDataBroker)).when(domMountPointMock).getService(DOMDataBroker.class); doReturn(Optional.of(mock(DOMRpcService.class))).when(domMountPointMock).getService(DOMRpcService.class); - doReturn(Optional.of(mock(DOMNotificationService.class))).when(domMountPointMock).getService(DOMNotificationService.class); + doReturn(Optional.of(mock(DOMNotificationService.class))).when(domMountPointMock) + .getService(DOMNotificationService.class); + doReturn(Optional.of(mock(DOMSchemaService.class))).when(domMountPointMock).getService(DOMSchemaService.class); - DOMDataReadOnlyTransaction rtx = mock(DOMDataReadOnlyTransaction.class); + DOMDataTreeReadTransaction rtx = mock(DOMDataTreeReadTransaction.class); doReturn(rtx).when(mpDataBroker).newReadOnlyTransaction(); - CheckedFuture>, ReadFailedException> checkFeature = Futures.immediateCheckedFuture(Optional.of(NetconfTestUtils.getStreamsNode("stream-1"))); + final FluentFuture>> readStreamFuture = + FluentFutures.immediateFluentFuture(Optional.of(NetconfTestUtils.getStreamsNode("stream-1"))); - YangInstanceIdentifier pathStream = YangInstanceIdentifier.builder().node(Netconf.QNAME).node(Streams.QNAME).build(); - doReturn(checkFeature).when(rtx).read(LogicalDatastoreType.OPERATIONAL, pathStream); + YangInstanceIdentifier pathStream = YangInstanceIdentifier.builder().node(Netconf.QNAME).node(Streams.QNAME) + .build(); + doReturn(readStreamFuture).when(rtx).read(LogicalDatastoreType.OPERATIONAL, pathStream); - netconfEventSourceManager = - NetconfEventSourceManager - .create(dataBrokerMock, domNotificationPublishServiceMock, domMountPointServiceMock, - mountPointServiceMock, eventSourceRegistry, namespaceToStreamList); + netconfEventSourceManager = new NetconfEventSourceManager(dataBrokerMock, SERIALIZER, + domNotificationPublishServiceMock, domMountPointServiceMock, eventSourceRegistry); + netconfEventSourceManager.setStreamMap(new HashMap<>()); } @Test public void onDataChangedCreateEventSourceTestByCreateEntry() throws Exception { - onDataChangedTestHelper(true,false,true, NetconfTestUtils.notification_capability_prefix); - netconfEventSourceManager.onDataChanged(asyncDataChangeEventMock); + onDataChangedTestHelper(true, false, true, NetconfTestUtils.NOTIFICATION_CAPABILITY_PREFIX); + netconfEventSourceManager.onDataTreeChanged(Collections.singletonList(dataTreeModificationMock)); verify(eventSourceRegistry, times(1)).registerEventSource(any(EventSource.class)); } @Test public void onDataChangedCreateEventSourceTestByUpdateEntry() throws Exception { - onDataChangedTestHelper(false,true,true, NetconfTestUtils.notification_capability_prefix); - netconfEventSourceManager.onDataChanged(asyncDataChangeEventMock); + onDataChangedTestHelper(false, true, true, NetconfTestUtils.NOTIFICATION_CAPABILITY_PREFIX); + netconfEventSourceManager.onDataTreeChanged(Collections.singletonList(dataTreeModificationMock)); verify(eventSourceRegistry, times(1)).registerEventSource(any(EventSource.class)); } @Test public void onDataChangedCreateEventSourceTestNotNeconf() throws Exception { - onDataChangedTestHelper(false,true,false, NetconfTestUtils.notification_capability_prefix); - netconfEventSourceManager.onDataChanged(asyncDataChangeEventMock); + onDataChangedTestHelper(false, true, false, NetconfTestUtils.NOTIFICATION_CAPABILITY_PREFIX); + netconfEventSourceManager.onDataTreeChanged(Collections.singletonList(dataTreeModificationMock)); verify(eventSourceRegistry, times(0)).registerEventSource(any(EventSource.class)); } @Test public void onDataChangedCreateEventSourceTestNotNotificationCapability() throws Exception { - onDataChangedTestHelper(true,false,true,"bad-prefix"); - netconfEventSourceManager.onDataChanged(asyncDataChangeEventMock); + onDataChangedTestHelper(true, false, true, "bad-prefix"); + netconfEventSourceManager.onDataTreeChanged(Collections.singletonList(dataTreeModificationMock)); verify(eventSourceRegistry, times(0)).registerEventSource(any(EventSource.class)); } - private void onDataChangedTestHelper(boolean create, boolean update, boolean isNetconf, String notificationCapabilityPrefix) throws Exception{ - asyncDataChangeEventMock = mock(AsyncDataChangeEvent.class); - Map mapCreate = new HashMap<>(); - Map mapUpdate = new HashMap<>(); + @SuppressWarnings("unchecked") + private void onDataChangedTestHelper(final boolean create, final boolean update, final boolean isNetconf, + final String notificationCapabilityPrefix) throws Exception { + dataTreeModificationMock = mock(DataTreeModification.class); + DataObjectModification mockModification = mock(DataObjectModification.class); + doReturn(create ? DataObjectModification.ModificationType.WRITE : + DataObjectModification.ModificationType.SUBTREE_MODIFIED).when(mockModification).getModificationType(); + doReturn(mockModification).when(dataTreeModificationMock).getRootNode(); - Node node01; + final Node node01; String nodeId = "Node01"; - doReturn(mapCreate).when(asyncDataChangeEventMock).getCreatedData(); - doReturn(mapUpdate).when(asyncDataChangeEventMock).getUpdatedData(); - - if(isNetconf){ + if (isNetconf) { node01 = NetconfTestUtils - .getNetconfNode(nodeId, "node01.test.local", ConnectionStatus.Connected, notificationCapabilityPrefix); + .getNetconfNode(nodeId, "node01.test.local", ConnectionStatus.Connected, + notificationCapabilityPrefix); } else { node01 = NetconfTestUtils.getNode(nodeId); } - if(create){ - mapCreate.put(NetconfTestUtils.getInstanceIdentifier(node01), node01); - } - if(update){ - mapUpdate.put(NetconfTestUtils.getInstanceIdentifier(node01), node01); - } + doReturn(node01).when(mockModification).getDataAfter(); + doReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, + NetconfTestUtils.getInstanceIdentifier(node01))).when(dataTreeModificationMock).getRootPath(); } -} \ No newline at end of file +}