aboutsummaryrefslogtreecommitdiffstats
path: root/appc-config/appc-flow-controller
diff options
context:
space:
mode:
authorkurczews <krzysztof.kurczewski@nokia.com>2018-02-15 14:51:07 +0100
committerPatrick Brady <pb071s@att.com>2018-02-16 20:33:58 +0000
commitcfc8a7b22d30696a227a410aaf17ac3110d6b59d (patch)
tree4d1ab1001400e44d87fd1b6c3eca8165ade944f6 /appc-config/appc-flow-controller
parente0ff2c11d4b363276cc7867e2a5188d1d11b5f91 (diff)
Improve coverage in flow/controller/node
* Extract separate class for property loading * Extract separate class for extracting uri * Add coverage for changes above Change-Id: Ibffa09c96aef2764188cba69bf8cb559c8a9c10e Issue-ID: APPC-440 Signed-off-by: kurczews <krzysztof.kurczewski@nokia.com>
Diffstat (limited to 'appc-config/appc-flow-controller')
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java2
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/JsonParsingNode.java2
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/PropertiesLoader.java20
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/ResourceUriExtractor.java72
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java259
-rw-r--r--appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java2
-rw-r--r--appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/PropertiesLoaderTest.java29
-rw-r--r--appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/ResourceUriExtractorTest.java90
-rw-r--r--appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/TestRestServiceNode.java (renamed from appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java)9
-rw-r--r--appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/FlowControlNodeTest.java330
-rw-r--r--appc-config/appc-flow-controller/provider/src/test/resources/properties_loader.properties1
11 files changed, 489 insertions, 327 deletions
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java
index b8ace760a..baca94b36 100644
--- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java
@@ -73,7 +73,7 @@ public class FlowControlNode implements SvcLogicJavaPlugin {
public void processFlow(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
log.debug("Received processParamKeys call with params : " + inParams);
- String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PRIFIX);
+ String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX);
try {
responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
SvcLogicContext localContext = new SvcLogicContext();
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/JsonParsingNode.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/JsonParsingNode.java
index 6a987df74..42f38ba46 100644
--- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/JsonParsingNode.java
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/JsonParsingNode.java
@@ -44,7 +44,7 @@ public class JsonParsingNode implements SvcLogicJavaPlugin {
public void parse(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
String fn = "RestServiceNode.sendRequest";
log.info("Received processParamKeys call with params : " + inParams);
- String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PRIFIX);
+ String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX);
responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
try {
//Remove below for Block
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/PropertiesLoader.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/PropertiesLoader.java
new file mode 100644
index 000000000..28792bb10
--- /dev/null
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/PropertiesLoader.java
@@ -0,0 +1,20 @@
+package org.onap.appc.flow.controller.node;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+class PropertiesLoader {
+
+ private PropertiesLoader() {}
+
+ static Properties load(String path) throws IOException {
+ Properties props = new Properties();
+ try (InputStream propStream = new FileInputStream(path)) {
+ props.load(propStream);
+ }
+ return props;
+ }
+
+}
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/ResourceUriExtractor.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/ResourceUriExtractor.java
new file mode 100644
index 000000000..3cfea31a2
--- /dev/null
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/ResourceUriExtractor.java
@@ -0,0 +1,72 @@
+package org.onap.appc.flow.controller.node;
+
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.HTTP;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_CONTEXT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_HOST_IP_ADDRESS;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PORT_NUMBER;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_SUB_CONTEXT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_URL;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import java.util.Properties;
+import org.apache.commons.lang.StringUtils;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+
+/**
+ * Helper class for RestServiceNode
+ */
+class ResourceUriExtractor {
+
+ private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
+
+ private ResourceUriExtractor() {
+ }
+
+ static String extractResourceUri(SvcLogicContext ctx, Properties prop) throws Exception {
+ String resourceUri = ctx.getAttribute(INPUT_URL);
+
+ if (StringUtils.isBlank(resourceUri)) {
+ resourceUri = getAddress(ctx);
+ log.info("resourceUri= " + resourceUri);
+ resourceUri += getContext(ctx, prop);
+ log.info("resourceUri= " + resourceUri);
+ resourceUri += getSubContext(ctx, prop);
+ }
+ log.info("resourceUri= " + resourceUri);
+
+ return resourceUri;
+ }
+
+ private static String getAddress(SvcLogicContext ctx) {
+ String address = ctx.getAttribute(INPUT_HOST_IP_ADDRESS);
+ String port = ctx.getAttribute(INPUT_PORT_NUMBER);
+ return HTTP + address + ":" + port;
+ }
+
+ private static String getContext(SvcLogicContext ctx, Properties prop) {
+ String context;
+ if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_CONTEXT))) {
+ context = "/" + ctx.getAttribute(INPUT_CONTEXT);
+ } else if (prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".context") != null) {
+ context = "/" + prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".context");
+ } else {
+ throw new IllegalArgumentException("Could Not found the context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+ }
+ return context;
+ }
+
+ private static String getSubContext(SvcLogicContext ctx, Properties prop) {
+ String subContext;
+ if (StringUtils.isNotBlank(ctx.getAttribute(INPUT_SUB_CONTEXT))) {
+ subContext = "/" + ctx.getAttribute(INPUT_SUB_CONTEXT);
+ } else if (prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context") != null) {
+ subContext = "/" + prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION) + ".sub-context");
+ } else {
+ throw new IllegalArgumentException("Could Not found the sub context for operation " + ctx.getAttribute(INPUT_REQUEST_ACTION));
+ }
+ return subContext;
+ }
+
+}
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java
index d931e47f6..9d7f6e879 100644
--- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java
@@ -22,140 +22,101 @@
package org.onap.appc.flow.controller.node;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.APPC_FLOW_CONTROLLER;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PARAM_RESPONSE_PREFIX;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION_TYPE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_ERROR_MESSAGE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_PARAM_STATUS;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_FAILURE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_MESSAGE;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.OUTPUT_STATUS_SUCCESS;
+
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.onap.appc.flow.controller.data.Transaction;
import org.onap.appc.flow.controller.executorImpl.RestExecutor;
-import org.onap.appc.flow.controller.utils.FlowControllerConstants;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
import org.onap.ccsdk.sli.core.sli.SvcLogicException;
import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
public class RestServiceNode implements SvcLogicJavaPlugin {
- private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
- private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
-
- public void sendRequest(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {
- String fn = "RestServiceNode.sendRequest";
- log.info("Received processParamKeys call with params : " + inParams);
- String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PRIFIX);
- try {
- responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
- //Remove below for Block
- for (Object key : ctx.getAttributeKeySet()) {
- String parmName = (String) key;
- String parmValue = ctx.getAttribute(parmName);
- log.info(fn + "Getting Key = " + parmName + "and Value = " + parmValue);
- }
-
- send(ctx, inParams);
- ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_STATUS,
- FlowControllerConstants.OUTPUT_STATUS_SUCCESS);
-
- } catch (Exception e) {
- ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_STATUS,
- FlowControllerConstants.OUTPUT_STATUS_FAILURE);
- ctx.setAttribute(responsePrefix + FlowControllerConstants.OUTPUT_PARAM_ERROR_MESSAGE,
- e.getMessage());
- log.error("Error Message : " + e.getMessage(), e);
- throw new SvcLogicException(e.getMessage());
- }
+ private static final EELFLogger log = EELFManager.getInstance().getLogger(RestServiceNode.class);
+ private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
+
+ public void sendRequest(Map<String, String> inParams, SvcLogicContext ctx)
+ throws SvcLogicException {
+ String fn = "RestServiceNode.sendRequest";
+ log.info("Received processParamKeys call with params : " + inParams);
+ String responsePrefix = inParams.get(INPUT_PARAM_RESPONSE_PREFIX);
+ try {
+ responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
+ //Remove below for Block
+ for (Object key : ctx.getAttributeKeySet()) {
+ String parmName = (String) key;
+ String parmValue = ctx.getAttribute(parmName);
+ log.info(fn + "Getting Key = " + parmName + "and Value = " + parmValue);
+ }
+
+ send(ctx, inParams);
+ ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_SUCCESS);
+
+ } catch (Exception e) {
+ ctx.setAttribute(responsePrefix + OUTPUT_PARAM_STATUS, OUTPUT_STATUS_FAILURE);
+ ctx.setAttribute(responsePrefix + OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage());
+ log.error("Error Message : " + e.getMessage(), e);
+ throw new SvcLogicException(e.getMessage());
}
-
- private void send(SvcLogicContext ctx, Map<String, String> inParams) throws Exception {
- try {
- Properties prop = loadProperties();
- log.info("Loaded Properties " + prop.toString());
- String responsePrefix = inParams.get(FlowControllerConstants.INPUT_PARAM_RESPONSE_PRIFIX);
- String resourceUri = "";
- if (ctx.getAttribute(FlowControllerConstants.INPUT_URL) != null
- && !(ctx.getAttribute(FlowControllerConstants.INPUT_URL).isEmpty())) {
- resourceUri = ctx.getAttribute(FlowControllerConstants.INPUT_URL);
-
- } else {
- resourceUri = resourceUri.concat(FlowControllerConstants.HTTP);
- log.info("resourceUri= " + resourceUri );
- resourceUri = resourceUri.concat(ctx.getAttribute(FlowControllerConstants.INPUT_HOST_IP_ADDRESS));
- resourceUri = resourceUri.concat(":");
- resourceUri = resourceUri.concat(ctx.getAttribute(FlowControllerConstants.INPUT_PORT_NUMBER));
-
- if (ctx.getAttribute(FlowControllerConstants.INPUT_CONTEXT) != null
- && !ctx.getAttribute(FlowControllerConstants.INPUT_CONTEXT).isEmpty()) {
- resourceUri = resourceUri
- .concat("/")
- .concat(ctx.getAttribute(FlowControllerConstants.INPUT_CONTEXT));
- log.info("resourceUri= " + resourceUri );
-
- } else if (prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".context")) != null ) {
- log.info("resourceUri = " + resourceUri );
- resourceUri = resourceUri
- .concat("/")
- .concat(prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".context")));
-
- } else {
- throw new Exception("Could Not found the context for operation "
- + ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION));
- }
-
- if (ctx.getAttribute(FlowControllerConstants.INPUT_SUB_CONTEXT) != null
- && !ctx.getAttribute(FlowControllerConstants.INPUT_SUB_CONTEXT).isEmpty()) {
- resourceUri = resourceUri
- .concat("/")
- .concat(ctx.getAttribute(FlowControllerConstants.INPUT_SUB_CONTEXT));
- log.info("resourceUri" + resourceUri );
-
- } else if (prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".sub-context")) != null ) {
- resourceUri = resourceUri
- .concat("/")
- .concat(prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".sub-context")));
- log.info("resourceUri" + resourceUri );
- }
- }
- log.info("Rest Constructed URL : " + resourceUri);
-
- Transaction transaction = new Transaction();
- transaction.setExecutionEndPoint(resourceUri);
- transaction.setExecutionRPC(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION_TYPE));
- transaction.setAction(FlowControllerConstants.INPUT_REQUEST_ACTION);
- if (ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION_TYPE) == null
- || ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION_TYPE).isEmpty()) {
- throw new Exception("Dont know REST operation for Action " + transaction.getExecutionRPC());
- }
- if (ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION) == null
- || ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION).isEmpty()) {
- throw new Exception("Dont know request-action " + transaction.getAction());
- }
-
- //This code need to get changed to get the UserID and pass from a common place.
- if (transaction.getuId() == null) {
- transaction.setuId(prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".default-rest-user")));
- }
- if (transaction.getPswd() == null) {
- transaction.setPswd(prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION)
- .concat(".default-rest-pass")));
- }
-
- RestExecutor restRequestExecutor = new RestExecutor();
- Map<String, String> output = restRequestExecutor.execute(transaction, ctx);
-
- if (isValidJson(output.get("restResponse")) != null) {
- ctx.setAttribute(responsePrefix + "." + FlowControllerConstants.OUTPUT_STATUS_MESSAGE,
- output.get("restResponse"));
+ }
+
+ private void send(SvcLogicContext ctx, Map<String, String> inParams) throws Exception {
+ try {
+ Properties prop = loadProperties();
+ log.info("Loaded Properties " + prop.toString());
+ String responsePrefix = inParams.get(INPUT_PARAM_RESPONSE_PREFIX);
+ String resourceUri = ResourceUriExtractor.extractResourceUri(ctx, prop);
+ log.info("Rest Constructed URL : " + resourceUri);
+
+ Transaction transaction = new Transaction();
+ transaction.setExecutionEndPoint(resourceUri);
+ transaction
+ .setExecutionRPC(ctx.getAttribute(INPUT_REQUEST_ACTION_TYPE));
+ transaction.setAction(INPUT_REQUEST_ACTION);
+ if (ctx.getAttribute(INPUT_REQUEST_ACTION_TYPE) == null
+ || ctx.getAttribute(INPUT_REQUEST_ACTION_TYPE).isEmpty()) {
+ throw new Exception("Dont know REST operation for Action " + transaction.getExecutionRPC());
+ }
+ if (ctx.getAttribute(INPUT_REQUEST_ACTION) == null
+ || ctx.getAttribute(INPUT_REQUEST_ACTION).isEmpty()) {
+ throw new Exception("Dont know request-action " + transaction.getAction());
+ }
+
+ //This code need to get changed to get the UserID and pass from a common place.
+ if (transaction.getuId() == null) {
+ transaction
+ .setuId(prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION)
+ .concat(".default-rest-user")));
+ }
+ if (transaction.getPswd() == null) {
+ transaction
+ .setPswd(prop.getProperty(ctx.getAttribute(INPUT_REQUEST_ACTION)
+ .concat(".default-rest-pass")));
+ }
+
+ RestExecutor restRequestExecutor = new RestExecutor();
+ Map<String, String> output = restRequestExecutor.execute(transaction, ctx);
+
+ if (isValidJson(output.get("restResponse")) != null) {
+ ctx.setAttribute(responsePrefix + "." + OUTPUT_STATUS_MESSAGE,
+ output.get("restResponse"));
// JsonNode restResponse = isValidJson(output.get("restResponse"));
// for (String key : inParams.keySet()) {
// if(key !=null && key.startsWith("output-")){
@@ -169,46 +130,38 @@ public class RestServiceNode implements SvcLogicJavaPlugin {
// ctx.setAttribute(responsePrefix + "." + key, null);
// }
// }
- }
- log.info("Response from Rest :" );
+ }
+ log.info("Response from Rest :");
- } catch(Exception e) {
- log.error("Error Message: " + e.getMessage(), e);
- throw e;
- }
+ } catch (Exception e) {
+ log.error("Error Message: " + e.getMessage(), e);
+ throw e;
}
+ }
- private Properties loadProperties() throws Exception {
- Properties props = new Properties();
- String propDir = System.getenv(SDNC_CONFIG_DIR_VAR);
- if (propDir == null) {
- throw new Exception("Cannot find Property file -" + SDNC_CONFIG_DIR_VAR);
- }
- String propFile = propDir + FlowControllerConstants.APPC_FLOW_CONTROLLER;
- try (InputStream propStream = new FileInputStream(propFile)) {
-
- props.load(propStream);
- }
- catch (Exception e) {
- throw new Exception("Could not load properties file " + propFile, e);
- }
- return props;
+ private Properties loadProperties() throws Exception {
+ String directory = System.getenv(SDNC_CONFIG_DIR_VAR);
+ if (directory == null) {
+ throw new Exception("Cannot find Property file: " + SDNC_CONFIG_DIR_VAR);
}
-
- private JsonNode isValidJson(String json) throws IOException {
- JsonNode output;
- log.info("Received response from Interface " + json);
- if (json == null || json.isEmpty()) {
- return null;
- }
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- output = objectMapper.readTree(json);
- } catch(JsonProcessingException e) {
- log.warn("Response received from interface is not a valid JSON block" + json, e);
- return null;
- }
- log.info("state is " + output.findValue("state"));
- return output;
+ String path = directory + APPC_FLOW_CONTROLLER;
+ return PropertiesLoader.load(path);
+ }
+
+ private JsonNode isValidJson(String json) throws IOException {
+ JsonNode output;
+ log.info("Received response from Interface " + json);
+ if (json == null || json.isEmpty()) {
+ return null;
+ }
+ try {
+ ObjectMapper objectMapper = new ObjectMapper();
+ output = objectMapper.readTree(json);
+ } catch (JsonProcessingException e) {
+ log.warn("Response received from interface is not a valid JSON block" + json, e);
+ return null;
}
+ log.info("state is " + output.findValue("state"));
+ return output;
+ }
}
diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java
index b67f19329..502438c31 100644
--- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java
+++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/utils/FlowControllerConstants.java
@@ -32,7 +32,7 @@ public class FlowControllerConstants {
public static final String DATA_TYPE_XML = "XML";
public static final String DATA_TYPE_SQL = "SQL";
- public static final String INPUT_PARAM_RESPONSE_PRIFIX = "responsePrefix";
+ public static final String INPUT_PARAM_RESPONSE_PREFIX = "responsePrefix";
public static final String OUTPUT_PARAM_STATUS = "status";
public static final String OUTPUT_PARAM_ERROR_MESSAGE = "error-message";
diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/PropertiesLoaderTest.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/PropertiesLoaderTest.java
new file mode 100644
index 000000000..66bf802c3
--- /dev/null
+++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/PropertiesLoaderTest.java
@@ -0,0 +1,29 @@
+package org.onap.appc.flow.controller.node;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Properties;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class PropertiesLoaderTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void should_load_property_file() throws IOException {
+ Properties properties = PropertiesLoader.load("src/test/resources/properties_loader.properties");
+
+ Assert.assertEquals("OK", properties.getProperty("test"));
+ }
+
+ @Test
+ public void should_throw_if_file_does_not_exists() throws IOException {
+ expectedException.expect(FileNotFoundException.class);
+ PropertiesLoader.load("src/test/resources/non_existent.properties");
+ }
+
+} \ No newline at end of file
diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/ResourceUriExtractorTest.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/ResourceUriExtractorTest.java
new file mode 100644
index 000000000..d7a853d2e
--- /dev/null
+++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/ResourceUriExtractorTest.java
@@ -0,0 +1,90 @@
+package org.onap.appc.flow.controller.node;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_CONTEXT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_HOST_IP_ADDRESS;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_PORT_NUMBER;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_REQUEST_ACTION;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_SUB_CONTEXT;
+import static org.onap.appc.flow.controller.utils.FlowControllerConstants.INPUT_URL;
+
+import java.util.Properties;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+
+public class ResourceUriExtractorTest {
+
+ private Properties prop;
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Before
+ public void setUp() {
+ prop = new Properties();
+ }
+
+ @Test
+ public void should_return_input_url_if_exist() throws Exception {
+ SvcLogicContext ctx = mock(SvcLogicContext.class);
+ when(ctx.getAttribute(INPUT_URL)).thenReturn("test resource uri");
+
+ String resourceUri = ResourceUriExtractor.extractResourceUri(ctx, prop);
+
+ Assert.assertEquals("test resource uri", resourceUri);
+ }
+
+ @Test
+ public void should_extract_url_input_if_context_input_provided() throws Exception {
+ SvcLogicContext ctx = mock(SvcLogicContext.class);
+
+ when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+ when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+ when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+
+ when(ctx.getAttribute(INPUT_CONTEXT)).thenReturn("input-context");
+ when(ctx.getAttribute(INPUT_SUB_CONTEXT)).thenReturn("input-sub-context");
+
+ String resourceUri = ResourceUriExtractor.extractResourceUri(ctx, prop);
+
+ Assert.assertEquals("http://localhost:8080/input-context/input-sub-context", resourceUri);
+ }
+
+ @Test
+ public void should_extract_url_input_if_request_action_provided() throws Exception {
+ SvcLogicContext ctx = mock(SvcLogicContext.class);
+
+ when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+ when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+ when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+
+ when(ctx.getAttribute(INPUT_REQUEST_ACTION)).thenReturn("request-action");
+ when(ctx.getAttribute(INPUT_REQUEST_ACTION)).thenReturn("request-action");
+
+ prop.put("request-action.context", "ra-context");
+ prop.put("request-action.sub-context", "ra-sub-context");
+
+ String resourceUri = ResourceUriExtractor.extractResourceUri(ctx, prop);
+
+ Assert.assertEquals("http://localhost:8080/ra-context/ra-sub-context", resourceUri);
+ }
+
+ @Test
+ public void should_throw_exception_if_missing_context() throws Exception {
+ SvcLogicContext ctx = mock(SvcLogicContext.class);
+
+ when(ctx.getAttribute(INPUT_URL)).thenReturn("");
+ when(ctx.getAttribute(INPUT_HOST_IP_ADDRESS)).thenReturn("localhost");
+ when(ctx.getAttribute(INPUT_PORT_NUMBER)).thenReturn("8080");
+
+ expectedException.expect(Exception.class);
+ expectedException.expectMessage("Could Not found the context for operation null");
+ ResourceUriExtractor.extractResourceUri(ctx, prop);
+ }
+
+} \ No newline at end of file
diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/TestRestServiceNode.java
index eb5bfd2fe..a6a207db7 100644
--- a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java
+++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/node/TestRestServiceNode.java
@@ -20,19 +20,16 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.flow.executor.node;
+package org.onap.appc.flow.controller.node;
+import java.util.HashMap;
+import java.util.Map;
import org.junit.Test;
import org.onap.appc.flow.controller.data.Transaction;
import org.onap.appc.flow.controller.executorImpl.RestExecutor;
-import org.onap.appc.flow.controller.node.FlowControlNode;
-import org.onap.appc.flow.controller.node.RestServiceNode;
import org.onap.appc.flow.controller.utils.FlowControllerConstants;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import java.util.HashMap;
-import java.util.Map;
-
public class TestRestServiceNode {
@Test(expected=Exception.class)
diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/FlowControlNodeTest.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/FlowControlNodeTest.java
index f29628dcc..c94816937 100644
--- a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/FlowControlNodeTest.java
+++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/FlowControlNodeTest.java
@@ -1,165 +1,165 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.appc.flow.executor.node;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.onap.appc.flow.controller.data.Transaction;
-import org.onap.appc.flow.controller.data.Transactions;
-import org.onap.appc.flow.controller.dbervices.FlowControlDBService;
-import org.onap.appc.flow.controller.node.FlowControlNode;
-import org.onap.appc.flow.controller.utils.FlowControllerConstants;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.reflect.Whitebox;
-
-public class FlowControlNodeTest {
- @Mock
- FlowControlDBService dbservice = FlowControlDBService.initialise();
- @Mock
- FlowControlNode f = new FlowControlNode();
-
- Properties props = new Properties();
- private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
- @Before
- public void setUp() throws Exception
-
- {
- FlowControlDBService dbservice = FlowControlDBService.initialise();
- }
- @Ignore("Test is taking 60 seconds")
- @Test(expected=Exception.class)
- public final void testProcessFlow() throws Exception {
- SvcLogicContext ctx = new SvcLogicContext();
-
- ctx.setAttribute("request-id","test");
- ctx.setAttribute("vnf-type","test");
- ctx.setAttribute("action-level","HealthCheck");
- ctx.setAttribute("request-action","HealthCheck");
- ctx.setAttribute("response-prefix","response-prefix");
-
- Map<String, String> inParams = new HashMap<String, String>();
- inParams.put("responsePrefix", "responsePrefix");
-
-
- Whitebox.invokeMethod(f, "processFlow",inParams, ctx);
- /*Properties props = new Properties();
- PowerMockito.spy(FlowControlNode.class);
- Transactions trans =null;
- HashMap<Integer, Transaction> transactionMap = null;
- String artifact_content="{‘PlaybookName’:’service_start’,‘EnvParameters’:{‘vnf_instance’:’$vnf_instance’},’Timeout’:600}";
- String capabilitiesData = "SUCCESS";
- System.out.println("End Test when");*/
-
-
- }
- @Test
- public void testgetInventoryInfo() throws Exception
- {
- SvcLogicContext ctx = new SvcLogicContext();
- String vnfid = "test";
- ctx.setAttribute( " tmp.vnfInfo.vnf.vnf-name","test");
- ctx.setAttribute("tmp.vnfInfo.vm-count", "0");
- ctx.setAttribute( " tmp.vnfInfo.vnf.vnf-type","test");
- ctx.setAttribute( "tmp.vnfInfo.vm[0 ].vserverId","test" );
- ctx.setAttribute( "tmp.vnfInfo.vm[0 ].vnfc-name","test" );
- ctx.setAttribute( "tmp.vnfInfo.vm[0].vnfc-type","test" );
- ctx.setAttribute( " tmp.vnfInfo.vm[0].vnfc-count","1");
-
- Whitebox.invokeMethod(f, "getInventoryInfo", ctx, vnfid);
-
- }
- @Ignore("Test is taking 60 seconds")
- @Test(expected=Exception.class)
- public void testprocessFlowSequence() throws Exception
- {
- Map<String, String> inparams = new HashMap<String,String>();
- SvcLogicContext ctx = new SvcLogicContext();
- ctx.setAttribute( " SEQUENCE-TYPE","test");
- ctx.setAttribute("flow-sequence", "1");
- ctx.setAttribute( "DesignTime","test");
- ctx.setAttribute( "vnf-type","test" );
-
- Whitebox.invokeMethod(f, "processFlowSequence",inparams, ctx, ctx);
-
- }
- @Test
- public void testexeuteAllTransaction() throws Exception
- {
- Map<Integer, Transaction> transactionMap = new HashMap<Integer,Transaction>();
- SvcLogicContext ctx = new SvcLogicContext();
- Whitebox.invokeMethod(f, "exeuteAllTransaction",transactionMap, ctx);
-
- }
- @Test
- public void testexeutepreProcessor() throws Exception
- {
- Map<Integer, Transaction> transactionMap = new HashMap<Integer,Transaction>();
- Transaction transaction = new Transaction();
- Whitebox.invokeMethod(f, "preProcessor",transactionMap, transaction);
-
- }
- @Test(expected=Exception.class)
- public void testcollectInputParams() throws Exception
- {
- SvcLogicContext ctx = new SvcLogicContext();
-
- Transaction transaction = new Transaction();
- Whitebox.invokeMethod(f, "collectInputParams",ctx, transaction);
-
- }
- @Ignore("Test is taking 60 seconds")
- @Test(expected=Exception.class)
- public void testgetDependencyInfo() throws Exception
- {
- SvcLogicContext ctx = new SvcLogicContext();
- Whitebox.invokeMethod(f, "getDependencyInfo",ctx);
-
- }
- public void testgetCapabilitesDatass() throws Exception
- {
- SvcLogicContext ctx = new SvcLogicContext();
- Whitebox.invokeMethod(f, "getDependencyInfo",ctx);
-
- }
-
-
-}
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2017 Amdocs
+ * =============================================================================
+ * 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.appc.flow.executor.node;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.onap.appc.flow.controller.data.Transaction;
+import org.onap.appc.flow.controller.data.Transactions;
+import org.onap.appc.flow.controller.dbervices.FlowControlDBService;
+import org.onap.appc.flow.controller.node.FlowControlNode;
+import org.onap.appc.flow.controller.utils.FlowControllerConstants;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.reflect.Whitebox;
+
+public class FlowControlNodeTest {
+ @Mock
+ FlowControlDBService dbservice = FlowControlDBService.initialise();
+ @Mock
+ FlowControlNode f = new FlowControlNode();
+
+ Properties props = new Properties();
+ private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR";
+ @Before
+ public void setUp() throws Exception
+
+ {
+ FlowControlDBService dbservice = FlowControlDBService.initialise();
+ }
+ @Ignore("Test is taking 60 seconds")
+ @Test(expected=Exception.class)
+ public final void testProcessFlow() throws Exception {
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ ctx.setAttribute("request-id","test");
+ ctx.setAttribute("vnf-type","test");
+ ctx.setAttribute("action-level","HealthCheck");
+ ctx.setAttribute("request-action","HealthCheck");
+ ctx.setAttribute("response-prefix","response-prefix");
+
+ Map<String, String> inParams = new HashMap<String, String>();
+ inParams.put("responsePrefix", "responsePrefix");
+
+
+ Whitebox.invokeMethod(f, "processFlow",inParams, ctx);
+ /*Properties props = new Properties();
+ PowerMockito.spy(FlowControlNode.class);
+ Transactions trans =null;
+ HashMap<Integer, Transaction> transactionMap = null;
+ String artifact_content="{‘PlaybookName’:’service_start’,‘EnvParameters’:{‘vnf_instance’:’$vnf_instance’},’Timeout’:600}";
+ String capabilitiesData = "SUCCESS";
+ System.out.println("End Test when");*/
+
+
+ }
+ @Test
+ public void testgetInventoryInfo() throws Exception
+ {
+ SvcLogicContext ctx = new SvcLogicContext();
+ String vnfid = "test";
+ ctx.setAttribute( " tmp.vnfInfo.vnf.vnf-name","test");
+ ctx.setAttribute("tmp.vnfInfo.vm-count", "0");
+ ctx.setAttribute( " tmp.vnfInfo.vnf.vnf-type","test");
+ ctx.setAttribute( "tmp.vnfInfo.vm[0 ].vserverId","test" );
+ ctx.setAttribute( "tmp.vnfInfo.vm[0 ].vnfc-name","test" );
+ ctx.setAttribute( "tmp.vnfInfo.vm[0].vnfc-type","test" );
+ ctx.setAttribute( " tmp.vnfInfo.vm[0].vnfc-count","1");
+
+ Whitebox.invokeMethod(f, "getInventoryInfo", ctx, vnfid);
+
+ }
+ @Ignore("Test is taking 60 seconds")
+ @Test(expected=Exception.class)
+ public void testprocessFlowSequence() throws Exception
+ {
+ Map<String, String> inparams = new HashMap<String,String>();
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx.setAttribute( " SEQUENCE-TYPE","test");
+ ctx.setAttribute("flow-sequence", "1");
+ ctx.setAttribute( "DesignTime","test");
+ ctx.setAttribute( "vnf-type","test" );
+
+ Whitebox.invokeMethod(f, "processFlowSequence",inparams, ctx, ctx);
+
+ }
+ @Test
+ public void testexeuteAllTransaction() throws Exception
+ {
+ Map<Integer, Transaction> transactionMap = new HashMap<Integer,Transaction>();
+ SvcLogicContext ctx = new SvcLogicContext();
+ Whitebox.invokeMethod(f, "exeuteAllTransaction",transactionMap, ctx);
+
+ }
+ @Test
+ public void testexeutepreProcessor() throws Exception
+ {
+ Map<Integer, Transaction> transactionMap = new HashMap<Integer,Transaction>();
+ Transaction transaction = new Transaction();
+ Whitebox.invokeMethod(f, "preProcessor",transactionMap, transaction);
+
+ }
+ @Test(expected=Exception.class)
+ public void testcollectInputParams() throws Exception
+ {
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ Transaction transaction = new Transaction();
+ Whitebox.invokeMethod(f, "collectInputParams",ctx, transaction);
+
+ }
+ @Ignore("Test is taking 60 seconds")
+ @Test(expected=Exception.class)
+ public void testgetDependencyInfo() throws Exception
+ {
+ SvcLogicContext ctx = new SvcLogicContext();
+ Whitebox.invokeMethod(f, "getDependencyInfo",ctx);
+
+ }
+ public void testgetCapabilitesDatass() throws Exception
+ {
+ SvcLogicContext ctx = new SvcLogicContext();
+ Whitebox.invokeMethod(f, "getDependencyInfo",ctx);
+
+ }
+
+
+}
diff --git a/appc-config/appc-flow-controller/provider/src/test/resources/properties_loader.properties b/appc-config/appc-flow-controller/provider/src/test/resources/properties_loader.properties
new file mode 100644
index 000000000..fc0aee0fe
--- /dev/null
+++ b/appc-config/appc-flow-controller/provider/src/test/resources/properties_loader.properties
@@ -0,0 +1 @@
+test = OK \ No newline at end of file