diff options
author | Charles Cole <cc847m@att.com> | 2017-10-27 16:19:13 -0500 |
---|---|---|
committer | Charles Cole <cc847m@att.com> | 2017-10-27 16:33:13 -0500 |
commit | e5fad68d3ab3b79d4e69820e485e50bece16494f (patch) | |
tree | fdf8e56a1e43e3255a172c58d0ecae73bbc7723c /controlloop/templates | |
parent | c9d429d17c8e19620ff760870d295ce05d5190af (diff) |
Send final failure on null vfc request
Made sure a final failure is sent and the memroy is cleaned up if we
cannot contruct a vfc request.
Issue-Id: POLICY-350
Change-Id: Ia9bc827572042ae6ff2d2d2851d33034ee86fc49
Signed-off-by: Charles Cole <cc847m@att.com>
Diffstat (limited to 'controlloop/templates')
2 files changed, 62 insertions, 2 deletions
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl index 2f8d86127..da54bbe12 100644 --- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl @@ -603,6 +603,11 @@ rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" retract($operation); modify($manager) {finishOperation($operation)}; } + else if ("vfc".equalsIgnoreCase($operation.policy.getActor())) { + retract($opTimer); + retract($operation); + modify($manager) {finishOperation($operation)}; + } } end diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java index 2581e3d80..39dac8131 100644 --- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java +++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java @@ -166,6 +166,56 @@ public class VFCControlLoopTest implements TopicListener { */ dumpFacts(kieSession); } + + @Test + public void nullRequestTest() throws IOException { + + /* + * Allows the PolicyEngine to callback to this object to + * notify that there is an event ready to be pulled + * from the queue + */ + for (TopicSink sink : noopTopics) { + assertTrue(sink.start()); + sink.register(this); + } + + /* + * Create a unique requestId + */ + requestID = UUID.randomUUID(); + + /* + * Simulate an onset event the policy engine will + * receive from DCAE to kick off processing through + * the rules + */ + + VirtualControlLoopEvent event = new VirtualControlLoopEvent(); + event.closedLoopControlName = pair.a.getControlLoop().getControlLoopName(); + event.requestID = UUID.randomUUID(); + event.closedLoopEventClient = "tca.instance00009"; + event.target_type = ControlLoopTargetType.VM; + event.target = "vserver.vserver-name"; + event.from = "DCAE"; + event.closedLoopAlarmStart = Instant.now(); + event.AAI = new HashMap<String, String>(); + event.AAI.put("vserver.vserver-name", "nullRequest"); + event.closedLoopEventStatus = ControlLoopEventStatus.ONSET; + kieSession.insert(event); + + kieSession.fireUntilHalt(); + + /* + * The only fact in memory should be Params + */ + assertEquals(1, kieSession.getFactCount()); + + /* + * Print what's left in memory + */ + dumpFacts(kieSession); + } /** * This method will start a kie session and instantiate @@ -274,7 +324,12 @@ public class VFCControlLoopTest implements TopicListener { } else if (policyName.endsWith("EVENT.MANAGER")) { logger.debug("Rule Fired: " + notification.policyName); - assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.notification)); + if ("nullRequest".equals(notification.AAI.get("vserver.vserver-name"))){ + assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.notification); + } + else { + assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.notification); + } kieSession.halt(); } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) { @@ -304,7 +359,7 @@ public class VFCControlLoopTest implements TopicListener { event.requestID = UUID.randomUUID(); event.closedLoopEventClient = "tca.instance00009"; event.target_type = ControlLoopTargetType.VM; - event.target = "VM_NAME"; + event.target = "vserver.vserver-name"; event.from = "DCAE"; event.closedLoopAlarmStart = Instant.now(); event.AAI = new HashMap<String, String>(); |