From 84a209835820238f50d84ad5be5b9badaa5283c5 Mon Sep 17 00:00:00 2001 From: Vodafone Date: Mon, 18 Mar 2019 15:08:33 +0530 Subject: List of Input Parameters for VSP Change-Id: Ie913ead731e120bd69349a4ebec13f4521eaac4d Issue-ID: SDC-2049 Co-authored-by: jguistwite@iconectiv.com Signed-off-by: Vodafone --- .../externaltesting/rest/ExternalTesting.java | 80 ++++++++++ .../rest/services/ExternalTestingImpl.java | 164 +++++++++++++++++++++ 2 files changed, 244 insertions(+) create mode 100644 openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/ExternalTesting.java create mode 100644 openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/services/ExternalTestingImpl.java (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main') diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/ExternalTesting.java b/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/ExternalTesting.java new file mode 100644 index 0000000000..14c45fbdbe --- /dev/null +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/ExternalTesting.java @@ -0,0 +1,80 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdcrests.externaltesting.rest; + +import io.swagger.annotations.Api; +import org.openecomp.core.externaltesting.api.VtpTestExecutionRequest; +import org.springframework.validation.annotation.Validated; + +import javax.ws.rs.*; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.List; + + +@Path("/v1.0/externaltesting") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +@Api(value = "External-Testing") +@Validated + +public interface ExternalTesting { + + @GET + @Path("/config") + Response getConfig(); + + @GET + @Path("/testcasetree") + Response getTestCasesAsTree(); + + @GET + @Path("/endpoints") + Response getEndpoints(); + + @GET + @Path("/endpoints/{endpointId}/scenarios") + Response getScenarios(@PathParam("endpointId") String endpointId); + + @GET + @Path("/endpoints/{endpointId}/scenarios/{scenario}/testsuites") + Response getTestsuites(@PathParam("endpointId") String endpointId, @PathParam("scenario") String scenario); + + @GET + @Path("/endpoints/{endpointId}/scenarios/{scenario}/testcases") + Response getTestcases(@PathParam("endpointId") String endpointId, + @PathParam("scenario") String scenario); + + @GET + @Path("/endpoints/{endpointId}/scenarios/{scenario}/testsuites/{testsuite}/testcases/{testcase}") + Response getTestcase(@PathParam("endpointId") String endpointId, + @PathParam("scenario") String scenario, + @PathParam("testsuite") String testsuite, + @PathParam("testcase") String testcase); + + @POST + @Path("/endpoints/{endpointId}/executions/{executionId}") + Response getExecution(@PathParam("endpointId") String endpointId, + @PathParam("executionId") String executionId); + + + @POST + @Path("/executions") + Response execute(List req, + @QueryParam("requestId") String requestId); + +} diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/services/ExternalTestingImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/services/ExternalTestingImpl.java new file mode 100644 index 0000000000..206eb4986b --- /dev/null +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/externaltesting-rest/externaltesting-rest-services/src/main/java/org/openecomp/sdcrests/externaltesting/rest/services/ExternalTestingImpl.java @@ -0,0 +1,164 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdcrests.externaltesting.rest.services; + + +import org.openecomp.core.externaltesting.api.*; +import org.openecomp.core.externaltesting.errors.ExternalTestingException; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdcrests.externaltesting.rest.ExternalTesting; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import javax.inject.Named; +import javax.ws.rs.core.Response; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +@SuppressWarnings("unused") +@Named +@Service("externaltesting") +@Scope(value = "prototype") +public class ExternalTestingImpl implements ExternalTesting { + + private ExternalTestingManager testingManager; + + private static final Logger logger = + LoggerFactory.getLogger(ExternalTestingImpl.class); + + public ExternalTestingImpl(@Autowired ExternalTestingManager testingManager) { + this.testingManager = testingManager; + } + + /** + * Return the configuration of the feature to the client. + * @return JSON response content. + */ + @Override + public Response getConfig() { + try { + return Response.ok(testingManager.getConfig()).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + /** + * Return the test tree structure created by the testing manager. + * @return JSON response content. + */ + @Override + public Response getTestCasesAsTree() { + try { + return Response.ok(testingManager.getTestCasesAsTree()).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + @Override + public Response getEndpoints() { + try { + return Response.ok(testingManager.getEndpoints()).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + + } + @Override + public Response getScenarios(String endpoint) { + try { + return Response.ok(testingManager.getScenarios(endpoint)).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + + } + + @Override + public Response getTestsuites(String endpoint, String scenario) { + try { + return Response.ok(testingManager.getTestSuites(endpoint, scenario)).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + @Override + public Response getTestcases(String endpoint, String scenario) { + try { + return Response.ok(testingManager.getTestCases(endpoint, scenario)).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + @Override + public Response getTestcase(String endpoint, String scenario, String testsuite, String testcase) { + try { + return Response.ok(testingManager.getTestCase(endpoint, scenario, testsuite, testcase)).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + @Override + public Response execute(List req, String requestId) { + try { + List responses = testingManager.execute(req, requestId); + List statuses = responses.stream().map(r-> Optional.ofNullable(r.getHttpStatus()).orElse(200)).distinct().collect(Collectors.toList()); + if (statuses.size() == 1) { + // 1 status so use it... + return Response.status(statuses.get(0)).entity(responses).build(); + } + else { + return Response.status(207).entity(responses).build(); + } + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + @Override + public Response getExecution(String endpoint, String executionId) { + try { + return Response.ok(testingManager.getExecution(endpoint, executionId)).build(); + } + catch (ExternalTestingException e) { + return convertTestingException(e); + } + } + + private Response convertTestingException(ExternalTestingException e) { + if (logger.isErrorEnabled()) { + logger.error("testing exception {} {} {}", e.getTitle(), e.getCode(), e.getDetail(), e); + } + TestErrorBody body = new TestErrorBody(e.getTitle(), e.getCode(), e.getDetail()); + return Response.status(e.getCode()).entity(body).build(); + } +} -- cgit 1.2.3-korg