X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceRpcTest.java;fp=netconf%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceRpcTest.java;h=6053e135347275d26a9a6ff452e82652a4aaa30f;hb=f0639b8253540d939e4d2cc1e808c30ad872c1c1;hp=56fe3b16f515ea688d133ad903ca27092e8a933d;hpb=406f45d88521d24a776d446858bb3615acb601fc;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java index 56fe3b16f5..6053e13534 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java @@ -9,13 +9,17 @@ package org.opendaylight.netconf.sal.connect.netconf.sal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.google.common.util.concurrent.Futures; import java.util.Collection; +import java.util.concurrent.ExecutionException; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -29,6 +33,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; +import org.opendaylight.netconf.sal.connect.api.MessageTransformer; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.AbstractBaseSchemasTest; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.NetconfMessageTransformer; @@ -91,6 +96,20 @@ public class NetconfDeviceRpcTest extends AbstractBaseSchemasTest { expectedReply = transformer.toRpcResult(reply, path); } + @Test + public void testDeadlock() throws Exception { + // when rpc is successful, but transformer fails for some reason + final MessageTransformer failingTransformer = mock(MessageTransformer.class); + final RemoteDeviceCommunicator communicatorMock = mock(RemoteDeviceCommunicator.class); + final NetconfMessage msg = null; + final RpcResult result = RpcResultBuilder.success(msg).build(); + when(communicatorMock.sendRequest(any(), any())).thenReturn(Futures.immediateFuture(result)); + when(failingTransformer.toRpcResult(any(), any())).thenThrow(new RuntimeException("FAIL")); + final NetconfDeviceRpc failingRpc = new NetconfDeviceRpc(SCHEMA_CONTEXT, communicatorMock, failingTransformer); + assertThrows(ExecutionException.class, () -> failingRpc.invokeRpc(path, mock(ContainerNode.class)).get()); + assertThrows(ExecutionException.class, () -> failingRpc.invokeRpc(path, null).get()); + } + @Test public void testInvokeRpc() throws Exception { ContainerNode input = createNode("urn:ietf:params:xml:ns:netconf:base:1.0", "2011-06-01", "filter");