* @author koblosz
*/
public class AnyNode {
- private static final Logger LOGGER = LoggerFactory.getLogger(AnyNode.class);
- private Object obj;
+ private final Object obj;
+ private static final Logger log = LoggerFactory.getLogger(AnyNode.class);
- /**
- * @param filePath
- * @return
- * @throws IOException
- */
public static AnyNode parse(String filePath) throws IOException {
try (FileReader fr = new FileReader(filePath)) {
- JSONTokener tokener = new JSONTokener(fr);
- return new AnyNode(new JSONObject(tokener));
+ return new AnyNode(new JSONObject(new JSONTokener(fr)));
} catch (FileNotFoundException | JSONException e1) {
- LOGGER.error("Could not find or parse file under path %s due to: %s", filePath, e1.toString());
+ log.error("Could not find or parse file under path %s due to: %s", filePath, e1.toString());
e1.printStackTrace();
throw e1;
}
}
/**
- * Returns keyset of underlying object. It is assumed that underlying object is of type org.json.JSONObject.
+ * Returns key set of underlying object. It is assumed that underlying object is of type org.json.JSONObject.
*
* @return Set of string keys present in underlying JSONObject
*/
AnyNode result = null;
try {
result = get(key);
- } catch (JSONException ex) {
+ } catch (JSONException ignored) {
}
return Optional.ofNullable(result);
}
- public JSONObject asJsonObject() {
+ private JSONObject asJsonObject() {
return (JSONObject) this.obj;
}
/**
* Converts this object to stream of underlying objects wrapped with AnyNode class. It is assumed that this is of type JSONArray.
*/
- public Stream<AnyNode> asStream() {
+ private Stream<AnyNode> asStream() {
return StreamSupport.stream(((JSONArray) this.obj).spliterator(), false).map(AnyNode::new);
}
/**
* Checks if specified key is present in this. It is assumed that this is of type JSONObject.
*/
- public boolean hasKey(String key) {
+ boolean hasKey(String key) {
return getAsOptional(key).isPresent();
}
class CambriaPublisherFactory {
- private static Logger log = LoggerFactory.getLogger(CambriaPublisherFactory.class);
+ private final static Logger log = LoggerFactory.getLogger(CambriaPublisherFactory.class);
- public CambriaBatchingPublisher createCambriaPublisher(String streamId)
+ CambriaBatchingPublisher createCambriaPublisher(String streamId)
throws MalformedURLException, GeneralSecurityException {
String authpwd = null;
DmaapPropertyReader reader = DmaapPropertyReader.getInstance(CommonStartup.cambriaConfigFile);
- Map<String, String> dmaapProperties = reader.getDmaapProperties();
- String ueburl = dmaapProperties.get(streamId + ".cambria.url");
+ Map<String, String> dMaaPProperties = reader.getDmaapProperties();
+ String ueburl = dMaaPProperties.get(streamId + ".cambria.url");
if (ueburl == null) {
- ueburl = dmaapProperties.get(streamId + ".cambria.hosts");
+ ueburl = dMaaPProperties.get(streamId + ".cambria.hosts");
}
String topic = reader.getKeyValue(streamId + ".cambria.topic");
String authuser = reader.getKeyValue(streamId + ".basicAuthUsername");
if (authuser != null) {
- authpwd = dmaapProperties.get(streamId + ".basicAuthPassword");
+ authpwd = dMaaPProperties.get(streamId + ".basicAuthPassword");
}
if ((authuser != null) && (authpwd != null)) {
log.debug(String.format("URL:%sTOPIC:%sAuthUser:%sAuthpwd:%s", ueburl, topic, authuser, authpwd));
return new CambriaClientBuilders.PublisherBuilder().usingHosts(ueburl).onTopic(topic).usingHttps()
.authenticatedByHttp(authuser, authpwd).logSendFailuresAfter(5)
- // .logTo(log)
- // .limitBatch(100, 10)
.build();
} else {
log.debug(String.format("URL:%sTOPIC:%s", ueburl, topic));
return new CambriaClientBuilders.PublisherBuilder().usingHosts(ueburl).onTopic(topic)
- // .logTo(log)
.logSendFailuresAfter(5)
- // .limitBatch(100, 10)
.build();
}
}
import com.att.nsa.drumlin.till.nv.impl.nvReadableStack;\r
import com.att.nsa.drumlin.till.nv.impl.nvReadableTable;\r
import com.att.nsa.drumlin.till.nv.rrNvReadable;\r
-import com.att.nsa.drumlin.till.nv.rrNvReadable.invalidSettingValue;\r
import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException;\r
import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;\r
import com.fasterxml.jackson.core.JsonParseException;\r
\r
import java.io.IOException;\r
import java.net.URL;\r
-import java.nio.charset.Charset;\r
import java.nio.file.Files;\r
import java.nio.file.Paths;\r
-import java.util.Iterator;\r
import java.util.LinkedList;\r
import java.util.List;\r
import java.util.Map;\r
-import java.util.Queue;\r
import java.util.concurrent.ExecutorService;\r
import java.util.concurrent.Executors;\r
import java.util.concurrent.LinkedBlockingQueue;\r
-import javax.servlet.ServletException;\r
\r
public class CommonStartup extends NsaBaseEndpoint implements Runnable {\r
\r
- public static final String KCONFIG = "c";\r
-\r
- public static final String KSETTING_PORT = "collector.service.port";\r
- public static final int KDEFAULT_PORT = 8080;\r
-\r
- public static final String KSETTING_SECUREPORT = "collector.service.secure.port";\r
- public static final int KDEFAULT_SECUREPORT = -1;\r
-\r
- public static final String KSETTING_KEYSTOREPASSFILE = "collector.keystore.passwordfile";\r
- public static final String KDEFAULT_KEYSTOREPASSFILE = "../etc/passwordfile";\r
- public static final String KSETTING_KEYSTOREFILE = "collector.keystore.file.location";\r
- public static final String KDEFAULT_KEYSTOREFILE = "../etc/keystore";\r
- public static final String KSETTING_KEYALIAS = "collector.keystore.alias";\r
- public static final String KDEFAULT_KEYALIAS = "tomcat";\r
-\r
- public static final String KSETTING_DMAAPCONFIGS = "collector.dmaapfile";\r
- protected static final String[] KDEFAULT_DMAAPCONFIGS = new String[] { "/etc/DmaapConfig.json" };\r
-\r
- public static final String KSETTING_MAXQUEUEDEVENTS = "collector.inputQueue.maxPending";\r
- public static final int KDEFAULT_MAXQUEUEDEVENTS = 1024 * 4;\r
-\r
- public static final String KSETTING_SCHEMAVALIDATOR = "collector.schema.checkflag";\r
- public static final int KDEFAULT_SCHEMAVALIDATOR = -1;\r
-\r
- public static final String KSETTING_SCHEMAFILE = "collector.schema.file";\r
- public static final String KDEFAULT_SCHEMAFILE = "{\"v5\":\"./etc/CommonEventFormat_28.3.json\"}";\r
-\r
- public static final String KSETTING_DMAAPSTREAMID = "collector.dmaap.streamid";\r
-\r
- public static final String KSETTING_AUTHFLAG = "header.authflag";\r
- public static final int KDEFAULT_AUTHFLAG = 0;\r
-\r
- public static final String KSETTING_AUTHLIST = "header.authlist";\r
-\r
- public static final String KSETTING_EVENTTRANSFORMFLAG = "event.transform.flag";\r
- public static final int KDEFAULT_EVENTTRANSFORMFLAG = 1;\r
-\r
+ private static final String KCONFIG = "c";\r
+ private static final String KSETTING_PORT = "collector.service.port";\r
+ private static final int KDEFAULT_PORT = 8080;\r
+ private static final String KSETTING_SECUREPORT = "collector.service.secure.port";\r
+ private static final int KDEFAULT_SECUREPORT = -1;\r
+ private static final String KSETTING_KEYSTOREPASSFILE = "collector.keystore.passwordfile";\r
+ private static final String KDEFAULT_KEYSTOREPASSFILE = "../etc/passwordfile";\r
+ private static final String KSETTING_KEYSTOREFILE = "collector.keystore.file.location";\r
+ private static final String KDEFAULT_KEYSTOREFILE = "../etc/keystore";\r
+ private static final String KSETTING_KEYALIAS = "collector.keystore.alias";\r
+ private static final String KDEFAULT_KEYALIAS = "tomcat";\r
+ private static final String KSETTING_DMAAPCONFIGS = "collector.dmaapfile";\r
+ private static final String[] KDEFAULT_DMAAPCONFIGS = new String[] { "/etc/DmaapConfig.json" };\r
+ private static final String KSETTING_SCHEMAVALIDATOR = "collector.schema.checkflag";\r
+ private static final int KDEFAULT_SCHEMAVALIDATOR = -1;\r
+ private static final String KSETTING_SCHEMAFILE = "collector.schema.file";\r
+ private static final String KDEFAULT_SCHEMAFILE = "{\"v5\":\"./etc/CommonEventFormat_28.3.json\"}";\r
+ private static final String KSETTING_DMAAPSTREAMID = "collector.dmaap.streamid";\r
+ private static final String KSETTING_AUTHFLAG = "header.authflag";\r
+ private static final int KDEFAULT_AUTHFLAG = 0;\r
+ private static final String KSETTING_EVENTTRANSFORMFLAG = "event.transform.flag";\r
+ private static final int KDEFAULT_EVENTTRANSFORMFLAG = 1;\r
+ private static final Logger metriclog = LoggerFactory.getLogger("com.att.ecomp.metrics");\r
public static final Logger inlog = LoggerFactory.getLogger("org.onap.dcae.commonFunction.input");\r
- public static final Logger oplog = LoggerFactory.getLogger("org.onap.dcae.commonFunction.output");\r
+ static final Logger oplog = LoggerFactory.getLogger("org.onap.dcae.commonFunction.output");\r
public static final Logger eplog = LoggerFactory.getLogger("org.onap.dcae.commonFunction.error");\r
- public static final Logger metriclog = LoggerFactory.getLogger("com.att.ecomp.metrics");\r
\r
+ public static final String KSETTING_AUTHLIST = "header.authlist";\r
+ static final int KDEFAULT_MAXQUEUEDEVENTS = 1024 * 4;\r
public static int schemaValidatorflag = -1;\r
public static int authflag = 1;\r
- public static int eventTransformFlag = 1;\r
- public static String schemaFile;\r
+ static int eventTransformFlag = 1;\r
public static JSONObject schemaFileJson;\r
- public static String cambriaConfigFile;\r
- private boolean listnerstatus;\r
- public static String streamid;\r
+ static String cambriaConfigFile;\r
+ public static String streamID;\r
\r
- public static LinkedBlockingQueue<JSONObject> fProcessingInputQueue;\r
+ static LinkedBlockingQueue<JSONObject> fProcessingInputQueue;\r
private static ApiServer fTomcatServer = null;\r
private static final Logger log = LoggerFactory.getLogger(CommonStartup.class);\r
\r
- private CommonStartup(rrNvReadable settings) throws loadException, IOException, rrNvReadable.missingReqdSetting,\r
- rrNvReadable.invalidSettingValue, ServletException, InterruptedException {\r
- final List<ApiServerConnector> connectors = new LinkedList<ApiServerConnector>();\r
+ private CommonStartup(rrNvReadable settings) throws loadException, IOException, rrNvReadable.missingReqdSetting {\r
+ final List<ApiServerConnector> connectors = new LinkedList<>();\r
\r
if (settings.getInt(KSETTING_PORT, KDEFAULT_PORT) > 0) {\r
- // http service\r
connectors.add(new ApiServerConnector.Builder(settings.getInt(KSETTING_PORT, KDEFAULT_PORT)).secure(false)\r
.build());\r
}\r
\r
- // optional https service\r
final int securePort = settings.getInt(KSETTING_SECUREPORT, KDEFAULT_SECUREPORT);\r
final String keystoreFile = settings.getString(KSETTING_KEYSTOREFILE, KDEFAULT_KEYSTOREFILE);\r
final String keystorePasswordFile = settings.getString(KSETTING_KEYSTOREPASSFILE, KDEFAULT_KEYSTOREPASSFILE);\r
final String keyAlias = settings.getString(KSETTING_KEYALIAS, KDEFAULT_KEYALIAS);\r
\r
if (securePort > 0) {\r
- final String KSETTING_KEYSTOREPASS = readFile(keystorePasswordFile);\r
+ String keystorePassword = readFile(keystorePasswordFile);\r
connectors.add(new ApiServerConnector.Builder(securePort).secure(true)\r
- .keystorePassword(KSETTING_KEYSTOREPASS).keystoreFile(keystoreFile).keyAlias(keyAlias).build());\r
+ .keystorePassword(keystorePassword).keystoreFile(keystoreFile).keyAlias(keyAlias).build());\r
\r
}\r
\r
- // Reading other config properties\r
-\r
schemaValidatorflag = settings.getInt(KSETTING_SCHEMAVALIDATOR, KDEFAULT_SCHEMAVALIDATOR);\r
if (schemaValidatorflag > 0) {\r
- schemaFile = settings.getString(KSETTING_SCHEMAFILE, KDEFAULT_SCHEMAFILE);\r
- // System.out.println("SchemaFile:" + schemaFile);\r
+ String schemaFile = settings.getString(KSETTING_SCHEMAFILE, KDEFAULT_SCHEMAFILE);\r
schemaFileJson = new JSONObject(schemaFile);\r
\r
}\r
authflag = settings.getInt(CommonStartup.KSETTING_AUTHFLAG, CommonStartup.KDEFAULT_AUTHFLAG);\r
- String[] currentconffile = settings.getStrings(CommonStartup.KSETTING_DMAAPCONFIGS,\r
- CommonStartup.KDEFAULT_DMAAPCONFIGS);\r
- cambriaConfigFile = currentconffile[0];\r
- streamid = settings.getString(KSETTING_DMAAPSTREAMID, null);\r
+ String[] currentConfigFile = settings.getStrings(KSETTING_DMAAPCONFIGS, KDEFAULT_DMAAPCONFIGS);\r
+ cambriaConfigFile = currentConfigFile[0];\r
+ streamID = settings.getString(KSETTING_DMAAPSTREAMID, null);\r
eventTransformFlag = settings.getInt(KSETTING_EVENTTRANSFORMFLAG, KDEFAULT_EVENTTRANSFORMFLAG);\r
\r
fTomcatServer = new ApiServer.Builder(connectors, new RestfulCollectorServlet(settings)).encodeSlashes(true)\r
.name("collector").build();\r
-\r
- setListnerstatus(true);\r
}\r
\r
public static void main(String[] args) {\r
- ExecutorService executor = null;\r
try {\r
- // process command line arguments\r
final Map<String, String> argMap = NsaCommandLineUtil.processCmdLine(args, true);\r
final String config = NsaCommandLineUtil.getSetting(argMap, KCONFIG, "collector.properties");\r
final URL settingStream = DrumlinServlet.findStream(config, CommonStartup.class);\r
settings.push(new nvPropertiesFile(settingStream));\r
settings.push(new nvReadableTable(argMap));\r
\r
- fProcessingInputQueue = new LinkedBlockingQueue<JSONObject>(CommonStartup.KDEFAULT_MAXQUEUEDEVENTS);\r
+ fProcessingInputQueue = new LinkedBlockingQueue<>(CommonStartup.KDEFAULT_MAXQUEUEDEVENTS);\r
\r
VESLogger.setUpEcompLogging();\r
\r
CommonStartup cs = new CommonStartup(settings);\r
\r
- Thread csmain = new Thread(cs);\r
- csmain.start();\r
+ Thread commonStartupThread = new Thread(cs);\r
+ commonStartupThread.start();\r
\r
EventProcessor ep = new EventProcessor();\r
- executor = Executors.newFixedThreadPool(20);\r
- //executor.execute(ep);\r
+ ExecutorService executor = Executors.newFixedThreadPool(20);\r
for (int i = 0; i < 20; ++i) {\r
executor.execute(ep);\r
- }\r
+ }\r
\r
- } catch (loadException | missingReqdSetting | IOException | invalidSettingValue | ServletException\r
- | InterruptedException e) {\r
+ } catch (loadException | missingReqdSetting | IOException e) {\r
CommonStartup.eplog.error("FATAL_STARTUP_ERROR" + e.getMessage());\r
throw new RuntimeException(e);\r
} catch (Exception e) {\r
System.err.println("Uncaught exception - " + e.getMessage());\r
CommonStartup.eplog.error("FATAL_ERROR" + e.getMessage());\r
e.printStackTrace(System.err);\r
- } finally {\r
- // This will make the executor accept no new threads\r
- // and finish all existing threads in the queue\r
- /*if (executor != null) {\r
- executor.shutdown();\r
- }*/\r
-\r
}\r
}\r
\r
public void run() {\r
try {\r
fTomcatServer.start();\r
+ fTomcatServer.await();\r
} catch (LifecycleException | IOException e) {\r
-\r
- log.error("lifecycle or IO: ", e);\r
+ throw new RuntimeException(e);\r
}\r
- fTomcatServer.await();\r
- }\r
-\r
- public boolean isListnerstatus() {\r
- return listnerstatus;\r
- }\r
-\r
- public void setListnerstatus(boolean listnerstatus) {\r
- this.listnerstatus = listnerstatus;\r
- }\r
-\r
- public static Queue<JSONObject> getProcessingInputQueue() {\r
- return fProcessingInputQueue;\r
}\r
\r
public static class QueueFullException extends Exception {\r
-\r
private static final long serialVersionUID = 1L;\r
}\r
\r
- public static void handleEvents(JSONArray a) throws QueueFullException, JSONException, IOException {\r
- final Queue<JSONObject> queue = getProcessingInputQueue();\r
- try {\r
-\r
- CommonStartup.metriclog.info("EVENT_PUBLISH_START");\r
- for (int i = 0; i < a.length(); i++) {\r
- if (!queue.offer(a.getJSONObject(i))) {\r
- throw new QueueFullException();\r
- }\r
-\r
+ public static void handleEvents(JSONArray a) throws QueueFullException, JSONException {\r
+ CommonStartup.metriclog.info("EVENT_PUBLISH_START");\r
+ for (int i = 0; i < a.length(); i++) {\r
+ if (!fProcessingInputQueue.offer(a.getJSONObject(i))) {\r
+ throw new QueueFullException();\r
}\r
- log.debug("CommonStartup.handleEvents:EVENTS has been published successfully!");\r
- CommonStartup.metriclog.info("EVENT_PUBLISH_END");\r
- // ecomplogger.debug(secloggerMessageEnum.SEC_COLLECT_AND_PULIBISH_SUCCESS);\r
-\r
- } catch (JSONException e) {\r
- throw e;\r
-\r
}\r
+ log.debug("CommonStartup.handleEvents:EVENTS has been published successfully!");\r
+ CommonStartup.metriclog.info("EVENT_PUBLISH_END");\r
}\r
\r
- static String readFile(String path) throws IOException {\r
+ private static String readFile(String path) throws IOException {\r
byte[] encoded = Files.readAllBytes(Paths.get(path));\r
String pwd = new String(encoded);\r
return pwd.substring(0, pwd.length() - 1);\r
}\r
\r
- public static String schemavalidate(String jsonData, String jsonSchema) {\r
+ public static String validateAgainstSchema(String jsonData, String jsonSchema) {\r
ProcessingReport report;\r
String result = "false";\r
\r
try {\r
- // System.out.println("Applying schema: @<@<"+jsonSchema+">@>@ to\r
- // data: #<#<"+jsonData+">#>#");\r
log.trace("Schema validation for event:" + jsonData);\r
JsonNode schemaNode = JsonLoader.fromString(jsonSchema);\r
JsonNode data = JsonLoader.fromString(jsonData);\r
JsonSchema schema = factory.getJsonSchema(schemaNode);\r
report = schema.validate(data);\r
} catch (JsonParseException e) {\r
- log.error("schemavalidate:JsonParseException for event:" + jsonData);\r
+ log.error("validateAgainstSchema:JsonParseException for event:" + jsonData);\r
return e.getMessage();\r
} catch (ProcessingException e) {\r
- log.error("schemavalidate:Processing exception for event:" + jsonData);\r
+ log.error("validateAgainstSchema:Processing exception for event:" + jsonData);\r
return e.getMessage();\r
} catch (IOException e) {\r
log.error(\r
- "schemavalidate:IO exception; something went wrong trying to read json data for event:" + jsonData);\r
+ "validateAgainstSchema:IO exception; something went wrong trying to read json data for event:" + jsonData);\r
return e.getMessage();\r
}\r
if (report != null) {\r
- Iterator<ProcessingMessage> iter = report.iterator();\r
- while (iter.hasNext()) {\r
- ProcessingMessage pm = iter.next();\r
+ for (ProcessingMessage pm : report) {\r
log.trace("Processing Message: " + pm.getMessage());\r
}\r
result = String.valueOf(report.isSuccess());\r
try {\r
log.debug("Validation Result:" + result + " Validation report:" + report);\r
} catch (NullPointerException e) {\r
- log.error("schemavalidate:NullpointerException on report");\r
+ log.error("validateAgainstSchema:NullpointerException on report");\r
}\r
return result;\r
}\r
public class ConfigProcessors {
- private static Logger log = LoggerFactory.getLogger(ConfigProcessors.class);
+ private static final Logger log = LoggerFactory.getLogger(ConfigProcessors.class);
private static final String FIELD = "field";
private static final String OLD_FIELD = "oldField";
private static final String FILTER = "filter";
private static final String FILTER_NOT_MET = "Filter not met";
private static final String COMP_FALSE = "==false";
- private JSONObject event;
+ private final JSONObject event;
public ConfigProcessors(JSONObject eventJson) {
event = eventJson;
private String performOperation(String operation, String value) {
log.info("performOperation");
- if (operation != null && "convertMBtoKB".equals(operation)) {
+ if ("convertMBtoKB".equals(operation)) {
float kbValue = Float.parseFloat(value) * 1024;
value = String.valueOf(kbValue);
}
final String oldField = jsonObject.getString(OLD_FIELD);
final JSONObject filter = jsonObject.optJSONObject(FILTER);
final String operation = jsonObject.optString("operation");
- String value = "";
+ String value;
if (filter == null || isFilterMet(filter)) {
value = getEventObjectVal(oldField).toString();
final JSONArray values = jsonObject.getJSONArray("concatenate");
final JSONObject filter = jsonObject.optJSONObject(FILTER);
if (filter == null || isFilterMet(filter)) {
- String value = "";
+ StringBuilder value = new StringBuilder();
for (int i = 0; i < values.length(); i++) {
String tempVal = evaluate(values.getString(i));
if (!tempVal.equals(OBJECT_NOT_FOUND)) {
if (i == 0)
- value = value + tempVal;
+ value.append(tempVal);
else
- value = value + delimiter + tempVal;
+ value.append(delimiter).append(tempVal);
}
}
- setEventObjectVal(field, value);
+ setEventObjectVal(field, value.toString());
} else
log.info(FILTER_NOT_MET);
}
private boolean checkFilter(JSONObject jo, String key, String logicKey) {
String filterValue = jo.getString(key);
- boolean retVal = true;
-
if (filterValue.contains(":")) {
String[] splitVal = filterValue.split(":");
if ("matches".equals(splitVal[0])) {
}
}
}
- return retVal;
+ return true;
}
public boolean isFilterMet(JSONObject jo) {
- boolean retval = true;
-
for (String key : jo.keySet()) {
if ("not".equals(key)) {
JSONObject njo = jo.getJSONObject(key);
for (String njoKey : njo.keySet()) {
-
- retval = checkFilter(njo, njoKey, key);
- if (!retval)
- return retval;
+ if (!checkFilter(njo, njoKey, key))
+ return false;
}
} else {
- retval = checkFilter(jo, key, key);
- if (!retval)
- return retval;
+ if (!checkFilter(jo, key, key))
+ return false;
}
}
return true;
keySeriesStr = keySeriesStr.substring(0, keySeriesStr.length() - 1);
String[] keySet = keySeriesStr.split("\\.", keySeriesStr.length());
Object keySeriesObj = event;
- for (int i = 0; i < (keySet.length); i++) {
-
+ for (String aKeySet : keySet) {
if (keySeriesObj != null) {
if (keySeriesObj instanceof String) {
log.info("STRING==" + keySeriesObj);
} else if (keySeriesObj instanceof JSONArray) {
- keySeriesObj = ((JSONArray) keySeriesObj).optJSONObject(Integer.parseInt(keySet[i]));
+ keySeriesObj = ((JSONArray) keySeriesObj).optJSONObject(Integer.parseInt(aKeySet));
} else if (keySeriesObj instanceof JSONObject) {
- keySeriesObj = ((JSONObject) keySeriesObj).opt(keySet[i]);
+ keySeriesObj = ((JSONObject) keySeriesObj).opt(aKeySet);
} else {
log.info("unknown object==" + keySeriesObj);
Map<String, String> transformedDmaapProperties = new HashMap<>();
try {
AnyNode root = AnyNode.parse(configFilePath);
- if (root.hasKey("channels")) { // Check if dmaap config is handled by legacy controller/service/manager
+ if (isInLegacyFormat(root)) {
transformedDmaapProperties = getLegacyDmaapPropertiesWithChannels(root.get("channels"));
- } else {//Handing new format from controllergen2/config_binding_service
+ } else {
transformedDmaapProperties = getDmaapPropertiesWithInfoData(root);
}
} catch (IOException e) {
return transformedDmaapProperties;
}
+ private static boolean isInLegacyFormat(AnyNode root) {
+ return root.hasKey("channels");
+ }
+
private static Map<String, String> getLegacyDmaapPropertiesWithChannels(AnyNode channelsNode) {
return channelsNode.asList().stream()
.map(DmaapPropertyReader::getTransformedMandatoryChannelProperties)
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.cache.RemovalListener;
-import com.google.common.cache.RemovalNotification;
import java.io.IOException;
import java.net.MalformedURLException;
import java.security.GeneralSecurityException;
class DmaapPublishers {
- private static Logger log = LoggerFactory.getLogger(DmaapPublishers.class);
+ private static final Logger log = LoggerFactory.getLogger(DmaapPublishers.class);
private final LoadingCache<String, CambriaBatchingPublisher> publishers;
private DmaapPublishers(
static DmaapPublishers create(final CambriaPublisherFactory publisherFactory) {
final LoadingCache<String, CambriaBatchingPublisher> cache = CacheBuilder.<String, CambriaBatchingPublisher>newBuilder()
-// .expireAfterAccess(10, TimeUnit.MINUTES)
- .removalListener(new RemovalListener<String, CambriaBatchingPublisher>() {
- @Override
- public void onRemoval(RemovalNotification<String, CambriaBatchingPublisher> notification) {
- if (notification.getValue() != null) {
- onCacheItemInvalidated(notification.getValue());
- }
+ .removalListener((RemovalListener<String, CambriaBatchingPublisher>) notification -> {
+ if (notification.getValue() != null) {
+ onCacheItemInvalidated(notification.getValue());
}
})
.build(new CacheLoader<String, CambriaBatchingPublisher>() {
return new DmaapPublishers(cache);
}
- public CambriaBatchingPublisher getByStreamId(String streamId) {
+ CambriaBatchingPublisher getByStreamId(String streamId) {
return publishers.getUnchecked(streamId);
}
- public void closeByStreamId(String streamId) {
+ void closeByStreamId(String streamId) {
publishers.invalidate(streamId);
}
import java.util.List;\r
\r
\r
-public class EventProcessor implements Runnable {\r
+class EventProcessor implements Runnable {\r
\r
private static final Logger log = LoggerFactory.getLogger(EventProcessor.class);\r
private static final String EVENT_LITERAL = "event";\r
static Map<String, String[]> streamidHash = new HashMap<>();\r
public JSONObject event;\r
\r
- public EventProcessor() {\r
- streamidHash = parseStreamIdToStreamHashMapping(CommonStartup.streamid);\r
+ EventProcessor() {\r
+ streamidHash = parseStreamIdToStreamHashMapping(CommonStartup.streamID);\r
}\r
\r
private Map<String, String[]> parseStreamIdToStreamHashMapping(String streamId) {\r
for (String aList : list) {\r
String domain = aList.split("=")[0];\r
String[] streamIdList = aList.substring(aList.indexOf('=') + 1).split(",");\r
-\r
streamidHash.put(domain, streamIdList);\r
}\r
return streamidHash;\r
\r
@Override\r
public void run() {\r
-\r
try {\r
-\r
- event = CommonStartup.fProcessingInputQueue.take();\r
-\r
- while (event != null) {\r
+ while (true) {\r
+ event = CommonStartup.fProcessingInputQueue.take();\r
// As long as the producer is running we remove elements from\r
// the queue.\r
log.info("QueueSize:" + CommonStartup.fProcessingInputQueue.size() + "\tEventProcessor\tRemoving element: " + event);\r
sendEventsToStreams(streamIdList);\r
}\r
log.debug("Message published" + event);\r
- event = CommonStartup.fProcessingInputQueue.take();\r
-\r
}\r
} catch (InterruptedException e) {\r
log.error("EventProcessor InterruptedException" + e.getMessage());\r
private static volatile EventPublisherHash instance = new EventPublisherHash(DmaapPublishers.create());
private final DmaapPublishers dmaapPublishers;
- /**
- * Returns event publisher
- *
- * @return event publisher
- */
public static EventPublisherHash getInstance() {
return instance;
}
this.dmaapPublishers = dmaapPublishers;
}
- public void sendEvent(JSONObject event, String streamid) {
+ void sendEvent(JSONObject event, String streamid) {
log.debug("EventPublisher.sendEvent: instance for publish is ready");
clearVesUniqueId(event);
try {
sendEventUsingCachedPublisher(streamid, event);
} catch (IOException | IllegalArgumentException e) {
- log.error("Unable to publish event: {} streamid: {}. Exception: {}", event, streamid, e);
+ log.error("Unable to publish event: {} streamID: {}. Exception: {}", event, streamid, e);
dmaapPublishers.closeByStreamId(streamid);
}
}
private void sendEventUsingCachedPublisher(String streamid, JSONObject event) throws IOException {
int pendingMsgs = dmaapPublishers.getByStreamId(streamid).send("MyPartitionKey", event.toString());
- // this.wait(2000);
-
if (pendingMsgs > 100) {
log.info("Pending Message Count=" + pendingMsgs);
}
-
log.info("pub.send invoked - no error");
- //CommonStartup.oplog.info(String.format("URL:%sTOPIC:%sEvent Published:%s", ueburl, topic, event));
CommonStartup.oplog.info(String.format("StreamID:%s Event Published:%s ", streamid, event));
}
@VisibleForTesting
- public CambriaBatchingPublisher getDmaapPublisher(String streamId) {
+ CambriaBatchingPublisher getDmaapPublisher(String streamId) {
return dmaapPublishers.getByStreamId(streamId);
}
}
import org.json.JSONArray;\r
import org.json.JSONObject;\r
import org.json.JSONTokener;\r
-import org.onap.dcae.commonFunction.CommonStartup;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
import com.fasterxml.jackson.databind.JsonNode;\r
import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.google.gson.JsonElement;\r
-import com.google.gson.JsonObject;\r
-import com.google.gson.JsonParser;\r
-\r
import java.io.BufferedReader;\r
import java.io.File;\r
-import java.io.FileNotFoundException;\r
-import java.io.FileReader;\r
import java.io.FileWriter;\r
import java.io.IOException;\r
import java.io.InputStreamReader;\r
private static final Logger log = LoggerFactory.getLogger(FetchDynamicConfig.class);\r
\r
public static String configFile = "/opt/app/KV-Configuration.json";\r
- static String url;\r
+ private static String url;\r
public static String retString;\r
public static String retCBSString;\r
- public static Map<String, String> env;\r
+ private static Map<String, String> env;\r
\r
public FetchDynamicConfig() {\r
}\r
\r
public static void main(String[] args) {\r
- Boolean areEqual = false;\r
+ Boolean areEqual;\r
// Call consul api and identify the CBS Service address and port\r
getconsul();\r
// Construct and invoke CBS API to get application Configuration\r
}\r
}\r
\r
- public static void getconsul() {\r
+ private static void getconsul() {\r
\r
env = System.getenv();\r
for (Map.Entry<String, String> entry : env.entrySet()) {\r
ObjectMapper mapper = new ObjectMapper();\r
\r
JsonNode tree1 = mapper.readTree(jsonObject.toString());\r
- JsonNode tree2 = mapper.readTree(retCBSString.toString());\r
+ JsonNode tree2 = mapper.readTree(retCBSString);\r
areEqual = tree1.equals(tree2);\r
log.info("Comparison value:" + areEqual);\r
} else {\r
log.info("First time config file read: " + configFile);\r
- // To allow first time file creation\r
- areEqual = false;\r
}\r
\r
} catch (IOException e) {\r
\r
}\r
\r
- public static String executecurl(String url) {\r
+ private static String executecurl(String url) {\r
\r
String[] command = { "curl", "-v", url };\r
ProcessBuilder process = new ProcessBuilder(command);\r
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
public String propFile = "collector.properties";
public String configFile = "/opt/app/KV-Configuration.json";
- static String url;
- static String retString;
- public String dmaapoutputfile = "./etc/DmaapConfig.json";
+ public String dMaaPOutputFile = "./etc/DmaapConfig.json";
public LoadDynamicConfig() {
// and write into dmaapconfig.json
if (key.startsWith("streams_publishes")) {
// VESCollector only have publish streams
- try (FileWriter file = new FileWriter(dmaapoutputfile)) {
-
+ try (FileWriter file = new FileWriter(dMaaPOutputFile)) {
String indentedretstring=(new JSONObject(jsonObject.get(key).toString())).toString(4);
file.write(indentedretstring);
log.info("Successfully written JSON Object to DmaapConfig.json");
- file.close();
} catch (IOException e) {
log.info("Error in writing dmaap configuration into DmaapConfig.json", e);
}
line = br.readLine();
}
result = sb.toString();
- br.close();
} catch (Exception e) {
log.error(e.getLocalizedMessage(), e);
e.printStackTrace();
UNAUTHORIZED_USER(ExceptionType.POLICY_EXCEPTION, "POL2000", "Unauthorized user", 401),
NO_SERVER_RESOURCES(ExceptionType.SERVICE_EXCEPTION, "SVC1000", "No server resources (internal processing queue full)", 503);
- public final ExceptionType type;
- public final String code;
- public final String details;
+ private final ExceptionType type;
+ private final String code;
+ private final String details;
public final int httpStatusCode;
ApiException(ExceptionType type, String code, String details, int httpStatusCode) {
\r
import com.att.nsa.apiServer.CommonServlet;\r
import com.att.nsa.configs.ConfigDbException;\r
-import com.att.nsa.drumlin.service.framework.DrumlinErrorHandler;\r
-import com.att.nsa.drumlin.service.framework.context.DrumlinRequestContext;\r
import com.att.nsa.drumlin.service.framework.routing.DrumlinRequestRouter;\r
import com.att.nsa.drumlin.service.framework.routing.playish.DrumlinPlayishRoutingFileSource;\r
import com.att.nsa.drumlin.service.standards.HttpStatusCodes;\r
public class RestfulCollectorServlet extends CommonServlet\r
{\r
\r
- public static String authlist;\r
+ private static final long serialVersionUID = 1L;\r
+ private static final Logger log = LoggerFactory.getLogger ( RestfulCollectorServlet.class );\r
+\r
+ private static String authCredentialsList;\r
\r
public RestfulCollectorServlet ( rrNvReadable settings ) throws loadException, missingReqdSetting\r
{\r
super ( settings, "collector", false );\r
- authlist = settings.getString(CommonStartup.KSETTING_AUTHLIST,null);\r
+ authCredentialsList = settings.getString(CommonStartup.KSETTING_AUTHLIST, null);\r
}\r
\r
\r
{\r
super.servletSetup ();\r
\r
- try\r
- {\r
+ try {\r
// the base class provides a bunch of things like API authentication and ECOMP compliant\r
// logging. The Restful Collector likely doesn't need API authentication, so for now,\r
// we init the base class services with an in-memory (and empty!) config DB.\r
final DrumlinRequestRouter drr = getRequestRouter ();\r
\r
// you can tell the request router what to do when a particular kind of exception is thrown.\r
- drr.setHandlerForException( IllegalArgumentException.class, new DrumlinErrorHandler()\r
- {\r
- @Override\r
- public void handle ( DrumlinRequestContext ctx, Throwable cause )\r
- {\r
- sendJsonReply ( ctx, HttpStatusCodes.k400_badRequest, cause.getMessage() );\r
- }\r
- });\r
+ drr.setHandlerForException(IllegalArgumentException.class,\r
+ (ctx, cause) -> sendJsonReply (ctx, HttpStatusCodes.k400_badRequest, cause.getMessage() ));\r
\r
// load the routes from the config file\r
final URL routes = findStream ( "routes.conf" );\r
\r
if (CommonStartup.authflag > 0) {\r
NsaAuthenticator<NsaSimpleApiKey> NsaAuth;\r
- NsaAuth = AuthlistHandler(authlist);\r
+ NsaAuth = createAuthenticator(authCredentialsList);\r
\r
this.getSecurityManager().addAuthenticator(NsaAuth);\r
}\r
\r
log.info ( "Restful Collector Servlet is up." );\r
}\r
- catch ( SecurityException e )\r
- {\r
- throw new ServletException ( e );\r
- }\r
- catch ( IOException e )\r
- {\r
- throw new ServletException ( e );\r
- }\r
- catch ( ConfigDbException e )\r
- {\r
+ catch ( SecurityException | IOException | ConfigDbException e ) {\r
throw new ServletException ( e );\r
}\r
}\r
\r
- public NsaAuthenticator<NsaSimpleApiKey> AuthlistHandler (String authlist)\r
- {\r
- NsaAuthenticator<NsaSimpleApiKey> NsaAuth = new SimpleAuthenticator ();\r
- if (authlist != null)\r
- {\r
- String authpair[] = authlist.split("\\|");\r
- for (String pair: authpair) {\r
+ public NsaAuthenticator<NsaSimpleApiKey> createAuthenticator(String authCredentials) {\r
+ NsaAuthenticator<NsaSimpleApiKey> authenticator = new SimpleAuthenticator();\r
+ if (authCredentials != null) {\r
+ String authpair[] = authCredentials.split("\\|");\r
+ for (String pair : authpair) {\r
String lineid[] = pair.split(",");\r
- String listauthid = lineid[0];\r
- String listauthpwd = new String(Base64.decodeBase64(lineid[1]));\r
- ((SimpleAuthenticator) NsaAuth).add(listauthid,listauthpwd);\r
+ String listauthid = lineid[0];\r
+ String listauthpwd = new String(Base64.decodeBase64(lineid[1]));\r
+ ((SimpleAuthenticator) authenticator).add(listauthid, listauthpwd);\r
}\r
\r
+ } else {\r
+ ((SimpleAuthenticator) authenticator).add("admin", "collectorpasscode");\r
}\r
- else\r
- {\r
- //add a default test account\r
- ((SimpleAuthenticator) NsaAuth).add("admin","collectorpasscode");\r
- }\r
- return NsaAuth;\r
-\r
+ return authenticator;\r
}\r
\r
-\r
- private static final long serialVersionUID = 1L;\r
- private static final Logger log = LoggerFactory.getLogger ( RestfulCollectorServlet.class );\r
}\r
\r
\r
private static final Logger log = LoggerFactory.getLogger(EventReceipt.class);\r
private static final String MESSAGE = " Message:";\r
- static String valresult;\r
- static JSONObject customerror;\r
\r
public static void receiveVESEvent(DrumlinRequestContext ctx) {\r
// the request body carries events. assume for now it's an array\r
\r
\r
JSONObject jsonObject;\r
- FileReader fr = null;\r
InputStream istr = null;\r
int arrayFlag = 0;\r
String vesVersion = null;\r
if (m.find()) {\r
log.info("VES version:" + m.group());\r
vesVersion = m.group();\r
- m = null;\r
- p = null;\r
-\r
}\r
\r
final UUID uuid = UUID.randomUUID();\r
return;\r
}\r
\r
- Boolean ErrorStatus = false;\r
- ErrorStatus = schemaCheck( retkey, arrayFlag, jsonObject, vesVersion, ctx, uuid);\r
- if (ErrorStatus)\r
- {\r
+ if (schemaCheck(retkey, arrayFlag, jsonObject, vesVersion, ctx, uuid)) {\r
return;\r
}\r
\r
respondWithCustomMsginJson(ctx, ApiException.NO_SERVER_RESOURCES);\r
return;\r
} finally {\r
- if (fr != null) {\r
- safeClose(fr);\r
- }\r
-\r
if (istr != null) {\r
safeClose(istr);\r
}\r
}\r
\r
\r
- public static String getUser( DrumlinRequestContext ctx){\r
- String authorization = null;\r
- authorization = ctx.request().getFirstHeader("Authorization");\r
- if (authorization != null && authorization.startsWith("Basic")) {\r
- // Authorization: Basic base64credentials\r
+ private static String getUser(DrumlinRequestContext ctx){\r
+ String authorization = ctx.request().getFirstHeader("Authorization");\r
+ if (authorization != null && authorization.startsWith("Basic")) {\r
String base64Credentials = authorization.substring("Basic".length()).trim();\r
String credentials = new String(Base64.getDecoder().decode(base64Credentials),\r
Charset.forName("UTF-8"));\r
- // credentials = username:password\r
final String[] values = credentials.split(":",2);\r
- log.debug("User:" + values[0].toString() + " Pwd:" + values[1].toString());\r
- return values[0].toString();\r
+ log.debug("User:" + values[0] + " Pwd:" + values[1]);\r
+ return values[0];\r
}\r
return null;\r
\r
}\r
- public static Boolean schemaCheck(NsaSimpleApiKey retkey, int arrayFlag,JSONObject jsonObject, String vesVersion, DrumlinRequestContext ctx, UUID uuid) throws JSONException, QueueFullException, IOException\r
- {\r
+\r
+ private static Boolean schemaCheck(NsaSimpleApiKey retkey, int arrayFlag,\r
+ JSONObject jsonObject, String vesVersion,\r
+ DrumlinRequestContext ctx, UUID uuid)\r
+ throws JSONException, QueueFullException, IOException {\r
+\r
JSONArray jsonArray;\r
JSONArray jsonArrayMod = new JSONArray();\r
JSONObject event;\r
- Boolean ErrorStatus=false;\r
FileReader fr;\r
if (retkey != null || CommonStartup.authflag == 0) {\r
if (CommonStartup.schemaValidatorflag > 0) {\r
fr = new FileReader(schemaFileVersion(vesVersion));\r
String schema = new JsonParser().parse(fr).toString();\r
\r
- valresult = CommonStartup.schemavalidate(jsonObject.toString(), schema);\r
- if (valresult.equals("true")) {\r
- log.info("Validation successful");\r
- } else if (valresult.equals("false")) {\r
- log.info("Validation failed");\r
- respondWithCustomMsginJson(ctx, ApiException.SCHEMA_VALIDATION_FAILED);\r
- ErrorStatus=true;\r
- return ErrorStatus;\r
- } else {\r
- log.error("Validation errored" + valresult);\r
- respondWithCustomMsginJson(ctx, ApiException.INVALID_JSON_INPUT);\r
- ErrorStatus=true;\r
- return ErrorStatus;\r
+ String valresult = CommonStartup.validateAgainstSchema(jsonObject.toString(), schema);\r
+ switch (valresult) {\r
+ case "true":\r
+ log.info("Validation successful");\r
+ break;\r
+ case "false":\r
+ log.info("Validation failed");\r
+ respondWithCustomMsginJson(ctx, ApiException.SCHEMA_VALIDATION_FAILED);\r
+ return true;\r
+ default:\r
+ log.error("Validation errored" + valresult);\r
+ respondWithCustomMsginJson(ctx, ApiException.INVALID_JSON_INPUT);\r
+ return true;\r
}\r
} else {\r
log.info("Validation failed");\r
respondWithCustomMsginJson(ctx, ApiException.SCHEMA_VALIDATION_FAILED);\r
- ErrorStatus=true;\r
- return ErrorStatus;\r
+ return true;\r
}\r
if (arrayFlag == 1) {\r
jsonArray = jsonObject.getJSONArray("eventList");\r
log.info(String.format("Rejecting request with content type %s Message:%s",\r
ctx.request().getContentType(), jsonObject));\r
respondWithCustomMsginJson(ctx, ApiException.INVALID_CONTENT_TYPE);\r
- ErrorStatus=true;\r
- return ErrorStatus;\r
+ return true;\r
}\r
\r
CommonStartup.handleEvents(jsonArrayMod);\r
log.info(String.format("Unauthorized request %s FROM %s %s %s %s", getUser(ctx), ctx.request().getRemoteAddress(), ctx.request().getContentType(), MESSAGE,\r
jsonObject));\r
respondWithCustomMsginJson(ctx, ApiException.UNAUTHORIZED_USER);\r
- ErrorStatus=true;\r
- return ErrorStatus;\r
+ return true;\r
}\r
- return ErrorStatus;\r
+ return false;\r
}\r
\r
- public static void respondWithCustomMsginJson(DrumlinRequestContext ctx, ApiException apiException) {\r
+ private static void respondWithCustomMsginJson(DrumlinRequestContext ctx, ApiException apiException) {\r
ctx.response()\r
.sendErrorAndBody(apiException.httpStatusCode,\r
apiException.toJSON().toString(), MimeTypes.kAppJson);\r
}\r
\r
- public static void safeClose(FileReader fr) {\r
- if (fr != null) {\r
- try {\r
- fr.close();\r
- } catch (IOException e) {\r
- log.error("Error closing file reader stream : " + e);\r
- }\r
- }\r
-\r
- }\r
-\r
- public static void safeClose(InputStream is) {\r
+ private static void safeClose(InputStream is) {\r
if (is != null) {\r
try {\r
is.close();\r
}\r
\r
public static String schemaFileVersion(String version) {\r
- String filename = null;\r
-\r
- if (CommonStartup.schemaFileJson.has(version)) {\r
- filename = CommonStartup.schemaFileJson.getString(version);\r
- } else {\r
- filename = CommonStartup.schemaFileJson.getString("v5");\r
-\r
- }\r
- log.info(String.format("VESversion: %s Schema File:%s", version, filename));\r
- return filename;\r
-\r
+ return CommonStartup.schemaFileJson.has(version) ?\r
+ CommonStartup.schemaFileJson.getString(version) : CommonStartup.schemaFileJson.getString("v5");\r
}\r
\r
}\r
@Test
public void shouldConvertExceptionToBackwardCompatibleFormat() {
JSONObject responseBody = ApiException.UNAUTHORIZED_USER.toJSON();
- assertJSONEqual(responseBody, asJSON(""
+ assertEquals(responseBody.toString(), new JSONObject(""
+ "{ "
+ " 'requestError': { "
+ " 'PolicyException': { "
+ " } "
+ " } "
+ "} "
- ));
- }
-
- private JSONObject asJSON(String jsonString) {
- return new JSONObject(jsonString.replace("'", "\""));
- }
-
- private void assertJSONEqual(JSONObject o1, JSONObject o2) {
- assertEquals(o1.toString(), o2.toString());
+ .replace("'", "\"")
+ ).toString());
}
}
@Test
- public void shouldCallIsFilterMetOnAdapter() throws Exception {
+ public void shouldCallIsFilterMetOnAdapter() {
//given
JSONObject parameter = new JSONObject();
when(configProcessors.isFilterMet(parameter)).thenReturn(true);
@Mock
private CambriaBatchingPublisher cambriaPublisher;
private DmaapPublishers cut;
+
@Rule
- public ExpectedException expectedException = ExpectedException.none();
+ public final ExpectedException expectedException = ExpectedException.none();
@Before
public void setUp() throws MalformedURLException, GeneralSecurityException {
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import java.io.FileNotFoundException;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class EventProcessorTest {
private final String ev = "{\"event\": {\"commonEventHeader\": { \"reportingEntityName\": \"VM name will be provided by ECOMP\", \"startEpochMicrosec\": 1477012779802988,\"lastEpochMicrosec\": 1477012789802988,\"eventId\": \"83\",\"sourceName\": \"Dummy VM name - No Metadata available\",\"sequence\": 83,\"priority\": \"Normal\",\"functionalRole\": \"vFirewall\",\"domain\": \"measurementsForVfScaling\",\"reportingEntityId\": \"VM UUID will be provided by ECOMP\",\"sourceId\": \"Dummy VM UUID - No Metadata available\",\"version\": 1.1},\"measurementsForVfScalingFields\": {\"measurementInterval\": 10,\"measurementsForVfScalingVersion\": 1.1,\"vNicUsageArray\": [{\"multicastPacketsIn\": 0,\"bytesIn\": 3896,\"unicastPacketsIn\": 0, \"multicastPacketsOut\": 0,\"broadcastPacketsOut\": 0, \"packetsOut\": 28,\"bytesOut\": 12178,\"broadcastPacketsIn\": 0,\"packetsIn\": 58,\"unicastPacketsOut\": 0,\"vNicIdentifier\": \"eth0\"}]}}}";
- private String testinput = "src/test/resources/testDmaapConfig_ip.json";
@Before
- public void setUp() throws Exception {
- 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";
+ public void setUp() {
+ 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";
CommonStartup.eventTransformFlag = 1;
}
}
@Test
- public void shouldParseJsonEvents() throws FileNotFoundException, ReflectiveOperationException {
+ public void shouldParseJsonEvents() throws ReflectiveOperationException {
//given
EventProcessor eventProcessor = new EventProcessor();
String event_json = "[{ \"filter\": {\"event.commonEventHeader.domain\":\"heartbeat\",\"VESversion\":\"v4\"},\"processors\":[" +
*/
package org.onap.dcae.commonFunction;
+import static java.util.Base64.getDecoder;
+import static java.util.Base64.getEncoder;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import com.google.gson.JsonParser;
import java.io.FileReader;
import java.io.IOException;
-import java.util.Base64;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import org.json.JSONArray;
@Test
public void testParseStreamIdToStreamHashMapping() {
// given
- 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";
+ 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 eventProcessor = new EventProcessor();
// when
String user1 = "secureid";
String password1Hashed = "IWRjYWVSb2FkbTEyMyEt";
- String password1UnHashed = decode("IWRjYWVSb2FkbTEyMyEt");
+ String password1UnHashed = new String(getDecoder().decode("IWRjYWVSb2FkbTEyMyEt"));
String user2 = "sample1";
String password2Hashed = "c2FtcGxlMQ";
DrumlinRequest drumlinRequestMock = Mockito.mock(DrumlinRequest.class);
- String basicHeaderForUser1 = "Basic " + encode(user1, password1UnHashed);
+ String basicHeaderForUser1 = "Basic " + getEncoder().encodeToString((user1 + ":" + password1UnHashed).getBytes());
when(drumlinRequestMock.getFirstHeader("Authorization")).thenReturn(basicHeaderForUser1);
// when
- SimpleAuthenticator simpleAuthenticator = (SimpleAuthenticator) rsv.AuthlistHandler(authlist);
+ SimpleAuthenticator simpleAuthenticator = (SimpleAuthenticator) rsv.createAuthenticator(authlist);
NsaSimpleApiKey authentic = simpleAuthenticator.isAuthentic(drumlinRequestMock);
// then
assertEquals(authentic.getSecret(), password1UnHashed);
}
- private String decode(String hashedPassword) {
- return new String(Base64.getDecoder().decode(hashedPassword.getBytes()));
- }
-
- private String encode(String user1, String password1UnHashed) {
- return Base64.getEncoder().encodeToString((user1 + ":" + password1UnHashed).getBytes());
- }
}
@Test(expected = IOException.class)
public void testShouldRethrowExceptionWhenFileNotFound() throws IOException {
- AnyNode.parse("not/existng/path");
+ AnyNode.parse("not/existing/path");
}
@Test
import org.junit.Test;\r
import org.onap.dcae.commonFunction.DmaapPropertyReader;\r
\r
-import java.net.MalformedURLException;\r
import java.util.Map;\r
\r
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;\r
private static final String FAULT_UEB_CAMBRIA_TOPIC_KEY = FAULT_UEB_KEY_PREFIX + ".cambria.topic";\r
private static final String VES_ALERT_SND_AUTH_USERNAME_KEY = VES_ALERT_SND_KEY_PREFIX + ".basicAuthUsername";\r
\r
- public static final String NULL_TOSTRING = "null";\r
+ private static final String NULL_TOSTRING = "null";\r
\r
private static final Map<String, String> expectedCompleteGen2DmaapConfig = ImmutableMap.<String, String>builder()\r
.put(ALERT_BASIC_AUTH_PWD_KEY, "SamplePassWD2")\r
}\r
\r
@Test\r
- public void shouldCreateReaderWithCompleteGen2DmaapConfig() throws MalformedURLException {\r
+ public void shouldCreateReaderWithCompleteGen2DmaapConfig() {\r
assertReaderPreservedAllEntriesAfterTransformation(fullGen2DmaapConfig, expectedCompleteGen2DmaapConfig);\r
}\r
\r
* Licensed under the Apache License, Version 2.0 (the "License");\r
* you may not use this file except in compliance with the License.\r
* You may obtain a copy of the License at\r
- * \r
+ *\r
* http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
+ *\r
* Unless required by applicable law or agreed to in writing, software\r
* distributed under the License is distributed on an "AS IS" BASIS,\r
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
import org.onap.dcae.commonFunction.ConfigProcessors;\r
\r
\r
-\r
public class TestConfigProcessor {\r
- public JSONObject getFileAsJsonObject()\r
- {\r
- JSONObject jsonObject = null;\r
- FileReader fr = null;\r
- final JsonParser parser = new JsonParser();\r
- String jsonfilepath="src/test/resources/event4xjson.txt";\r
- try{\r
- fr = new FileReader ( jsonfilepath );\r
- final JsonObject jo = (JsonObject) parser.parse (fr);\r
- final String jsonText = jo.toString ();\r
- jsonObject = new JSONObject ( jsonText );\r
- }\r
- catch(Exception e){\r
- System.out.println("Exception while opening the file");\r
- e.printStackTrace();\r
- }\r
- finally {\r
- //close the file\r
- if (fr != null) {\r
- try {\r
- fr.close();\r
- } catch (IOException e) {\r
- System.out.println("Error closing file reader stream : " +e.toString());\r
- }\r
- }\r
- }\r
- return jsonObject;\r
- }\r
- @Test\r
- public void testAttrMap(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("functionalRole").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("functionRole==" + functionRole);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.commonEventHeader.nfNamingCode\",\"oldField\": \"event.commonEventHeader.functionalRole\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.map(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.commonEventHeader.nfNamingCode").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals (functionRole, responseData); \r
- }\r
- \r
- @Test\r
- public void testArrayMap(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- final String alarmAdditionalInformation = (jsonObject.getJSONObject("event")).getJSONObject("faultFields").get("alarmAdditionalInformation").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("alarmAdditionalInformation==" + alarmAdditionalInformation);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.eventAdditionalInformation\",\"oldField\": \"event.faultFields.alarmAdditionalInformation\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.map(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventAdditionalInformation").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals (alarmAdditionalInformation, responseData); \r
- }\r
- @Test\r
- public void testJobjMaptoArray(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- //final String receiveDiscards = (((jsonObject.getJSONObject("event")).getJSONObject("faultFields")).get("errors")).get("receiveDiscards").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- //System.out.println("alarmAdditionalInformation==" + alarmAdditionalInformation);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.vNicPerformanceArray[]\",\"oldField\": \"event.faultFields.errors\",\"attrMap\":{\"receiveDiscards\":\"receivedDiscardedPacketsAccumulated\"}}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- final String receiveDiscards = cpEvent.getEventObjectVal("event.faultFields.errors.receiveDiscards").toString();\r
- System.out.println("receiveDiscards==" + receiveDiscards);\r
- cpEvent.map(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.vNicPerformanceArray[0].receivedDiscardedPacketsAccumulated").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals (receiveDiscards, responseData); \r
- }\r
- @Test\r
- public void testAttrAdd(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- //final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("functionalRole").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- //System.out.println("functionRole==" + functionRole);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.addAttribute(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("2.0", responseData); \r
- }\r
- \r
- @Test\r
- public void testAttrUpdate(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- //final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("functionalRole").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- //System.out.println("functionRole==" + functionRole);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.updateAttribute(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("2.0", responseData); \r
- }\r
- \r
- @Test\r
- public void testAttrConcatenate(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- final String eventType = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("eventType").toString();\r
- final String domain = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("domain").toString();\r
- final String alarmCondition = (jsonObject.getJSONObject("event")).getJSONObject("faultFields").get("alarmCondition").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- final String eventName = domain + "_" + eventType + "_" + alarmCondition;\r
- System.out.println("eventName==" + eventName);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\":\"event.commonEventHeader.eventName\",\"concatenate\": [\"$event.commonEventHeader.domain\",\"$event.commonEventHeader.eventType\",\"$event.faultFields.alarmCondition\"],\"delimiter\":\"_\"}");\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.concatenateValue(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.commonEventHeader.eventName").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals (eventName, responseData); \r
- }\r
- \r
- @Test\r
- public void testAttrSubtract(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- final String memoryConfigured = (jsonObject.getJSONObject("event")).getJSONObject("faultFields").get("memoryConfigured").toString();\r
- final String memoryUsed = (jsonObject.getJSONObject("event")).getJSONObject("faultFields").get("memoryUsed").toString();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("memoryConfigured==" + memoryConfigured);\r
- System.out.println("memoryUsed==" + memoryUsed);\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.memoryFree\",\"subtract\": [\"$event.faultFields.memoryConfigured\",\"$event.faultFields.memoryUsed\"]}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.subtractValue(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.memoryFree").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("1980.0", responseData); \r
- }\r
- \r
- @Test\r
- public void testSetValue(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing SetValue");\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.setValue(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("2.0", responseData); \r
- }\r
- \r
- @Test\r
- public void testSetEventObjectVal(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing SetEventObjectVal");\r
- //final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.setEventObjectVal("event.faultFields.version", "2.0", "number");\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("2.0", responseData); \r
- }\r
- \r
- @Test\r
- public void testGetValue(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing GetValue");\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.eventSeverity\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.getValue(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventSeverity").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("CRITICAL", responseData); \r
- }\r
- \r
- @Test\r
- public void testGetEventObjectVal(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing GetEventObjectVal");\r
- //final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.eventSeverity\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.getEventObjectVal("event.faultFields.eventSeverity");\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventSeverity").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("CRITICAL", responseData); \r
- }\r
- \r
- @Test\r
- public void testRemoveAttribute(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing removeAttribute");\r
- final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.memoryUsed\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- cpEvent.removeAttribute(jsonArgs);\r
- final String responseData = cpEvent.getEventObjectVal("event.faultFields.memoryUsed").toString();\r
- System.out.println("modified event==" + jsonObject.toString());\r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("ObjectNotFound", responseData); \r
- }\r
- \r
- @Test\r
- public void testIsFilterMet(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing isFilterMet");\r
- final JSONObject jsonArgs = new JSONObject ( "{\"event.faultFields.eventSeverity\":\"CRITICAL\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- \r
- final boolean response = cpEvent.isFilterMet(jsonArgs);\r
- String responseData = "CRITICAL";\r
- if (response == false)\r
- responseData = "notCRITICAL";\r
- \r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("CRITICAL", responseData); \r
- }\r
- \r
- @Test\r
- public void testSuppressEvent(){\r
- \r
- final JSONObject jsonObject = getFileAsJsonObject();\r
- System.out.println("event==" + jsonObject.toString());\r
- System.out.println("Testing SuppressEvent");\r
- final JSONObject jsonArgs = new JSONObject ( "{\"event.faultFields.eventSeverity\":\"CRITICAL\"}" );\r
- ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
- \r
- cpEvent.suppressEvent(jsonArgs);\r
- String responseData = cpEvent.getEventObjectVal("suppressEvent").toString();\r
- \r
- System.out.println("responseData==" + responseData); \r
- assertEquals ("true", responseData); \r
- }\r
+\r
+ private JSONObject getFileAsJsonObject() {\r
+ JSONObject jsonObject = null;\r
+ FileReader fr = null;\r
+ final JsonParser parser = new JsonParser();\r
+ String jsonFilePath = "src/test/resources/event4xjson.txt";\r
+ try {\r
+ fr = new FileReader(jsonFilePath);\r
+ final JsonObject jo = (JsonObject) parser.parse(fr);\r
+ final String jsonText = jo.toString();\r
+ jsonObject = new JSONObject(jsonText);\r
+ } catch (Exception e) {\r
+ System.out.println("Exception while opening the file");\r
+ e.printStackTrace();\r
+ } finally {\r
+ //close the file\r
+ if (fr != null) {\r
+ try {\r
+ fr.close();\r
+ } catch (IOException e) {\r
+ System.out.println("Error closing file reader stream : " + e.toString());\r
+ }\r
+ }\r
+ }\r
+ return jsonObject;\r
+ }\r
+\r
+ @Test\r
+ public void testAttrMap() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader")\r
+ .get("functionalRole").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("functionRole==" + functionRole);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.commonEventHeader.nfNamingCode\",\"oldField\": \"event.commonEventHeader.functionalRole\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.map(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.commonEventHeader.nfNamingCode").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals(functionRole, responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testArrayMap() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ final String alarmAdditionalInformation = (jsonObject.getJSONObject("event")).getJSONObject("faultFields")\r
+ .get("alarmAdditionalInformation").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("alarmAdditionalInformation==" + alarmAdditionalInformation);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.eventAdditionalInformation\",\"oldField\": \"event.faultFields.alarmAdditionalInformation\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.map(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventAdditionalInformation")\r
+ .toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals(alarmAdditionalInformation, responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testJSONObjectMapToArray() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ //final String receiveDiscards = (((jsonObject.getJSONObject("event")).getJSONObject("faultFields")).get("errors")).get("receiveDiscards").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ //System.out.println("alarmAdditionalInformation==" + alarmAdditionalInformation);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.vNicPerformanceArray[]\",\"oldField\": \"event.faultFields.errors\",\"attrMap\":{\"receiveDiscards\":\"receivedDiscardedPacketsAccumulated\"}}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ final String receiveDiscards = cpEvent.getEventObjectVal("event.faultFields.errors.receiveDiscards").toString();\r
+ System.out.println("receiveDiscards==" + receiveDiscards);\r
+ cpEvent.map(jsonArgs);\r
+ final String responseData = cpEvent\r
+ .getEventObjectVal("event.faultFields.vNicPerformanceArray[0].receivedDiscardedPacketsAccumulated")\r
+ .toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals(receiveDiscards, responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testAttrAdd() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ //final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("functionalRole").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ //System.out.println("functionRole==" + functionRole);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.addAttribute(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("2.0", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testAttrUpdate() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ //final String functionRole = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("functionalRole").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ //System.out.println("functionRole==" + functionRole);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.updateAttribute(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("2.0", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testAttrConcatenate() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ final String eventType = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("eventType")\r
+ .toString();\r
+ final String domain = (jsonObject.getJSONObject("event")).getJSONObject("commonEventHeader").get("domain")\r
+ .toString();\r
+ final String alarmCondition = (jsonObject.getJSONObject("event")).getJSONObject("faultFields")\r
+ .get("alarmCondition").toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ final String eventName = domain + "_" + eventType + "_" + alarmCondition;\r
+ System.out.println("eventName==" + eventName);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\":\"event.commonEventHeader.eventName\",\"concatenate\": [\"$event.commonEventHeader.domain\",\"$event.commonEventHeader.eventType\",\"$event.faultFields.alarmCondition\"],\"delimiter\":\"_\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.concatenateValue(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.commonEventHeader.eventName").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals(eventName, responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testAttrSubtract() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ final String memoryConfigured = (jsonObject.getJSONObject("event")).getJSONObject("faultFields")\r
+ .get("memoryConfigured").toString();\r
+ final String memoryUsed = (jsonObject.getJSONObject("event")).getJSONObject("faultFields").get("memoryUsed")\r
+ .toString();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("memoryConfigured==" + memoryConfigured);\r
+ System.out.println("memoryUsed==" + memoryUsed);\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.memoryFree\",\"subtract\": [\"$event.faultFields.memoryConfigured\",\"$event.faultFields.memoryUsed\"]}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.subtractValue(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.memoryFree").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("1980.0", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testSetValue() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing SetValue");\r
+ final JSONObject jsonArgs = new JSONObject(\r
+ "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.setValue(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("2.0", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testSetEventObjectVal() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing SetEventObjectVal");\r
+ //final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.version\",\"value\": \"2.0\",\"fieldType\": \"number\"}" );\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.setEventObjectVal("event.faultFields.version", "2.0", "number");\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.version").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("2.0", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testGetValue() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing GetValue");\r
+ final JSONObject jsonArgs = new JSONObject("{\"field\": \"event.faultFields.eventSeverity\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.getValue(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventSeverity").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("CRITICAL", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testGetEventObjectVal() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing GetEventObjectVal");\r
+ //final JSONObject jsonArgs = new JSONObject ( "{\"field\": \"event.faultFields.eventSeverity\"}" );\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.getEventObjectVal("event.faultFields.eventSeverity");\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.eventSeverity").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("CRITICAL", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testRemoveAttribute() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing removeAttribute");\r
+ final JSONObject jsonArgs = new JSONObject("{\"field\": \"event.faultFields.memoryUsed\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+ cpEvent.removeAttribute(jsonArgs);\r
+ final String responseData = cpEvent.getEventObjectVal("event.faultFields.memoryUsed").toString();\r
+ System.out.println("modified event==" + jsonObject.toString());\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("ObjectNotFound", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testIsFilterMet() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing isFilterMet");\r
+ final JSONObject jsonArgs = new JSONObject("{\"event.faultFields.eventSeverity\":\"CRITICAL\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+\r
+ final boolean response = cpEvent.isFilterMet(jsonArgs);\r
+ String responseData = "CRITICAL";\r
+ if (!response) {\r
+ responseData = "notCRITICAL";\r
+ }\r
+\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("CRITICAL", responseData);\r
+ }\r
+\r
+ @Test\r
+ public void testSuppressEvent() {\r
+\r
+ final JSONObject jsonObject = getFileAsJsonObject();\r
+ System.out.println("event==" + jsonObject.toString());\r
+ System.out.println("Testing SuppressEvent");\r
+ final JSONObject jsonArgs = new JSONObject("{\"event.faultFields.eventSeverity\":\"CRITICAL\"}");\r
+ ConfigProcessors cpEvent = new ConfigProcessors(jsonObject);\r
+\r
+ cpEvent.suppressEvent(jsonArgs);\r
+ String responseData = cpEvent.getEventObjectVal("suppressEvent").toString();\r
+\r
+ System.out.println("responseData==" + responseData);\r
+ assertEquals("true", responseData);\r
+ }\r
} \r
\r
@Test
public void shouldValidEventPassSchema_27_2() throws IOException {
- String result = CommonStartup.schemavalidate(
+ String result = CommonStartup.validateAgainstSchema(
readJSONFromFile("src/test/resources/VES_valid.txt").toString(),
readJSONFromFile("etc/CommonEventFormat_27.2.json").toString());
assertEquals(result, "true");
@Test
public void shouldInvalidEventDoesNotPassSchema_27_2() throws IOException {
- String result = CommonStartup.schemavalidate(
+ String result = CommonStartup.validateAgainstSchema(
readJSONFromFile("src/test/resources/VES_invalid.txt").toString(),
readJSONFromFile("etc/CommonEventFormat_27.2.json").toString());
assertEquals(result, "false");
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.onap.dcae.vestest.TestingUtilities.correctQuotes;
import static org.onap.dcae.vestest.TestingUtilities.createTemporaryFile;
import com.github.fge.jackson.JsonLoader;
@Test
public void shouldReadFileContent() throws IOException {
// given
- String expectedJSON = correctQuotes("{ 'field' : 1 }");
+ String expectedJSON = "{ \"field\" : 1 }";
Files.write(temporaryFile, expectedJSON.getBytes());
// when
LoadDynamicConfig loadDynamicConfig = new LoadDynamicConfig();
loadDynamicConfig.propFile = "src/test/resources/test_collector_ip_op.properties";
loadDynamicConfig.configFile = "src/test/resources/controller-config_dmaap_ip.json";
- loadDynamicConfig.dmaapoutputfile = temporaryFile.toString();
+ loadDynamicConfig.dMaaPOutputFile = temporaryFile.toString();
String sampleConfiguration = LoadDynamicConfig.readFile(loadDynamicConfig.configFile);
// when
// utility class, no objects allowed
}
- static String correctQuotes(String s) {
- return s.replace("'", "\"");
- }
-
static JsonObject readJSONFromFile(Path path) {
return rethrow(() -> (JsonObject) new JsonParser().parse(new String(readAllBytes(path))));
}
-###############################################################################
-##
-## Collector Server config
-##
-## - Default values are shown as commented settings.
-##
-###############################################################################
-##
-## HTTP(S) service
-##
-## Normally:
-##
-## - 8080 is http service
-## - https is disabled by default (-1)
-##
-## - At this time, the server always binds to 0.0.0.0
-##
-## The default port when header.authflag is disabled (0)
collector.service.port=-1
-
-## The secure port is required if header.authflag is set to 1 (true)
-## Authentication is only supported via secure port
-## When enabled - require valid keystore defined
collector.service.secure.port=8443
-
-## The keystore must be setup per installation when secure port is configured
collector.keystore.file.location=/opt/app/dcae-certificate/keystore.jks
collector.keystore.passwordfile=/opt/app/dcae-certificate/.password
collector.keystore.alias=dynamically generated
-
-
-###############################################################################
-## Processing
-##
-## If there's a problem that prevents the collector from processing alarms,
-## it's normally better to apply back pressure to the caller than to try to
-## buffer beyond a reasonable size limit. With a limit, the server won't crash
-## due to being out of memory, and the caller will get a 5xx reply saying the
-## server is in trouble.
-collector.inputQueue.maxPending=8096
-
-## Schema Validation checkflag
-## default no validation checkflag (-1)
-## If enabled (1) - schemafile location must be specified
collector.schema.checkflag=1
collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.json\"}
-
-## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile
collector.dmaap.streamid=fault=ves-fault,ves-fault-secondary|syslog=ves-syslog,ves-syslog-secondary|heartbeat=ves-heartbeat,ves-heartbeat-secondary|measurementsForVfScaling=ves-measurement,ves-measurement-secondary|mobileFlow=ves-mobileflow,ves-mobileflow-secondary|other=ves-other,ves-other-secondary|stateChange=ves-statechange,ves-statechange-secondary|thresholdCrossingAlert=ves-thresholdCrossingAlert,ves-thresholdCrossingAlert-secondary|voiceQuality=ves-voicequality,ves-voicequality-secondary|sipSignaling=ves-sipsignaling,ves-sipsignaling-secondary
collector.dmaapfile=./etc/DmaapConfig.json
-
-## Custom ExceptionConfiguration
-exceptionConfig=./etc/ExceptionConfig.json
-
-## authflag control authentication by the collector
-## If enabled (1) - then authlist has to be defined
-## When authflag is enabled, only secure port will be supported
-## To disable enter 0
header.authflag=1
-## Combination of userid,base64 encoded pwd list to be supported
-## userid and pwd comma separated; pipe delimitation between each pair
header.authlist=sample1,c2FtcGxlMQ==|userid1,base64encodepwd1|userid2,base64encodepwd2
-
-## Event transformation Flag - when set expects configurable transformation
-## defined under ./etc/eventTransform.json
-## Enabled by default; to disable set to 0
event.transform.flag=1
+collector.inputQueue.maxPending = 8096
streams_subscribes = {}
services_calls = {}
tomcat.maxthreads = 200
-
-###############################################################################
-##
-## Tomcat control
-##
-#tomcat.maxthreads=(tomcat default, which is usually 200)
-
-
-###############################################################################\r
-##\r
-## Collector Server config\r
-##\r
-## - Default values are shown as commented settings.\r
-##\r
-###############################################################################\r
-##\r
-## HTTP(S) service\r
-##\r
-## Normally:\r
-##\r
-## - 8080 is http service\r
-## - https is disabled by default (-1)\r
-##\r
-## - At this time, the server always binds to 0.0.0.0\r
-##\r
-## The default port when header.authflag is disabled (0)\r
collector.service.port=9999\r
-\r
-## The secure port is required if header.authflag is set to 1 (true)\r
-## Authentication is only supported via secure port\r
-## When enabled - require valid keystore defined\r
collector.service.secure.port=8443\r
-\r
-## The keystore must be setup per installation when secure port is configured\r
collector.keystore.file.location=../etc/keystore\r
collector.keystore.passwordfile=./etc/passwordfile\r
collector.keystore.alias=tomcat\r
-\r
-\r
-###############################################################################\r
-## Processing\r
-##\r
-## If there's a problem that prevents the collector from processing alarms,\r
-## it's normally better to apply back pressure to the caller than to try to\r
-## buffer beyond a reasonable size limit. With a limit, the server won't crash\r
-## due to being out of memory, and the caller will get a 5xx reply saying the\r
-## server is in trouble.\r
-collector.inputQueue.maxPending=8096\r
-\r
-## Schema Validation checkflag\r
-## default no validation checkflag (-1)\r
-## If enabled (1) - schemafile location must be specified\r
collector.schema.checkflag=1\r
collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.json\"}\r
-\r
-## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile \r
collector.dmaap.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\r
collector.dmaapfile=./etc/DmaapConfig.json\r
-\r
-## Custom ExceptionConfiguration\r
-exceptionConfig=./etc/ExceptionConfig.json\r
-\r
-## authflag control authentication by the collector\r
-## If enabled (1) - then authlist has to be defined\r
-## When authflag is enabled, only secure port will be supported\r
-## To disable enter 0\r
header.authflag=1\r
-## Combination of userid,base64 encoded pwd list to be supported\r
-## userid and pwd comma separated; pipe delimitation between each pair\r
header.authlist=secureid,IWRjYWVSb2FkbTEyMyEt|sample1,c2FtcGxlMQ==\r
-\r
-## Event transformation Flag - when set expects configurable transformation\r
-## defined under ./etc/eventTransform.json\r
-## Enabled by default; to disable set to 0\r
event.transform.flag=1\r
\r
-###############################################################################\r
-##\r
-## Tomcat control\r
-##\r
-#tomcat.maxthreads=(tomcat default, which is usually 200)\r
-\r
\r