TCA: Replace any openecomp reference by onap
[dcaegen2/analytics/tca.git] / dcae-analytics-cdap-tca / src / test / java / org / onap / dcae / apod / analytics / cdap / tca / BaseAnalyticsCDAPTCAUnitTest.java
-/*\r
- * ===============================LICENSE_START======================================\r
- *  dcae-analytics\r
- * ================================================================================\r
- *    Copyright © 2017 AT&T Intellectual Property. All rights reserved.\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
- *          http://www.apache.org/licenses/LICENSE-2.0\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
- *  See the License for the specific language governing permissions and\r
- *  limitations under the License.\r
- *  ============================LICENSE_END===========================================\r
- */\r
-\r
-package org.openecomp.dcae.apod.analytics.cdap.tca;\r
-\r
-import co.cask.cdap.api.flow.flowlet.AbstractFlowlet;\r
-import co.cask.cdap.api.flow.flowlet.FlowletContext;\r
-import co.cask.cdap.internal.flow.DefaultFlowletConfigurer;\r
-import com.fasterxml.jackson.core.type.TypeReference;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.google.common.base.Suppliers;\r
-import org.junit.Assert;\r
-import org.openecomp.dcae.apod.analytics.cdap.tca.settings.TCAPolicyPreferences;\r
-import org.openecomp.dcae.apod.analytics.cdap.tca.settings.TCATestAppConfig;\r
-import org.openecomp.dcae.apod.analytics.cdap.tca.settings.TCATestAppPreferences;\r
-import org.openecomp.dcae.apod.analytics.model.domain.cef.EventListener;\r
-import org.openecomp.dcae.apod.analytics.model.domain.policy.tca.TCAPolicy;\r
-import org.openecomp.dcae.apod.analytics.model.util.AnalyticsModelIOUtils;\r
-import org.openecomp.dcae.apod.analytics.model.util.json.AnalyticsModelObjectMapperSupplier;\r
-import org.openecomp.dcae.apod.analytics.test.BaseDCAEAnalyticsUnitTest;\r
-\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.util.HashMap;\r
-import java.util.LinkedHashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-\r
-import static org.hamcrest.CoreMatchers.is;\r
-import static org.junit.Assert.assertThat;\r
-import static org.mockito.Mockito.mock;\r
-import static org.mockito.Mockito.when;\r
-\r
-/**\r
- * @author Rajiv Singla . Creation Date: 10/25/2016.\r
- */\r
-public abstract class BaseAnalyticsCDAPTCAUnitTest extends BaseDCAEAnalyticsUnitTest {\r
-\r
-    /**\r
-     * Object mapper to be used for all TCA Json Parsing\r
-     */\r
-    protected static final ObjectMapper ANALYTICS_MODEL_OBJECT_MAPPER =\r
-            Suppliers.memoize(new AnalyticsModelObjectMapperSupplier()).get();\r
-\r
-    protected static final String TCA_POLICY_JSON_FILE_LOCATION = "data/json/policy/tca_policy.json";\r
-    protected static final String CEF_MESSAGES_JSON_FILE_LOCATION = "data/json/cef/cef_messages.json";\r
-    protected static final String CEF_MESSAGE_JSON_FILE_LOCATION = "data/json/cef/cef_message.json";\r
-    protected static final String CEF_MESSAGE_WITH_THRESHOLD_VIOLATION_JSON_FILE_LOCATION =\r
-            "data/json/cef/cef_message_with_threshold_violation.json";\r
-    protected static final String TCA_APP_CONFIG_FILE_LOCATION = "data/json/config/controller_app_config.json";\r
-    protected static final String TCA_ALERT_JSON_FILE_LOCATION = "data/json/facade/tca_ves_cef_response.json";\r
-\r
-\r
-    protected static final String TCA_CONTROLLER_POLICY_FILE_LOCATION =\r
-            "data/properties/tca_controller_policy.properties";\r
-\r
-    protected static final String TCA_CONTROLLER_POLICY_FROM_JSON_FILE_LOCATION =\r
-            "data/properties/tca_controller_policy_from_json.properties";\r
-\r
-\r
-    protected static final String TCA_TEST_APP_CONFIG_NAME = "testTCAAppName";\r
-    protected static final String TCA_TEST_APP_CONFIG_DESCRIPTION = "testTCAAppDescription";\r
-    protected static final String TCA_TEST_APP_CONFIG_SUBSCRIBER_OUTPUT_STREAM_NAME =\r
-            "testTcaSubscriberOutputStreamName";\r
-    protected static final String TCA_TEST_APP_CONFIG_VES_ALERT_TABLE_NAME = "testTcaVESAlertsTableName";\r
-    protected static final String TCA_TEST_APP_CONFIG_VES_MESSAGE_STATUS_TABLE_NAME =\r
-            "testTcaVESMessageStatusTableName";\r
-\r
-\r
-    /**\r
-     * Provides TCA Policy that can be used for testing\r
-     *\r
-     * @return test TCA Policy Object\r
-     */\r
-    protected static TCAPolicy getSampleTCAPolicy() {\r
-        return deserializeJsonFileToModel(TCA_POLICY_JSON_FILE_LOCATION, TCAPolicy.class);\r
-    }\r
-\r
-    /**\r
-     * Provides TCA Policy that can be used for testing\r
-     *\r
-     * @return test {@link TCAPolicyPreferences}\r
-     */\r
-    protected static TCAPolicyPreferences getSampleTCAPolicyPreferences() {\r
-        return deserializeJsonFileToModel(TCA_POLICY_JSON_FILE_LOCATION, TCAPolicyPreferences.class);\r
-    }\r
-\r
-    /**\r
-     * Provides list containing 350 CEF messages\r
-     *\r
-     * @return CEF Test Message\r
-     *\r
-     * @throws Exception Exception\r
-     */\r
-    protected static List<EventListener> getCEFMessages() throws Exception {\r
-        final String cefMessageAsString = fromStream(CEF_MESSAGES_JSON_FILE_LOCATION);\r
-        final TypeReference<List<EventListener>> eventListenerListTypeReference =\r
-                new TypeReference<List<EventListener>>() {\r
-                };\r
-        return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, eventListenerListTypeReference);\r
-    }\r
-\r
-    /**\r
-     * Provides 1 valid CEF messages which does not violate Threshold as String\r
-     *\r
-     * @return CEF Test Message String\r
-     *\r
-     * @throws Exception Exception\r
-     */\r
-    protected static String getValidCEFMessage() throws Exception {\r
-        return fromStream(CEF_MESSAGE_JSON_FILE_LOCATION);\r
-    }\r
-\r
-\r
-    /**\r
-     * Provides single CEF Test Message\r
-     *\r
-     * @return CEF Test Message\r
-     *\r
-     * @throws Exception Exception\r
-     */\r
-    protected static EventListener getCEFEventListener() throws Exception {\r
-        final String cefMessageAsString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION);\r
-        return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, EventListener.class);\r
-    }\r
-\r
-    /**\r
-     * Deserialize given Json file location to given model class and returns it back without any validation check\r
-     *\r
-     * @param jsonFileLocation Classpath location of the json file\r
-     * @param modelClass Model Class type\r
-     * @param <T> Json Model Type\r
-     *\r
-     * @return Json model object\r
-     */\r
-    public static <T> T deserializeJsonFileToModel(String jsonFileLocation, Class<T> modelClass) {\r
-        final InputStream jsonFileInputStream =\r
-                BaseDCAEAnalyticsUnitTest.class.getClassLoader().getResourceAsStream(jsonFileLocation);\r
-        Assert.assertNotNull("Json File Location must be valid", jsonFileInputStream);\r
-        try {\r
-            return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(jsonFileInputStream, modelClass);\r
-        } catch (IOException ex) {\r
-            LOG.error("Error while doing assert Json for fileLocation: {}, modelClass: {}, Exception {}",\r
-                    jsonFileLocation, modelClass, ex);\r
-            throw new RuntimeException(ex);\r
-        } finally {\r
-            try {\r
-                jsonFileInputStream.close();\r
-            } catch (IOException e) {\r
-                LOG.error("Error while closing input stream at file location: {}", jsonFileLocation);\r
-                throw new RuntimeException(e);\r
-            }\r
-        }\r
-    }\r
-\r
-    protected static TCATestAppConfig getTCATestAppConfig() {\r
-        final TCATestAppConfig tcaAppConfig = new TCATestAppConfig();\r
-        tcaAppConfig.setAppName(TCA_TEST_APP_CONFIG_NAME);\r
-        tcaAppConfig.setAppDescription(TCA_TEST_APP_CONFIG_DESCRIPTION);\r
-        tcaAppConfig.setTcaSubscriberOutputStreamName(TCA_TEST_APP_CONFIG_SUBSCRIBER_OUTPUT_STREAM_NAME);\r
-        tcaAppConfig.setTcaVESAlertsTableName(TCA_TEST_APP_CONFIG_VES_ALERT_TABLE_NAME);\r
-        tcaAppConfig.setTcaVESMessageStatusTableName(TCA_TEST_APP_CONFIG_VES_MESSAGE_STATUS_TABLE_NAME);\r
-        return tcaAppConfig;\r
-    }\r
-\r
-    /**\r
-     * Provides a test application preference for unit testing\r
-     *\r
-     * @return tca app preferences\r
-     */\r
-    protected static TCATestAppPreferences getTCATestAppPreferences() {\r
-        final TCATestAppPreferences tcaTestAppPreferences = new TCATestAppPreferences();\r
-        tcaTestAppPreferences.setSubscriberHostName("SUBSCRIBER_HOST_NAME");\r
-        tcaTestAppPreferences.setSubscriberHostPortNumber(10000);\r
-        tcaTestAppPreferences.setSubscriberTopicName("SUBSCRIBER_TOPIC_NAME");\r
-        tcaTestAppPreferences.setSubscriberUserName("SUBSCRIBER_USERNAME");\r
-        tcaTestAppPreferences.setSubscriberUserPassword("SUBSCRIBER_PASSWORD");\r
-        tcaTestAppPreferences.setSubscriberProtocol("https");\r
-        tcaTestAppPreferences.setSubscriberContentType("application/json");\r
-        tcaTestAppPreferences.setSubscriberConsumerId("SUBSCRIBER_CONSUMER_ID");\r
-        tcaTestAppPreferences.setSubscriberConsumerGroup("SUBSCRIBER_CONSUMER_GROUP_NAME");\r
-        tcaTestAppPreferences.setSubscriberTimeoutMS(10);\r
-        tcaTestAppPreferences.setSubscriberMessageLimit(100);\r
-        tcaTestAppPreferences.setSubscriberPollingInterval(1000);\r
-\r
-        tcaTestAppPreferences.setPublisherHostName("PUBLISHER_HOST_NAME");\r
-        tcaTestAppPreferences.setPublisherHostPort(1234);\r
-        tcaTestAppPreferences.setPublisherTopicName("PUBLISHER_TOPIC_NAME");\r
-        tcaTestAppPreferences.setPublisherUserName("PUBLISHER_USERNAME");\r
-        tcaTestAppPreferences.setPublisherUserPassword("PUBLISHER_PASSWORD");\r
-        tcaTestAppPreferences.setPublisherProtocol("https");\r
-        tcaTestAppPreferences.setPublisherContentType("application/json");\r
-        tcaTestAppPreferences.setPublisherMaxBatchSize(100);\r
-        tcaTestAppPreferences.setPublisherMaxRecoveryQueueSize(100);\r
-        tcaTestAppPreferences.setPublisherPollingInterval(6000);\r
-\r
-        tcaTestAppPreferences.setEnableAAIEnrichment(true);\r
-        tcaTestAppPreferences.setAaiEnrichmentHost("AAI_ENRICHMENT_HOST");\r
-        tcaTestAppPreferences.setAaiEnrichmentPortNumber(8443);\r
-        tcaTestAppPreferences.setAaiEnrichmentProtocol("https");\r
-        tcaTestAppPreferences.setAaiEnrichmentUserName("AAI_USERNAME");\r
-        tcaTestAppPreferences.setAaiEnrichmentUserPassword("AAI_USERPASSWORD");\r
-        tcaTestAppPreferences.setAaiEnrichmentIgnoreSSLCertificateErrors(true);\r
-        tcaTestAppPreferences.setAaiVMEnrichmentAPIPath("VM_ENRICHMENT_PATH");\r
-        tcaTestAppPreferences.setAaiVNFEnrichmentAPIPath("VNF_ENRICHMENT_PATH");\r
-        return tcaTestAppPreferences;\r
-    }\r
-\r
-    protected static Map<String, String> getPreferenceMap() {\r
-        Map<String, String> preference = new HashMap<>();\r
-        preference.put("subscriberHostName", "mrlocal-mtnjftle01.homer.com");\r
-        preference.put("subscriberHostPort", "3905");\r
-        preference.put("subscriberTopicName", "com.dcae.dmaap.mtnje2.DcaeTestVESPub");\r
-        preference.put("subscriberProtocol", "https");\r
-        preference.put("subscriberUserName", "USER");\r
-        preference.put("subscriberUserPassword", "PASSWORD");\r
-        preference.put("subscriberContentType", "application/json");\r
-        preference.put("subscriberConsumerId", "123");\r
-        preference.put("subscriberConsumerGroup", "testTCAConsumerName-123");\r
-        preference.put("subscriberTimeoutMS", "-1");\r
-        preference.put("subscriberMessageLimit", "-1");\r
-        preference.put("subscriberPollingInterval", "30000");\r
-\r
-        preference.put("publisherHostName", "publisherHostName");\r
-        preference.put("publisherHostPort", "3905");\r
-        preference.put("publisherTopicName", "publisherTopicName");\r
-        preference.put("publisherProtocol", "https");\r
-        preference.put("publisherUserName", "publisherUserName");\r
-        preference.put("publisherContentType", "application/json");\r
-        preference.put("publisherMaxBatchSize", "1000");\r
-        preference.put("publisherMaxRecoveryQueueSize", "100");\r
-        preference.put("publisherPollingInterval", "6000");\r
-        return preference;\r
-    }\r
-\r
-    protected static <T extends AbstractFlowlet> void assertFlowletNameAndDescription(\r
-            final String expectedName, final String expectedDescription, final T flowlet) {\r
-        final DefaultFlowletConfigurer defaultFlowletConfigurer =\r
-                new DefaultFlowletConfigurer(flowlet);\r
-        flowlet.configure(defaultFlowletConfigurer);\r
-\r
-        final String flowletName = getPrivateFiledValue(defaultFlowletConfigurer, "name", String.class);\r
-        final String flowletDescription =\r
-                getPrivateFiledValue(defaultFlowletConfigurer, "description", String.class);\r
-\r
-        assertThat("Flowlet name must match with CDAPComponentsConstants",\r
-                flowletName, is(expectedName));\r
-\r
-        assertThat("Flowlet description must match with CDAPComponentsConstants",\r
-                flowletDescription, is(expectedDescription));\r
-\r
-    }\r
-\r
-    protected static FlowletContext getTestFlowletContextWithValidPolicy() {\r
-        return createNewFlowletContextFromPropertiesFile(TCA_CONTROLLER_POLICY_FILE_LOCATION);\r
-    }\r
-\r
-    protected static FlowletContext getTestFlowletContextWithValidPolicyFromJSON() {\r
-        return createNewFlowletContextFromPropertiesFile(TCA_CONTROLLER_POLICY_FROM_JSON_FILE_LOCATION);\r
-    }\r
-\r
-    private static FlowletContext createNewFlowletContextFromPropertiesFile(final String propertyFileLocation) {\r
-        final Properties controllerProperties =\r
-                AnalyticsModelIOUtils.loadPropertiesFile(propertyFileLocation, new Properties());\r
-\r
-        Map<String, String> runtimeArgs = new LinkedHashMap<>();\r
-        for (Map.Entry<Object, Object> property : controllerProperties.entrySet()) {\r
-            runtimeArgs.put(property.getKey().toString(), property.getValue().toString());\r
-        }\r
-\r
-        final FlowletContext flowletContext = mock(FlowletContext.class);\r
-        when(flowletContext.getRuntimeArguments()).thenReturn(runtimeArgs);\r
-        return flowletContext;\r
-    }\r
-\r
-}\r
+/*
+ * ===============================LICENSE_START======================================
+ *  dcae-analytics
+ * ================================================================================
+ *    Copyright © 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.apod.analytics.cdap.tca;
+
+import co.cask.cdap.api.flow.flowlet.AbstractFlowlet;
+import co.cask.cdap.api.flow.flowlet.FlowletContext;
+import co.cask.cdap.internal.flow.DefaultFlowletConfigurer;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Suppliers;
+import org.junit.Assert;
+import org.onap.dcae.apod.analytics.cdap.tca.settings.TCAPolicyPreferences;
+import org.onap.dcae.apod.analytics.cdap.tca.settings.TCATestAppConfig;
+import org.onap.dcae.apod.analytics.cdap.tca.settings.TCATestAppPreferences;
+import org.onap.dcae.apod.analytics.model.domain.cef.EventListener;
+import org.onap.dcae.apod.analytics.model.domain.policy.tca.TCAPolicy;
+import org.onap.dcae.apod.analytics.model.util.AnalyticsModelIOUtils;
+import org.onap.dcae.apod.analytics.model.util.json.AnalyticsModelObjectMapperSupplier;
+import org.onap.dcae.apod.analytics.test.BaseDCAEAnalyticsUnitTest;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+/**
+ * @author Rajiv Singla . Creation Date: 10/25/2016.
+ */
+public abstract class BaseAnalyticsCDAPTCAUnitTest extends BaseDCAEAnalyticsUnitTest {
+
+    /**
+     * Object mapper to be used for all TCA Json Parsing
+     */
+    protected static final ObjectMapper ANALYTICS_MODEL_OBJECT_MAPPER =
+            Suppliers.memoize(new AnalyticsModelObjectMapperSupplier()).get();
+
+    protected static final String TCA_POLICY_JSON_FILE_LOCATION = "data/json/policy/tca_policy.json";
+    protected static final String CEF_MESSAGES_JSON_FILE_LOCATION = "data/json/cef/cef_messages.json";
+    protected static final String CEF_MESSAGE_JSON_FILE_LOCATION = "data/json/cef/cef_message.json";
+    protected static final String CEF_MESSAGE_WITH_THRESHOLD_VIOLATION_JSON_FILE_LOCATION =
+            "data/json/cef/cef_message_with_threshold_violation.json";
+    protected static final String TCA_APP_CONFIG_FILE_LOCATION = "data/json/config/controller_app_config.json";
+    protected static final String TCA_ALERT_JSON_FILE_LOCATION = "data/json/facade/tca_ves_cef_response.json";
+
+
+    protected static final String TCA_CONTROLLER_POLICY_FILE_LOCATION =
+            "data/properties/tca_controller_policy.properties";
+
+    protected static final String TCA_CONTROLLER_POLICY_FROM_JSON_FILE_LOCATION =
+            "data/properties/tca_controller_policy_from_json.properties";
+
+
+    protected static final String TCA_TEST_APP_CONFIG_NAME = "testTCAAppName";
+    protected static final String TCA_TEST_APP_CONFIG_DESCRIPTION = "testTCAAppDescription";
+    protected static final String TCA_TEST_APP_CONFIG_SUBSCRIBER_OUTPUT_STREAM_NAME =
+            "testTcaSubscriberOutputStreamName";
+    protected static final String TCA_TEST_APP_CONFIG_VES_ALERT_TABLE_NAME = "testTcaVESAlertsTableName";
+    protected static final String TCA_TEST_APP_CONFIG_VES_MESSAGE_STATUS_TABLE_NAME =
+            "testTcaVESMessageStatusTableName";
+
+
+    /**
+     * Provides TCA Policy that can be used for testing
+     *
+     * @return test TCA Policy Object
+     */
+    protected static TCAPolicy getSampleTCAPolicy() {
+        return deserializeJsonFileToModel(TCA_POLICY_JSON_FILE_LOCATION, TCAPolicy.class);
+    }
+
+    /**
+     * Provides TCA Policy that can be used for testing
+     *
+     * @return test {@link TCAPolicyPreferences}
+     */
+    protected static TCAPolicyPreferences getSampleTCAPolicyPreferences() {
+        return deserializeJsonFileToModel(TCA_POLICY_JSON_FILE_LOCATION, TCAPolicyPreferences.class);
+    }
+
+    /**
+     * Provides list containing 350 CEF messages
+     *
+     * @return CEF Test Message
+     *
+     * @throws Exception Exception
+     */
+    protected static List<EventListener> getCEFMessages() throws Exception {
+        final String cefMessageAsString = fromStream(CEF_MESSAGES_JSON_FILE_LOCATION);
+        final TypeReference<List<EventListener>> eventListenerListTypeReference =
+                new TypeReference<List<EventListener>>() {
+                };
+        return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, eventListenerListTypeReference);
+    }
+
+    /**
+     * Provides 1 valid CEF messages which does not violate Threshold as String
+     *
+     * @return CEF Test Message String
+     *
+     * @throws Exception Exception
+     */
+    protected static String getValidCEFMessage() throws Exception {
+        return fromStream(CEF_MESSAGE_JSON_FILE_LOCATION);
+    }
+
+
+    /**
+     * Provides single CEF Test Message
+     *
+     * @return CEF Test Message
+     *
+     * @throws Exception Exception
+     */
+    protected static EventListener getCEFEventListener() throws Exception {
+        final String cefMessageAsString = fromStream(CEF_MESSAGE_JSON_FILE_LOCATION);
+        return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(cefMessageAsString, EventListener.class);
+    }
+
+    /**
+     * Deserialize given Json file location to given model class and returns it back without any validation check
+     *
+     * @param jsonFileLocation Classpath location of the json file
+     * @param modelClass Model Class type
+     * @param <T> Json Model Type
+     *
+     * @return Json model object
+     */
+    public static <T> T deserializeJsonFileToModel(String jsonFileLocation, Class<T> modelClass) {
+        final InputStream jsonFileInputStream =
+                BaseDCAEAnalyticsUnitTest.class.getClassLoader().getResourceAsStream(jsonFileLocation);
+        Assert.assertNotNull("Json File Location must be valid", jsonFileInputStream);
+        try {
+            return ANALYTICS_MODEL_OBJECT_MAPPER.readValue(jsonFileInputStream, modelClass);
+        } catch (IOException ex) {
+            LOG.error("Error while doing assert Json for fileLocation: {}, modelClass: {}, Exception {}",
+                    jsonFileLocation, modelClass, ex);
+            throw new RuntimeException(ex);
+        } finally {
+            try {
+                jsonFileInputStream.close();
+            } catch (IOException e) {
+                LOG.error("Error while closing input stream at file location: {}", jsonFileLocation);
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    protected static TCATestAppConfig getTCATestAppConfig() {
+        final TCATestAppConfig tcaAppConfig = new TCATestAppConfig();
+        tcaAppConfig.setAppName(TCA_TEST_APP_CONFIG_NAME);
+        tcaAppConfig.setAppDescription(TCA_TEST_APP_CONFIG_DESCRIPTION);
+        tcaAppConfig.setTcaSubscriberOutputStreamName(TCA_TEST_APP_CONFIG_SUBSCRIBER_OUTPUT_STREAM_NAME);
+        tcaAppConfig.setTcaVESAlertsTableName(TCA_TEST_APP_CONFIG_VES_ALERT_TABLE_NAME);
+        tcaAppConfig.setTcaVESMessageStatusTableName(TCA_TEST_APP_CONFIG_VES_MESSAGE_STATUS_TABLE_NAME);
+        return tcaAppConfig;
+    }
+
+    /**
+     * Provides a test application preference for unit testing
+     *
+     * @return tca app preferences
+     */
+    protected static TCATestAppPreferences getTCATestAppPreferences() {
+        final TCATestAppPreferences tcaTestAppPreferences = new TCATestAppPreferences();
+        tcaTestAppPreferences.setSubscriberHostName("SUBSCRIBER_HOST_NAME");
+        tcaTestAppPreferences.setSubscriberHostPortNumber(10000);
+        tcaTestAppPreferences.setSubscriberTopicName("SUBSCRIBER_TOPIC_NAME");
+        tcaTestAppPreferences.setSubscriberUserName("SUBSCRIBER_USERNAME");
+        tcaTestAppPreferences.setSubscriberUserPassword("SUBSCRIBER_PASSWORD");
+        tcaTestAppPreferences.setSubscriberProtocol("https");
+        tcaTestAppPreferences.setSubscriberContentType("application/json");
+        tcaTestAppPreferences.setSubscriberConsumerId("SUBSCRIBER_CONSUMER_ID");
+        tcaTestAppPreferences.setSubscriberConsumerGroup("SUBSCRIBER_CONSUMER_GROUP_NAME");
+        tcaTestAppPreferences.setSubscriberTimeoutMS(10);
+        tcaTestAppPreferences.setSubscriberMessageLimit(100);
+        tcaTestAppPreferences.setSubscriberPollingInterval(1000);
+
+        tcaTestAppPreferences.setPublisherHostName("PUBLISHER_HOST_NAME");
+        tcaTestAppPreferences.setPublisherHostPort(1234);
+        tcaTestAppPreferences.setPublisherTopicName("PUBLISHER_TOPIC_NAME");
+        tcaTestAppPreferences.setPublisherUserName("PUBLISHER_USERNAME");
+        tcaTestAppPreferences.setPublisherUserPassword("PUBLISHER_PASSWORD");
+        tcaTestAppPreferences.setPublisherProtocol("https");
+        tcaTestAppPreferences.setPublisherContentType("application/json");
+        tcaTestAppPreferences.setPublisherMaxBatchSize(100);
+        tcaTestAppPreferences.setPublisherMaxRecoveryQueueSize(100);
+        tcaTestAppPreferences.setPublisherPollingInterval(6000);
+
+        tcaTestAppPreferences.setEnableAAIEnrichment(true);
+        tcaTestAppPreferences.setAaiEnrichmentHost("AAI_ENRICHMENT_HOST");
+        tcaTestAppPreferences.setAaiEnrichmentPortNumber(8443);
+        tcaTestAppPreferences.setAaiEnrichmentProtocol("https");
+        tcaTestAppPreferences.setAaiEnrichmentUserName("AAI_USERNAME");
+        tcaTestAppPreferences.setAaiEnrichmentUserPassword("AAI_USERPASSWORD");
+        tcaTestAppPreferences.setAaiEnrichmentIgnoreSSLCertificateErrors(true);
+        tcaTestAppPreferences.setAaiVMEnrichmentAPIPath("VM_ENRICHMENT_PATH");
+        tcaTestAppPreferences.setAaiVNFEnrichmentAPIPath("VNF_ENRICHMENT_PATH");
+        return tcaTestAppPreferences;
+    }
+
+    protected static Map<String, String> getPreferenceMap() {
+        Map<String, String> preference = new HashMap<>();
+        preference.put("subscriberHostName", "mrlocal-mtnjftle01.homer.com");
+        preference.put("subscriberHostPort", "3905");
+        preference.put("subscriberTopicName", "com.dcae.dmaap.mtnje2.DcaeTestVESPub");
+        preference.put("subscriberProtocol", "https");
+        preference.put("subscriberUserName", "USER");
+        preference.put("subscriberUserPassword", "PASSWORD");
+        preference.put("subscriberContentType", "application/json");
+        preference.put("subscriberConsumerId", "123");
+        preference.put("subscriberConsumerGroup", "testTCAConsumerName-123");
+        preference.put("subscriberTimeoutMS", "-1");
+        preference.put("subscriberMessageLimit", "-1");
+        preference.put("subscriberPollingInterval", "30000");
+
+        preference.put("publisherHostName", "publisherHostName");
+        preference.put("publisherHostPort", "3905");
+        preference.put("publisherTopicName", "publisherTopicName");
+        preference.put("publisherProtocol", "https");
+        preference.put("publisherUserName", "publisherUserName");
+        preference.put("publisherContentType", "application/json");
+        preference.put("publisherMaxBatchSize", "1000");
+        preference.put("publisherMaxRecoveryQueueSize", "100");
+        preference.put("publisherPollingInterval", "6000");
+        return preference;
+    }
+
+    protected static <T extends AbstractFlowlet> void assertFlowletNameAndDescription(
+            final String expectedName, final String expectedDescription, final T flowlet) {
+        final DefaultFlowletConfigurer defaultFlowletConfigurer =
+                new DefaultFlowletConfigurer(flowlet);
+        flowlet.configure(defaultFlowletConfigurer);
+
+        final String flowletName = getPrivateFiledValue(defaultFlowletConfigurer, "name", String.class);
+        final String flowletDescription =
+                getPrivateFiledValue(defaultFlowletConfigurer, "description", String.class);
+
+        assertThat("Flowlet name must match with CDAPComponentsConstants",
+                flowletName, is(expectedName));
+
+        assertThat("Flowlet description must match with CDAPComponentsConstants",
+                flowletDescription, is(expectedDescription));
+
+    }
+
+    protected static FlowletContext getTestFlowletContextWithValidPolicy() {
+        return createNewFlowletContextFromPropertiesFile(TCA_CONTROLLER_POLICY_FILE_LOCATION);
+    }
+
+    protected static FlowletContext getTestFlowletContextWithValidPolicyFromJSON() {
+        return createNewFlowletContextFromPropertiesFile(TCA_CONTROLLER_POLICY_FROM_JSON_FILE_LOCATION);
+    }
+
+    private static FlowletContext createNewFlowletContextFromPropertiesFile(final String propertyFileLocation) {
+        final Properties controllerProperties =
+                AnalyticsModelIOUtils.loadPropertiesFile(propertyFileLocation, new Properties());
+
+        Map<String, String> runtimeArgs = new LinkedHashMap<>();
+        for (Map.Entry<Object, Object> property : controllerProperties.entrySet()) {
+            runtimeArgs.put(property.getKey().toString(), property.getValue().toString());
+        }
+
+        final FlowletContext flowletContext = mock(FlowletContext.class);
+        when(flowletContext.getRuntimeArguments()).thenReturn(runtimeArgs);
+        return flowletContext;
+    }
+
+}