summaryrefslogtreecommitdiffstats
path: root/feature-lifecycle/src
diff options
context:
space:
mode:
authorjhh <jorge.hernandez-herrero@att.com>2020-06-09 17:11:36 -0500
committerjhh <jorge.hernandez-herrero@att.com>2020-06-10 14:01:54 -0500
commitb66a56aed5774e59c693d7cfd22b29512e293458 (patch)
tree5759af2e1063a7431778522c80285265338b8edb /feature-lifecycle/src
parent96173cf56d4d4e09fd3d7bacb3e6d5703381ad02 (diff)
do strict validation before domain conversion
need to perform a validation pass as the validation combined with putting a domain model object tree together run into problems when dealing with integers that are passed as strings. Issue-ID: POLICY-2577 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I06a2b6e8dc7e0442c2503b6d978deddbf652d830 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'feature-lifecycle/src')
-rw-r--r--feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java2
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStateActiveTest.java25
-rw-r--r--feature-lifecycle/src/test/resources/tosca-policy-compliant-vcpe-bad-integer.json36
3 files changed, 58 insertions, 5 deletions
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
index f762bff0..503c0c11 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
@@ -168,7 +168,7 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
continue;
}
- success = sync.test(controller, policy) && success;
+ success = fsm.getDomainMaker().isConformant(policy) && sync.test(controller, policy) && success;
}
return success;
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStateActiveTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStateActiveTest.java
index 54f7d68f..54f4b6a6 100644
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStateActiveTest.java
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStateActiveTest.java
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -53,6 +54,15 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifi
*/
public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
+ private static final String POLICY_COMPLIANT_VCPE_BAD_INTEGER_JSON =
+ "src/test/resources/tosca-policy-compliant-vcpe-bad-integer.json";
+ private static final String POLICY_OPERATIONAL_FIREWALL_JSON =
+ "src/test/resources/tosca-policy-operational-firewall.json";
+ private static final String POLICY_OPERATIONAL_RESTART_V_2_JSON =
+ "src/test/resources/tosca-policy-operational-restart.v2.json";
+ private static final String POLICY_OPERATIONAL_RESTART_JSON =
+ "src/test/resources/tosca-policy-operational-restart.json";
+
/**
* Start tests in the Active state.
*/
@@ -199,7 +209,7 @@ public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
assertEquals("w", fsm.getSubgroup());
String restartV1 =
- new String(Files.readAllBytes(Paths.get("src/test/resources/tosca-policy-operational-restart.json")));
+ Files.readString(Paths.get(POLICY_OPERATIONAL_RESTART_JSON), StandardCharsets.UTF_8);
ToscaPolicy toscaPolicyRestartV1 = new StandardCoder().decode(restartV1, ToscaPolicy.class);
update.setPolicies(Arrays.asList(toscaPolicyRestartV1));
@@ -237,7 +247,6 @@ public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
.decode(fsm.client.getSink().getRecentEvents()[qlength + 1], PdpStatus.class);
assertEquals(new ArrayList<>(fsm.policiesMap.keySet()), cachedStatus.getPolicies());
-
factPolicies = controllerSupport.getFacts(ToscaPolicy.class);
assertEquals(1, factPolicies.size());
assertEquals(toscaPolicyRestartV1, factPolicies.get(0));
@@ -275,7 +284,7 @@ public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
// deploy a new version of the operational.restart policy
String restartV2 =
- new String(Files.readAllBytes(Paths.get("src/test/resources/tosca-policy-operational-restart.v2.json")));
+ Files.readString(Paths.get(POLICY_OPERATIONAL_RESTART_V_2_JSON), StandardCharsets.UTF_8);
ToscaPolicy toscaPolicyRestartV2 = new StandardCoder().decode(restartV2, ToscaPolicy.class);
update.setPolicies(Arrays.asList(toscaPolicyRestartV2));
assertTrue(fsm.update(update));
@@ -294,7 +303,7 @@ public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
// deploy another policy : firewall
String firewall =
- new String(Files.readAllBytes(Paths.get("src/test/resources/tosca-policy-operational-firewall.json")));
+ Files.readString(Paths.get(POLICY_OPERATIONAL_FIREWALL_JSON), StandardCharsets.UTF_8);
ToscaPolicy toscaPolicyFirewall = new StandardCoder().decode(firewall, ToscaPolicy.class);
update.setPolicies(Arrays.asList(toscaPolicyRestartV2, toscaPolicyFirewall));
assertTrue(fsm.update(update));
@@ -320,6 +329,14 @@ public class LifecycleStateActiveTest extends LifecycleStateRunningTest {
assertEquals(PdpState.ACTIVE, fsm.state());
assertEquals(interval, fsm.getStatusTimerSeconds());
+ // bad policy deployment
+
+ String badIntegerPolicy =
+ Files.readString(Paths.get(POLICY_COMPLIANT_VCPE_BAD_INTEGER_JSON), StandardCharsets.UTF_8);
+ ToscaPolicy toscaPolicyRestartBad = new StandardCoder().decode(badIntegerPolicy, ToscaPolicy.class);
+ update.setPolicies(Arrays.asList(toscaPolicyRestartBad));
+ assertFalse(fsm.update(update));
+
assertTrue(controllerSupport.getController().getDrools().delete(ToscaPolicy.class));
fsm.shutdown();
diff --git a/feature-lifecycle/src/test/resources/tosca-policy-compliant-vcpe-bad-integer.json b/feature-lifecycle/src/test/resources/tosca-policy-compliant-vcpe-bad-integer.json
new file mode 100644
index 00000000..3ff7dbb2
--- /dev/null
+++ b/feature-lifecycle/src/test/resources/tosca-policy-compliant-vcpe-bad-integer.json
@@ -0,0 +1,36 @@
+{
+ "type": "onap.policies.controlloop.operational.common.Drools",
+ "type_version": "1.0.0",
+ "name": "vcpe.timeout.integer.as.string",
+ "version": "1.0.0",
+ "metadata": {
+ "policy-id": "vcpe.timeout.integer.as.string"
+ },
+ "properties": {
+ "id": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+ "timeout": "3600",
+ "abatement": true,
+ "trigger": "unique-policy-id-1-restart",
+ "operations": [
+ {
+ "id": "unique-policy-id-1-restart",
+ "description": "Restart the VM",
+ "operation": {
+ "actor": "APPC",
+ "operation": "Restart",
+ "target": {
+ "targetType": "VNF"
+ }
+ },
+ "timeout": "1200",
+ "retries": 3,
+ "success": "final_success",
+ "failure": "final_failure",
+ "failure_timeout": "final_failure_timeout",
+ "failure_retries": "final_failure_retries",
+ "failure_exception": "final_failure_exception",
+ "failure_guard": "final_failure_guard"
+ }
+ ]
+ }
+}