- path = SchemaPath
- .create(true, QName.create("urn:ietf:params:xml:ns:netconf:base:1.0", "2011-06-01", "get-config"));
- expectedReply = transformer.toRpcResult(reply, path);
+ @Test
+ public void testDeadlock() throws Exception {
+ // when rpc is successful, but transformer fails for some reason
+ final RpcTransformer failingTransformer = mock(RpcTransformer.class);
+ final RemoteDeviceCommunicator communicatorMock = mock(RemoteDeviceCommunicator.class);
+ final NetconfMessage msg = null;
+ final RpcResult<NetconfMessage> 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(type, mock(ContainerNode.class)).get());
+ assertThrows(ExecutionException.class, () -> failingRpc.invokeRpc(type, null).get());