summaryrefslogtreecommitdiffstats
path: root/controlloop/common/eventmanager/src/test
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@ericsson.com>2018-02-08 21:54:16 +0000
committerliamfallon <liam.fallon@ericsson.com>2018-02-08 22:23:54 +0000
commitd536517dd5d45abeb037eb3900759771d97b2418 (patch)
tree38c5dda6db8e1ef7846d97b456664b05259e6039 /controlloop/common/eventmanager/src/test
parent5343982363a2221cdf9bd28fdb1f6547c04745f6 (diff)
JUint/Technical Debt for eventmanager
Unit test expanded for SO POJOs, technical debt removed in eventmanager. Change-Id: I7045f5af88fd2c15019befe29a0b4fcd69801c49 Signed-off-by: liamfallon <liam.fallon@ericsson.com> Issue-ID: POLICY-455 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
Diffstat (limited to 'controlloop/common/eventmanager/src/test')
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopExceptionTest.java39
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopLoggerTest.java49
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopPublisherTest.java53
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java941
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java512
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/OperationsHistoryDbEntryTest.java80
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java101
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/drools/DroolsPolicyEngineTest.java73
-rw-r--r--controlloop/common/eventmanager/src/test/resources/META-INF/persistence.xml17
-rw-r--r--controlloop/common/eventmanager/src/test/resources/badtriggerpolicy.yaml62
-rw-r--r--controlloop/common/eventmanager/src/test/resources/nopolicy.yaml18
-rw-r--r--controlloop/common/eventmanager/src/test/resources/notutf8.yamlbin0 -> 294 bytes
-rw-r--r--controlloop/common/eventmanager/src/test/resources/string.yaml1
-rw-r--r--controlloop/common/eventmanager/src/test/resources/testSOactor.yaml62
14 files changed, 1776 insertions, 232 deletions
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopExceptionTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopExceptionTest.java
new file mode 100644
index 000000000..58860435a
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopExceptionTest.java
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * eventmanager
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class ControlLoopExceptionTest {
+
+ @Test
+ public void testControlLoopException() {
+ assertNotNull(new ControlLoopException());
+ assertNotNull(new ControlLoopException("In Oz"));
+ assertNotNull(new ControlLoopException(new IOException()));
+ assertNotNull(new ControlLoopException("In Oz", new IOException()));
+ assertNotNull(new ControlLoopException("In Oz", new IOException(), false, false));
+ }
+}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopLoggerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopLoggerTest.java
new file mode 100644
index 000000000..25208fe32
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopLoggerTest.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * eventmanager
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.onap.policy.controlloop.ControlLoopException;
+import org.onap.policy.controlloop.ControlLoopLogger;
+import org.onap.policy.controlloop.impl.ControlLoopLoggerStdOutImpl;
+
+public class ControlLoopLoggerTest {
+ @Test
+ public void testControlLoopLogger() throws ControlLoopException {
+ ControlLoopLogger logger = new ControlLoopLogger.Factory().buildLogger(ControlLoopLoggerStdOutImpl.class.getCanonicalName());
+ assertNotNull(logger);
+ logger.info("a log message", "and another", " and another");
+ logger.metrics("a metric", "and another", " and another");
+ logger.metrics(Double.valueOf(3));
+
+ try {
+ new ControlLoopLogger.Factory().buildLogger("java.lang.String");
+ fail("test should throw an exception here");
+ }
+ catch (Exception e) {
+ assertEquals("Cannot load class java.lang.String as a control loop logger", e.getMessage());
+ }
+ }
+}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopPublisherTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopPublisherTest.java
new file mode 100644
index 000000000..3548ab841
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopPublisherTest.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * eventmanager
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.onap.policy.controlloop.ControlLoopException;
+import org.onap.policy.controlloop.impl.ControlLoopPublisherJUnitImpl;
+
+public class ControlLoopPublisherTest {
+ @Test
+ public void testControlLoopPublisher() throws ControlLoopException {
+ ControlLoopPublisher publisher = new ControlLoopPublisher.Factory().buildLogger(ControlLoopPublisherJUnitImpl.class.getCanonicalName());
+ assertNotNull(publisher);
+
+ try {
+ publisher.publish(Double.valueOf(3));
+ fail("test should throw an exception here");
+ }
+ catch (Exception e) {
+ assertEquals("publish() method is not implemented on org.onap.policy.controlloop.impl.ControlLoopPublisherJUnitImpl", e.getMessage());
+ }
+
+ try {
+ new ControlLoopPublisher.Factory().buildLogger("java.lang.String");
+ fail("test should throw an exception here");
+ }
+ catch (Exception e) {
+ assertEquals("Cannot load class java.lang.String as a control loop publisher", e.getMessage());
+ }
+ }
+}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
index d4083150d..1df4a4f27 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
@@ -23,12 +23,19 @@ package org.onap.policy.controlloop.eventmanager;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.HashMap;
import java.util.UUID;
+import org.apache.commons.io.IOUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -47,15 +54,21 @@ import org.onap.policy.controlloop.ControlLoopNotificationType;
import org.onap.policy.controlloop.Util;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
+import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager.NEW_EVENT_STATUS;
import org.onap.policy.controlloop.policy.ControlLoopPolicy;
+import org.onap.policy.controlloop.policy.PolicyResult;
import org.onap.policy.drools.http.server.HttpServletServer;
-import org.onap.policy.drools.system.PolicyEngine;
+import org.onap.policy.drools.system.PolicyEngine;
+import org.onap.policy.guard.GuardResult;
+import org.onap.policy.guard.PolicyGuard;
+import org.onap.policy.guard.PolicyGuard.LockResult;
+import org.onap.policy.guard.TargetLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ControlLoopEventManagerTest {
private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
-
+
private static VirtualControlLoopEvent onset;
static {
onset = new VirtualControlLoopEvent();
@@ -69,7 +82,7 @@ public class ControlLoopEventManagerTest {
onset.getAAI().put("generic-vnf.vnf-id", "83f674e8-7555-44d7-9a39-bdc3770b0491");
onset.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
}
-
+
@BeforeClass
public static void setUpSimulator() {
try {
@@ -86,7 +99,7 @@ public class ControlLoopEventManagerTest {
public static void tearDownSimulator() {
HttpServletServer.factory.destroy();
}
-
+
@Test
public void testAAIVnfInfo() {
final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
@@ -103,7 +116,7 @@ public class ControlLoopEventManagerTest {
fail(e.getMessage());
}
}
-
+
@Test
public void testAAIVnfInfo2() {
final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
@@ -120,7 +133,7 @@ public class ControlLoopEventManagerTest {
fail(e.getMessage());
}
}
-
+
@Test
public void testAAIVserver() {
final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
@@ -145,7 +158,7 @@ public class ControlLoopEventManagerTest {
//
final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml("src/test/resources/test.yaml");
onset.setClosedLoopControlName(pair.a.getControlLoop().getControlLoopName());
-
+
try {
logger.info("testIsClosedLoopDisabled --");
AAIGETVnfResponse response = getQueryByVnfID2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf/",
@@ -153,64 +166,68 @@ public class ControlLoopEventManagerTest {
PolicyEngine.manager.getEnvironmentProperty("aai.password"),
UUID.randomUUID(), "5e49ca06-2972-4532-9ed4-6d071588d792");
assertNotNull(response);
- boolean disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
- logger.info("QueryByVnfID - isClosedLoopDisabled: " + disabled);
+
+ // TODO: Handle this
+ //boolean disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
+ //logger.info("QueryByVnfID - isClosedLoopDisabled: " + disabled);
response = getQueryByVnfName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
PolicyEngine.manager.getEnvironmentProperty("aai.username"),
PolicyEngine.manager.getEnvironmentProperty("aai.password"),
UUID.randomUUID(), "lll_vnf_010317");
assertNotNull(response);
- disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
- logger.info("QueryByVnfName - isClosedLoopDisabled: " + disabled);
+ // TODO: Handle this
+ //disabled = ControlLoopEventManager.isClosedLoopDisabled(response);
+ //logger.info("QueryByVnfName - isClosedLoopDisabled: " + disabled);
AAIGETVserverResponse response2 = getQueryByVserverName2(PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
PolicyEngine.manager.getEnvironmentProperty("aai.user"),
PolicyEngine.manager.getEnvironmentProperty("aai.password"),
UUID.randomUUID(), "USMSO1SX7NJ0103UJZZ01-vjunos0");
assertNotNull(response2);
- disabled = ControlLoopEventManager.isClosedLoopDisabled(response2);
- logger.info("QueryByVserverName - isClosedLoopDisabled: " + disabled);
+ // TODO: Handle this
+ //disabled = ControlLoopEventManager.isClosedLoopDisabled(response2);
+ //logger.info("QueryByVserverName - isClosedLoopDisabled: " + disabled);
} catch (Exception e) {
fail(e.getMessage());
}
- }
-
+ }
+
@Test
public void abatemetCheckEventSyntaxTest() {
VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName("abatementAAI");
- event.setRequestID(UUID.randomUUID());
- event.setTarget("generic-vnf.vnf-id");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
- ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
- assertNull(manager.getVnfResponse());
- assertNull(manager.getVserverResponse());
- try {
+ event.setClosedLoopControlName("abatementAAI");
+ event.setRequestID(UUID.randomUUID());
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ assertNull(manager.getVnfResponse());
+ assertNull(manager.getVserverResponse());
+ try {
manager.checkEventSyntax(event);
} catch (ControlLoopException e) {
logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
e.printStackTrace();
fail("Exception in check event syntax");
}
- assertNull(manager.getVnfResponse());
- assertNull(manager.getVserverResponse());
-
+ assertNull(manager.getVnfResponse());
+ assertNull(manager.getVserverResponse());
+
- event.setAAI(new HashMap<>());
- event.getAAI().put("generic-vnf.vnf-name", "abatementTest");
- try {
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "abatementTest");
+ try {
manager.checkEventSyntax(event);
} catch (ControlLoopException e) {
logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: "+e.getMessage());
e.printStackTrace();
fail("Exception in check event syntax");
}
- assertNull(manager.getVnfResponse());
- assertNull(manager.getVserverResponse());
+ assertNull(manager.getVnfResponse());
+ assertNull(manager.getVserverResponse());
}
-
+
@Test
public void subsequentOnsetTest() {
UUID requestId = UUID.randomUUID();
@@ -218,59 +235,59 @@ public class ControlLoopEventManagerTest {
event.setClosedLoopControlName("TwoOnsetTest");
event.setRequestID(requestId);
event.setTarget("generic-vnf.vnf-id");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- event.setAAI(new HashMap<>());
- event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
-
- ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
- VirtualControlLoopNotification notification = manager.activate(event);
-
- assertNotNull(notification);
- assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
-
- ControlLoopEventManager.NEW_EVENT_STATUS status = null;
- try {
- status = manager.onNewEvent(event);
- } catch (AAIException e) {
- logger.warn(e.toString());
- fail("A&AI Query Failed");
- }
- assertNotNull(status);
- assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
-
- AAIGETVnfResponse response = manager.getVnfResponse();
- assertNotNull(response);
- assertNull(manager.getVserverResponse());
-
- VirtualControlLoopEvent event2 = new VirtualControlLoopEvent();
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(event);
+
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ ControlLoopEventManager.NEW_EVENT_STATUS status = null;
+ try {
+ status = manager.onNewEvent(event);
+ } catch (AAIException e) {
+ logger.warn(e.toString());
+ fail("A&AI Query Failed");
+ }
+ assertNotNull(status);
+ assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
+
+ AAIGETVnfResponse response = manager.getVnfResponse();
+ assertNotNull(response);
+ assertNull(manager.getVserverResponse());
+
+ VirtualControlLoopEvent event2 = new VirtualControlLoopEvent();
event2.setClosedLoopControlName("TwoOnsetTest");
event2.setRequestID(requestId);
event2.setTarget("generic-vnf.vnf-id");
- event2.setClosedLoopAlarmStart(Instant.now());
- event2.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- event2.setAAI(new HashMap<>());
- event2.getAAI().put("generic-vnf.vnf-name", "onsetTwo");
-
-
- try {
- status = manager.onNewEvent(event2);
- } catch (AAIException e) {
- logger.warn(e.toString());
- fail("A&AI Query Failed");
- }
- assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.SUBSEQUENT_ONSET, status);
- AAIGETVnfResponse response2 = manager.getVnfResponse();
- assertNotNull(response2);
- // We should not have queried AAI, so the stored response should be the same
- assertEquals(response, response2);
- assertNull(manager.getVserverResponse());
+ event2.setClosedLoopAlarmStart(Instant.now());
+ event2.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event2.setAAI(new HashMap<>());
+ event2.getAAI().put("generic-vnf.vnf-name", "onsetTwo");
+
+
+ try {
+ status = manager.onNewEvent(event2);
+ } catch (AAIException e) {
+ logger.warn(e.toString());
+ fail("A&AI Query Failed");
+ }
+ assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.SUBSEQUENT_ONSET, status);
+ AAIGETVnfResponse response2 = manager.getVnfResponse();
+ assertNotNull(response2);
+ // We should not have queried AAI, so the stored response should be the same
+ assertEquals(response, response2);
+ assertNull(manager.getVserverResponse());
}
-
+
// Simulate a response
public static AAIGETVnfResponse getQueryByVnfID2(String urlGet, String username, String password, UUID requestID, String key) {
AAIGETVnfResponse response = new AAIGETVnfResponse();
-
+
response.setVnfID("83f674e8-7555-44d7-9a39-bdc3770b0491");
response.setVnfName("lll_vnf_010317");
response.setVnfType("Basa-122216-Service/VidVsamp12BaseVolume 1");
@@ -280,44 +297,44 @@ public class ControlLoopEventManagerTest {
response.setIsClosedLoopDisabled("false");
response.setResourceVersion("1494001988835");
response.setModelInvariantId("f18be3cd-d446-456e-9109-121d9b62feaa");
-
- RelationshipList relationshipList = new RelationshipList();
- Relationship relationship = new Relationship();
- RelationshipData relationshipData = new RelationshipData();
- RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
-
- relationshipDataItem.setRelationshipKey ("customer.global-customer-id");
- relationshipDataItem.setRelationshipValue("MSO_1610_ST");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey ("service-subscription.service-type");
- relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey ("service-instance.service-instance-id");
- relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- RelatedToProperty relatedToProperty = new RelatedToProperty();
- RelatedToPropertyItem item = new RelatedToPropertyItem();
- item.setPropertyKey("service-instance.service-instance-name");
- item.setPropertyValue("lll_svc_010317");
- relatedToProperty.getRelatedTo().add(item);
-
- relationship.setRelatedTo("service-instance");
- relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationship.setRelationshipData(relationshipData);
- relationship.setRelatedToProperty(relatedToProperty);
-
- relationshipList.getRelationshipList().add(relationship);
- response.setRelationshipList(relationshipList);
+
+ RelationshipList relationshipList = new RelationshipList();
+ Relationship relationship = new Relationship();
+ RelationshipData relationshipData = new RelationshipData();
+ RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
+
+ relationshipDataItem.setRelationshipKey ("customer.global-customer-id");
+ relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey ("service-subscription.service-type");
+ relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey ("service-instance.service-instance-id");
+ relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ RelatedToProperty relatedToProperty = new RelatedToProperty();
+ RelatedToPropertyItem item = new RelatedToPropertyItem();
+ item.setPropertyKey("service-instance.service-instance-name");
+ item.setPropertyValue("lll_svc_010317");
+ relatedToProperty.getRelatedTo().add(item);
+
+ relationship.setRelatedTo("service-instance");
+ relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationship.setRelationshipData(relationshipData);
+ relationship.setRelatedToProperty(relatedToProperty);
+
+ relationshipList.getRelationshipList().add(relationship);
+ response.setRelationshipList(relationshipList);
return response;
}
public static AAIGETVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestID, String key) {
AAIGETVnfResponse response = new AAIGETVnfResponse();
-
+
response.setVnfID("83f674e8-7555-44d7-9a39-bdc3770b0491");
response.setVnfName("lll_vnf_010317");
response.setVnfType("Basa-122216-Service/VidVsamp12BaseVolume 1");
@@ -327,44 +344,44 @@ public class ControlLoopEventManagerTest {
response.setIsClosedLoopDisabled("false");
response.setResourceVersion("1494001988835");
response.setModelInvariantId("f18be3cd-d446-456e-9109-121d9b62feaa");
-
- RelationshipList relationshipList = new RelationshipList();
- Relationship relationship = new Relationship();
- RelationshipData relationshipData = new RelationshipData();
- RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
-
- relationshipDataItem.setRelationshipKey("customer.global-customer-id");
- relationshipDataItem.setRelationshipValue("MSO_1610_ST");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey("service-subscription.service-type");
- relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
- relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- RelatedToProperty relatedToProperty = new RelatedToProperty();
- RelatedToPropertyItem item = new RelatedToPropertyItem();
- item.setPropertyKey("service-instance.service-instance-name");
- item.setPropertyValue("lll_svc_010317");
- relatedToProperty.getRelatedTo().add(item);
-
- relationship.setRelatedTo("service-instance");
- relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationship.setRelationshipData(relationshipData);
- relationship.setRelatedToProperty(relatedToProperty);
-
- relationshipList.getRelationshipList().add(relationship);
- response.setRelationshipList(relationshipList);
+
+ RelationshipList relationshipList = new RelationshipList();
+ Relationship relationship = new Relationship();
+ RelationshipData relationshipData = new RelationshipData();
+ RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
+
+ relationshipDataItem.setRelationshipKey("customer.global-customer-id");
+ relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey("service-subscription.service-type");
+ relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
+ relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ RelatedToProperty relatedToProperty = new RelatedToProperty();
+ RelatedToPropertyItem item = new RelatedToPropertyItem();
+ item.setPropertyKey("service-instance.service-instance-name");
+ item.setPropertyValue("lll_svc_010317");
+ relatedToProperty.getRelatedTo().add(item);
+
+ relationship.setRelatedTo("service-instance");
+ relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationship.setRelationshipData(relationshipData);
+ relationship.setRelatedToProperty(relatedToProperty);
+
+ relationshipList.getRelationshipList().add(relationship);
+ response.setRelationshipList(relationshipList);
return response;
}
public static AAIGETVserverResponse getQueryByVserverName2(String urlGet, String username, String password, UUID requestID, String key) {
AAIGETVserverResponse response = new AAIGETVserverResponse();
-
+
response.setVserverID("d0668d4f-c25e-4a1b-87c4-83845c01efd8");
response.setVserverName("USMSO1SX7NJ0103UJZZ01-vjunos0");
response.setVserverName2("vjunos0");
@@ -372,38 +389,614 @@ public class ControlLoopEventManagerTest {
response.setInMaint("false");
response.setIsClosedLoopDisabled("false");
response.setResourceVersion("1494001931513");
-
- RelationshipList relationshipList = new RelationshipList();
- Relationship relationship = new Relationship();
- RelationshipData relationshipData = new RelationshipData();
- RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
-
- relationshipDataItem.setRelationshipKey("customer.global-customer-id");
- relationshipDataItem.setRelationshipValue("MSO_1610_ST");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey("service-subscription.service-type");
- relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
- relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationshipData.getRelationshipData().add(relationshipDataItem);
-
- RelatedToProperty relatedToProperty = new RelatedToProperty();
- RelatedToPropertyItem item = new RelatedToPropertyItem();
- item.setPropertyKey("service-instance.service-instance-name");
- item.setPropertyValue("lll_svc_010317");
- relatedToProperty.getRelatedTo().add(item);
-
- relationship.setRelatedTo("service-instance");
- relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
- relationship.setRelationshipData(relationshipData);
- relationship.setRelatedToProperty(relatedToProperty);
-
- relationshipList.getRelationshipList().add(relationship);
- response.setRelationshipList(relationshipList);
+
+ RelationshipList relationshipList = new RelationshipList();
+ Relationship relationship = new Relationship();
+ RelationshipData relationshipData = new RelationshipData();
+ RelationshipDataItem relationshipDataItem = new RelationshipDataItem();
+
+ relationshipDataItem.setRelationshipKey("customer.global-customer-id");
+ relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey("service-subscription.service-type");
+ relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
+ relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationshipData.getRelationshipData().add(relationshipDataItem);
+
+ RelatedToProperty relatedToProperty = new RelatedToProperty();
+ RelatedToPropertyItem item = new RelatedToPropertyItem();
+ item.setPropertyKey("service-instance.service-instance-name");
+ item.setPropertyValue("lll_svc_010317");
+ relatedToProperty.getRelatedTo().add(item);
+
+ relationship.setRelatedTo("service-instance");
+ relationship.setRelatedLink("/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+ relationship.setRelationshipData(relationshipData);
+ relationship.setRelatedToProperty(relatedToProperty);
+
+ relationshipList.getRelationshipList().add(relationship);
+ response.setRelationshipList(relationshipList);
return response;
}
+
+ @Test
+ public void testMethods() {
+ ControlLoopEventManager clem = new ControlLoopEventManager("MyClosedLoopName", UUID.randomUUID());
+
+ clem.setActivated(true);
+ assertEquals(true, clem.isActivated());
+
+ clem.setControlLoopResult("SUCCESS");
+ assertEquals("SUCCESS", clem.getControlLoopResult());
+
+ clem.setControlLoopTimedOut();
+ assertEquals(true, clem.isControlLoopTimedOut());
+
+ clem.setNumAbatements(12345);
+ assertEquals(Integer.valueOf(12345), clem.getNumAbatements());
+
+ clem.setNumOnsets(54321);
+ assertEquals(Integer.valueOf(54321), clem.getNumOnsets());
+
+ assertNull(clem.getOnsetEvent());
+ assertNull(clem.getAbatementEvent());
+ assertNull(clem.getProcessor());
+
+ assertEquals(true, clem.isActive());
+ assertEquals(false, clem.releaseLock());
+ assertEquals(true, clem.isControlLoopTimedOut());
+
+ assertNull(clem.unlockCurrentOperation());
+ }
+
+ @Test
+ public void testAlreadyActivated() {
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent event = new VirtualControlLoopEvent();
+ event.setClosedLoopControlName("TwoOnsetTest");
+ event.setRequestID(requestId);
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ manager.setActivated(true);
+ VirtualControlLoopNotification notification = manager.activate(event);
+ assertEquals(ControlLoopNotificationType.REJECTED, notification.getNotification());
+ }
+
+ @Test
+ public void testActivationYaml() throws IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ InputStream isBad = new FileInputStream(new File("src/test/resources/notutf8.yaml"));
+ String yamlStringBad = IOUtils.toString(isBad, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent event = new VirtualControlLoopEvent();
+ event.setClosedLoopControlName("TwoOnsetTest");
+ event.setRequestID(requestId);
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+
+ // Null YAML should fail
+ VirtualControlLoopNotification notificationNull = manager.activate(null, event);
+ assertNotNull(notificationNull);
+ assertEquals(ControlLoopNotificationType.REJECTED, notificationNull.getNotification());
+
+ // Empty YAML should fail
+ VirtualControlLoopNotification notificationEmpty = manager.activate("", event);
+ assertNotNull(notificationEmpty);
+ assertEquals(ControlLoopNotificationType.REJECTED, notificationEmpty.getNotification());
+
+ // Bad YAML should fail
+ VirtualControlLoopNotification notificationBad = manager.activate(yamlStringBad, event);
+ assertNotNull(notificationBad);
+ assertEquals(ControlLoopNotificationType.REJECTED, notificationBad.getNotification());
+
+ VirtualControlLoopNotification notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ // Another activate should fail
+ VirtualControlLoopNotification notificationActive = manager.activate(yamlString, event);
+ assertNotNull(notificationActive);
+ assertEquals(ControlLoopNotificationType.REJECTED, notificationActive.getNotification());
+ }
+
+ @Test
+ public void testControlLoopFinal() throws ControlLoopException, IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent event = new VirtualControlLoopEvent();
+ event.setClosedLoopControlName("TwoOnsetTest");
+ event.setRequestID(requestId);
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ try {
+ manager.isControlLoopFinal();
+ fail("test should throw an exception here");
+ } catch (ControlLoopException e) {
+ assertEquals("ControlLoopEventManager MUST be activated first.", e.getMessage());
+ }
+
+ manager.setActivated(true);
+ try {
+ manager.isControlLoopFinal();
+ fail("test should throw an exception here");
+ } catch (ControlLoopException e) {
+ assertEquals("No onset event for ControlLoopEventManager.", e.getMessage());
+ }
+
+ manager.setActivated(false);
+ VirtualControlLoopNotification notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ VirtualControlLoopNotification clfNotification = manager.isControlLoopFinal();
+ assertNull(clfNotification);
+
+ manager.getProcessor().nextPolicyForResult(PolicyResult.SUCCESS);
+ clfNotification = manager.isControlLoopFinal();
+ assertNotNull(clfNotification);
+ assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, clfNotification.getNotification());
+
+ manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ manager.getProcessor().nextPolicyForResult(PolicyResult.FAILURE_EXCEPTION);
+ clfNotification = manager.isControlLoopFinal();
+ assertNotNull(clfNotification);
+ assertEquals(ControlLoopNotificationType.FINAL_FAILURE, clfNotification.getNotification());
+
+ manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ manager.getProcessor().nextPolicyForResult(PolicyResult.FAILURE_GUARD);
+ clfNotification = manager.isControlLoopFinal();
+ assertNotNull(clfNotification);
+ assertEquals(ControlLoopNotificationType.FINAL_FAILURE, clfNotification.getNotification());
+
+ manager.setControlLoopTimedOut();
+ clfNotification = manager.isControlLoopFinal();
+ assertNotNull(clfNotification);
+ assertEquals(ControlLoopNotificationType.FINAL_FAILURE, clfNotification.getNotification());
+ }
+
+ @Test
+ public void testProcessControlLoop() throws ControlLoopException, IOException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent event = new VirtualControlLoopEvent();
+ event.setClosedLoopControlName("TwoOnsetTest");
+ event.setRequestID(requestId);
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ try {
+ manager.processControlLoop();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("ControlLoopEventManager MUST be activated first.", e.getMessage());
+ }
+
+ manager.setActivated(true);
+ try {
+ manager.processControlLoop();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("No onset event for ControlLoopEventManager.", e.getMessage());
+ }
+
+ manager.setActivated(false);
+ VirtualControlLoopNotification notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ ControlLoopOperationManager clom = manager.processControlLoop();
+ assertNotNull(clom);
+ assertNull(clom.getOperationResult());
+
+ // Test operation in progress
+ try {
+ manager.processControlLoop();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Already working an Operation, do not call this method.", e.getMessage());
+ }
+
+ manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ manager.getProcessor().nextPolicyForResult(PolicyResult.FAILURE_GUARD);
+ VirtualControlLoopNotification clfNotification = manager.isControlLoopFinal();
+ assertNotNull(clfNotification);
+ assertEquals(ControlLoopNotificationType.FINAL_FAILURE, clfNotification.getNotification());
+
+ // Test operation completed
+ try {
+ manager.processControlLoop();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Control Loop is in FINAL state, do not call this method.", e.getMessage());
+ }
+
+ manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+ manager.getProcessor().nextPolicyForResult(PolicyResult.FAILURE);
+
+ // Test operation with no next policy defined
+ try {
+ manager.processControlLoop();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("The target type is null", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testFinishOperation() throws IOException, ControlLoopException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/testSOactor.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ InputStream isStd = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlStringStd = IOUtils.toString(isStd, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent event = new VirtualControlLoopEvent();
+ event.setClosedLoopControlName("TwoOnsetTest");
+ event.setRequestID(requestId);
+ event.setTarget("generic-vnf.vnf-id");
+ event.setClosedLoopAlarmStart(Instant.now());
+ event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ event.setAAI(new HashMap<>());
+ event.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ try {
+ manager.finishOperation(null);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("No operation to finish.", e.getMessage());
+ }
+
+ manager.setActivated(true);
+ try {
+ manager.finishOperation(null);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("No operation to finish.", e.getMessage());
+ }
+
+ manager.setActivated(false);
+ VirtualControlLoopNotification notification = manager.activate(yamlString, event);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ try {
+ manager.lockCurrentOperation();
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Do not have a current operation.", e.getMessage());
+ }
+
+ assertNull(manager.unlockCurrentOperation());
+
+ ControlLoopOperationManager clom = manager.processControlLoop();
+ assertNotNull(clom);
+ assertNull(clom.getOperationResult());
+
+ LockResult<GuardResult, TargetLock> lockLock = manager.lockCurrentOperation();
+ assertNotNull(lockLock);
+
+ LockResult<GuardResult, TargetLock> lockLockAgain = manager.lockCurrentOperation();
+ assertNotNull(lockLockAgain);
+ assertEquals(lockLock.getB(), lockLockAgain.getB());
+
+ assertEquals(lockLock.getB(), manager.unlockCurrentOperation());
+ assertNull(manager.unlockCurrentOperation());
+
+ lockLock = manager.lockCurrentOperation();
+ assertNotNull(lockLock);
+ PolicyGuard.unlockTarget(lockLock.getB());
+ assertNull(manager.unlockCurrentOperation());
+
+ clom.startOperation(event);
+
+ // This call should be exception free
+ manager.finishOperation(clom);
+
+ ControlLoopEventManager otherManager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestID());
+ VirtualControlLoopNotification otherNotification = otherManager.activate(yamlStringStd, event);
+ assertNotNull(otherNotification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, otherNotification.getNotification());
+
+ ControlLoopOperationManager otherClom = otherManager.processControlLoop();
+ assertNotNull(otherClom);
+ assertNull(otherClom.getOperationResult());
+
+ otherManager.finishOperation(clom);
+ }
+
+ @Test
+ public void testOnNewEvent() throws IOException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ VirtualControlLoopEvent abatedEvent = new VirtualControlLoopEvent();
+ abatedEvent.setClosedLoopControlName("TwoOnsetTest");
+ abatedEvent.setRequestID(requestId);
+ abatedEvent.setTarget("generic-vnf.vnf-id");
+ abatedEvent.setClosedLoopAlarmStart(Instant.now());
+ abatedEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
+ abatedEvent.setAAI(new HashMap<>());
+ abatedEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ assertEquals(NEW_EVENT_STATUS.FIRST_ONSET, manager.onNewEvent(onsetEvent));
+ assertEquals(NEW_EVENT_STATUS.FIRST_ABATEMENT, manager.onNewEvent(abatedEvent));
+ assertEquals(NEW_EVENT_STATUS.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
+
+ VirtualControlLoopEvent checkSyntaxEvent = new VirtualControlLoopEvent();
+ checkSyntaxEvent.setAAI(null);
+ checkSyntaxEvent.setClosedLoopAlarmEnd(null);
+ checkSyntaxEvent.setClosedLoopAlarmStart(null);
+ checkSyntaxEvent.setClosedLoopControlName(null);
+ checkSyntaxEvent.setClosedLoopEventClient(null);
+ checkSyntaxEvent.setClosedLoopEventStatus(null);
+ checkSyntaxEvent.setFrom(null);
+ checkSyntaxEvent.setPolicyName(null);
+ checkSyntaxEvent.setPolicyScope(null);
+ checkSyntaxEvent.setPolicyVersion(null);
+ checkSyntaxEvent.setRequestID(null);
+ checkSyntaxEvent.setTarget(null);
+ checkSyntaxEvent.setTargetType(null);
+ checkSyntaxEvent.setVersion(null);
+
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setClosedLoopControlName(null);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setClosedLoopControlName("");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setClosedLoopControlName("TwoOnsetTest");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setRequestID(null);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setRequestID(requestId);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setAAI(null);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setAAI(new HashMap<>());
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget(null);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("OZ");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("VM_NAME");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("VNF_NAME");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("vserver.vserver-name");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("generic-vnf.vnf-id");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setTarget("generic-vnf.vnf-name");
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setAAI(null);
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.setAAI(new HashMap<>());
+ assertEquals(NEW_EVENT_STATUS.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
+
+ checkSyntaxEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+ assertEquals(NEW_EVENT_STATUS.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
+
+ checkSyntaxEvent.getAAI().put("vserver.vserver-name", "onsetOne");
+ assertEquals(NEW_EVENT_STATUS.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
+
+ checkSyntaxEvent.getAAI().put("generic-vnf.vnf-id", "onsetOne");
+ assertEquals(NEW_EVENT_STATUS.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
+ }
+
+ @Test
+ public void testControlLoopTimeout() throws IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ assertTrue(0 == manager.getControlLoopTimeout(null));
+ assertTrue(120 == manager.getControlLoopTimeout(120));
+
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ assertTrue(60 == manager.getControlLoopTimeout(null));
+ }
+
+ @Test
+ public void testQueryAAI() throws IOException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ manager.queryAai(onsetEvent);
+
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().put("generic-vnf.is-closed-loop-disabled", "true");
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
+ }
+ onsetEvent.getAAI().put("vserver.is-closed-loop-disabled", "true");
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
+ }
+ onsetEvent.getAAI().remove("generic-vnf.is-closed-loop-disabled");
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
+ }
+ onsetEvent.getAAI().remove("vserver.is-closed-loop-disabled");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().put("generic-vnf.is-closed-loop-disabled", "false");
+ manager.queryAai(onsetEvent);
+ onsetEvent.getAAI().put("vserver.is-closed-loop-disabled", "false");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().remove("generic-vnf.vnf-id");
+ onsetEvent.getAAI().remove("generic-vnf.vnf-name");
+ onsetEvent.getAAI().remove("vserver.vserver-name");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().put("vserver.vserver-name", "AVserver");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "AVNFName");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().put("generic-vnf.vnf-id", "AVNFID");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().remove("vserver.vserver-name");
+ manager.queryAai(onsetEvent);
+
+ onsetEvent.getAAI().remove("generic-vnf.vnf-name");
+ manager.queryAai(onsetEvent);
+
+ // Force AAI errors
+ PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:9999");
+
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Exception from queryAai: org.onap.policy.aai.util.AAIException: AAI Response is null (query by vnf-id)", e.getMessage());
+ }
+
+ onsetEvent.getAAI().remove("generic-vnf.vnf-id");
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "AVNFName");
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Exception from queryAai: org.onap.policy.aai.util.AAIException: AAI Response is null (query by vnf-name)", e.getMessage());
+ }
+
+ onsetEvent.getAAI().remove("generic-vnf.vnf-name");
+ onsetEvent.getAAI().put("vserver.vserver-name", "AVserver");
+ try {
+ manager.queryAai(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Exception from queryAai: org.onap.policy.aai.util.AAIException: AAI Response is null (query by vserver-name)", e.getMessage());
+ }
+
+ PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
+ }
} \ No newline at end of file
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java
index 76020b0c9..4a30a451a 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java
@@ -23,17 +23,29 @@ package org.onap.policy.controlloop.eventmanager;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.HashMap;
import java.util.UUID;
+import org.apache.commons.io.IOUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.aai.util.AAIException;
+import org.onap.policy.appc.CommonHeader;
+import org.onap.policy.appc.Response;
+import org.onap.policy.appc.ResponseCode;
+import org.onap.policy.appc.ResponseStatus;
+import org.onap.policy.appclcm.LCMCommonHeader;
import org.onap.policy.appclcm.LCMRequest;
import org.onap.policy.appclcm.LCMRequestWrapper;
import org.onap.policy.appclcm.LCMResponse;
@@ -46,16 +58,26 @@ import org.onap.policy.controlloop.ControlLoopTargetType;
import org.onap.policy.controlloop.Util;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
import org.onap.policy.controlloop.policy.ControlLoopPolicy;
+import org.onap.policy.controlloop.policy.Policy;
import org.onap.policy.controlloop.policy.PolicyResult;
+import org.onap.policy.controlloop.policy.Target;
+import org.onap.policy.controlloop.policy.TargetType;
import org.onap.policy.controlloop.processor.ControlLoopProcessor;
import org.onap.policy.drools.http.server.HttpServletServer;
import org.onap.policy.drools.system.PolicyEngine;
+import org.onap.policy.so.SOResponse;
+import org.onap.policy.so.SOResponseWrapper;
+import org.onap.policy.vfc.VFCResponse;
+import org.onap.policy.vfc.VFCResponseDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ControlLoopOperationManagerTest {
private static final Logger logger = LoggerFactory.getLogger(ControlLoopOperationManagerTest.class);
+
+
private static VirtualControlLoopEvent onset;
+
static {
onset = new VirtualControlLoopEvent();
onset.setRequestID(UUID.randomUUID());
@@ -65,27 +87,27 @@ public class ControlLoopOperationManagerTest {
onset.setAAI(new HashMap<>());
onset.getAAI().put("generic-vnf.vnf-name", "testTriggerSource");
onset.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
-
+
/* Set environment properties */
- PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
- PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
- PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
+ PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
+ PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
+ PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
}
@BeforeClass
- public static void setUpSimulator() {
- try {
- org.onap.policy.simulators.Util.buildAaiSim();
- } catch (Exception e) {
- fail(e.getMessage());
- }
- }
-
- @AfterClass
- public static void tearDownSimulator() {
- HttpServletServer.factory.destroy();
- }
-
+ public static void setUpSimulator() {
+ try {
+ org.onap.policy.simulators.Util.buildAaiSim();
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @AfterClass
+ public static void tearDownSimulator() {
+ HttpServletServer.factory.destroy();
+ }
+
@Test
public void testRetriesFail() {
//
@@ -102,21 +124,21 @@ public class ControlLoopOperationManagerTest {
// create the manager
//
ControlLoopEventManager eventManager = new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestID());
- VirtualControlLoopNotification notification = eventManager.activate(onset);
-
+ VirtualControlLoopNotification notification = eventManager.activate(onset);
+
assertNotNull(notification);
assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
-
+
ControlLoopEventManager.NEW_EVENT_STATUS status = null;
- try {
- status = eventManager.onNewEvent(onset);
- } catch (AAIException e) {
- logger.warn(e.toString());
- fail("A&AI Query Failed");
- }
- assertNotNull(status);
- assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
-
+ try {
+ status = eventManager.onNewEvent(onset);
+ } catch (AAIException e) {
+ logger.warn(e.toString());
+ fail("A&AI Query Failed");
+ }
+ assertNotNull(status);
+ assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
+
ControlLoopOperationManager manager = new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
logger.debug("{}",manager);
//
@@ -232,20 +254,20 @@ public class ControlLoopOperationManagerTest {
//
ControlLoopEventManager eventManager = new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestID());
VirtualControlLoopNotification notification = eventManager.activate(onset);
-
+
assertNotNull(notification);
assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
ControlLoopEventManager.NEW_EVENT_STATUS status = null;
- try {
- status = eventManager.onNewEvent(onset);
- } catch (AAIException e) {
- logger.warn(e.toString());
- fail("A&AI Query Failed");
- }
- assertNotNull(status);
- assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
-
+ try {
+ status = eventManager.onNewEvent(onset);
+ } catch (AAIException e) {
+ logger.warn(e.toString());
+ fail("A&AI Query Failed");
+ }
+ assertNotNull(status);
+ assertEquals(ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET, status);
+
ControlLoopOperationManager manager = new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
//
//
@@ -270,7 +292,7 @@ public class ControlLoopOperationManagerTest {
//
LCMResponseWrapper dmaapResponse = new LCMResponseWrapper();
LCMResponse appcResponse = new LCMResponse(appcRequest);
- dmaapResponse.setBody(appcResponse);
+ dmaapResponse.setBody(appcResponse);
appcResponse.getStatus().setCode(100);
appcResponse.getStatus().setMessage("ACCEPT");
//
@@ -311,4 +333,414 @@ public class ControlLoopOperationManagerTest {
}
}
+ @Test
+ public void testMethods() throws IOException, ControlLoopException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/testSOactor.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ ControlLoopOperationManager clom = manager.processControlLoop();
+ assertNotNull(clom);
+ assertNull(clom.getOperationResult());
+
+ clom.setEventManager(manager);
+ assertEquals(manager, clom.getEventManager());
+
+ assertNull(clom.getTargetEntity());
+
+ clom.setGuardApprovalStatus("WizardOKedIt");
+ assertEquals("WizardOKedIt", clom.getGuardApprovalStatus());
+
+ assertNull(clom.getOperationResult());
+
+ Policy policy = manager.getProcessor().getCurrentPolicy();
+ clom.getTarget(policy);
+
+ Target savedTarget = policy.getTarget();
+ policy.setTarget(null);
+ try {
+ clom.getTarget(policy);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("The target is null", e.getMessage());
+ }
+
+ policy.setTarget(new Target());
+ try {
+ clom.getTarget(policy);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("The target type is null", e.getMessage());
+ }
+
+ policy.setTarget(savedTarget);
+
+ policy.getTarget().setType(TargetType.PNF);
+ try {
+ clom.getTarget(policy);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("PNF target is not supported", e.getMessage());
+ }
+
+ onsetEvent.setTarget("Oz");
+ onsetEvent.getAAI().remove("generic-vnf.vnf-name");
+ onsetEvent.getAAI().remove("generic-vnf.vnf-id");
+ onsetEvent.getAAI().remove("vserver.vserver-name");
+
+ policy.getTarget().setType(TargetType.VNF);
+ try {
+ clom.getTarget(policy);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Target does not match target type", e.getMessage());
+ }
+
+ onsetEvent.setTarget("vserver.vserver-name");
+ onsetEvent.getAAI().put("vserver.vserver-name", "OzVServer");
+ assertEquals("OzVServer", clom.getTarget(policy));
+
+ onsetEvent.getAAI().remove("vserver.vserver-name");
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.getAAI().put("generic-vnf.vnf-id", "OzVNF");
+ assertEquals("OzVNF", clom.getTarget(policy));
+
+ onsetEvent.setTarget("generic-vnf.vnf-name");
+ assertEquals("OzVNF", clom.getTarget(policy));
+
+ manager.onNewEvent(onsetEvent);
+
+ onsetEvent.getAAI().remove("generic-vnf.vnf-id");
+ manager.getVnfResponse();
+ clom.getEventManager().getVnfResponse().setVnfID("generic-vnf.vnf-id");
+ assertEquals("generic-vnf.vnf-id", clom.getTarget(policy));
+
+ policy.getTarget().setType(TargetType.VFC);
+ try {
+ clom.getTarget(policy);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("The target type is not supported", e.getMessage());
+ }
+
+ assertEquals(Integer.valueOf(20), clom.getOperationTimeout());
+
+ assertEquals("20s", clom.getOperationTimeoutString(100));
+
+ assertEquals(null, clom.getOperationMessage());
+ assertEquals(null, clom.getOperationMessage("The Wizard Escaped"));
+
+ clom.startOperation(onsetEvent);
+
+ assertEquals("actor=SO,operation=Restart,target=Target [type=VFC, resourceID=null],subRequestId=1", clom.getOperationMessage());
+ assertEquals("actor=SO,operation=Restart,target=Target [type=VFC, resourceID=null],subRequestId=1, Guard result: The Wizard Escaped", clom.getOperationMessage("The Wizard Escaped"));
+
+ assertEquals("actor=SO,operation=Restart,tar", clom.getOperationHistory().substring(0, 30));
+
+ clom.setOperationHasException("The Wizard is gone");
+ clom.setOperationHasGuardDeny();
+ }
+
+ @Test
+ public void testConstructor() throws IOException, ControlLoopException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ Policy policy = manager.getProcessor().getCurrentPolicy();
+ ControlLoopOperationManager clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ policy.setRecipe("ModifyConfig");
+ policy.getTarget().setResourceID(UUID.randomUUID().toString());
+ try {
+ new ControlLoopOperationManager(onsetEvent, policy, manager);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("Target vnf-id could not be found", e.getMessage());
+ }
+
+ policy.getTarget().setResourceID("82194af1-3c2c-485a-8f44-420e22a9eaa4");
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ policy.setActor("SO");
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ policy.setActor("VFC");
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ policy.setActor("Dorothy");
+ try {
+ new ControlLoopOperationManager(onsetEvent, policy, manager);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("ControlLoopEventManager: policy has an unknown actor.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testStartOperation() throws IOException, ControlLoopException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ Policy policy = manager.getProcessor().getCurrentPolicy();
+ ControlLoopOperationManager clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ clom.startOperation(onsetEvent);
+
+ try {
+ clom.startOperation(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("current operation is not null (an operation is already running)", e.getMessage());
+ }
+
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ String savedRecipe = policy.getRecipe();
+ policy.setRecipe("ModifyConfig");
+ policy.getTarget().setResourceID(UUID.randomUUID().toString());
+ clom.startOperation(onsetEvent);
+ policy.setRecipe(savedRecipe);
+
+ policy.setRetry(null);
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ clom.startOperation(onsetEvent);
+ clom.setOperationHasTimedOut();
+ assertTrue(clom.isOperationComplete());
+ try {
+ clom.startOperation(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("current operation failed and retries are not allowed", e.getMessage());
+ }
+
+ policy.setRetry(0);
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ clom.startOperation(onsetEvent);
+ clom.setOperationHasTimedOut();
+ assertTrue(clom.isOperationComplete());
+ try {
+ clom.startOperation(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("current operation failed and retries are not allowed", e.getMessage());
+ }
+
+ policy.setRetry(1);
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ clom.startOperation(onsetEvent);
+ clom.setOperationHasTimedOut();
+ clom.startOperation(onsetEvent);
+ clom.setOperationHasTimedOut();
+ assertTrue(clom.isOperationComplete());
+ try {
+ clom.startOperation(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("current oepration has failed after 2 retries", e.getMessage());
+ }
+
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ policy.setActor("SO");
+ clom.startOperation(onsetEvent);
+
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ policy.setActor("VFC");
+ clom.startOperation(onsetEvent);
+
+ clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+ policy.setActor("Oz");
+ try {
+ clom.startOperation(onsetEvent);
+ fail("test should throw an exception here");
+ } catch (Exception e) {
+ assertEquals("invalid actor Oz on policy", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testOnResponse() throws IOException, ControlLoopException, AAIException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ Policy policy = manager.getProcessor().getCurrentPolicy();
+ ControlLoopOperationManager clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ assertNull(clom.onResponse(null));
+
+ Response appcResponse = new Response();
+ CommonHeader commonHeader = new CommonHeader();
+ appcResponse.setCommonHeader(commonHeader );
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ commonHeader.setSubRequestID("12345");
+ appcResponse.setStatus(null);
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ ResponseStatus responseStatus = new ResponseStatus();
+ appcResponse.setStatus(responseStatus);
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(0);
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(ResponseCode.ACCEPT.getValue());
+ assertEquals(null, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(ResponseCode.ERROR.getValue());
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(ResponseCode.FAILURE.getValue());
+ assertEquals(PolicyResult.FAILURE, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(ResponseCode.REJECT.getValue());
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(appcResponse));
+
+ responseStatus.setCode(ResponseCode.SUCCESS.getValue());
+ assertEquals(PolicyResult.SUCCESS, clom.onResponse(appcResponse));
+
+ LCMResponseWrapper lrw = new LCMResponseWrapper();
+ LCMResponse body = new LCMResponse();
+ LCMCommonHeader lcmCH = new LCMCommonHeader();
+ body.setCommonHeader(lcmCH );
+ lrw.setBody(body );
+
+ lcmCH.setSubRequestId("NotANumber");
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(lrw));
+
+ lcmCH.setSubRequestId("12345");
+ assertEquals(PolicyResult.FAILURE_EXCEPTION, clom.onResponse(lrw));
+
+ SOResponse soResponse = new SOResponse();
+ SOResponseWrapper soRW = new SOResponseWrapper(soResponse , null);
+
+ soResponse.setHttpResponseCode(200);
+ assertEquals(PolicyResult.SUCCESS, clom.onResponse(soRW));
+
+ soResponse.setHttpResponseCode(202);
+ assertEquals(PolicyResult.SUCCESS, clom.onResponse(soRW));
+
+ soResponse.setHttpResponseCode(500);
+ assertEquals(PolicyResult.FAILURE, clom.onResponse(soRW));
+
+ VFCResponse vfcResponse = new VFCResponse();
+ VFCResponseDescriptor responseDescriptor = new VFCResponseDescriptor();
+ vfcResponse.setResponseDescriptor(responseDescriptor );
+
+ responseDescriptor.setStatus("finished");
+ assertEquals(PolicyResult.SUCCESS, clom.onResponse(vfcResponse));
+
+ responseDescriptor.setStatus("unfinished");
+ assertEquals(PolicyResult.FAILURE, clom.onResponse(vfcResponse));
+ }
+
+ @Test
+ public void testCompleteOperation() throws ControlLoopException, AAIException, IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestID(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAAI(new HashMap<>());
+ onsetEvent.getAAI().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestID());
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ Policy policy = manager.getProcessor().getCurrentPolicy();
+ ControlLoopOperationManager clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
+ assertNotNull(clom);
+
+ clom.startOperation(onsetEvent);
+
+ SOResponse soResponse = new SOResponse();
+ SOResponseWrapper soRW = new SOResponseWrapper(soResponse , null);
+
+ PolicyEngine.manager.setEnvironmentProperty("guard.disabled", "false");
+ PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_URL, "http://somewhere.over.the.rainbow");
+ PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, "Dorothy");
+ PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_PASS, "Toto");
+
+ assertEquals(PolicyResult.FAILURE, clom.onResponse(soRW));
+
+ System.setProperty("OperationsHistoryPU", "TestOperationsHistoryPU");
+ assertEquals(PolicyResult.FAILURE, clom.onResponse(soRW));
+ }
}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/OperationsHistoryDbEntryTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/OperationsHistoryDbEntryTest.java
new file mode 100644
index 000000000..315565cf0
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/OperationsHistoryDbEntryTest.java
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * eventmanager
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop.eventmanager;
+
+import static org.junit.Assert.*;
+
+import java.sql.Timestamp;
+import java.util.UUID;
+
+import org.junit.Test;
+
+public class OperationsHistoryDbEntryTest {
+
+ @Test
+ public void testOperationsHistoryDbEntry() {
+ OperationsHistoryDbEntry entry = new OperationsHistoryDbEntry();
+
+ String actor = "Dorothy";
+ entry.setActor(actor);
+ assertEquals(actor, entry.getActor());
+
+ String closedLoopName = "GoToOz";
+ entry.setClosedLoopName(closedLoopName);
+ assertEquals(closedLoopName, entry.getClosedLoopName());
+
+ Timestamp endtime = new Timestamp(System.currentTimeMillis());
+ entry.setEndtime(endtime);
+ assertEquals(endtime, entry.getEndtime());
+
+ String message = "I Want to go Home";
+ entry.setMessage(message);
+ assertEquals(message, entry.getMessage());
+
+ String operation = "Get Home";
+ entry.setOperation(operation);
+ assertEquals(operation, entry.getOperation());
+
+ String outcome = "Back in Kansas";
+ entry.setOutcome(outcome);
+ assertEquals(outcome, entry.getOutcome());
+
+ String requestId = UUID.randomUUID().toString();
+ entry.setRequestId(requestId);
+ assertEquals(requestId, entry.getRequestId());
+
+ long rowid = 12345;
+ entry.setRowid(rowid);
+ assertEquals(rowid, entry.getRowid());
+
+ Timestamp starttime = new Timestamp(endtime.getTime() - 100);
+ entry.setStarttime(starttime);
+ assertEquals(starttime, entry.getStarttime());
+
+ String subrequestId = "12321";
+ entry.setSubrequestId(subrequestId);
+ assertEquals(subrequestId, entry.getSubrequestId());
+
+ String target = "WizardOfOz";
+ entry.setTarget(target);
+ assertEquals(target, entry.getTarget());
+ }
+}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java
index 7bd18a3ff..87ccdb5b9 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.*;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@@ -41,25 +40,92 @@ import org.slf4j.LoggerFactory;
public class ControlLoopProcessorTest {
private static final Logger logger = LoggerFactory.getLogger(ControlLoopProcessorTest.class);
-
+
+ @Test
+ public void testControlLoopProcessor() throws IOException, ControlLoopException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+ this.testSuccess(yamlString);
+ this.testFailure(yamlString);
+ }
+
@Test
- public void test() {
- try (InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"))) {
- String result = IOUtils.toString(is, StandardCharsets.UTF_8);
- this.testSuccess(result);
- this.testFailure(result);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } catch (ControlLoopException e) {
- e.printStackTrace();
- fail(e.getMessage());
+ public void testControlLoopProcessorBadYaml() throws IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/string.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ try {
+ new ControlLoopProcessor(yamlString);
+ fail("test should thrown an exception");
+ }
+ catch (Exception e) {
+ assertEquals("Cannot create property=string for JavaBean=ControlLoopPolicy", e.getMessage().substring(0, 60));
}
}
-
+
+ @Test
+ public void testControlLoopProcessorBadTriggerYaml() throws IOException, ControlLoopException {
+ InputStream is = new FileInputStream(new File("src/test/resources/badtriggerpolicy.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
+ assertNull(clProcessor.getCurrentPolicy());
+
+ try {
+ clProcessor.nextPolicyForResult(PolicyResult.SUCCESS);
+ fail("test shold throw an exception here");
+ }
+ catch (ControlLoopException e) {
+ assertEquals("There is no current policy to determine where to go to.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testControlLoopProcessorNoPolicyYaml() throws IOException, ControlLoopException {
+ InputStream is = new FileInputStream(new File("src/test/resources/nopolicy.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
+
+ try {
+ clProcessor.getCurrentPolicy();
+ fail("test shold throw an exception here");
+ }
+ catch (ControlLoopException e) {
+ assertEquals("There are no policies defined.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testControlLoopProcessorNextPolicyForResult() throws IOException, ControlLoopException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+ String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.SUCCESS);
+
+ clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.FAILURE);
+
+ clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.FAILURE_EXCEPTION);
+
+ clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.FAILURE_GUARD);
+
+ clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.FAILURE_RETRIES);
+
+ clProcessor = new ControlLoopProcessor(yamlString);
+ clProcessor.getCurrentPolicy();
+ clProcessor.nextPolicyForResult(PolicyResult.FAILURE_TIMEOUT);
+ }
+
public void testSuccess(String yaml) throws ControlLoopException {
ControlLoopProcessor processor = new ControlLoopProcessor(yaml);
logger.debug("testSuccess: {}", processor.getControlLoop());
@@ -91,5 +157,4 @@ public class ControlLoopProcessorTest {
processor.nextPolicyForResult(PolicyResult.FAILURE);
}
}
-
}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/drools/DroolsPolicyEngineTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/drools/DroolsPolicyEngineTest.java
new file mode 100644
index 000000000..d94230e5e
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/drools/DroolsPolicyEngineTest.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * eventmanager
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.drools;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.appc.CommonHeader;
+import org.onap.policy.appc.Request;
+import org.onap.policy.appclcm.LCMCommonHeader;
+import org.onap.policy.appclcm.LCMRequest;
+import org.onap.policy.appclcm.LCMRequestWrapper;
+import org.onap.policy.controlloop.ControlLoopNotification;
+import org.onap.policy.controlloop.VirtualControlLoopNotification;
+import org.onap.policy.drools.impl.PolicyEngineJUnitImpl;
+
+public class DroolsPolicyEngineTest {
+ @Test
+ public void testDroolsPolicyEngine() {
+ PolicyEngineJUnitImpl pe = new PolicyEngineJUnitImpl();
+ assertNotNull(pe);
+
+ pe.addListener(new TestPolicyEngineListener());
+ pe.notifyListeners("TheWizardOfOz");
+
+ pe.subscribe("OmniBus", "TheWizardOfOz");
+
+ pe.deliver("OmniBus", "TheWizardOfOz", "Dorothy");
+
+ pe.subscribe("OmniBus", "TheWizardOfOz");
+ pe.subscribe("OmniBus", "ThisTopicDoesNotExist");
+
+ ControlLoopNotification notification = new VirtualControlLoopNotification();
+ pe.deliver("OmniBus", "TheWizardOfOz", notification);
+
+ Request request = new Request();
+ request.setCommonHeader(new CommonHeader());
+ request.getCommonHeader().setSubRequestID("12321");
+ pe.deliver("OmniBus", "TheWizardOfOz", request);
+
+ LCMRequestWrapper lcmRW = new LCMRequestWrapper();
+ lcmRW.setBody(new LCMRequest());
+ lcmRW.getBody().setCommonHeader(new LCMCommonHeader());
+ lcmRW.getBody().getCommonHeader().setSubRequestId("54321");
+ pe.deliver("OmniBus", "TheWizardOfOz", lcmRW);
+ }
+
+ private class TestPolicyEngineListener implements PolicyEngineListener {
+ @Override
+ public void newEventNotification(String topic) {
+ assertEquals("TheWizardOfOz", topic);
+ }
+ }
+}
diff --git a/controlloop/common/eventmanager/src/test/resources/META-INF/persistence.xml b/controlloop/common/eventmanager/src/test/resources/META-INF/persistence.xml
new file mode 100644
index 000000000..d5fadfffb
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+ <persistence-unit name="TestOperationsHistoryPU" transaction-type="RESOURCE_LOCAL">
+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+
+ <class>org.onap.policy.whatever.WhatEver</class>
+
+ <properties>
+ <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:apex_test" />
+ <property name="javax.persistence.target-database" value="Derby" />
+ <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+
+ <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+ <property name="eclipselink.ddl-generation.output-mode" value="database"/>
+ <property name="eclipselink.logging.level" value="INFO" />
+ </properties>
+ </persistence-unit>
+</persistence>
diff --git a/controlloop/common/eventmanager/src/test/resources/badtriggerpolicy.yaml b/controlloop/common/eventmanager/src/test/resources/badtriggerpolicy.yaml
new file mode 100644
index 000000000..e263cd5b2
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/badtriggerpolicy.yaml
@@ -0,0 +1,62 @@
+controlLoop:
+ version: 1.0.0
+ controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
+ services:
+ - serviceName: service1
+ resources:
+ - resourceName: resource1
+ resourceType: VF
+ - resourceName: resource2
+ resourceType: VF
+ - resourceName: resource3
+ resourceType: VF
+ - resourceName: resource4
+ resourceType: VF
+ - resourceName: resource5
+ resourceType: VF
+ trigger_policy: a-policy-that-does-not-exist
+ timeout: 60
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VNF
+ retry: 1
+ timeout: 20
+ success: final_success
+ failure: unique-policy-id-2-rebuild
+ failure_timeout: unique-policy-id-2-rebuild
+ failure_retries: unique-policy-id-2-rebuild
+ failure_exception: final_failure_exception
+
+ - id: unique-policy-id-2-rebuild
+ name: Rebuild Policy
+ description:
+ actor: APPC
+ recipe: Rebuild
+ target: VM
+ retry: 0
+ timeout: 10
+ success: final_success
+ failure: unique-policy-id-3-migrate
+ failure_timeout: unique-policy-id-3-migrate
+ failure_retries: unique-policy-id-3-migrate
+ failure_exception: final_failure_exception
+
+ - id: unique-policy-id-3-migrate
+ name: Migrate Policy
+ description:
+ actor: APPC
+ recipe: Migrate
+ target: VM
+ retry: 0
+ timeout: 30
+ success: final_success
+ failure: final_failure
+ failure_timeout: final_failure_timeout
+ failure_retries: final_failure_retries
+ failure_exception: final_failure_exception
diff --git a/controlloop/common/eventmanager/src/test/resources/nopolicy.yaml b/controlloop/common/eventmanager/src/test/resources/nopolicy.yaml
new file mode 100644
index 000000000..d3758f3da
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/nopolicy.yaml
@@ -0,0 +1,18 @@
+controlLoop:
+ version: 1.0.0
+ controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
+ services:
+ - serviceName: service1
+ resources:
+ - resourceName: resource1
+ resourceType: VF
+ - resourceName: resource2
+ resourceType: VF
+ - resourceName: resource3
+ resourceType: VF
+ - resourceName: resource4
+ resourceType: VF
+ - resourceName: resource5
+ resourceType: VF
+ trigger_policy: a-policy-that-does-not-exist
+ timeout: 60
diff --git a/controlloop/common/eventmanager/src/test/resources/notutf8.yaml b/controlloop/common/eventmanager/src/test/resources/notutf8.yaml
new file mode 100644
index 000000000..c2366a1cd
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/notutf8.yaml
Binary files differ
diff --git a/controlloop/common/eventmanager/src/test/resources/string.yaml b/controlloop/common/eventmanager/src/test/resources/string.yaml
new file mode 100644
index 000000000..dc03f8041
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/string.yaml
@@ -0,0 +1 @@
+string: hello
diff --git a/controlloop/common/eventmanager/src/test/resources/testSOactor.yaml b/controlloop/common/eventmanager/src/test/resources/testSOactor.yaml
new file mode 100644
index 000000000..0d5f3b1e2
--- /dev/null
+++ b/controlloop/common/eventmanager/src/test/resources/testSOactor.yaml
@@ -0,0 +1,62 @@
+controlLoop:
+ version: 1.0.0
+ controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
+ services:
+ - serviceName: service1
+ resources:
+ - resourceName: resource1
+ resourceType: VF
+ - resourceName: resource2
+ resourceType: VF
+ - resourceName: resource3
+ resourceType: VF
+ - resourceName: resource4
+ resourceType: VF
+ - resourceName: resource5
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 60
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy
+ description:
+ actor: SO
+ recipe: Restart
+ target:
+ type: VNF
+ retry: 1
+ timeout: 20
+ success: final_success
+ failure: unique-policy-id-2-rebuild
+ failure_timeout: unique-policy-id-2-rebuild
+ failure_retries: unique-policy-id-2-rebuild
+ failure_exception: final_failure_exception
+
+ - id: unique-policy-id-2-rebuild
+ name: Rebuild Policy
+ description:
+ actor: SO
+ recipe: Rebuild
+ target: VM
+ retry: 0
+ timeout: 10
+ success: final_success
+ failure: unique-policy-id-3-migrate
+ failure_timeout: unique-policy-id-3-migrate
+ failure_retries: unique-policy-id-3-migrate
+ failure_exception: final_failure_exception
+
+ - id: unique-policy-id-3-migrate
+ name: Migrate Policy
+ description:
+ actor: SO
+ recipe: Migrate
+ target: VM
+ retry: 0
+ timeout: 30
+ success: final_success
+ failure: final_failure
+ failure_timeout: final_failure_timeout
+ failure_retries: final_failure_retries
+ failure_exception: final_failure_exception