X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2FNetconfDeviceTest.java;h=46ea4ff73c40ae0d29ec267d834a19e2d88faa19;hp=c1b9f7b47ba8b8009b620655a729703e1809346f;hb=c46e223995956f1f759c551163c212947c1e2fb7;hpb=0d596e1bc7abf0b9702269236633225f28df77e6 diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java index c1b9f7b47b..46ea4ff73c 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java @@ -12,6 +12,7 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.io.InputStream; @@ -27,7 +28,6 @@ import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.connect.api.MessageTransformer; import org.opendaylight.controller.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.controller.sal.connect.api.RemoteDeviceHandler; @@ -38,8 +38,8 @@ import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransf import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -65,8 +65,8 @@ public class NetconfDeviceTest { } } - private static final RpcResult rpcResult = Rpcs.getRpcResult(true, netconfMessage, Collections.emptySet()); - private static final RpcResult rpcResultC = Rpcs.getRpcResult(true, compositeNode, Collections.emptySet()); + private static final RpcResult rpcResult = RpcResultBuilder.success(netconfMessage).build(); + private static final RpcResult rpcResultC = RpcResultBuilder.success(compositeNode).build(); public static final String TEST_NAMESPACE = "test:namespace"; public static final String TEST_MODULE = "test-module"; @@ -83,6 +83,32 @@ public class NetconfDeviceTest { Mockito.verify(facade, Mockito.timeout(5000)).onDeviceDisconnected(); } + @Test + public void testNotificationBeforeSchema() throws Exception { + final RemoteDeviceHandler facade = getFacade(); + final RemoteDeviceCommunicator listener = getListener(); + + final MessageTransformer messageTransformer = getMessageTransformer(); + final NetconfDevice device = new NetconfDevice(getId(), facade, getExecutor(), messageTransformer, getSchemaContextProviderFactory(), getSourceProviderFactory()); + + device.onNotification(netconfMessage); + device.onNotification(netconfMessage); + + verify(facade, times(0)).onNotification(any(CompositeNode.class)); + + final NetconfSessionCapabilities sessionCaps = getSessionCaps(true, + Lists.newArrayList(TEST_NAMESPACE + "?module=" + TEST_MODULE + "&revision=" + TEST_REVISION)); + + device.onRemoteSessionUp(sessionCaps, listener); + + verify(messageTransformer, timeout(10000).times(2)).toNotification(netconfMessage); + verify(facade, timeout(10000).times(2)).onNotification(compositeNode); + + device.onNotification(netconfMessage); + verify(messageTransformer, timeout(10000).times(3)).toNotification(netconfMessage); + verify(facade, timeout(10000).times(3)).onNotification(compositeNode); + } + @Test public void testNetconfDeviceReconnect() throws Exception { final RemoteDeviceHandler facade = getFacade(); @@ -137,6 +163,7 @@ public class NetconfDeviceTest { final RemoteDeviceHandler remoteDeviceHandler = mockCloseableClass(RemoteDeviceHandler.class); doNothing().when(remoteDeviceHandler).onDeviceConnected(any(SchemaContextProvider.class), any(NetconfSessionCapabilities.class), any(RpcImplementation.class)); doNothing().when(remoteDeviceHandler).onDeviceDisconnected(); + doNothing().when(remoteDeviceHandler).onNotification(any(CompositeNode.class)); return remoteDeviceHandler; } @@ -174,6 +201,7 @@ public class NetconfDeviceTest { final MessageTransformer messageTransformer = mockClass(MessageTransformer.class); doReturn(netconfMessage).when(messageTransformer).toRpcRequest(any(QName.class), any(CompositeNode.class)); doReturn(rpcResultC).when(messageTransformer).toRpcResult(any(NetconfMessage.class), any(QName.class)); + doReturn(compositeNode).when(messageTransformer).toNotification(any(NetconfMessage.class)); doNothing().when(messageTransformer).onGlobalContextUpdated(any(SchemaContext.class)); return messageTransformer; } @@ -198,4 +226,4 @@ public class NetconfDeviceTest { doReturn(Futures.immediateFuture(rpcResult)).when(remoteDeviceCommunicator).sendRequest(any(NetconfMessage.class), any(QName.class)); return remoteDeviceCommunicator; } -} \ No newline at end of file +}