From bdf15f5602b0c2592fc960affab464cd6c6d3904 Mon Sep 17 00:00:00 2001 From: Vijay VK Date: Wed, 21 Feb 2018 16:52:31 +0000 Subject: fix sonar issue and additional test Change-Id: If32e2319c71b947b7e5c68410f32b19ba5ac8125 Signed-off-by: VENKATESH KUMAR Issue-ID: DCAEGEN2-227 --- .../onap/dcae/commonFunction/EventProcessor.java | 381 ++++++++++----------- .../onap/dcae/controller/FetchDynamicConfig.java | 300 ++++++++-------- .../onap/dcae/restapi/RestfulCollectorServlet.java | 305 ++++++++--------- .../org/onap/dcae/vestest/TestCommonStartup.java | 343 ++++++++++--------- .../org/onap/dcae/vestest/TestEventReceipt.java | 15 + .../org/onap/dcae/vestest/TestFetchConfig.java | 234 ++++++++----- 6 files changed, 831 insertions(+), 747 deletions(-) diff --git a/src/main/java/org/onap/dcae/commonFunction/EventProcessor.java b/src/main/java/org/onap/dcae/commonFunction/EventProcessor.java index 6811c672..462287ef 100644 --- a/src/main/java/org/onap/dcae/commonFunction/EventProcessor.java +++ b/src/main/java/org/onap/dcae/commonFunction/EventProcessor.java @@ -1,192 +1,189 @@ -/*- - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * 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 org.onap.dcae.commonFunction; - -import com.att.nsa.clock.SaClock; -import com.att.nsa.logging.LoggingContext; -import com.att.nsa.logging.log4j.EcompFields; -import com.google.gson.JsonArray; -import com.google.gson.JsonParser; -import org.json.JSONArray; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.FileReader; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.TimeZone; - -public class EventProcessor implements Runnable { - - private static final Logger log = LoggerFactory.getLogger(EventProcessor.class); - private static final String EVENT_LITERAL = "event"; - private static final String COMMON_EVENT_HEADER = "commonEventHeader"; - - private static HashMap streamid_hash = new HashMap(); - public JSONObject event; - - public EventProcessor() { - log.debug("EventProcessor: Default Constructor"); - - String[] list = CommonStartup.streamid.split("\\|"); - for (String aList : list) { - String domain = aList.split("=")[0]; - // String streamIdList[] = list[i].split("=")[1].split(","); - String[] streamIdList = aList.substring(aList.indexOf('=') + 1).split(","); - - log.debug(String.format("Domain: %s streamIdList:%s", domain, Arrays.toString(streamIdList))); - streamid_hash.put(domain, streamIdList); - } - - } - - @Override - public void run() { - - try { - - event = CommonStartup.fProcessingInputQueue.take(); - log.info("QueueSize:" + CommonStartup.fProcessingInputQueue.size()+ "\tEventProcessor\tRemoving element: " + event ); - - // EventPublisher Ep=new EventPublisher(); - while (event != null) { - // As long as the producer is running we remove elements from - // the queue. - - // UUID uuid = - // UUID.fromString(event.get("VESuniqueId").toString()); - String uuid = event.get("VESuniqueId").toString(); - LoggingContext localLC = VESLogger.getLoggingContextForThread(uuid); - localLC.put(EcompFields.kBeginTimestampMs, SaClock.now()); - - log.debug("event.VESuniqueId" + event.get("VESuniqueId") + "event.commonEventHeader.domain:" - + event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER).getString("domain")); - String[] streamIdList = streamid_hash - .get(event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER).getString("domain")); - log.debug("streamIdList:" + streamIdList); - - if (streamIdList.length == 0) { - log.error("No StreamID defined for publish - Message dropped" + event); - } else { - for (String aStreamIdList : streamIdList) { - log.info("Invoking publisher for streamId:" + aStreamIdList); - this.overrideEvent(); - //EventPublisher.getInstance(aStreamIdList).sendEvent(event); - EventPublisherHash.getInstance().sendEvent(event, aStreamIdList); - - } - } - log.debug("Message published" + event); - event = CommonStartup.fProcessingInputQueue.take(); - // log.info("EventProcessor\tRemoving element: " + - // this.queue.remove()); - } - } catch (InterruptedException e) { - log.error("EventProcessor InterruptedException" + e.getMessage()); - } - - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void overrideEvent() { - // Set collector timestamp in event payload before publish - final Date currentTime = new Date(); - final SimpleDateFormat sdf = new SimpleDateFormat("EEE, MM dd yyyy hh:mm:ss z"); - sdf.setTimeZone(TimeZone.getTimeZone("GMT")); - - JSONObject collectorTimeStamp = new JSONObject().put("collectorTimeStamp", sdf.format(currentTime)); - JSONObject commonEventHeaderkey = event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER); - commonEventHeaderkey.put("internalHeaderFields", collectorTimeStamp); - event.getJSONObject(EVENT_LITERAL).put(COMMON_EVENT_HEADER, commonEventHeaderkey); - - if (CommonStartup.eventTransformFlag == 1) { - // read the mapping json file - final JsonParser parser = new JsonParser(); - FileReader fr = null; - try { - fr = new FileReader("./etc/eventTransform.json"); - final JsonArray jo = (JsonArray) parser.parse(fr); - log.info("parse eventTransform.json"); - // now convert to org.json - final String jsonText = jo.toString(); - final JSONArray topLevel = new JSONArray(jsonText); - // log.info("topLevel == " + topLevel); - - Class[] paramJSONObject = new Class[1]; - paramJSONObject[0] = JSONObject.class; - // load VESProcessors class at runtime - Class cls = Class.forName("org.onap.dcae.commonFunction.ConfigProcessors"); - Constructor constr = cls.getConstructor(paramJSONObject); - Object obj = constr.newInstance(event); - - for (int j = 0; j < topLevel.length(); j++) { - JSONObject filterObj = topLevel.getJSONObject(j).getJSONObject("filter"); - Method method = cls.getDeclaredMethod("isFilterMet", paramJSONObject); - boolean filterMet = (boolean) method.invoke(obj, filterObj); - if (filterMet) { - final JSONArray processors = topLevel.getJSONObject(j).getJSONArray("processors"); - - // call the processor method - for (int i = 0; i < processors.length(); i++) { - final JSONObject processorList = processors.getJSONObject(i); - final String functionName = processorList.getString("functionName"); - final JSONObject args = processorList.getJSONObject("args"); - // final JSONObject filter = - // processorList.getJSONObject("filter"); - - log.info(String.format("functionName==%s | args==%s", functionName, args)); - // reflect method call - method = cls.getDeclaredMethod(functionName, paramJSONObject); - method.invoke(obj, args); - } - } - } - - } catch (Exception e) { - - log.error("EventProcessor Exception" + e.getMessage() + e + e.getCause()); - } finally { - // close the file - if (fr != null) { - try { - fr.close(); - } catch (IOException e) { - log.error("Error closing file reader stream : " + e.toString()); - } - - } - } - } - // Remove VESversion from event. This field is for internal use and must - // be removed after use. - if (event.has("VESversion")) - event.remove("VESversion"); - - log.debug("Modified event:" + event); - - } -} +/*- + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * 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 org.onap.dcae.commonFunction; + +import com.att.nsa.clock.SaClock; +import com.att.nsa.logging.LoggingContext; +import com.att.nsa.logging.log4j.EcompFields; +import com.google.gson.JsonArray; +import com.google.gson.JsonParser; +import org.json.JSONArray; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.FileReader; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.TimeZone; + +public class EventProcessor implements Runnable { + + private static final Logger log = LoggerFactory.getLogger(EventProcessor.class); + private static final String EVENT_LITERAL = "event"; + private static final String COMMON_EVENT_HEADER = "commonEventHeader"; + + private static HashMap streamid_hash = new HashMap(); + public JSONObject event; + + public EventProcessor() { + log.debug("EventProcessor: Default Constructor"); + + String[] list = CommonStartup.streamid.split("\\|"); + for (String aList : list) { + String domain = aList.split("=")[0]; + // String streamIdList[] = list[i].split("=")[1].split(","); + String[] streamIdList = aList.substring(aList.indexOf('=') + 1).split(","); + + log.debug(String.format("Domain: %s streamIdList:%s", domain, Arrays.toString(streamIdList))); + streamid_hash.put(domain, streamIdList); + } + + } + + @Override + public void run() { + + try { + + event = CommonStartup.fProcessingInputQueue.take(); + log.info("QueueSize:" + CommonStartup.fProcessingInputQueue.size()+ "\tEventProcessor\tRemoving element: " + event ); + + // EventPublisher Ep=new EventPublisher(); + while (event != null) { + // As long as the producer is running we remove elements from + // the queue. + + String uuid = event.get("VESuniqueId").toString(); + LoggingContext localLC = VESLogger.getLoggingContextForThread(uuid); + localLC.put(EcompFields.kBeginTimestampMs, SaClock.now()); + + log.debug("event.VESuniqueId" + event.get("VESuniqueId") + "event.commonEventHeader.domain:" + + event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER).getString("domain")); + String[] streamIdList = streamid_hash + .get(event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER).getString("domain")); + log.debug("streamIdList:" + streamIdList); + + if (streamIdList.length == 0) { + log.error("No StreamID defined for publish - Message dropped" + event); + } else { + for (String aStreamIdList : streamIdList) { + log.info("Invoking publisher for streamId:" + aStreamIdList); + this.overrideEvent(); + //EventPublisher.getInstance(aStreamIdList).sendEvent(event); + EventPublisherHash.getInstance().sendEvent(event, aStreamIdList); + + } + } + log.debug("Message published" + event); + event = CommonStartup.fProcessingInputQueue.take(); + + } + } catch (InterruptedException e) { + log.error("EventProcessor InterruptedException" + e.getMessage()); + Thread.currentThread().interrupt(); + } + + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void overrideEvent() { + // Set collector timestamp in event payload before publish + final Date currentTime = new Date(); + final SimpleDateFormat sdf = new SimpleDateFormat("EEE, MM dd yyyy hh:mm:ss z"); + sdf.setTimeZone(TimeZone.getTimeZone("GMT")); + + JSONObject collectorTimeStamp = new JSONObject().put("collectorTimeStamp", sdf.format(currentTime)); + JSONObject commonEventHeaderkey = event.getJSONObject(EVENT_LITERAL).getJSONObject(COMMON_EVENT_HEADER); + commonEventHeaderkey.put("internalHeaderFields", collectorTimeStamp); + event.getJSONObject(EVENT_LITERAL).put(COMMON_EVENT_HEADER, commonEventHeaderkey); + + if (CommonStartup.eventTransformFlag == 1) { + // read the mapping json file + final JsonParser parser = new JsonParser(); + FileReader fr = null; + try { + fr = new FileReader("./etc/eventTransform.json"); + final JsonArray jo = (JsonArray) parser.parse(fr); + log.info("parse eventTransform.json"); + // now convert to org.json + final String jsonText = jo.toString(); + final JSONArray topLevel = new JSONArray(jsonText); + // log.info("topLevel == " + topLevel); + + Class[] paramJSONObject = new Class[1]; + paramJSONObject[0] = JSONObject.class; + // load VESProcessors class at runtime + Class cls = Class.forName("org.onap.dcae.commonFunction.ConfigProcessors"); + Constructor constr = cls.getConstructor(paramJSONObject); + Object obj = constr.newInstance(event); + + for (int j = 0; j < topLevel.length(); j++) { + JSONObject filterObj = topLevel.getJSONObject(j).getJSONObject("filter"); + Method method = cls.getDeclaredMethod("isFilterMet", paramJSONObject); + boolean filterMet = (boolean) method.invoke(obj, filterObj); + if (filterMet) { + final JSONArray processors = topLevel.getJSONObject(j).getJSONArray("processors"); + + // call the processor method + for (int i = 0; i < processors.length(); i++) { + final JSONObject processorList = processors.getJSONObject(i); + final String functionName = processorList.getString("functionName"); + final JSONObject args = processorList.getJSONObject("args"); + + + log.info(String.format("functionName==%s | args==%s", functionName, args)); + // reflect method call + method = cls.getDeclaredMethod(functionName, paramJSONObject); + method.invoke(obj, args); + } + } + } + + } catch (Exception e) { + + log.error("EventProcessor Exception" + e.getMessage() + e + e.getCause()); + } finally { + // close the file + if (fr != null) { + try { + fr.close(); + } catch (IOException e) { + log.error("Error closing file reader stream : " + e.toString()); + } + + } + } + } + // Remove VESversion from event. This field is for internal use and must + // be removed after use. + if (event.has("VESversion")) + event.remove("VESversion"); + + log.debug("Modified event:" + event); + + } +} diff --git a/src/main/java/org/onap/dcae/controller/FetchDynamicConfig.java b/src/main/java/org/onap/dcae/controller/FetchDynamicConfig.java index 95e95747..7b2e0b3b 100644 --- a/src/main/java/org/onap/dcae/controller/FetchDynamicConfig.java +++ b/src/main/java/org/onap/dcae/controller/FetchDynamicConfig.java @@ -1,139 +1,161 @@ -/*- - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2017-2018 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 org.onap.dcae.controller; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.json.JSONTokener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Map; - -public class FetchDynamicConfig { - - private static final Logger log = LoggerFactory.getLogger(FetchDynamicConfig.class); - - public static String configFile = "/opt/app/KV-Configuration.json"; - static String url; - static String retString; - - public FetchDynamicConfig() { - } - - public static void main(String[] args) { - Map env = System.getenv(); - for (Map.Entry entry : env.entrySet()) { - log.info("%s=%s%n", entry.getKey(), entry.getValue()); - } - - if (env.containsKey("CONSUL_HOST") && env.containsKey("CONFIG_BINDING_SERVICE")) { -// && env.containsKey("HOSTNAME")) { - log.info(">>>Dynamic configuration to be fetched from ConfigBindingService"); - url = env.get("CONSUL_HOST") + ":8500/v1/catalog/service/" + env.get("CONFIG_BINDING_SERVICE"); - - retString = executecurl(url); - // consul return as array - JSONTokener temp = new JSONTokener(retString); - JSONObject cbsjobj = (JSONObject) new JSONArray(temp).get(0); - - String urlPart1 = null; - if (cbsjobj.has("ServiceAddress") && cbsjobj.has("ServicePort")) { - urlPart1 = cbsjobj.getString("ServiceAddress") + ":" + cbsjobj.getInt("ServicePort"); - } - - log.info("CONFIG_BINDING_SERVICE DNS RESOLVED:" + urlPart1); - FetchDynamicConfig fc= new FetchDynamicConfig(); - if (env.containsKey("HOSTNAME")) - { - url = urlPart1 + "/service_component/" + env.get("HOSTNAME"); - retString = executecurl(url); - } - else if (env.containsKey("SERVICE_NAME")) - { - url = urlPart1 + "/service_component/" + env.get("SERVICE_NAME"); - retString = executecurl(url); - } - else - { - log.error("Service name environment variable - HOSTNAME/SERVICE_NAME not found within container "); - } - fc.writefile(retString); - - - } else { - log.info(">>>Static configuration to be used"); - } - - } - - public void writefile (String retString) - { - log.info("URL to fetch configuration:" + url + " Return String:" + retString); - - - String indentedretstring=(new JSONObject(retString)).toString(4); - - try (FileWriter file = new FileWriter(FetchDynamicConfig.configFile)) { - file.write(indentedretstring); - - log.info("Successfully Copied JSON Object to file /opt/app/KV-Configuration.json"); - } catch (IOException e) { - log.error("Error in writing configuration into file /opt/app/KV-Configuration.json " + retString, e); - e.printStackTrace(); - } - - } - - public static String executecurl(String url) { - - String[] command = { "curl", "-v", url }; - ProcessBuilder process = new ProcessBuilder(command); - Process p; - String result = null; - try { - p = process.start(); - InputStreamReader ipr = new InputStreamReader(p.getInputStream()); - BufferedReader reader = new BufferedReader(ipr); - StringBuilder builder = new StringBuilder(); - String line; - - while ((line = reader.readLine()) != null) { - builder.append(line); - } - result = builder.toString(); - log.info(result); - - reader.close(); - ipr.close(); - } catch (IOException e) { - log.error("error", e); - e.printStackTrace(); - } - return result; - - } - -} +/*- + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2017-2018 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 org.onap.dcae.controller; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Map; + +public class FetchDynamicConfig { + + private static final Logger log = LoggerFactory.getLogger(FetchDynamicConfig.class); + + public static String configFile = "/opt/app/KV-Configuration.json"; + static String url; + public static String retString; + public static String retCBSString; + public static Map env; + + public FetchDynamicConfig() { + } + + public static void main(String[] args) { + + //Call consul api and identify the CBS Service address and port + getconsul(); + //Construct and invoke CBS API to get application Configuration + getCBS(); + //Write data returned into configFile for LoadDynamicConfig process to pickup + FetchDynamicConfig fc= new FetchDynamicConfig(); + fc.writefile(retCBSString); + } + + public static void getconsul() + { + + env = System.getenv(); + for (Map.Entry entry : env.entrySet()) { + log.info( entry.getKey() + ":"+ entry.getValue()); + } + + if (env.containsKey("CONSUL_HOST") && env.containsKey("CONFIG_BINDING_SERVICE")) { +// && env.containsKey("HOSTNAME")) { + log.info(">>>Dynamic configuration to be fetched from ConfigBindingService"); + url = env.get("CONSUL_HOST") + ":8500/v1/catalog/service/" + env.get("CONFIG_BINDING_SERVICE"); + + retString = executecurl(url); + + + } else { + log.info(">>>Static configuration to be used"); + } + + + } + + public static void getCBS() + { + + env = System.getenv(); + // consul return as array + JSONTokener temp = new JSONTokener(retString); + JSONObject cbsjobj = (JSONObject) new JSONArray(temp).get(0); + + String urlPart1 = null; + if (cbsjobj.has("ServiceAddress") && cbsjobj.has("ServicePort")) { + urlPart1 = cbsjobj.getString("ServiceAddress") + ":" + cbsjobj.getInt("ServicePort"); + } + + log.info("CONFIG_BINDING_SERVICE DNS RESOLVED:" + urlPart1); + + if (env.containsKey("HOSTNAME")) + { + url = urlPart1 + "/service_component/" + env.get("HOSTNAME"); + retCBSString = executecurl(url); + } + else if (env.containsKey("SERVICE_NAME")) + { + url = urlPart1 + "/service_component/" + env.get("SERVICE_NAME"); + retCBSString = executecurl(url); + } + else + { + log.error("Service name environment variable - HOSTNAME/SERVICE_NAME not found within container "); + } + + } + + public void writefile (String retCBSString) + { + log.info("URL to fetch configuration:" + url + " Return String:" + retCBSString); + + + String indentedretstring=(new JSONObject(retCBSString)).toString(4); + + try (FileWriter file = new FileWriter(FetchDynamicConfig.configFile)) { + file.write(indentedretstring); + + log.info("Successfully Copied JSON Object to file " + configFile); + } catch (IOException e) { + log.error("Error in writing configuration into file " + configFile + retString + e.getMessage()); + e.printStackTrace(); + } + + } + + public static String executecurl(String url) { + + String[] command = { "curl", "-v", url }; + ProcessBuilder process = new ProcessBuilder(command); + Process p; + String result = null; + try { + p = process.start(); + InputStreamReader ipr = new InputStreamReader(p.getInputStream()); + BufferedReader reader = new BufferedReader(ipr); + StringBuilder builder = new StringBuilder(); + String line; + + while ((line = reader.readLine()) != null) { + builder.append(line); + } + result = builder.toString(); + log.info(result); + + reader.close(); + ipr.close(); + } catch (IOException e) { + log.error("error", e); + e.printStackTrace(); + } + return result; + + } + +} diff --git a/src/main/java/org/onap/dcae/restapi/RestfulCollectorServlet.java b/src/main/java/org/onap/dcae/restapi/RestfulCollectorServlet.java index 1fa3c419..7aa82c9f 100644 --- a/src/main/java/org/onap/dcae/restapi/RestfulCollectorServlet.java +++ b/src/main/java/org/onap/dcae/restapi/RestfulCollectorServlet.java @@ -1,155 +1,150 @@ - -/* - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * 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 org.onap.dcae.restapi; - -import java.io.IOException; -import java.net.URL; - -import javax.servlet.ServletException; - -import org.apache.tomcat.util.codec.binary.Base64; -import org.onap.dcae.commonFunction.CommonStartup; -import org.onap.dcae.commonFunction.VESLogger; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.att.nsa.apiServer.CommonServlet; -import com.att.nsa.configs.ConfigDbException; -import com.att.nsa.drumlin.service.framework.DrumlinErrorHandler; -import com.att.nsa.drumlin.service.framework.context.DrumlinRequestContext; -import com.att.nsa.drumlin.service.framework.routing.DrumlinRequestRouter; -import com.att.nsa.drumlin.service.framework.routing.playish.DrumlinPlayishRoutingFileSource; -import com.att.nsa.drumlin.service.standards.HttpStatusCodes; -import com.att.nsa.drumlin.till.nv.rrNvReadable; -import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException; -import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting; -import com.att.nsa.security.NsaAuthenticator; - -import com.att.nsa.security.authenticators.SimpleAuthenticator; -import com.att.nsa.security.db.simple.NsaSimpleApiKey; - - -public class RestfulCollectorServlet extends CommonServlet -{ - String authid=null; - String authpwd=null; - public String authlist; - - public RestfulCollectorServlet ( rrNvReadable settings ) throws loadException, missingReqdSetting - { - super ( settings, "collector", false ); - authlist = settings.getString(CommonStartup.KSETTING_AUTHLIST,null); - } - - - - - /** - * This is called once at server start. Use it to init any shared objects and setup the route mapping. - */ - @Override - protected void servletSetup () throws rrNvReadable.missingReqdSetting, rrNvReadable.invalidSettingValue, ServletException - { - super.servletSetup (); - - try - { - // the base class provides a bunch of things like API authentication and ECOMP compliant - // logging. The Restful Collector likely doesn't need API authentication, so for now, - // we init the base class services with an in-memory (and empty!) config DB. - commonServletSetup ( ConfigDbType.MEMORY ); - - VESLogger.setUpEcompLogging(); - - // setup the servlet routing and error handling - final DrumlinRequestRouter drr = getRequestRouter (); - - // you can tell the request router what to do when a particular kind of exception is thrown. - drr.setHandlerForException( IllegalArgumentException.class, new DrumlinErrorHandler() - { - @Override - public void handle ( DrumlinRequestContext ctx, Throwable cause ) - { - sendJsonReply ( ctx, HttpStatusCodes.k400_badRequest, cause.getMessage() ); - } - }); - - // load the routes from the config file - final URL routes = findStream ( "routes.conf" ); - if ( routes == null ) throw new rrNvReadable.missingReqdSetting ( "No routing configuration." ); - final DrumlinPlayishRoutingFileSource drs = new DrumlinPlayishRoutingFileSource ( routes ); - drr.addRouteSource ( drs ); - - if (CommonStartup.authflag > 0) { - NsaAuthenticator NsaAuth; - NsaAuth = AuthlistHandler(authlist); - - this.getSecurityManager().addAuthenticator(NsaAuth); - } - - log.info ( "Restful Collector Servlet is up." ); - } - catch ( SecurityException e ) - { - throw new ServletException ( e ); - } - catch ( IOException e ) - { - throw new ServletException ( e ); - } - catch ( ConfigDbException e ) - { - throw new ServletException ( e ); - } - } - - public NsaAuthenticator AuthlistHandler (String authlist) - { - NsaAuthenticator NsaAuth = new SimpleAuthenticator (); - if (authlist != null) - { - String authpair[] = authlist.split("\\|"); - for (String pair: authpair) { - String lineid[] = pair.split(","); - String listauthid = lineid[0]; - String listauthpwd = new String(Base64.decodeBase64(lineid[1])); - ((SimpleAuthenticator) NsaAuth).add(listauthid,listauthpwd); - } - - } - else if (authid != null) - { - ((SimpleAuthenticator) NsaAuth).add(authid,authpwd); - } - else - { - //add a default test account - ((SimpleAuthenticator) NsaAuth).add("admin","collectorpasscode"); - } - return NsaAuth; - - } - - - private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger ( RestfulCollectorServlet.class ); -} + +/* + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * 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 org.onap.dcae.restapi; + +import java.io.IOException; +import java.net.URL; + +import javax.servlet.ServletException; + +import org.apache.tomcat.util.codec.binary.Base64; +import org.onap.dcae.commonFunction.CommonStartup; +import org.onap.dcae.commonFunction.VESLogger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.att.nsa.apiServer.CommonServlet; +import com.att.nsa.configs.ConfigDbException; +import com.att.nsa.drumlin.service.framework.DrumlinErrorHandler; +import com.att.nsa.drumlin.service.framework.context.DrumlinRequestContext; +import com.att.nsa.drumlin.service.framework.routing.DrumlinRequestRouter; +import com.att.nsa.drumlin.service.framework.routing.playish.DrumlinPlayishRoutingFileSource; +import com.att.nsa.drumlin.service.standards.HttpStatusCodes; +import com.att.nsa.drumlin.till.nv.rrNvReadable; +import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException; +import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting; +import com.att.nsa.security.NsaAuthenticator; + +import com.att.nsa.security.authenticators.SimpleAuthenticator; +import com.att.nsa.security.db.simple.NsaSimpleApiKey; + + +public class RestfulCollectorServlet extends CommonServlet +{ + + public static String authlist; + + public RestfulCollectorServlet ( rrNvReadable settings ) throws loadException, missingReqdSetting + { + super ( settings, "collector", false ); + authlist = settings.getString(CommonStartup.KSETTING_AUTHLIST,null); + } + + + + + /** + * This is called once at server start. Use it to init any shared objects and setup the route mapping. + */ + @Override + protected void servletSetup () throws rrNvReadable.missingReqdSetting, rrNvReadable.invalidSettingValue, ServletException + { + super.servletSetup (); + + try + { + // the base class provides a bunch of things like API authentication and ECOMP compliant + // logging. The Restful Collector likely doesn't need API authentication, so for now, + // we init the base class services with an in-memory (and empty!) config DB. + commonServletSetup ( ConfigDbType.MEMORY ); + + VESLogger.setUpEcompLogging(); + + // setup the servlet routing and error handling + final DrumlinRequestRouter drr = getRequestRouter (); + + // you can tell the request router what to do when a particular kind of exception is thrown. + drr.setHandlerForException( IllegalArgumentException.class, new DrumlinErrorHandler() + { + @Override + public void handle ( DrumlinRequestContext ctx, Throwable cause ) + { + sendJsonReply ( ctx, HttpStatusCodes.k400_badRequest, cause.getMessage() ); + } + }); + + // load the routes from the config file + final URL routes = findStream ( "routes.conf" ); + if ( routes == null ) throw new rrNvReadable.missingReqdSetting ( "No routing configuration." ); + final DrumlinPlayishRoutingFileSource drs = new DrumlinPlayishRoutingFileSource ( routes ); + drr.addRouteSource ( drs ); + + if (CommonStartup.authflag > 0) { + NsaAuthenticator NsaAuth; + NsaAuth = AuthlistHandler(authlist); + + this.getSecurityManager().addAuthenticator(NsaAuth); + } + + log.info ( "Restful Collector Servlet is up." ); + } + catch ( SecurityException e ) + { + throw new ServletException ( e ); + } + catch ( IOException e ) + { + throw new ServletException ( e ); + } + catch ( ConfigDbException e ) + { + throw new ServletException ( e ); + } + } + + public NsaAuthenticator AuthlistHandler (String authlist) + { + NsaAuthenticator NsaAuth = new SimpleAuthenticator (); + if (authlist != null) + { + String authpair[] = authlist.split("\\|"); + for (String pair: authpair) { + String lineid[] = pair.split(","); + String listauthid = lineid[0]; + String listauthpwd = new String(Base64.decodeBase64(lineid[1])); + ((SimpleAuthenticator) NsaAuth).add(listauthid,listauthpwd); + } + + } + else + { + //add a default test account + ((SimpleAuthenticator) NsaAuth).add("admin","collectorpasscode"); + } + return NsaAuth; + + } + + + private static final long serialVersionUID = 1L; + private static final Logger log = LoggerFactory.getLogger ( RestfulCollectorServlet.class ); +} diff --git a/src/test/java/org/onap/dcae/vestest/TestCommonStartup.java b/src/test/java/org/onap/dcae/vestest/TestCommonStartup.java index 0cf90759..aa56c611 100644 --- a/src/test/java/org/onap/dcae/vestest/TestCommonStartup.java +++ b/src/test/java/org/onap/dcae/vestest/TestCommonStartup.java @@ -1,171 +1,172 @@ -/*- - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * 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 org.onap.dcae.vestest; - -import java.io.FileReader; -import java.io.IOException; -import java.net.URL; -import java.util.Map; -import java.util.concurrent.LinkedBlockingQueue; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.onap.dcae.commonFunction.CommonStartup; -import org.onap.dcae.commonFunction.EventProcessor; -import org.onap.dcae.commonFunction.CommonStartup.QueueFullException; -import org.onap.dcae.restapi.RestfulCollectorServlet; - -import com.att.nsa.cmdLine.NsaCommandLineUtil; -import com.att.nsa.drumlin.service.framework.DrumlinServlet; -import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException; -import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting; -import com.att.nsa.security.NsaAuthenticator; -import com.att.nsa.security.authenticators.SimpleAuthenticator; -import com.att.nsa.security.db.simple.NsaSimpleApiKey; -import com.google.gson.JsonParser; -import com.att.nsa.drumlin.till.nv.impl.nvPropertiesFile; -import com.att.nsa.drumlin.till.nv.impl.nvReadableStack; -import com.att.nsa.drumlin.till.nv.impl.nvReadableTable; - - -public class TestCommonStartup { - - String payload = null; - @Before - public void setUp() throws Exception { - - // process command line arguments - payload = new JsonParser().parse(new FileReader("src/test/resources/VES_valid.txt")).toString(); - CommonStartup.fProcessingInputQueue = new LinkedBlockingQueue (CommonStartup.KDEFAULT_MAXQUEUEDEVENTS); - } - - @After - public void tearDown() throws Exception { - - } - - @Test - public void testCommonStartupload() { - - String args[] = { "junittest" }; - final Map argMap = NsaCommandLineUtil.processCmdLine(args, true); - final String config = NsaCommandLineUtil.getSetting(argMap, "c", "collector.properties"); - final URL settingStream = DrumlinServlet.findStream(config, CommonStartup.class); - - final nvReadableStack settings = new nvReadableStack(); - try { - settings.push(new nvPropertiesFile(settingStream)); - } catch (loadException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - settings.push(new nvReadableTable(argMap)); - Assert.assertEquals("true", "true"); - } - - @Test - public void testhandleevent() { - JSONArray jsonArrayMod = new JSONArray().put(new JSONObject(payload)); - try { - - - CommonStartup.handleEvents (jsonArrayMod); - } catch ( JSONException | QueueFullException | IOException e) { - // TODO Auto-generated catch block - //e.printStackTrace(); - System.out.println("junit reported:" + e.getMessage()); - } - Assert.assertEquals("true", "true"); - } - - -/* - @Test - public void testServlet() { - try - { - RestfulCollectorServlet rsv = new RestfulCollectorServlet(null); - } - catch (NullPointerException|loadException| missingReqdSetting e){ - System.out.println("junit reported:" + e.getMessage()); - } - Assert.assertEquals("true", "true"); - } -*/ - - - @Test - public void testEventProcessorinstantiation() - { - CommonStartup.streamid="fault=sec_fault|syslog=sec_syslog|heartbeat=sec_heartbeat|measurementsForVfScaling=sec_measurement|mobileFlow=sec_mobileflow|other=sec_other|stateChange=sec_statechange|thresholdCrossingAlert=sec_thresholdCrossingAlert|voiceQuality=ves_voicequality|sipSignaling=ves_sipsignaling"; - EventProcessor ep = new EventProcessor (); - Thread epThread=new Thread(ep); - epThread.start(); - Assert.assertEquals("true", "true"); - epThread.stop(); - - } - - @Test - public void testAuthListHandler() - { - - final Map argMap = NsaCommandLineUtil.processCmdLine ( new String[0], true ); - final String config = NsaCommandLineUtil.getSetting ( argMap, "c", "collector.properties" ); - final URL settingStream = DrumlinServlet.findStream ( config, CommonStartup.class ); - - final nvReadableStack settings = new nvReadableStack (); - try { - settings.push ( new nvPropertiesFile ( settingStream ) ); - settings.push ( new nvReadableTable ( argMap ) ); - } catch (loadException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - - - RestfulCollectorServlet rsv = null; - NsaAuthenticator NsaAuth = null; - Boolean flag = false; - try - { - rsv = new RestfulCollectorServlet(settings); - } - catch (NullPointerException|loadException| missingReqdSetting e){ - System.out.println("junit reported:" + e.getMessage()); - } - String authlist = "secureid,IWRjYWVSb2FkbTEyMyEt|sample1,c2FtcGxlMQ==|vdnsagg,dmRuc2FnZw=="; - NsaAuth = rsv.AuthlistHandler(authlist); - if (NsaAuth != null) - { - flag = true; - } - Assert.assertEquals(true, flag); - - - } -} - - +/*- + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * 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 org.onap.dcae.vestest; + +import java.io.FileReader; +import java.io.IOException; +import java.net.URL; +import java.util.Map; +import java.util.concurrent.LinkedBlockingQueue; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.onap.dcae.commonFunction.CommonStartup; +import org.onap.dcae.commonFunction.EventProcessor; +import org.onap.dcae.commonFunction.CommonStartup.QueueFullException; +import org.onap.dcae.restapi.RestfulCollectorServlet; + +import com.att.nsa.cmdLine.NsaCommandLineUtil; +import com.att.nsa.drumlin.service.framework.DrumlinServlet; +import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException; +import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting; +import com.att.nsa.security.NsaAuthenticator; +import com.att.nsa.security.authenticators.SimpleAuthenticator; +import com.att.nsa.security.db.simple.NsaSimpleApiKey; +import com.google.gson.JsonParser; +import com.att.nsa.drumlin.till.nv.impl.nvPropertiesFile; +import com.att.nsa.drumlin.till.nv.impl.nvReadableStack; +import com.att.nsa.drumlin.till.nv.impl.nvReadableTable; + + +public class TestCommonStartup { + + String payload = null; + @Before + public void setUp() throws Exception { + + // process command line arguments + payload = new JsonParser().parse(new FileReader("src/test/resources/VES_valid.txt")).toString(); + CommonStartup.fProcessingInputQueue = new LinkedBlockingQueue (CommonStartup.KDEFAULT_MAXQUEUEDEVENTS); + } + + @After + public void tearDown() throws Exception { + + } + + @Test + public void testCommonStartupload() { + + String args[] = { "junittest" }; + final Map argMap = NsaCommandLineUtil.processCmdLine(args, true); + final String config = NsaCommandLineUtil.getSetting(argMap, "c", "collector.properties"); + final URL settingStream = DrumlinServlet.findStream(config, CommonStartup.class); + + final nvReadableStack settings = new nvReadableStack(); + try { + settings.push(new nvPropertiesFile(settingStream)); + } catch (loadException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + settings.push(new nvReadableTable(argMap)); + Assert.assertEquals("true", "true"); + } + + @Test + public void testhandleevent() { + JSONArray jsonArrayMod = new JSONArray().put(new JSONObject(payload)); + try { + + + CommonStartup.handleEvents (jsonArrayMod); + } catch ( JSONException | QueueFullException | IOException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + System.out.println("junit reported:" + e.getMessage()); + } + Assert.assertEquals("true", "true"); + } + + +/* + @Test + public void testServlet() { + try + { + RestfulCollectorServlet rsv = new RestfulCollectorServlet(null); + } + catch (NullPointerException|loadException| missingReqdSetting e){ + System.out.println("junit reported:" + e.getMessage()); + } + Assert.assertEquals("true", "true"); + } +*/ + + + + @Test + public void testEventProcessorinstantiation() + { + CommonStartup.streamid="fault=sec_fault|syslog=sec_syslog|heartbeat=sec_heartbeat|measurementsForVfScaling=sec_measurement|mobileFlow=sec_mobileflow|other=sec_other|stateChange=sec_statechange|thresholdCrossingAlert=sec_thresholdCrossingAlert|voiceQuality=ves_voicequality|sipSignaling=ves_sipsignaling"; + EventProcessor ep = new EventProcessor (); + Thread epThread=new Thread(ep); + epThread.start(); + Assert.assertEquals("true", "true"); + epThread.interrupt(); + + } + + @Test + public void testAuthListHandler() + { + + final Map argMap = NsaCommandLineUtil.processCmdLine ( new String[0], true ); + final String config = NsaCommandLineUtil.getSetting ( argMap, "c", "collector.properties" ); + final URL settingStream = DrumlinServlet.findStream ( config, CommonStartup.class ); + + final nvReadableStack settings = new nvReadableStack (); + try { + settings.push ( new nvPropertiesFile ( settingStream ) ); + settings.push ( new nvReadableTable ( argMap ) ); + } catch (loadException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + + RestfulCollectorServlet rsv = null; + NsaAuthenticator NsaAuth = null; + Boolean flag = false; + try + { + rsv = new RestfulCollectorServlet(settings); + } + catch (NullPointerException|loadException| missingReqdSetting e){ + System.out.println("junit reported:" + e.getMessage()); + } + String authlist = "secureid,IWRjYWVSb2FkbTEyMyEt|sample1,c2FtcGxlMQ==|vdnsagg,dmRuc2FnZw=="; + NsaAuth = rsv.AuthlistHandler(authlist); + if (NsaAuth != null) + { + flag = true; + } + Assert.assertEquals(true, flag); + + + } +} + + diff --git a/src/test/java/org/onap/dcae/vestest/TestEventReceipt.java b/src/test/java/org/onap/dcae/vestest/TestEventReceipt.java index 668c718a..3af66fb0 100644 --- a/src/test/java/org/onap/dcae/vestest/TestEventReceipt.java +++ b/src/test/java/org/onap/dcae/vestest/TestEventReceipt.java @@ -34,6 +34,7 @@ import org.onap.dcae.commonFunction.CommonStartup; import org.onap.dcae.commonFunction.CommonStartup.QueueFullException; import org.onap.dcae.commonFunction.CustomExceptionLoader; import org.onap.dcae.restapi.endpoints.EventReceipt; +import org.onap.dcae.restapi.endpoints.Ui; import com.att.nsa.apiServer.endpoints.NsaBaseEndpoint; import com.att.nsa.drumlin.service.framework.context.DrumlinRequestContext; @@ -120,4 +121,18 @@ public class TestEventReceipt extends NsaBaseEndpoint { } assertEquals(true, true); } + + @Test + public void testUI() { + + try { + Ui.hello(null); + } + catch (Exception e) + { + //As context object is null, handling null pointer exception. + Log.debug("Response object creation failure"); + } + assertEquals(true, true); + } } diff --git a/src/test/java/org/onap/dcae/vestest/TestFetchConfig.java b/src/test/java/org/onap/dcae/vestest/TestFetchConfig.java index ed3e1086..2f18e820 100644 --- a/src/test/java/org/onap/dcae/vestest/TestFetchConfig.java +++ b/src/test/java/org/onap/dcae/vestest/TestFetchConfig.java @@ -1,90 +1,144 @@ -/*- - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2018 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 org.onap.dcae.vestest; - -import static org.junit.Assert.*; - -import static org.junit.Assert.assertEquals; - -import java.io.FileReader; -import java.io.IOException; -import org.json.JSONObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonObject; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.dcae.commonFunction.CommonStartup; -import org.onap.dcae.commonFunction.DmaapPropertyReader; -import org.onap.dcae.commonFunction.EventProcessor; -import org.onap.dcae.commonFunction.EventPublisherHash; -import org.onap.dcae.controller.FetchDynamicConfig; - - -public class TestFetchConfig { - - JSONObject jsonObject; - - @Before - public void setUp() throws Exception { - - - } - - @After - public void tearDown() throws Exception { - } - - - - @Test - public void testwritefile() { - Boolean flag = false; - - FetchDynamicConfig fc = new FetchDynamicConfig(); - FetchDynamicConfig.configFile = "src/test/resources/controller-config_formatted_op.json"; - - - - try{ - JsonParser parser = new JsonParser(); - FileReader fr = new FileReader ("src/test/resources/controller-config_singleline_ip.json" ); - final JsonObject jo = (JsonObject) parser.parse (fr); - final String jsonText = jo.toString (); - jsonObject = new JSONObject ( jsonText ); - fc.writefile(jsonObject.toString()); - } - catch(Exception e){ - System.out.println("Exception while opening the file"); - e.printStackTrace(); - } - if(jsonObject.has("streams_publishes")) - { - flag = true; - } - - assertEquals(true, flag); - - } - - -} - +/*- + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2018 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 org.onap.dcae.vestest; + +import static org.junit.Assert.*; + +import static org.junit.Assert.assertEquals; + +import java.io.FileReader; +import java.io.IOException; +import java.util.Map; +import java.util.Properties; + +import org.json.JSONObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonObject; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.dcae.commonFunction.CommonStartup; +import org.onap.dcae.commonFunction.DmaapPropertyReader; +import org.onap.dcae.commonFunction.EventProcessor; +import org.onap.dcae.commonFunction.EventPublisherHash; +import org.onap.dcae.controller.FetchDynamicConfig; + + +public class TestFetchConfig { + + JSONObject jsonObject; + + @Before + public void setUp() throws Exception { + + + System.setProperty("CONSUL_HOST", "localhost"); + System.setProperty("CONFIG_BINDING_SERVICE", "localhost"); + System.setProperty("HOSTNAME", "localhost"); + } + + @After + public void tearDown() throws Exception { + } + + + + @Test + public void testwritefile() { + Boolean flag = false; + + FetchDynamicConfig fc = new FetchDynamicConfig(); + //Used for writing the configuration output + FetchDynamicConfig.configFile = "src/test/resources/controller-config_formatted_op.json"; + + + + try{ + JsonParser parser = new JsonParser(); + FileReader fr = new FileReader ("src/test/resources/controller-config_singleline_ip.json" ); + final JsonObject jo = (JsonObject) parser.parse (fr); + final String jsonText = jo.toString (); + jsonObject = new JSONObject ( jsonText ); + + fc.writefile(jsonObject.toString()); + } + catch(Exception e){ + System.out.println("Exception while opening the file"); + e.printStackTrace(); + } + if(jsonObject.has("streams_publishes")) + { + flag = true; + } + + assertEquals(true, flag); + + } + + @Test + public void testgetConsul() { + Boolean flag = false; + + + try{ + + FetchDynamicConfig.getconsul(); + flag = true; + } + catch(Exception e){ + System.out.println("Exception while getting to consul"); + e.printStackTrace(); + } + assertEquals(true, flag); + + } + + @Test + public void testgetCBS() { + Boolean flag = false; + + try{ + + + JsonParser parser = new JsonParser(); + FileReader fr = new FileReader ("src/test/resources/controller-config_singleline_ip.json" ); + final JsonObject jo = (JsonObject) parser.parse (fr); + final String jsonText = jo.toString (); + jsonObject = new JSONObject ( jsonText ); + + //retstring from Consul is parsed + FetchDynamicConfig.retString = "[{\"ID\":\"81bc2a17-8cfa-3f6f-30a9-a545a9b6ac2f\",\"Node\":\"zldcrdm5bdcc2dokr00\",\"Address\":\"135.25.108.161\",\"Datacenter\":\"zldcrdm5bdcc2\",\"TaggedAddresses\":{\"lan\":\"135.25.108.161\",\"wan\":\"135.25.108.161\"},\"NodeMeta\":{\"fqdn\":\"zldcrdm5bdcc2dokr00.2f3fb3.rdm5b.tci.att.com\"},\"ServiceID\":\"20299a144716:config_binding_service:10000\",\"ServiceName\":\"config_binding_service\",\"ServiceTags\":[],\"ServiceAddress\":\"135.25.108.161\",\"ServicePort\":10000,\"ServiceEnableTagOverride\":false,\"CreateIndex\":9153156,\"ModifyIndex\":9153156}]"; + + //Mock the return CBS output + FetchDynamicConfig.retCBSString = jsonObject.toString(); + FetchDynamicConfig.getCBS(); + flag = true; + } + catch(Exception e){ + System.out.println("Exception while fetching cbs configuration"); + e.printStackTrace(); + } + assertEquals(true, flag); + + } + +} + -- cgit 1.2.3-korg