/*- * ============LICENSE_START======================================================= * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 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 * * 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. * ============LICENSE_END========================================================= */ package com.onap.sdnc.testapi.service; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.fasterxml.jackson.databind.ObjectMapper; import com.onap.sdnc.testapi.model.CertificationInputs; import com.onap.sdnc.testapi.model.Output; import com.onap.sdnc.testapi.model.PreTestResponse; @Service public class CertificationClientService { private static final Logger logger = Logger.getLogger(CertificationClientService.class); @Value("${certification.api.host}") private String hostName; @Value("${certification.api.port}") private String portNumber; @Value("${certification.api.basepath}") private String restBasePath; @Value("${certification.api.username}") private String username; @Value("${certification.api.password}") private String pass; ObjectMapper mapper = new ObjectMapper(); public void restClient(CertificationInputs vnfinfo, List preTestNew, String testType) { PreTestResponse preTest = new PreTestResponse(); Output output = new Output(); if ("network".equalsIgnoreCase(testType)) { output = pingTest(vnfinfo); } if ("protocol".equalsIgnoreCase(testType)) { output = protocolTest(vnfinfo); } preTest.setStatus(output.getStatus()); preTest.setIpaddress(output.getIpaddress()); preTest.setStatistics(output.getStatistics()); preTest.setAvgTime(output.getAvgTime()); preTest.setTesttype(testType); preTestNew.add(preTest); } public static Output pingTest(CertificationInputs vnfinfo) { Output output = new Output(); String pingCmd = "ping " + vnfinfo.getInput().getIpaddress(); String pingResult = ""; String testResult = "fail"; String status = "unreachable"; String reason = null; String timeRes = null; String percentile = null; boolean flag = false; try { InetAddress byName = InetAddress.getByName(vnfinfo.getInput().getIpaddress()); flag = byName.isReachable(5000); } catch (UnknownHostException e) { logger.info("Network certification Exception : " + e); } catch (IOException e) { logger.info("Network certification Exception : " + e); } if (flag) { try { Runtime r = Runtime.getRuntime(); Process p = r.exec(pingCmd); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { if (pingResult.equals("")) { pingResult = inputLine; } else { pingResult += "~" + inputLine; } } String[] results = pingResult.split("~"); for (String res : results) { if (res.trim().contains("Packets:")) { testResult = "pass"; status = "reachable"; String packets = res.trim(); String[] lossPercentile = packets.split("\\("); percentile = lossPercentile[1].replace(")", "").replace(",", "").trim(); } if (res.trim().contains("Minimum")) { String timeMs = res.trim(); String[] time = timeMs.split(","); timeRes = time[0]; } } in.close(); } catch (Exception e) { logger.info("Network certification Exception : " + e); testResult = "fail"; status = "unreachable"; reason = e.toString(); } } output.setAvgTime(timeRes); output.setStatistics(percentile); output.setHostname(vnfinfo.getInput().getHostname()); output.setIpaddress(vnfinfo.getInput().getIpaddress()); output.setReason(reason); output.setTestresult(testResult); output.setStatus(status); return output; } public static Output protocolTest(CertificationInputs vnfinfo) { Output output = new Output(); Socket s = null; String status = "unreachable"; String reason = null; try { s = new Socket(vnfinfo.getInput().getIpaddress(), Integer.parseInt("45")); status = "reachable"; } catch (Exception e) { logger.info("Protocol certification Exception : " + e); reason = e.toString(); status = "unreachable"; } finally { if (s != null) try { s.close(); } catch (Exception e) { logger.info("Protocol certification Exception : " + e); reason = e.toString(); status = "unreachable"; } } output.setStatus(status); output.setIpaddress(vnfinfo.getInput().getIpaddress()); output.setReason(reason); return output; } }