X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=validation.git;a=blobdiff_plain;f=ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fakraino%2Fvalidation%2Fui%2Fclient%2Fnexus%2FNexusExecutorClient.java;h=a0723c8204dcd4f94c664faf9c8f3a1e120e7e44;hp=988685bb9344dea1c8d66457351393f24d59c872;hb=2879b2ee5e1e2815e5f43cb802352bf2878397af;hpb=ce4ad29dc48317cc7cb60fe433072ac46dea2ebb diff --git a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java index 988685b..a0723c8 100644 --- a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java +++ b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * 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 + * 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 + * 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. + * 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.akraino.validation.ui.client.nexus; @@ -35,13 +35,15 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.akraino.validation.ui.client.nexus.resources.RobotTestResult; +import org.akraino.validation.ui.client.nexus.resources.WrapperRobotTestResult; +import org.akraino.validation.ui.data.BlueprintLayer; import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; import org.json.JSONObject; import org.json.XML; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -61,7 +63,7 @@ import com.sun.jersey.client.urlconnection.URLConnectionClientHandler; public final class NexusExecutorClient { - private static final Logger LOGGER = Logger.getLogger(NexusExecutorClient.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(NexusExecutorClient.class); private final Client client; private final String baseurl; @@ -72,17 +74,19 @@ public final class NexusExecutorClient { this.baseurl = newBaseurl; ClientConfig clientConfig = new DefaultClientConfig(); clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); - client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() { + this.client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() { Proxy proxy = null; @Override public HttpURLConnection getHttpURLConnection(URL url) throws IOException { try { - String proxyIp = System.getenv("proxy_ip"); - String proxyPort = System.getenv("proxy_port"); + String proxyIp = + System.getenv("NEXUS_PROXY").substring(0, System.getenv("NEXUS_PROXY").lastIndexOf(":")); + String proxyPort = + System.getenv("NEXUS_PROXY").substring(System.getenv("NEXUS_PROXY").lastIndexOf(":") + 1); proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, Integer.parseInt(proxyPort))); return (HttpURLConnection) url.openConnection(proxy); - } catch (NumberFormatException ex) { + } catch (Exception ex) { return (HttpURLConnection) url.openConnection(); } } @@ -117,26 +121,54 @@ public final class NexusExecutorClient { return this.baseurl; } - public List getRobotTestResults() throws ClientHandlerException, UniformInterfaceException, + public List getRobotTestResults() throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, IOException, KeyManagementException, NoSuchAlgorithmException { - List robotTestResults = new ArrayList(); - LOGGER.info("Trying to get Robot Test Results"); + List listOfwrappers = new ArrayList(); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get the blueprint layers"); setProperties(); WebResource webResource = this.client.resource(this.baseurl + "/"); - LOGGER.debug("Request URI of get: " + webResource.getURI().toString()); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); ClientResponse response = webResource.get(ClientResponse.class); if (response.getStatus() != 200) { - throw new HttpException("Could not retrieve robot test results from Nexus. HTTP error code : " + throw new HttpException("Could not retrieve blueprint layers from Nexus. HTTP error code : " + response.getStatus() + " and message: " + response.getEntity(String.class)); } Document document = Jsoup.parse(response.getEntity(String.class)); List elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0).getElementsByTag("tr"); for (int i = 2; i < elements.size(); i++) { - String resultName = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); - resultName = resultName.substring(0, resultName.length() - 1); - webResource = this.client.resource(this.baseurl + "/" + resultName + "/output.xml"); - LOGGER.debug("Request URI of get: " + webResource.getURI().toString()); + String layer = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); + layer = layer.substring(0, layer.length() - 1); + List robotTestResults = getResultsOfALayer(this.baseurl + "/" + layer); + WrapperRobotTestResult wrapper = new WrapperRobotTestResult(); + wrapper.setBlueprintLayer(BlueprintLayer.valueOf(layer.substring(0, 1).toUpperCase() + layer.substring(1))); + wrapper.setRobotTestResults(robotTestResults); + listOfwrappers.add(wrapper); + } + return listOfwrappers; + } + + private List getResultsOfALayer(String resultsUrl) + throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, + IOException, KeyManagementException, NoSuchAlgorithmException { + List robotTestResults = new ArrayList(); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get Robot Test Results"); + setProperties(); + WebResource webResource = this.client.resource(resultsUrl + "/"); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); + ClientResponse response = webResource.get(ClientResponse.class); + if (response.getStatus() != 200) { + throw new HttpException("Could not retrieve robot test results from Nexus. HTTP error code : " + + response.getStatus() + " and message: " + response.getEntity(String.class)); + } + Document document = Jsoup.parse(response.getEntity(String.class)); + List elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0) + .getElementsByTag("tbody").get(0).getElementsByTag("tr"); + for (int i = 2; i < elements.size(); i++) { + String testSuiteName = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); + testSuiteName = testSuiteName.substring(0, testSuiteName.length() - 1); + webResource = this.client.resource(resultsUrl + "/" + testSuiteName + "/output.xml"); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); response = webResource.get(ClientResponse.class); if (response.getStatus() != 200) { throw new HttpException("Could not retrieve robot test result from Nexus. HTTP error code : " @@ -147,7 +179,7 @@ public final class NexusExecutorClient { ObjectMapper mapper = new ObjectMapper(); mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); RobotTestResult robotTestResult = mapper.readValue(xmlJSONObj.toString(), RobotTestResult.class); - robotTestResult.setName(resultName); + robotTestResult.setName(testSuiteName); robotTestResults.add(robotTestResult); } return robotTestResults;