summaryrefslogtreecommitdiffstats
path: root/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java')
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java299
1 files changed, 137 insertions, 162 deletions
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
index c8a8c700f..493316915 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.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.
@@ -43,10 +43,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;
@@ -61,217 +61,203 @@ import org.slf4j.LoggerFactory;
public class VDNSControlLoopTest implements TopicListener {
private static final Logger logger = LoggerFactory.getLogger(VDNSControlLoopTest.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();
Util.setSOProps();
Util.setGuardProps();
Util.setPUProp();
- LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "INFO");
+ 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, "POLICY-CL-MGT");
- 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);
-
- try {
- Util.buildAaiSim();
- Util.buildSoSim();
- Util.buildGuardSim();
- } catch (Exception e) {
- fail(e.getMessage());
- }
-
+
+ @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, "POLICY-CL-MGT");
+ 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);
+
+ try {
+ Util.buildAaiSim();
+ Util.buildSoSim();
+ Util.buildGuardSim();
+ } 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_SO-test.yaml",
- "type=operational",
- "CL_vDNS",
- "v2.0");
+ kieSession = startSession(
+ "../archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl",
+ "src/test/resources/yaml/policy_ControlLoop_SO-test.yaml", "type=operational", "CL_vDNS", "v2.0");
} catch (IOException e) {
e.printStackTrace();
logger.debug("Could not create kieSession");
fail("Could not create kieSession");
}
- }
+ }
+
+ @AfterClass
+ public static void tearDownSimulator() {
- @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);
-
+
kieSession.fireUntilHalt();
-
+
/*
* The only fact in memory should be Params
*/
assertEquals(1, kieSession.getFactCount());
-
+
/*
* Print what's left in memory
*/
dumpFacts(kieSession);
}
-
+
@Test
public void namedQueryFailTest() {
-
+
/*
- * 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");
-
+
kieSession.fireUntilHalt();
-
+
/*
* The only fact in memory should be Params
*/
assertEquals(1, kieSession.getFactCount());
-
+
/*
* Print what's left in memory
*/
dumpFacts(kieSession);
}
-
+
@Test
public void aaiGetFailTest() {
-
+
/*
- * 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, "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
*/
@@ -281,41 +267,40 @@ public class VDNSControlLoopTest 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;
}
-
+
/*
* (non-Javadoc)
+ *
* @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);
- }
+ obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
+ org.onap.policy.controlloop.VirtualControlLoopNotification.class);
+ }
assertNotNull(obj);
if (obj instanceof VirtualControlLoopNotification) {
VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
@@ -323,96 +308,86 @@ public class VDNSControlLoopTest 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=SO"));
- }
- 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("SO.RESPONSE")) {
+ } else if (policyName.endsWith("SO.RESPONSE")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
assertNotNull(notification.getMessage());
assertTrue(notification.getMessage().startsWith("actor=SO"));
- }
- else if (policyName.endsWith("EVENT.MANAGER")) {
+ } else if (policyName.endsWith("EVENT.MANAGER")) {
logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAAI().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- }
- else if ("getFail".equals(notification.getAAI().get("vserver.vserver-name"))) {
+ if ("error".equals(notification.getAai().get("vserver.vserver-name"))) {
assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- }
- else {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
+ } else if ("getFail".equals(notification.getAai().get("vserver.vserver-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 SORequest) {
+ } else if (obj instanceof SORequest) {
logger.debug("\n============ SO received the request!!! ===========\n");
- }
+ }
}
-
+
/**
- * 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("vserver.vserver-name");
event.setClosedLoopAlarmStart(Instant.now());
- event.setAAI(new HashMap<>());
- event.getAAI().put("vserver.vserver-name", "dfw1lb01lb01");
- event.getAAI().put("vserver.is-closed-loop-disabled", "false");
+ event.setAai(new HashMap<>());
+ event.getAai().put("vserver.vserver-name", "dfw1lb01lb01");
+ event.getAai().put("vserver.is-closed-loop-disabled", "false");
event.setClosedLoopEventStatus(status);
kieSession.insert(event);
}
-
- protected void sendEvent(ControlLoopPolicy policy, UUID requestID, ControlLoopEventStatus status, String vserverName) {
+
+ protected void sendEvent(ControlLoopPolicy policy, UUID requestID, ControlLoopEventStatus status,
+ String vserverName) {
VirtualControlLoopEvent event = new VirtualControlLoopEvent();
event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestID(requestID);
+ event.setRequestId(requestID);
event.setTarget("vserver.vserver-name");
event.setClosedLoopAlarmStart(Instant.now());
- event.setAAI(new HashMap<>());
- event.getAAI().put("vserver.vserver-name", vserverName);
+ event.setAai(new HashMap<>());
+ event.getAai().put("vserver.vserver-name", vserverName);
event.setClosedLoopEventStatus(status);
kieSession.insert(event);
}
-
+
/**
* This method will dump all the facts in the working memory.
*