X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=restconf%2Frestconf-nb%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fnb%2Frfc8040%2Frests%2Fservices%2Fimpl%2FRestconfInvokeOperationsServiceImplTest.java;h=8206b39bfd13be406fc01cb91a019dfd04ba4a20;hb=159a779b8d254f2ed12cee30a7e5dc0a8b1b79fa;hp=67e50dfcd77e30811660d265d881ec0669b344c6;hpb=b185f37b7df100af3794264e1a8fb51b73191818;p=netconf.git diff --git a/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImplTest.java b/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImplTest.java index 67e50dfcd7..8206b39bfd 100644 --- a/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImplTest.java +++ b/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImplTest.java @@ -19,6 +19,7 @@ import static org.mockito.Mockito.verify; import com.google.common.util.concurrent.Futures; import java.io.ByteArrayInputStream; +import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; @@ -27,7 +28,6 @@ import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -36,6 +36,7 @@ import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMMountPoint; import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.dom.api.DOMRpcService; @@ -44,7 +45,7 @@ import org.opendaylight.netconf.dom.api.NetconfDataTreeService; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; import org.opendaylight.restconf.nb.rfc8040.databind.DatabindContext; import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload; -import org.opendaylight.restconf.nb.rfc8040.streams.listeners.ListenersBroker; +import org.opendaylight.restconf.server.spi.OperationInput; import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.QName; @@ -52,11 +53,14 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; +import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @RunWith(MockitoJUnitRunner.StrictStubs.class) public class RestconfInvokeOperationsServiceImplTest { - private static final QName RPC = QName.create("ns", "2015-02-28", "test-rpc"); + private static final URI RESTCONF_URI = URI.create("/restconf"); + private static final QName RPC = QName.create("invoke:rpc:module", "2013-12-03", "rpc-test"); private static final ContainerNode INPUT = Builders.containerBuilder() .withNodeIdentifier(new NodeIdentifier(QName.create(RPC, "input"))) .withChild(ImmutableNodes.leafNode(QName.create(RPC, "content"), "test")) @@ -65,8 +69,10 @@ public class RestconfInvokeOperationsServiceImplTest { .withNodeIdentifier(new NodeIdentifier(QName.create(RPC, "output"))) .withChild(ImmutableNodes.leafNode(QName.create(RPC, "content"), "operation result")) .build(); - - private static DatabindContext CONTEXT; + private static final DatabindContext CONTEXT = + DatabindContext.ofModel(YangParserTestUtils.parseYangResourceDirectory("/invoke-rpc")); + private static final OperationInput OPER_INPUT = new OperationInput(CONTEXT, + SchemaInferenceStack.of(CONTEXT.modelContext(), Absolute.of(RPC)).toInference(), INPUT); @Mock private DOMDataBroker dataBroker; @@ -76,20 +82,16 @@ public class RestconfInvokeOperationsServiceImplTest { private DOMMountPoint mountPoint; @Mock private DOMMountPointService mountPointService; + @Mock + private DOMNotificationService notificationService; - private RestconfInvokeOperationsServiceImpl invokeOperationsService; + private RestconfOperationsServiceImpl invokeOperationsService; private MdsalRestconfServer server; - @BeforeClass - public static void beforeClass() { - CONTEXT = DatabindContext.ofModel(YangParserTestUtils.parseYangResourceDirectory("/invoke-rpc")); - } - @Before public void setup() { - server = new MdsalRestconfServer(dataBroker, rpcService, mountPointService); - invokeOperationsService = new RestconfInvokeOperationsServiceImpl(() -> CONTEXT, server, mountPointService, - SubscribeToStreamUtil.webSockets(new ListenersBroker())); + server = new MdsalRestconfServer(() -> CONTEXT, dataBroker, rpcService, mountPointService); + invokeOperationsService = new RestconfOperationsServiceImpl(server); } @Test @@ -100,7 +102,7 @@ public class RestconfInvokeOperationsServiceImplTest { prepNNC(result); final var ar = mock(AsyncResponse.class); final var captor = ArgumentCaptor.forClass(Response.class); - invokeOperationsService.invokeRpcXML("invoke-rpc-module:rpc-test", new ByteArrayInputStream(""" + invokeOperationsService.operationsPostXML("invoke-rpc-module:rpc-test", new ByteArrayInputStream(""" """.getBytes(StandardCharsets.UTF_8)), mock(UriInfo.class), ar); verify(ar).resume(captor.capture()); @@ -119,7 +121,7 @@ public class RestconfInvokeOperationsServiceImplTest { prepNNC(result); final var ar = mock(AsyncResponse.class); final var response = ArgumentCaptor.forClass(Response.class); - invokeOperationsService.invokeRpcJSON("invoke-rpc-module:rpc-test", new ByteArrayInputStream(""" + invokeOperationsService.operationsPostJSON("invoke-rpc-module:rpc-test", new ByteArrayInputStream(""" { "invoke-rpc-module:input" : { } @@ -134,8 +136,10 @@ public class RestconfInvokeOperationsServiceImplTest { public void invokeRpcTest() throws Exception { doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(OUTPUT, List.of()))).when(rpcService) .invokeRpc(RPC, INPUT); - assertEquals(Optional.of(OUTPUT), Futures.getDone(server.getRestconfStrategy(CONTEXT.modelContext(), null) - .invokeRpc(RPC, INPUT))); + assertEquals(OUTPUT, + Futures.getDone( + server.getRestconfStrategy(CONTEXT.modelContext(), null).invokeRpc(RESTCONF_URI, RPC, OPER_INPUT)) + .output()); } @Test @@ -145,8 +149,9 @@ public class RestconfInvokeOperationsServiceImplTest { "No implementation of RPC " + errorRpc + " available."); doReturn(Futures.immediateFailedFuture(exception)).when(rpcService).invokeRpc(errorRpc, INPUT); final var ex = assertInstanceOf(RestconfDocumentedException.class, - assertThrows(ExecutionException.class, () -> Futures.getDone( - server.getRestconfStrategy(CONTEXT.modelContext(), null).invokeRpc(errorRpc, INPUT))).getCause()); + assertThrows(ExecutionException.class, + () -> Futures.getDone(server.getRestconfStrategy(CONTEXT.modelContext(), null) + .invokeRpc(RESTCONF_URI, errorRpc, OPER_INPUT))).getCause()); final var errorList = ex.getErrors(); assertEquals(1, errorList.size()); final var actual = errorList.iterator().next(); @@ -162,8 +167,10 @@ public class RestconfInvokeOperationsServiceImplTest { doReturn(Optional.of(dataBroker)).when(mountPoint).getService(DOMDataBroker.class); doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(OUTPUT, List.of()))).when(rpcService) .invokeRpc(RPC, INPUT); - assertEquals(Optional.of(OUTPUT), Futures.getDone( - server.getRestconfStrategy(CONTEXT.modelContext(), mountPoint).invokeRpc(RPC, INPUT))); + assertEquals(OUTPUT, + Futures.getDone( + server.getRestconfStrategy(CONTEXT.modelContext(), mountPoint).invokeRpc(RESTCONF_URI, RPC, OPER_INPUT)) + .output()); } @Test @@ -173,7 +180,8 @@ public class RestconfInvokeOperationsServiceImplTest { doReturn(Optional.of(dataBroker)).when(mountPoint).getService(DOMDataBroker.class); final var strategy = server.getRestconfStrategy(CONTEXT.modelContext(), mountPoint); final var ex = assertInstanceOf(RestconfDocumentedException.class, - assertThrows(ExecutionException.class, () -> Futures.getDone(strategy.invokeRpc(RPC, INPUT))).getCause()); + assertThrows(ExecutionException.class, + () -> Futures.getDone(strategy.invokeRpc(RESTCONF_URI, RPC, OPER_INPUT))).getCause()); final var errors = ex.getErrors(); assertEquals(1, errors.size()); final var error = errors.get(0); @@ -186,8 +194,10 @@ public class RestconfInvokeOperationsServiceImplTest { public void checkResponseTest() throws Exception { doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(OUTPUT, List.of()))) .when(rpcService).invokeRpc(RPC, INPUT); - assertEquals(Optional.of(OUTPUT), Futures.getDone( - server.getRestconfStrategy(CONTEXT.modelContext(), null).invokeRpc(RPC, INPUT))); + assertEquals(OUTPUT, + Futures.getDone(server.getRestconfStrategy(CONTEXT.modelContext(), null) + .invokeRpc(RESTCONF_URI, RPC, OPER_INPUT)) + .output()); } private void prepNNC(final ContainerNode result) {