From 6df542cf030b3f22111f7f091f43c28fcd395bb1 Mon Sep 17 00:00:00 2001 From: Vodafone Date: Fri, 12 Apr 2019 12:19:30 +0530 Subject: VSP Compliance Check for Compute Flavor-BE Code-Review fixes Change-Id: Iec0e76518e669effdb9d2ca860d108f564f9253f Issue-ID: SDC-2051 Co-authored-by: jguistwite@iconectiv.com Signed-off-by: Vodafone --- .../impl/ExternalTestingManagerImpl.java | 150 +++++++++++---------- .../externaltesting/impl/ConfigurationTests.java | 2 +- 2 files changed, 80 insertions(+), 72 deletions(-) (limited to 'openecomp-be') diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/main/java/org/openecomp/core/externaltesting/impl/ExternalTestingManagerImpl.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/main/java/org/openecomp/core/externaltesting/impl/ExternalTestingManagerImpl.java index bea31c14c3..ed1a214d21 100644 --- a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/main/java/org/openecomp/core/externaltesting/impl/ExternalTestingManagerImpl.java +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/main/java/org/openecomp/core/externaltesting/impl/ExternalTestingManagerImpl.java @@ -113,8 +113,8 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { } ExternalTestingManagerImpl(VersioningManager versioningManager, - VendorSoftwareProductManager vendorSoftwareProductManager, - OrchestrationTemplateCandidateManager candidateManager) { + VendorSoftwareProductManager vendorSoftwareProductManager, + OrchestrationTemplateCandidateManager candidateManager) { this(); this.versioningManager = versioningManager; this.vendorSoftwareProductManager = vendorSoftwareProductManager; @@ -133,11 +133,11 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { } if (vendorSoftwareProductManager == null) { vendorSoftwareProductManager = - VspManagerFactory.getInstance().createInterface(); + VspManagerFactory.getInstance().createInterface(); } if (candidateManager == null) { candidateManager = - OrchestrationTemplateCandidateManagerFactory.getInstance().createInterface(); + OrchestrationTemplateCandidateManagerFactory.getInstance().createInterface(); } loadConfig(); @@ -183,8 +183,8 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { } endpoints = accessConfig.getEndpoints().stream() - .flatMap(this::mapEndpointString) - .collect(Collectors.toList()); + .flatMap(this::mapEndpointString) + .collect(Collectors.toList()); if (logger.isInfoEnabled()) { String s = new ObjectMapper().writeValueAsString(endpoints); @@ -267,21 +267,21 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { try { logger.debug("process endpoint {}", ep.getId()); getScenarios(ep.getId()).stream().filter(s -> - ((ep.getScenarioFilter() == null) || ep.getScenarioFilterPattern().matcher(s.getName()).matches())) - .forEach(s -> { - addScenarioToTree(root, s); - getTestSuites(ep.getId(), s.getName()).forEach(suite -> addSuiteToTree(root, s, suite)); - getTestCases(ep.getId(), s.getName()).forEach(tc -> { - try { - VtpTestCase details = getTestCase(ep.getId(), s.getName(), tc.getTestSuiteName(), tc.getTestCaseName()); - addTestCaseToTree(root, ep.getId(), s.getName(), tc.getTestSuiteName(), details); - } - catch (@SuppressWarnings("squid:S1166") ExternalTestingException ex) { - // Not logging stack trace on purpose. VTP was throwing exceptions for certain test cases. - logger.warn("failed to load test case {}", tc.getTestCaseName()); - } - }); - }); + ((ep.getScenarioFilter() == null) || ep.getScenarioFilterPattern().matcher(s.getName()).matches())) + .forEach(s -> { + addScenarioToTree(root, s); + getTestSuites(ep.getId(), s.getName()).forEach(suite -> addSuiteToTree(root, s, suite)); + getTestCases(ep.getId(), s.getName()).forEach(tc -> { + try { + VtpTestCase details = getTestCase(ep.getId(), s.getName(), tc.getTestSuiteName(), tc.getTestCaseName()); + addTestCaseToTree(root, ep.getId(), s.getName(), tc.getTestSuiteName(), details); + } + catch (@SuppressWarnings("squid:S1166") ExternalTestingException ex) { + // Not logging stack trace on purpose. VTP was throwing exceptions for certain test cases. + logger.warn("failed to load test case {}", tc.getTestCaseName()); + } + }); + }); } catch (ExternalTestingException ex) { logger.error("unable to contact testing endpoint {}", ep.getId(), ex); @@ -309,14 +309,14 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { return; } findNamedChild(root, scenarioName) - .ifPresent(scenarioNode -> findNamedChild(scenarioNode, testSuiteName) - .ifPresent(suiteNode -> { - massageTestCaseForUI(tc, endpointName, scenarioName); - if (suiteNode.getTests() == null) { - suiteNode.setTests(new ArrayList<>()); - } - suiteNode.getTests().add(tc); - })); + .ifPresent(scenarioNode -> findNamedChild(scenarioNode, testSuiteName) + .ifPresent(suiteNode -> { + massageTestCaseForUI(tc, endpointName, scenarioName); + if (suiteNode.getTests() == null) { + suiteNode.setTests(new ArrayList<>()); + } + suiteNode.getTests().add(tc); + })); } private void massageTestCaseForUI(VtpTestCase testcase, String endpoint, String scenario) { @@ -367,8 +367,8 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { public List getEndpoints() { if (endpoints != null) { return endpoints.stream() - .filter(RemoteTestingEndpointDefinition::isEnabled) - .collect(Collectors.toList()); + .filter(RemoteTestingEndpointDefinition::isEnabled) + .collect(Collectors.toList()); } else { return new ArrayList<>(); @@ -453,9 +453,9 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { } RemoteTestingEndpointDefinition endpoint = endpoints.stream() - .filter(e -> StringUtils.equals(endpointName, e.getId())) - .findFirst() - .orElseThrow(() -> new ExternalTestingException(NO_SUCH_ENDPOINT_ERROR_CODE, 400, "No endpoint named " + endpointName + " is defined")); + .filter(e -> StringUtils.equals(endpointName, e.getId())) + .findFirst() + .orElseThrow(() -> new ExternalTestingException(NO_SUCH_ENDPOINT_ERROR_CODE, 400, "No endpoint named " + endpointName + " is defined")); // if the endpoint requires an API key, specify it in the headers. HttpHeaders headers = new HttpHeaders(); @@ -469,7 +469,7 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { for(VtpTestExecutionRequest test: testsToRun) { if ((test.getParameters() != null) && - (test.getParameters().containsKey(SDC_CSAR) || test.getParameters().containsKey(SDC_HEAT))) { + (test.getParameters().containsKey(SDC_CSAR) || test.getParameters().containsKey(SDC_HEAT))) { attachArchiveContent(test, body); } } @@ -524,12 +524,12 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { // partition the requests by endpoint. Map> partitions = - testsToRun.stream().collect(Collectors.groupingBy(VtpTestExecutionRequest::getEndpoint)); + testsToRun.stream().collect(Collectors.groupingBy(VtpTestExecutionRequest::getEndpoint)); // process each group and collect the results. return partitions.entrySet().stream() - .flatMap(e -> execute(e.getKey(), e.getValue(), requestId).stream()) - .collect(Collectors.toList()); + .flatMap(e -> execute(e.getKey(), e.getValue(), requestId).stream()) + .collect(Collectors.toList()); } /** @@ -542,10 +542,10 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { private String buildEndpointUrl(String format, String endpointName, String[] args) { if (endpoints != null) { RemoteTestingEndpointDefinition ep = endpoints.stream() - .filter(e -> e.isEnabled() && e.getId().equals(endpointName)) - .findFirst() - .orElseThrow(() -> new ExternalTestingException(NO_SUCH_ENDPOINT_ERROR_CODE, 500, "No endpoint named " + endpointName + " is defined") - ); + .filter(e -> e.isEnabled() && e.getId().equals(endpointName)) + .findFirst() + .orElseThrow(() -> new ExternalTestingException(NO_SUCH_ENDPOINT_ERROR_CODE, 500, "No endpoint named " + endpointName + " is defined") + ); Object[] newArgs = ArrayUtils.add(args, 0, ep.getUrl()); return String.format(format, newArgs); @@ -580,7 +580,7 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { logger.debug("GET request to {} for {}", url, responseType.getType().getTypeName()); } SimpleClientHttpRequestFactory rf = - (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory(); + (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory(); if (rf != null) { rf.setReadTimeout(10000); rf.setConnectTimeout(10000); @@ -597,8 +597,8 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { // make my own exception out of this. logger.warn("Unexpected HTTP Status from endpoint {}", ex.getRawStatusCode()); if ((ex.getResponseHeaders().getContentType() != null) && - ((ex.getResponseHeaders().getContentType().isCompatibleWith(MediaType.APPLICATION_JSON)) || - (ex.getResponseHeaders().getContentType().isCompatibleWith(MediaType.parseMediaType("application/problem+json"))))) { + ((ex.getResponseHeaders().getContentType().isCompatibleWith(MediaType.APPLICATION_JSON)) || + (ex.getResponseHeaders().getContentType().isCompatibleWith(MediaType.parseMediaType("application/problem+json"))))) { String s = ex.getResponseBodyAsString(); logger.warn("endpoint body content is {}", s); try { @@ -703,12 +703,12 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { if (!ozip.isPresent()) { List versions = versioningManager.list(vspId); String knownVersions = versions - .stream() - .map(v -> String.format("%d.%d: %s (%s)", v.getMajor(), v.getMinor(), v.getStatus(), v.getId())) - .collect(Collectors.joining("\n")); + .stream() + .map(v -> String.format("%d.%d: %s (%s)", v.getMajor(), v.getMinor(), v.getStatus(), v.getId())) + .collect(Collectors.joining("\n")); String detail = String.format("Archive processing failed. Unable to find archive for VSP ID %s and Version %s. Known versions are:\n%s", - vspId, version, knownVersions); + vspId, version, knownVersions); throw new ExternalTestingException(SDC_RESOLVER_ERR, 500, detail); } @@ -759,13 +759,14 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { byte[] manifestBytes = content.get(MANIFEST_JSON); ManifestContent manifest = JsonUtil.json2Object(new String(manifestBytes), ManifestContent.class); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try(ZipOutputStream zipOutput = new ZipOutputStream(baos)) { - for(FileData item : manifest.getData()) { - processManifestItem(item, zipOutput, content); - } + try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + try(ZipOutputStream zipOutput = new ZipOutputStream(baos)) { + for (FileData item : manifest.getData()) { + processManifestItem(item, zipOutput, content); + } - return baos.toByteArray(); + return baos.toByteArray(); + } } catch (IOException ex) { logger.error("IO Exception parsing zip", ex); throw new ExternalTestingException(SDC_RESOLVER_ERR, 500, ex.getMessage()); @@ -815,10 +816,11 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { return ArrayUtils.EMPTY_BYTE_ARRAY; } - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try(ZipOutputStream zipOutput = new ZipOutputStream(baos)) { - processCsarArchiveEntry(fileToGet, zipOutput, content); - return baos.toByteArray(); + try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + try(ZipOutputStream zipOutput = new ZipOutputStream(baos)) { + processCsarArchiveEntry(fileToGet, zipOutput, content); + return baos.toByteArray(); + } } catch (IOException ex) { logger.error("IO Exception parsing zip", ex); throw new ExternalTestingException(SDC_RESOLVER_ERR, 500, ex.getMessage()); @@ -891,18 +893,16 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { */ private Map extractRelevantContent(final byte[] zip, final List extensions) { final Map rv = new HashMap<>(); // FYI, rv = return value. - try (ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(zip))) { - ZipEntry entry; - while ((entry = zipStream.getNextEntry()) != null) { - final String entryName = entry.getName(); - - // NOTE: leaving this debugging in for dublin... - logger.debug("archive contains entry {}", entryName); - - int idx = entryName.lastIndexOf('.'); - if ((idx >= 0) && (extensions.contains(entryName.substring(idx)))) { - byte[] content = IOUtils.toByteArray(zipStream); - rv.put(entryName, content); + try (ByteArrayInputStream is = new ByteArrayInputStream(zip)) { + try (ZipInputStream zipStream = new ZipInputStream(is)) { + ZipEntry entry; + while ((entry = zipStream.getNextEntry()) != null) { + final String entryName = entry.getName(); + + // NOTE: leaving this debugging in for dublin... + logger.debug("archive contains entry {}", entryName); + + extractIfMatching(extensions, rv, zipStream, entryName); } } } @@ -913,6 +913,14 @@ public class ExternalTestingManagerImpl implements ExternalTestingManager { return rv; } + private void extractIfMatching(List extensions, Map rv, ZipInputStream zipStream, String entryName) throws IOException { + int idx = entryName.lastIndexOf('.'); + if ((idx >= 0) && (extensions.contains(entryName.substring(idx)))) { + byte[] content = IOUtils.toByteArray(zipStream); + rv.put(entryName, content); + } + } + /** * We need to name the byte array we add to the multipart request sent to the VTP. */ diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/test/java/org/openecomp/core/externaltesting/impl/ConfigurationTests.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/test/java/org/openecomp/core/externaltesting/impl/ConfigurationTests.java index 103320f755..05fc9e3938 100644 --- a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/test/java/org/openecomp/core/externaltesting/impl/ConfigurationTests.java +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-impl/src/test/java/org/openecomp/core/externaltesting/impl/ConfigurationTests.java @@ -42,7 +42,7 @@ public class ConfigurationTests { @Test public void testConfig() throws Exception { - try (InputStream fileInput = new FileInputStream(new File("src/test/data/config-externaltesting.yaml"))) { + try (InputStream fileInput = new FileInputStream(new File("src/test/data/externaltesting-configuration.yaml"))) { YamlUtil yamlUtil = new YamlUtil(); Object raw = yamlUtil.yamlToMap(fileInput); TestingAccessConfig accessConfig = new ObjectMapper().convertValue(raw, TestingAccessConfig.class); -- cgit 1.2.3-korg