aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java')
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java315
1 files changed, 145 insertions, 170 deletions
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
index 8c449cebd..9c0cbd716 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* demo
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -46,10 +46,10 @@ import org.onap.policy.controlloop.ControlLoopNotificationType;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
import org.onap.policy.controlloop.policy.ControlLoopPolicy;
+import org.onap.policy.drools.event.comm.Topic.CommInfrastructure;
import org.onap.policy.drools.event.comm.TopicEndpoint;
import org.onap.policy.drools.event.comm.TopicListener;
import org.onap.policy.drools.event.comm.TopicSink;
-import org.onap.policy.drools.event.comm.Topic.CommInfrastructure;
import org.onap.policy.drools.http.server.HttpServletServer;
import org.onap.policy.drools.properties.PolicyProperties;
import org.onap.policy.drools.protocol.coders.EventProtocolCoder;
@@ -63,13 +63,13 @@ import org.slf4j.LoggerFactory;
public class VFWControlLoopTest implements TopicListener {
private static final Logger logger = LoggerFactory.getLogger(VFWControlLoopTest.class);
-
+
private static List<? extends TopicSink> noopTopics;
-
+
private static KieSession kieSession;
private static Util.Pair<ControlLoopPolicy, String> pair;
private UUID requestID;
-
+
static {
/* Set environment properties */
Util.setAAIProps();
@@ -77,21 +77,27 @@ public class VFWControlLoopTest implements TopicListener {
Util.setPUProp();
LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "INFO");
}
-
+
@BeforeClass
public static void setUpSimulator() {
- PolicyEngine.manager.configure(new Properties());
- assertTrue(PolicyEngine.manager.start());
- Properties noopSinkProperties = new Properties();
- noopSinkProperties.put(PolicyProperties.PROPERTY_NOOP_SINK_TOPICS, "APPC-CL,POLICY-CL-MGT");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events", "org.onap.policy.appc.Response");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events.custom.gson", "org.onap.policy.appc.util.Serialization,gsonPretty");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events", "org.onap.policy.controlloop.VirtualControlLoopNotification");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events.custom.gson", "org.onap.policy.controlloop.util.Serialization,gsonPretty");
- noopTopics = TopicEndpoint.manager.addTopicSinks(noopSinkProperties);
-
- EventProtocolCoder.manager.addEncoder("junit.groupId", "junit.artifactId", "POLICY-CL-MGT", "org.onap.policy.controlloop.VirtualControlLoopNotification", new JsonProtocolFilter(), null, null, 1111);
- EventProtocolCoder.manager.addEncoder("junit.groupId", "junit.artifactId", "APPC-CL", "org.onap.policy.appc.Request", new JsonProtocolFilter(), null, null, 1111);
+ PolicyEngine.manager.configure(new Properties());
+ assertTrue(PolicyEngine.manager.start());
+ Properties noopSinkProperties = new Properties();
+ noopSinkProperties.put(PolicyProperties.PROPERTY_NOOP_SINK_TOPICS, "APPC-CL,POLICY-CL-MGT");
+ noopSinkProperties.put("noop.sink.topics.APPC-CL.events", "org.onap.policy.appc.Response");
+ noopSinkProperties.put("noop.sink.topics.APPC-CL.events.custom.gson",
+ "org.onap.policy.appc.util.Serialization,gsonPretty");
+ noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events",
+ "org.onap.policy.controlloop.VirtualControlLoopNotification");
+ noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events.custom.gson",
+ "org.onap.policy.controlloop.util.Serialization,gsonPretty");
+ noopTopics = TopicEndpoint.manager.addTopicSinks(noopSinkProperties);
+
+ EventProtocolCoder.manager.addEncoder("junit.groupId", "junit.artifactId", "POLICY-CL-MGT",
+ "org.onap.policy.controlloop.VirtualControlLoopNotification", new JsonProtocolFilter(), null, null,
+ 1111);
+ EventProtocolCoder.manager.addEncoder("junit.groupId", "junit.artifactId", "APPC-CL",
+ "org.onap.policy.appc.Request", new JsonProtocolFilter(), null, null, 1111);
try {
Util.buildAaiSim();
@@ -99,16 +105,16 @@ public class VFWControlLoopTest implements TopicListener {
} catch (Exception e) {
fail(e.getMessage());
}
-
+
/*
* Start the kie session
*/
try {
- kieSession = startSession("../archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vFW.yaml",
- "service=ServiceDemo;resource=Res1Demo;type=operational",
- "CL_vFW",
- "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
+ kieSession = startSession(
+ "../archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl",
+ "src/test/resources/yaml/policy_ControlLoop_vFW.yaml",
+ "service=ServiceDemo;resource=Res1Demo;type=operational", "CL_vFW",
+ "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
} catch (IOException e) {
e.printStackTrace();
logger.debug("Could not create kieSession");
@@ -118,162 +124,145 @@ public class VFWControlLoopTest implements TopicListener {
@AfterClass
public static void tearDownSimulator() {
- /*
+ /*
* Gracefully shut down the kie session
*/
kieSession.dispose();
-
+
PolicyEngine.manager.stop();
HttpServletServer.factory.destroy();
PolicyController.factory.shutdown();
TopicEndpoint.manager.shutdown();
}
-
+
@Test
public void successTest() {
-
- /*
- * Allows the PolicyEngine to callback to this object to
- * notify that there is an event ready to be pulled
- * from the queue
+
+ /*
+ * 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
+
+ /*
+ * Simulate an onset event the policy engine will receive from DCAE to kick off processing
+ * through the rules
*/
sendEvent(pair.a, requestID, ControlLoopEventStatus.ONSET);
-
+
try {
- kieSession.fireUntilHalt();
- }
- catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail("fail");
+ kieSession.fireUntilHalt();
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.warn(e.toString());
+ fail("fail");
}
-
-
+
+
/*
* The only fact in memory should be Params
*/
assertEquals(1, kieSession.getFactCount());
-
+
/*
* Print what's left in memory
*/
dumpFacts(kieSession);
}
-
+
@Test
public void aaiFailTests() {
-
+
/*
- * Allows the PolicyEngine to callback to this object to
- * notify that there is an event ready to be pulled
- * from the queue
+ * 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
+
+ /*
+ * Simulate an onset event the policy engine will receive from DCAE to kick off processing
+ * through the rules
*/
sendEvent(pair.a, requestID, ControlLoopEventStatus.ONSET, "error");
try {
- kieSession.fireUntilHalt();
- }
- catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
+ kieSession.fireUntilHalt();
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.warn(e.toString());
+ fail(e.getMessage());
}
-
+
/*
* The only fact in memory should be Params
*/
assertEquals(1, kieSession.getFactCount());
-
+
/*
* Print what's left in memory
*/
dumpFacts(kieSession);
-
+
/*
* 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
+
+ /*
+ * Simulate an onset event the policy engine will receive from DCAE to kick off processing
+ * through the rules
*/
-
+
sendEvent(pair.a, requestID, ControlLoopEventStatus.ONSET, "getFail");
-
+
try {
- kieSession.fireUntilHalt();
- }
- catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
+ kieSession.fireUntilHalt();
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.warn(e.toString());
+ fail(e.getMessage());
}
-
+
/*
* 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
- * the Policy Engine.
+ * This method will start a kie session and instantiate the Policy Engine.
*
- * @param droolsTemplate
- * the DRL rules file
- * @param yamlFile
- * the yaml file containing the policies
- * @param policyScope
- * scope for policy
- * @param policyName
- * name of the policy
- * @param policyVersion
- * version of the policy
- * @return the kieSession to be used to insert facts
+ * @param droolsTemplate the DRL rules file
+ * @param yamlFile the yaml file containing the policies
+ * @param policyScope scope for policy
+ * @param policyName name of the policy
+ * @param policyVersion version of the policy
+ * @return the kieSession to be used to insert facts
* @throws IOException
*/
- private static KieSession startSession(String droolsTemplate,
- String yamlFile,
- String policyScope,
- String policyName,
- String policyVersion) throws IOException {
-
+ private static KieSession startSession(String droolsTemplate, String yamlFile, String policyScope,
+ String policyName, String policyVersion) throws IOException {
+
/*
* Load policies from yaml
*/
@@ -283,42 +272,41 @@ public class VFWControlLoopTest implements TopicListener {
assertNotNull(pair.a.getControlLoop());
assertNotNull(pair.a.getControlLoop().getControlLoopName());
assertTrue(pair.a.getControlLoop().getControlLoopName().length() > 0);
-
- /*
+
+ /*
* Construct a kie session
*/
- final KieSession kieSession = Util.buildContainer(droolsTemplate,
- pair.a.getControlLoop().getControlLoopName(),
- policyScope,
- policyName,
- policyVersion,
- URLEncoder.encode(pair.b, "UTF-8"));
-
+ final KieSession kieSession = Util.buildContainer(droolsTemplate, pair.a.getControlLoop().getControlLoopName(),
+ policyScope, policyName, policyVersion, URLEncoder.encode(pair.b, "UTF-8"));
+
/*
* Retrieve the Policy Engine
*/
-
+
logger.debug("============");
logger.debug(URLEncoder.encode(pair.b, "UTF-8"));
logger.debug("============");
-
+
return kieSession;
}
-
+
/*
* @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
*/
+ @Override
public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
/*
- * Pull the object that was sent out to DMAAP and make
- * sure it is a ControlLoopNoticiation of type active
+ * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
+ * of type active
*/
- Object obj = null;
+ Object obj = null;
if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event, org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- }
- else if ("APPC-CL".equals(topic))
- obj = org.onap.policy.appc.util.Serialization.gsonPretty.fromJson(event, org.onap.policy.appc.Request.class);
+ obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
+ org.onap.policy.controlloop.VirtualControlLoopNotification.class);
+ } else if ("APPC-CL".equals(topic)) {
+ obj = org.onap.policy.appc.util.Serialization.gsonPretty.fromJson(event,
+ org.onap.policy.appc.Request.class);
+ }
assertNotNull(obj);
if (obj instanceof VirtualControlLoopNotification) {
VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
@@ -326,118 +314,105 @@ public class VFWControlLoopTest implements TopicListener {
if (policyName.endsWith("EVENT")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- }
- else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
+ } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
assertNotNull(notification.getMessage());
assertTrue(notification.getMessage().startsWith("Sending guard query"));
- }
- else if (policyName.endsWith("GUARD.RESPONSE")) {
+ } else if (policyName.endsWith("GUARD.RESPONSE")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
assertNotNull(notification.getMessage());
assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- }
- else if (policyName.endsWith("GUARD_PERMITTED")) {
+ } else if (policyName.endsWith("GUARD_PERMITTED")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
assertNotNull(notification.getMessage());
assertTrue(notification.getMessage().startsWith("actor=APPC"));
- }
- else if (policyName.endsWith("OPERATION.TIMEOUT")) {
+ } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
kieSession.halt();
logger.debug("The operation timed out");
fail("Operation Timed Out");
- }
- else if (policyName.endsWith("APPC.RESPONSE")) {
+ } else if (policyName.endsWith("APPC.RESPONSE")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
assertNotNull(notification.getMessage());
assertTrue(notification.getMessage().startsWith("actor=APPC"));
sendEvent(pair.a, requestID, ControlLoopEventStatus.ABATED);
- }
- else if (policyName.endsWith("EVENT.MANAGER")) {
+ } else if (policyName.endsWith("EVENT.MANAGER")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAAI().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- assertEquals("Target vnf-id could not be found", notification.getMessage());
- }
- else if ("getFail".equals(notification.getAAI().get("generic-vnf.vnf-name"))) {
+ if ("error".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- }
- else {
+ assertEquals("Target vnf-id could not be found", notification.getMessage());
+ } else if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
+ assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
+ } else {
assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
}
kieSession.halt();
- }
- else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
+ } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
kieSession.halt();
logger.debug("The control loop timed out");
fail("Control Loop Timed Out");
}
- }
- else if (obj instanceof Request) {
- assertTrue(((Request)obj).getCommonHeader().getSubRequestID().equals("1"));
- assertNotNull(((Request)obj).getPayload().get("generic-vnf.vnf-id"));
-
+ } else if (obj instanceof Request) {
+ assertTrue(((Request) obj).getCommonHeader().getSubRequestId().equals("1"));
+ assertNotNull(((Request) obj).getPayload().get("generic-vnf.vnf-id"));
+
logger.debug("\n============ APPC received the request!!! ===========\n");
-
+
/*
- * Simulate a success response from APPC and insert
- * the response into the working memory
+ * Simulate a success response from APPC and insert the response into the working memory
*/
- Response appcResponse = new Response((Request)obj);
+ Response appcResponse = new Response((Request) obj);
appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
appcResponse.getStatus().setValue("SUCCESS");
kieSession.insert(appcResponse);
- }
+ }
}
-
+
/**
- * This method is used to simulate event messages from DCAE
- * that start the control loop (onset message) or end the
- * control loop (abatement message).
+ * This method is used to simulate event messages from DCAE that start the control loop (onset
+ * message) or end the control loop (abatement message).
*
- * @param policy the controlLoopName comes from the policy
+ * @param policy the controlLoopName comes from the policy
* @param requestID the requestId for this event
* @param status could be onset or abated
*/
protected void sendEvent(ControlLoopPolicy policy, UUID requestID, ControlLoopEventStatus status) {
VirtualControlLoopEvent event = new VirtualControlLoopEvent();
event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestID(requestID);
+ event.setRequestId(requestID);
event.setTarget("generic-vnf.vnf-name");
event.setClosedLoopAlarmStart(Instant.now());
- event.setAAI(new HashMap<>());
- event.getAAI().put("generic-vnf.vnf-name", "testGenericVnfID");
+ event.setAai(new HashMap<>());
+ event.getAai().put("generic-vnf.vnf-name", "testGenericVnfID");
event.setClosedLoopEventStatus(status);
kieSession.insert(event);
}
-
+
/**
- * This method is used to simulate event messages from DCAE
- * that start the control loop (onset message) or end the
- * control loop (abatement message).
+ * This method is used to simulate event messages from DCAE that start the control loop (onset
+ * message) or end the control loop (abatement message).
*
- * @param policy the controlLoopName comes from the policy
+ * @param policy the controlLoopName comes from the policy
* @param requestID the requestId for this event
* @param status could be onset or abated
*/
protected void sendEvent(ControlLoopPolicy policy, UUID requestID, ControlLoopEventStatus status, String vnfId) {
VirtualControlLoopEvent event = new VirtualControlLoopEvent();
event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestID(requestID);
+ event.setRequestId(requestID);
event.setTarget("generic-vnf.vnf-name");
event.setClosedLoopAlarmStart(Instant.now());
- event.setAAI(new HashMap<>());
- event.getAAI().put("generic-vnf.vnf-name", vnfId);
+ event.setAai(new HashMap<>());
+ event.getAai().put("generic-vnf.vnf-name", vnfId);
event.setClosedLoopEventStatus(status);
kieSession.insert(event);
}
-
+
/**
* This method will dump all the facts in the working memory.
*