aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/controller-usecases
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-03-09 15:15:05 -0400
committerJim Hahn <jrh3@att.com>2020-03-12 12:12:48 -0400
commitaa8225b5211485b3c1150c21e51fd3e93b7f31d3 (patch)
tree922b78d2c8a4c657d4c32604a0b73df40d2fb330 /controlloop/common/controller-usecases
parent0e658768fc0573bf6acf7f849a49c9da98c8e47f (diff)
Retool rules tests
Extracted common code from various XxxBaseTest classes into: - Topics class to manage messages for test topics - HttpClients class to manage HttpClient objects for tests - Simulators class to manage simulators for tests - Rules class to manage start up and shutdown of rules Merged remaining code from XxxBaseTest classes into a single class. Modified the Frankfurt and Usescases tests to subclass from this new class and specify just the relevant tests to be executed. Issue-ID: POLICY-2385 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: Iaf83c9d2b205a4c343e0dde23ec86508f5773693
Diffstat (limited to 'controlloop/common/controller-usecases')
-rw-r--r--controlloop/common/controller-usecases/pom.xml6
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java515
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesTest.java120
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java211
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java185
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java157
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/config/usecases-controller.properties9
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-compliant-vcpe.json37
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-legacy-vcpe.json9
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.appc.success.json22
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.1.json16
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.2.json16
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.3.json17
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vfw/tosca-compliant-vfw.json40
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vfw/tosca-vfw.json9
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vfw/vfw.appc.success.json17
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vfw/vfw.onset.json17
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vlb/tosca-compliant-vlb.json48
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vlb/tosca-vlb.json9
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/vlb/vlb.onset.json16
20 files changed, 129 insertions, 1347 deletions
diff --git a/controlloop/common/controller-usecases/pom.xml b/controlloop/common/controller-usecases/pom.xml
index fb29a81c7..6c69e7f89 100644
--- a/controlloop/common/controller-usecases/pom.xml
+++ b/controlloop/common/controller-usecases/pom.xml
@@ -180,9 +180,9 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>org.onap.policy.models.policy-models-interactions</groupId>
- <artifactId>simulators</artifactId>
- <version>${policy.models.version}</version>
+ <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
+ <artifactId>rules-test</artifactId>
+ <version>${project.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java
deleted file mode 100644
index 66ad32462..000000000
--- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.awaitility.Awaitility.await;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import lombok.Getter;
-import org.apache.commons.lang3.StringUtils;
-import org.kie.api.event.rule.AfterMatchFiredEvent;
-import org.kie.api.event.rule.BeforeMatchFiredEvent;
-import org.kie.api.event.rule.DefaultAgendaEventListener;
-import org.kie.api.event.rule.DefaultRuleRuntimeEventListener;
-import org.kie.api.event.rule.MatchCancelledEvent;
-import org.kie.api.event.rule.MatchCreatedEvent;
-import org.kie.api.event.rule.ObjectDeletedEvent;
-import org.kie.api.event.rule.ObjectInsertedEvent;
-import org.kie.api.event.rule.ObjectUpdatedEvent;
-import org.kie.api.event.rule.RuleRuntimeEventListener;
-import org.kie.api.runtime.KieSession;
-import org.onap.policy.common.endpoints.event.comm.Topic;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
-import org.onap.policy.drools.persistence.SystemPersistence;
-import org.onap.policy.drools.persistence.SystemPersistenceConstants;
-import org.onap.policy.drools.protocol.coders.EventProtocolCoderConstants;
-import org.onap.policy.drools.system.PolicyController;
-import org.onap.policy.drools.system.PolicyControllerConstants;
-import org.onap.policy.drools.system.PolicyEngine;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.drools.util.KieUtils;
-import org.onap.policy.drools.utils.PropertyUtil;
-import org.onap.policy.drools.utils.logging.LoggerUtil;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.onap.policy.simulators.Util;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Use Cases Tests Framework.
- */
-public abstract class UsecasesBase {
-
- private static final Logger logger = LoggerFactory.getLogger(UsecasesBase.class);
- private static final StandardCoder coder = new StandardCoder();
-
- /**
- * PDP-D Engine.
- */
- protected static final PolicyEngine pdpD = PolicyEngineConstants.getManager();
-
- /**
- * PDP-D Configuration Repository.
- */
- protected static final SystemPersistence repo = SystemPersistenceConstants.getManager();
-
- /**
- * Usecases controller and session name.
- */
- protected static final String USECASES = "usecases";
-
- /**
- * Usecases controller.
- */
- protected static PolicyController usecases;
-
- /*
- * Canonical Topic Names.
- */
- protected static final String DCAE_TOPIC = "DCAE_TOPIC";
- protected static final String APPC_LCM_WRITE_TOPIC = "APPC-LCM-WRITE";
- protected static final String POLICY_CL_MGT_TOPIC = "POLICY-CL-MGT";
- protected static final String APPC_LCM_READ_TOPIC = "APPC-LCM-READ";
- protected static final String APPC_CL_TOPIC = "APPC-CL";
-
- /**
- * Sets up overall logging.
- */
- protected static void setupLogging() {
- LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "WARN");
- LoggerUtil.setLevel("org.eclipse.jetty", "WARN");
- LoggerUtil.setLevel("org.onap.policy.controlloop", "INFO");
- LoggerUtil.setLevel("network", "INFO");
- }
-
- /**
- * Sets up Drools Logging for events of interest.
- */
- protected static void setupDroolsLogging() {
- KieSession session =
- PolicyControllerConstants.getFactory().get(USECASES)
- .getDrools().getContainer() .getPolicySession(USECASES).getKieSession();
-
- session.addEventListener(new RuleListenerLogger());
- session.addEventListener(new AgendaListenerLogger());
- }
-
- /**
- * Sets up Simulators for use case testing.
- */
- protected static void setupSimulators() throws InterruptedException {
- Util.buildAaiSim();
- Util.buildSoSim();
- Util.buildVfcSim();
- Util.buildGuardSim();
- Util.buildSdncSim();
- }
-
- /**
- * Returns the runtime Control Loop Parameters associated with a Tosca Policy.
- */
- protected ControlLoopParams clParameters(ToscaPolicy policy) {
- return usecases
- .getDrools()
- .facts(USECASES, ControlLoopParams.class).stream()
- .filter((params) -> params.getToscaPolicy() == policy)
- .findFirst()
- .get();
- }
-
- protected ToscaPolicy getPolicyFromResource(String resourcePath, String policyName) throws CoderException {
- String policyJson = ResourceUtils.getResourceAsString(resourcePath);
- ToscaServiceTemplate serviceTemplate = coder.decode(policyJson, ToscaServiceTemplate.class);
- ToscaPolicy policy = serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName);
- assertNotNull(policy);
-
- /*
- * name and version are used within a drl. api component and drools core will ensure that these
- * are populated.
- */
- if (StringUtils.isBlank(policy.getName())) {
- policy.setName(policyName);
- }
-
- if (StringUtils.isBlank(policy.getVersion())) {
- policy.setVersion(policy.getTypeVersion());
- }
-
- return serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName);
- }
-
- protected ToscaPolicy getPolicyFromFile(String policyPath) throws IOException, CoderException {
- String rawPolicy = new String(Files.readAllBytes(Paths.get(policyPath)));
- return coder.decode(rawPolicy, ToscaPolicy.class);
- }
-
- private ToscaPolicy setupPolicy(ToscaPolicy policy) throws InterruptedException {
- final KieObjectExpectedCallback policyTracker = new KieObjectInsertedExpectedCallback<>(policy);
- final KieObjectExpectedCallback paramsTracker = new KieClassInsertedExpectedCallback<>(ControlLoopParams.class);
-
- usecases.getDrools().offer(policy);
-
- assertTrue(policyTracker.isNotified());
- assertTrue(paramsTracker.isNotified());
-
- assertEquals(1, usecases.getDrools().facts(USECASES, ToscaPolicy.class).stream()
- .filter((anotherPolicy) -> anotherPolicy == policy).count());
-
- assertEquals(1, usecases.getDrools().facts(USECASES, ControlLoopParams.class).stream()
- .filter((params) -> params.getToscaPolicy() == policy).count());
- return policy;
- }
-
- /**
- * Installs a policy from policy/models (examples) repo.
- */
- protected ToscaPolicy setupPolicyFromResource(String resourcePath, String policyName)
- throws CoderException, InterruptedException {
- return setupPolicy(getPolicyFromResource(resourcePath, policyName));
- }
-
-
- /**
- * Installs a given policy.
- */
- protected ToscaPolicy setupPolicyFromFile(String policyPath)
- throws IOException, CoderException, InterruptedException {
- return setupPolicy(getPolicyFromFile(policyPath));
- }
-
- /**
- * Deletes a policy.
- */
- protected void deletePolicy(ToscaPolicy policy) throws InterruptedException {
- ControlLoopParams clParams = clParameters(policy);
- assertNotNull(clParams);
-
- final KieObjectExpectedCallback policyTracker = new KieObjectDeletedExpectedCallback<>(policy);
- final KieObjectExpectedCallback clParamsTracker = new KieObjectDeletedExpectedCallback<>(clParams);
-
- usecases.getDrools().delete(USECASES, policy);
- assertTrue(policyTracker.isNotified());
- assertTrue(clParamsTracker.isNotified());
-
- assertEquals(0,
- usecases
- .getDrools()
- .facts(USECASES, ToscaPolicy.class).stream()
- .filter((anotherPolicy) -> anotherPolicy == policy)
- .count());
-
- assertEquals(0,
- usecases
- .getDrools()
- .facts(USECASES, ControlLoopParams.class).stream()
- .filter((params) -> params.getPolicyName() == policy.getName())
- .count());
- }
-
- /**
- * Prepare a PDP-D to test the Use Cases.
- */
- protected static void preparePdpD() throws IOException {
- KieUtils.installArtifact(
- Paths.get("src/main/resources/META-INF/kmodule.xml").toFile(),
- Paths.get("src/test/resources/usecases.pom").toFile(),
- "src/main/resources/org/onap/policy/controlloop/",
- Collections.singletonList(Paths.get("src/main/resources/usecases.drl").toFile()));
-
- repo.setConfigurationDir("src/test/resources/config");
- PropertyUtil.setSystemProperties(repo.getSystemProperties("controlloop"));
- pdpD.setEnvironment(repo.getEnvironmentProperties("controlloop.properties"));
- pdpD.configure(new Properties());
-
- usecases = pdpD.createPolicyController(USECASES, repo.getControllerProperties(USECASES));
- pdpD.start();
-
- setupDroolsLogging();
- }
-
- /**
- * Stop PDP-D.
- */
- protected static void stopPdpD() {
- PolicyControllerConstants.getFactory().shutdown(USECASES);
- pdpD.stop();
- }
-
- /**
- * Stop Simulators.
- */
- protected static void stopSimulators() {
- HttpServletServerFactoryInstance.getServerFactory().destroy();
- }
-
- /**
- * Creates a Topic Sink Callback tracker.
- */
- protected <T> TopicCallback<T> createTopicSinkCallback(String topicName, Class<T> clazz) {
- return new TopicCallback(TopicEndpointManager.getManager().getNoopTopicSink(topicName), clazz);
- }
-
- /**
- * Creates a Topic Source Callback tracker.
- */
- protected <T> TopicCallback<T> createTopicSourceCallback(String topicName, Class<T> clazz) {
- return new TopicCallback(TopicEndpointManager.getManager().getNoopTopicSource(topicName), clazz);
- }
-
- /**
- * Injects a message on a Topic Source.
- */
- protected void injectOnTopic(String topicName, Path onsetPath) throws IOException {
- TopicEndpointManager
- .getManager()
- .getNoopTopicSource(topicName)
- .offer(new String(Files.readAllBytes(onsetPath)));
- }
-
- /**
- * Waits for LOCK acquisition and getting a Permit from PDP-X to proceed.
- */
- protected void waitForLockAndPermit(ToscaPolicy policy, TopicCallback<VirtualControlLoopNotification> policyClMgt) {
- String policyName = policy.getIdentifier().getName();
-
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.ACTIVE, policyClMgt.getMessages().peek().getNotification());
- assertEquals(policyName + ".EVENT", policyClMgt.getMessages().remove().getPolicyName());
-
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION,
- policyClMgt.getMessages().peek().getNotification());
- assertEquals(policyName + ".EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED",
- policyClMgt.getMessages().remove().getPolicyName());
-
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION,
- policyClMgt.getMessages().peek().getNotification());
- assertEquals(policyName + ".GUARD.RESPONSE",
- policyClMgt.getMessages().remove().getPolicyName());
-
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION,
- policyClMgt.getMessages().peek().getNotification());
- assertEquals(policyName + ".EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED",
- policyClMgt.getMessages().remove().getPolicyName());
- }
-
- /**
- * Waits for a FINAL SUCCESS transaction notification.
- */
- protected void waitForFinalSuccess(ToscaPolicy policy, TopicCallback<VirtualControlLoopNotification> policyClMgt) {
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, policyClMgt.getMessages().peek().getNotification());
- assertEquals(policy.getIdentifier().getName() + ".EVENT.MANAGER",
- policyClMgt.getMessages().remove().getPolicyName());
- }
-
- /**
- * Logs Modifications to Working Memory.
- */
- static class RuleListenerLogger implements RuleRuntimeEventListener {
- @Override
- public void objectInserted(ObjectInsertedEvent event) {
- String ruleName = (event.getRule() != null) ? event.getRule().getName() : "null";
- logger.info("RULE {}: inserted {}", ruleName, event.getObject());
- }
-
- @Override
- public void objectUpdated(ObjectUpdatedEvent event) {
- String ruleName = (event.getRule() != null) ? event.getRule().getName() : "null";
- logger.info("RULE {}: updated {}", ruleName, event.getObject());
-
- }
-
- @Override
- public void objectDeleted(ObjectDeletedEvent event) {
- String ruleName = (event.getRule() != null) ? event.getRule().getName() : "null";
- logger.info("RULE {}: deleted {}", ruleName, event.getOldObject());
- }
- }
-
- /**
- * Logs Rule Matches.
- */
- static class AgendaListenerLogger extends DefaultAgendaEventListener {
- @Override
- public void matchCreated(MatchCreatedEvent event) {
- logger.info("RULE {}: match created", event.getMatch().getRule().getName());
- }
-
- @Override
- public void matchCancelled(MatchCancelledEvent event) {
- logger.info("RULE {}: match cancelled", event.getMatch().getRule().getName());
- }
-
- @Override
- public void beforeMatchFired(BeforeMatchFiredEvent event) {
- logger.info("RULE {}: before match fired", event.getMatch().getRule().getName());
- }
-
- @Override
- public void afterMatchFired(AfterMatchFiredEvent event) {
- logger.info("RULE {}: after match fired", event.getMatch().getRule().getName());
- }
- }
-
- /**
- * Base Class to track Working Memory updates for objects of type T.
- */
- abstract class KieObjectExpectedCallback<T> extends DefaultRuleRuntimeEventListener {
- protected T subject;
-
- protected CountDownLatch countDownLatch = new CountDownLatch(1);
-
- public KieObjectExpectedCallback(T affected) {
- subject = affected;
- register();
- }
-
- public boolean isNotified() throws InterruptedException {
- return countDownLatch.await(9L, TimeUnit.SECONDS);
- }
-
- protected void callbacked() {
- unregister();
- countDownLatch.countDown();
- }
-
- public KieObjectExpectedCallback<T> register() {
- usecases.getDrools()
- .getContainer().getPolicySession(USECASES).getKieSession()
- .addEventListener(this);
- return this;
- }
-
- public KieObjectExpectedCallback<T> unregister() {
- usecases.getDrools()
- .getContainer().getPolicySession(USECASES).getKieSession()
- .removeEventListener(this);
- return this;
- }
- }
-
- /**
- * Tracks inserts in Working Memory for an object of type T.
- */
- class KieObjectInsertedExpectedCallback<T> extends KieObjectExpectedCallback {
- public KieObjectInsertedExpectedCallback(T affected) {
- super(affected);
- }
-
- @Override
- public void objectInserted(ObjectInsertedEvent event) {
- if (subject == event.getObject()) {
- callbacked();
- }
- }
- }
-
- /**
- * Tracks deletes in Working Memory of an object of type T.
- */
- class KieObjectDeletedExpectedCallback<T> extends KieObjectExpectedCallback {
- public KieObjectDeletedExpectedCallback(T affected) {
- super(affected);
- }
-
- @Override
- public void objectDeleted(ObjectDeletedEvent event) {
- if (subject == event.getOldObject()) {
- callbacked();
- }
- }
- }
-
- /**
- * Tracks inserts in Working Memory for any object of class T.
- */
- class KieClassInsertedExpectedCallback<T> extends KieObjectInsertedExpectedCallback {
- public KieClassInsertedExpectedCallback(Class<T> affected) {
- super(affected);
- }
-
- public void objectInserted(ObjectInsertedEvent event) {
- if (subject == event.getObject().getClass()) {
- callbacked();
- }
- }
- }
-
- /**
- * Tracks callbacks from topics.
- */
- class TopicCallback<T> implements TopicListener {
- protected final Topic topic;
- protected final Class<T> expectedClass;
-
- @Getter
- protected Queue<T> messages = new LinkedList<>();
-
- public TopicCallback(Topic topic, Class<T> expectedClass) {
- this.topic = topic;
- this.expectedClass = expectedClass;
- this.topic.register(this);
- }
-
- public TopicCallback register() {
- this.topic.register(this);
- return this;
- }
-
- public TopicCallback unregister() {
- this.topic.unregister(this);
- return this;
- }
-
- @Override
- public void onTopicEvent(CommInfrastructure comm, String topic, String event) {
- try {
- messages.add((T) EventProtocolCoderConstants.getManager().decode(
- usecases.getDrools().getGroupId(), usecases.getDrools().getArtifactId(), topic, event));
- } catch (Exception e) {
- logger.warn("invalid mapping in topic {} for event {}", topic, event, e);
- }
- }
- }
-}
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesTest.java
new file mode 100644
index 000000000..53c15a312
--- /dev/null
+++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesTest.java
@@ -0,0 +1,120 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * 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 lombok.Getter;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.onap.policy.controlloop.common.rules.test.BaseRuleTest;
+import org.onap.policy.controlloop.common.rules.test.Listener;
+import org.onap.policy.controlloop.common.rules.test.NamedRunner;
+import org.onap.policy.controlloop.common.rules.test.TestNames;
+import org.onap.policy.drools.utils.PropertyUtil;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.simulators.Util;
+
+/**
+ * Tests use case rules. Only a subset of available tests will work with these rules, thus
+ * a "FilterRunner" is used to filter out the other test cases.
+ *
+ * <p/>
+ * Note: this only runs tests whose names start with "testV" (e.g., testVcpe(),
+ * testVdns()).
+ */
+@RunWith(NamedRunner.class)
+@TestNames(prefixes = {"testV"})
+
+public class UsecasesTest extends BaseRuleTest {
+
+ @Getter()
+ protected static final String CONTROLLER_NAME = "usecases";
+
+ /**
+ * Sets up statics.
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() {
+ initStatics(CONTROLLER_NAME);
+
+ rules.configure("src/main/resources");
+ PropertyUtil.setSystemProperties(rules.getPdpdRepo().getSystemProperties("controlloop"));
+ rules.getPdpd().setEnvironment(rules.getPdpdRepo().getEnvironmentProperties("controlloop.properties"));
+
+ rules.start();
+ simulators.start(Util::buildAaiSim, Util::buildSoSim, Util::buildVfcSim, Util::buildGuardSim,
+ Util::buildSdncSim);
+ }
+
+ /**
+ * Cleans up statics.
+ */
+ @AfterClass
+ public static void tearDownAfterClass() {
+ finishStatics();
+ }
+
+ /**
+ * Sets up.
+ */
+ @Before
+ public void setUp() {
+ init();
+ }
+
+ /**
+ * Tears down.
+ */
+ @After
+ public void tearDown() {
+ finish();
+ }
+
+ @Override
+ protected void waitForLockAndPermit(ToscaPolicy policy, Listener<VirtualControlLoopNotification> policyClMgt) {
+ String policyName = policy.getIdentifier().getName();
+
+ policyClMgt.await(notif -> notif.getNotification() == ControlLoopNotificationType.ACTIVE
+ && (policyName + ".EVENT").equals(notif.getPolicyName()));
+
+ policyClMgt.await(notif -> notif.getNotification() == ControlLoopNotificationType.OPERATION
+ && (policyName + ".EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED")
+ .equals(notif.getPolicyName()));
+
+ policyClMgt.await(notif -> notif.getNotification() == ControlLoopNotificationType.OPERATION
+ && (policyName + ".GUARD.RESPONSE").equals(notif.getPolicyName())
+ && notif.getMessage().startsWith("Guard result") && notif.getMessage().endsWith("Permit"));
+
+ policyClMgt.await(notif -> notif.getNotification() == ControlLoopNotificationType.OPERATION
+ && (policyName + ".EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED")
+ .equals(notif.getPolicyName()));
+ }
+
+ @Override
+ protected VirtualControlLoopNotification waitForFinal(ToscaPolicy policy,
+ Listener<VirtualControlLoopNotification> policyClMgt, ControlLoopNotificationType finalType) {
+
+ return policyClMgt.await(notif -> notif.getNotification() == finalType
+ && (policy.getIdentifier().getName() + ".EVENT.MANAGER").equals(notif.getPolicyName()));
+ }
+}
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java
deleted file mode 100644
index ec3b50213..000000000
--- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.awaitility.Awaitility.await;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-
-/**
- * VCPE Use Case Tests.
- */
-public class VcpeTest extends UsecasesBase {
-
- /**
- * VCPE Tosca Policy File.
- */
- private static final String TOSCA_LEGACY_POLICY_VCPE = "src/test/resources/vcpe/tosca-legacy-vcpe.json";
- private static final String TOSCA_COMPLIANT_POLICY_VCPE = "src/test/resources/vcpe/tosca-compliant-vcpe.json";
-
- /*
- * VCPE Use case Messages.
- */
- private static final String APPC_SUCCESS = "src/test/resources/vcpe/vcpe.appc.success.json";
- private static final String ONSET_1 = "src/test/resources/vcpe/vcpe.onset.1.json";
- private static final String ONSET_2 = "src/test/resources/vcpe/vcpe.onset.2.json";
- private static final String ONSET_3 = "src/test/resources/vcpe/vcpe.onset.3.json";
-
- /*
- * Topic trackers used by the VCPE use case.
- */
- private TopicCallback<VirtualControlLoopNotification> policyClMgt;
- private TopicCallback<AppcLcmDmaapWrapper> appcLcmRead;
- private TopicCallback<AppcLcmDmaapWrapper> appcLcmWrite;
-
- /*
- * VCPE Tosca Policy.
- */
- private ToscaPolicy policy;
-
- /**
- * Prepare PDP-D Framework for testing.
- */
- @BeforeClass
- public static void prepareResouces() throws InterruptedException, CoderException, IOException {
- setupLogging();
- preparePdpD();
- setupSimulators();
- }
-
- /**
- * Take down the resources used by the test framework.
- */
- @AfterClass
- public static void takeDownResources() {
- stopPdpD();
- stopSimulators();
- }
-
- /**
- * Sunny day scenario for the VCPE use case.
- */
- public void sunnyDay() throws IOException {
-
- /* Inject an ONSET event over the DCAE topic */
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET_1));
-
- /* Wait to acquire a LOCK and a PDP-X PERMIT */
- waitForLockAndPermit(policy, policyClMgt);
-
- /* --- VCPE Operation Execution --- */
-
- /* Ensure that an APPC RESTART request was sent in response to the matching ONSET */
- await().until(() -> !appcLcmRead.getMessages().isEmpty());
- assertEquals("restart", appcLcmRead.getMessages().remove().getRpcName());
-
- /* Inject a 400 APPC Response Return over the APPC topic */
- injectOnTopic(APPC_LCM_WRITE_TOPIC, Paths.get(APPC_SUCCESS));
-
- /* Ensure that RESTART response is received */
- await().until(() -> !appcLcmWrite.getMessages().isEmpty());
- assertEquals("restart", appcLcmWrite.getMessages().peek().getRpcName());
- assertEquals(400, appcLcmWrite.getMessages().remove().getBody().getOutput().getStatus().getCode());
-
- /* --- VCPE Operation Completed --- */
-
- /* Ensure that the VCPE RESTART Operation is successfully completed */
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS, policyClMgt.getMessages().peek().getNotification());
- assertEquals(policy.getIdentifier().getName() + ".APPC.LCM.RESPONSE",
- policyClMgt.getMessages().remove().getPolicyName());
-
- /* --- VCPE Transaction Completed --- */
- waitForFinalSuccess(policy, policyClMgt);
- }
-
- /**
- * Sunny Day with Legacy Tosca Policy.
- */
- @Test
- public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VCPE);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * Sunny Day with Tosca Compliant Policy.
- */
- @Test
- public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VCPE);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * An ONSET flood prevention test that injects a few ONSETs at once.
- * It attempts to simulate the flooding behavior of the DCAE TCA microservice.
- * TCA could blast tenths or hundreds of ONSETs within sub-second intervals.
- */
- @Test
- public void onsetFloodPrevention() throws IOException, InterruptedException, CoderException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VCPE);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET_1));
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET_2));
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET_3));
-
- assertEquals(1, usecases.getDrools().facts(USECASES, VirtualControlLoopEvent.class).stream().count());
- assertEquals(1, usecases.getDrools().facts(USECASES, CanonicalOnset.class).stream().count());
- assertEquals(usecases.getDrools().facts(USECASES, CanonicalOnset.class).get(0),
- usecases.getDrools().facts(USECASES, VirtualControlLoopEvent.class).get(0));
-
- sunnyDay();
- }
-
- /**
- * Observe Topics.
- */
- @Before
- public void topicsRegistration() {
- policyClMgt = createTopicSinkCallback(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class);
- appcLcmRead = createTopicSinkCallback(APPC_LCM_READ_TOPIC, AppcLcmDmaapWrapper.class);
- appcLcmWrite = createTopicSourceCallback(APPC_LCM_WRITE_TOPIC, AppcLcmDmaapWrapper.class);
- }
-
- /**
- * Unregister Topic Callbacks.
- */
- @After
- public void topicsUnregistration() {
- if (policyClMgt != null) {
- policyClMgt.unregister();
- }
-
- if (appcLcmRead != null) {
- appcLcmRead.unregister();
- }
-
- if (appcLcmWrite != null) {
- appcLcmWrite.unregister();
- }
- }
-
- /**
- * Uninstall Policy.
- */
- @After
- public void uninstallPolicy() throws InterruptedException {
- assertEquals(2, usecases.getDrools().factCount(USECASES));
- if (policy != null) {
- deletePolicy(policy);
- }
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- }
-
-}
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java
deleted file mode 100644
index 8386b3028..000000000
--- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.awaitility.Awaitility.await;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.appc.Request;
-import org.onap.policy.appc.Response;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-
-/**
- * VFW Use Case Tests.
- */
-public class VfwTest extends UsecasesBase {
-
- /**
- * VFW Tosca Policy File.
- */
- private static final String TOSCA_LEGACY_POLICY_VFW = "src/test/resources/vfw/tosca-vfw.json";
- private static final String TOSCA_COMPLIANT_POLICY_VFW = "src/test/resources/vfw/tosca-compliant-vfw.json";
-
- /*
- * VFW Use case Messages.
- */
- private static final String APPC_SUCCESS = "src/test/resources/vfw/vfw.appc.success.json";
- private static final String ONSET = "src/test/resources/vfw/vfw.onset.json";
-
- /*
- * Topic trackers used by the VFW use case.
- */
- private TopicCallback<VirtualControlLoopNotification> policyClMgt;
- private TopicCallback<Response> appcClSource;
- private TopicCallback<Request> appcClSink;
-
- /*
- * VFW Tosca Policy.
- */
- private ToscaPolicy policy;
-
- /**
- * Prepare PDP-D Framework for testing.
- */
- @BeforeClass
- public static void prepareResouces() throws InterruptedException, IOException {
- setupLogging();
- preparePdpD();
- setupSimulators();
- }
-
- /**
- * Take down the resources used by the test framework.
- */
- @AfterClass
- public static void takeDownResources() {
- stopPdpD();
- stopSimulators();
- }
-
- /**
- * Sunny day scenario for the VFW use case.
- */
- private void sunnyDay() throws IOException {
-
- /* Inject an ONSET event over the DCAE topic */
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET));
-
- /* Wait to acquire a LOCK and a PDP-X PERMIT */
- waitForLockAndPermit(policy, policyClMgt);
-
- /* --- VFW Operation Execution --- */
-
- /* Ensure that an APPC RESTART request was sent in response to the matching ONSET */
- await().until(() -> !appcClSink.getMessages().isEmpty());
- assertEquals("ModifyConfig", appcClSink.getMessages().remove().getAction());
-
- /* Inject a 400 APPC Response Return over the APPC topic */
- injectOnTopic(APPC_CL_TOPIC, Paths.get(APPC_SUCCESS));
-
- /* Ensure that RESTART response is received */
- await().until(() -> !appcClSource.getMessages().isEmpty());
- assertEquals("SUCCESS", appcClSource.getMessages().remove().getStatus().getValue());
-
- /* --- VFW Operation Completed --- */
-
- /* Ensure that the VFW RESTART Operation is successfully completed */
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS,
- policyClMgt.getMessages().remove().getNotification());
-
- /* --- VFW Transaction Completed --- */
- waitForFinalSuccess(policy, policyClMgt);
- }
-
- /**
- * Sunny Day with Legacy Tosca Policy.
- */
- @Test
- public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VFW);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * Sunny Day with Tosca Compliant Policy.
- */
- @Test
- public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VFW);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * Observe Topics.
- */
- @Before
- public void topicsRegistration() {
- policyClMgt = createTopicSinkCallback(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class);
- appcClSink = createTopicSinkCallback(APPC_CL_TOPIC, Request.class);
- appcClSource = createTopicSourceCallback(APPC_CL_TOPIC, Response.class);
- }
-
- /**
- * Unregister Topic Callbacks.
- */
- @After
- public void topicsUnregistration() {
- if (policyClMgt != null) {
- policyClMgt.unregister();
- }
-
- if (appcClSource != null) {
- appcClSource.unregister();
- }
-
- if (appcClSink != null) {
- appcClSink.unregister();
- }
- }
-
- /**
- * Uninstall Policy.
- */
- @After
- public void uninstallPolicy() throws InterruptedException {
- assertEquals(2, usecases.getDrools().factCount(USECASES));
- if (policy != null) {
- deletePolicy(policy);
- }
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- }
-
-}
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java
deleted file mode 100644
index 73eeae882..000000000
--- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.awaitility.Awaitility.await;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-
-/**
- * VLB Use Case Tests.
- */
-public class VlbTest extends UsecasesBase {
-
- /**
- * VLB Tosca Policy File.
- */
- private static final String TOSCA_LEGACY_POLICY_VLB = "src/test/resources/vlb/tosca-vlb.json";
- private static final String TOSCA_COMPLIANT_POLICY_VLB = "src/test/resources/vlb/tosca-compliant-vlb.json";
-
- /*
- * VLB Use case Messages.
- */
- private static final String ONSET = "src/test/resources/vlb/vlb.onset.json";
-
- /*
- * Topic trackers used by the VLB use case.
- */
- private TopicCallback<VirtualControlLoopNotification> policyClMgt;
-
- /*
- * VLB Tosca Policy.
- */
- private ToscaPolicy policy;
-
- /**
- * Prepare PDP-D Framework for testing.
- */
- @BeforeClass
- public static void prepareResouces() throws InterruptedException, IOException {
- setupLogging();
- preparePdpD();
- setupSimulators();
- }
-
- /**
- * Take down the resources used by the test framework.
- */
- @AfterClass
- public static void takeDownResources() {
- stopPdpD();
- stopSimulators();
- }
-
- /**
- * Sunny day scenario for the VCPE use case.
- */
- private void sunnyDay() throws IOException {
-
- /* Inject an ONSET event over the DCAE topic */
- injectOnTopic(DCAE_TOPIC, Paths.get(ONSET));
-
- /* Wait to acquire a LOCK and a PDP-X PERMIT */
- waitForLockAndPermit(policy, policyClMgt);
-
- /* Ensure that the VLB SO Operation was successfully completed */
-
- await().until(() -> !policyClMgt.getMessages().isEmpty());
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS, policyClMgt.getMessages().peek().getNotification());
- assertEquals(policy.getIdentifier().getName() + ".SO.RESPONSE",
- policyClMgt.getMessages().remove().getPolicyName());
-
- /* --- VLB Transaction Completed --- */
- waitForFinalSuccess(policy, policyClMgt);
- }
-
- /**
- * Sunny Day with Legacy Tosca Policy.
- */
- @Test
- public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VLB);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * Sunny Day with Tosca Compliant Policy.
- */
- @Test
- public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException {
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VLB);
- assertEquals(2, usecases.getDrools().factCount(USECASES));
-
- sunnyDay();
- }
-
- /**
- * Observe Topics.
- */
- @Before
- public void topicsRegistration() {
- policyClMgt = createTopicSinkCallback(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class);
- }
-
- /**
- * Unregister Topic Callbacks.
- */
- @After
- public void topicsUnregistration() {
- if (policyClMgt != null) {
- policyClMgt.unregister();
- }
- }
-
- /**
- * Uninstall Policy.
- */
- @After
- public void uninstallPolicy() throws InterruptedException {
- assertEquals(2, usecases.getDrools().factCount(USECASES));
- if (policy != null) {
- deletePolicy(policy);
- }
- assertEquals(0, usecases.getDrools().factCount(USECASES));
- }
-
-}
diff --git a/controlloop/common/controller-usecases/src/test/resources/config/usecases-controller.properties b/controlloop/common/controller-usecases/src/test/resources/config/usecases-controller.properties
index 483b13ad7..a8d202cd5 100644
--- a/controlloop/common/controller-usecases/src/test/resources/config/usecases-controller.properties
+++ b/controlloop/common/controller-usecases/src/test/resources/config/usecases-controller.properties
@@ -26,9 +26,12 @@ rules.version=1.0.0
noop.source.topics=DCAE_TOPIC,APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP,POLICY-CL-MGT,APPC-LCM-READ,SDNR-CL,DCAE_CL_RSP
-noop.source.topics.DCAE_TOPIC.events=org.onap.policy.controlloop.CanonicalOnset,org.onap.policy.controlloop.CanonicalAbated
-noop.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalOnset.filter=[?($.closedLoopEventStatus == 'ONSET')]
-noop.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalAbated.filter=[?($.closedLoopEventStatus == 'ABATED')]
+noop.source.topics.DCAE_TOPIC.events=\
+ org.onap.policy.controlloop.CanonicalOnset,org.onap.policy.controlloop.CanonicalAbated
+noop.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalOnset.\
+ filter=[?($.closedLoopEventStatus == 'ONSET')]
+noop.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalAbated.\
+ filter=[?($.closedLoopEventStatus == 'ABATED')]
noop.source.topics.DCAE_TOPIC.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gson
noop.source.topics.APPC-CL.events=org.onap.policy.appc.Response,org.onap.policy.appc.Request
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-compliant-vcpe.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-compliant-vcpe.json
deleted file mode 100644
index 61fb8a648..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-compliant-vcpe.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "type": "onap.policies.controlloop.operational.common.Drools",
- "type_version": "1.0.0",
- "version": "1.0.0",
- "name": "operational.restart",
- "metadata": {
- "policy-id": "operational.restart"
- },
- "properties": {
- "id": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
- "timeout": 3600,
- "abatement": false,
- "trigger": "unique-policy-id-1-restart",
- "operations": [
- {
- "id": "unique-policy-id-1-restart",
- "description": "Restart the VM",
- "operation": {
- "actor": "APPC",
- "operation": "Restart",
- "target": {
- "targetType": "VM"
- }
- },
- "timeout": 1200,
- "retries": 3,
- "success": "final_success",
- "failure": "final_failure",
- "failure_timeout": "final_failure_timeout",
- "failure_retries": "final_failure_retries",
- "failure_exception": "final_failure_exception",
- "failure_guard": "final_failure_guard"
- }
- ],
- "controllerName": "usecases"
- }
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-legacy-vcpe.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-legacy-vcpe.json
deleted file mode 100644
index f42c07da9..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/tosca-legacy-vcpe.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "type": "onap.policies.controlloop.Operational",
- "type_version": "1.0.0",
- "properties": {
- "content": "controlLoop%3A%0A%20%20version%3A%202.0.0%0A%20%20controlLoopName%3A%20ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0A%20%20trigger_policy%3A%20unique-policy-id-1-restart%0A%20%20timeout%3A%203600%0A%20%20abatement%3A%20false%0A%20%0Apolicies%3A%0A%20%20-%20id%3A%20unique-policy-id-1-restart%0A%20%20%20%20name%3A%20Restart%20the%20VM%0A%20%20%20%20description%3A%0A%20%20%20%20actor%3A%20APPC%0A%20%20%20%20recipe%3A%20Restart%0A%20%20%20%20target%3A%0A%20%20%20%20%20%20type%3A%20VM%0A%20%20%20%20retry%3A%203%0A%20%20%20%20timeout%3A%201200%0A%20%20%20%20success%3A%20final_success%0A%20%20%20%20failure%3A%20final_failure%0A%20%20%20%20failure_timeout%3A%20final_failure_timeout%0A%20%20%20%20failure_retries%3A%20final_failure_retries%0A%20%20%20%20failure_exception%3A%20final_failure_exception%0A%20%20%20%20failure_guard%3A%20final_failure_guard"
- },
- "name": "vcpe",
- "version": "1.0.0"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.appc.success.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.appc.success.json
deleted file mode 100644
index b221b6b24..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.appc.success.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "body": {
- "output": {
- "common-header": {
- "timestamp": "2017-08-25T21:06:23.037Z",
- "api-ver": "5.00",
- "originator-id": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "request-id": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "sub-request-id": "1",
- "flags": {}
- },
- "status": {
- "code": 400,
- "message": "Restart Successful"
- }
- }
- },
- "version": "2.0",
- "rpc-name": "restart",
- "correlation-id": "664be3d2-6c12-4f4b-a3e7-c349acced200-1",
- "type": "response"
-}
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.1.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.1.json
deleted file mode 100644
index d08ee47cd..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.1.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.2.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.2.json
deleted file mode 100644
index b8c76514e..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.2.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "8cf3cd05-1218-4224-931b-601494ffe55b",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.3.json b/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.3.json
deleted file mode 100644
index 40f29b3cf..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vcpe/vcpe.onset.3.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
- "closedLoopAlarmStart": 1570722876324905,
- "closedLoopAlarmEnd": 1570722876324999,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "8cf3cd05-1218-4224-931b-601494ffe55b",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-compliant-vfw.json b/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-compliant-vfw.json
deleted file mode 100644
index c96b49c7e..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-compliant-vfw.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "type": "onap.policies.controlloop.operational.common.Drools",
- "type_version": "1.0.0",
- "name": "operational.modifyconfig",
- "version": "1.0.0",
- "metadata": {
- "policy-id": "operational.modifyconfig"
- },
- "properties": {
- "id": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",
- "timeout": 60,
- "abatement": false,
- "trigger": "unique-policy-id-1-modifyConfig",
- "operations": [
- {
- "id": "unique-policy-id-1-modifyConfig",
- "description": "Modify the packet generator",
- "operation": {
- "actor": "APPC",
- "operation": "ModifyConfig",
- "target": {
- "targetType": "VNF",
- "entityIds": {
- "resourceID": "bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38"
- }
- }
- },
- "timeout": 300,
- "retries": 0,
- "success": "final_success",
- "failure": "final_failure",
- "failure_timeout": "final_failure_timeout",
- "failure_retries": "final_failure_retries",
- "failure_exception": "final_failure_exception",
- "failure_guard": "final_failure_guard"
- }
- ],
- "controllerName": "usecases"
- }
-}
diff --git a/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-vfw.json b/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-vfw.json
deleted file mode 100644
index 5d1e35277..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vfw/tosca-vfw.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "type": "onap.policies.controlloop.Operational",
- "type_version": "1.0.0",
- "properties": {
- "content": "controlLoop%3A%0A%20%20version%3A%202.0.0%0A%20%20controlLoopName%3A%20ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0A%20%20services%3A%0A%20%20%20%20-%20serviceInvariantUUID%3A%20f6937c86-584c-47ae-ad29-8d41d6f0cc7c%0A%20%20%20%20%20%20serviceUUID%3A%207be584e2-0bb2-4126-adaf-ced2c77ca0b3%0A%20%20%20%20%20%20serviceName%3A%20Service_Ete_Name7ba1fbde-6187-464a-a62d-d9dd25bdf4e8%0A%20%20trigger_policy%3A%20unique-policy-id-1-modifyConfig%0A%20%20timeout%3A%2060%0A%20%20abatement%3A%20false%0A%20%0Apolicies%3A%0A%20%20-%20id%3A%20unique-policy-id-1-modifyConfig%0A%20%20%20%20name%3A%20modify%20packet%20gen%20config%0A%20%20%20%20description%3A%0A%20%20%20%20actor%3A%20APPC%0A%20%20%20%20recipe%3A%20ModifyConfig%0A%20%20%20%20target%3A%0A%20%20%20%20%20%20resourceID%3A%20bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38%0A%20%20%20%20%20%20type%3A%20VNF%0A%20%20%20%20retry%3A%200%0A%20%20%20%20timeout%3A%2030%0A%20%20%20%20success%3A%20final_success%0A%20%20%20%20failure%3A%20final_failure%0A%20%20%20%20failure_timeout%3A%20final_failure_timeout%0A%20%20%20%20failure_retries%3A%20final_failure_retries%0A%20%20%20%20failure_exception%3A%20final_failure_exception%0A%20%20%20%20failure_guard%3A%20final_failure_guard"
- },
- "name": "vfw",
- "version": "1.0.0"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.appc.success.json b/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.appc.success.json
deleted file mode 100644
index 618b70537..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.appc.success.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "CommonHeader": {
- "TimeStamp": 1506051879001,
- "APIver": "1.01",
- "RequestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65",
- "SubRequestID": "1",
- "RequestTrack": [],
- "Flags": []
- },
- "Status": {
- "Code": 400,
- "Value": "SUCCESS"
- },
- "Payload": {
- "generic-vnf.vnf-id": "jimmy-test-vnf2"
- }
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.onset.json b/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.onset.json
deleted file mode 100644
index 7782867a1..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vfw/vfw.onset.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopEventClient": "microservice.stringmatcher",
- "closedLoopEventStatus": "ONSET",
- "requestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-name",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-name": "fw0002vm002fw002",
- "vserver.vserver-name": "OzVServer"
- },
- "from": "DCAE",
- "version": "1.0.2"
-}
diff --git a/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-compliant-vlb.json b/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-compliant-vlb.json
deleted file mode 100644
index 0ddd63006..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-compliant-vlb.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "type": "onap.policies.controlloop.operational.common.Drools",
- "type_version": "1.0.0",
- "name": "operational.scaleout",
- "version": "1.0.0",
- "metadata": {
- "policy-id": "operational.scaleout"
- },
- "properties": {
- "id": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
- "timeout": 1200,
- "abatement": false,
- "trigger": "unique-policy-id-1-scale-up",
- "operations": [
- {
- "id": "unique-policy-id-1-scale-up",
- "description": "Create a new VF Module",
- "operation": {
- "actor": "SO",
- "operation": "VF Module Create",
- "target": {
- "targetType": "VFMODULE",
- "entityIds": {
- "modelInvariantId": "e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e",
- "modelVersionId": "94b18b1d-cc91-4f43-911a-e6348665f292",
- "modelName": "VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0",
- "modelVersion": 1,
- "modelCustomizationId": "47958575-138f-452a-8c8d-d89b595f8164"
- }
- },
- "payload": {
- "requestParameters": "{\"usePreload\":true,\"userParams\":[]}",
- "configurationParameters": "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\",\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\",\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]"
- }
- },
- "timeout": 1200,
- "retries": 0,
- "success": "final_success",
- "failure": "final_failure",
- "failure_timeout": "final_failure_timeout",
- "failure_retries": "final_failure_retries",
- "failure_exception": "final_failure_exception",
- "failure_guard": "final_failure_guard"
- }
- ],
- "controllerName": "usecases"
- }
-}
diff --git a/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-vlb.json b/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-vlb.json
deleted file mode 100644
index 5147d9922..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vlb/tosca-vlb.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "type": "onap.policies.controlloop.Operational",
- "type_version": "1.0.0",
- "properties": {
- "content": "controlLoop%3A%0A%20%20version%3A%202.0.0%0A%20%20controlLoopName%3A%20ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0A%20%20services%3A%0A%20%20%20%20-%20serviceName%3A%20d4738992-6497-4dca-9db9%0A%20%20%20%20%20%20serviceInvariantUUID%3A%20dc112d6e-7e73-4777-9c6f-1a7fb5fd1b6f%0A%20%20%20%20%20%20serviceUUID%3A%202eea06c6-e1d3-4c3a-b9c4-478c506eeedf%0A%20%20trigger_policy%3A%20unique-policy-id-1-scale-up%0A%20%20timeout%3A%2060%0A%0Apolicies%3A%0A%20%20-%20id%3A%20unique-policy-id-1-scale-up%0A%20%20%20%20name%3A%20Create%20a%20new%20VF%20Module%0A%20%20%20%20description%3A%0A%20%20%20%20actor%3A%20SO%0A%20%20%20%20recipe%3A%20VF%20Module%20Create%0A%20%20%20%20target%3A%0A%20%20%20%20%20%20type%3A%20VFMODULE%0A%20%20%20%20%20%20modelInvariantId%3A%20e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e%0A%20%20%20%20%20%20modelVersionId%3A%2094b18b1d-cc91-4f43-911a-e6348665f292%0A%20%20%20%20%20%20modelName%3A%20VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0%0A%20%20%20%20%20%20modelVersion%3A%201%0A%20%20%20%20%20%20modelCustomizationId%3A%2047958575-138f-452a-8c8d-d89b595f8164%0A%20%20%20%20payload%3A%0A%20%20%20%20%20%20requestParameters%3A%20%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A%20%20%20%20%20%20configurationParameters%3A%20%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B9%5D%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B16%5D%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B23%5D%22%7D%5D%27%0A%20%20%20%20retry%3A%200%0A%20%20%20%20timeout%3A%2030%0A%20%20%20%20success%3A%20final_success%0A%20%20%20%20failure%3A%20final_failure%0A%20%20%20%20failure_timeout%3A%20final_failure_timeout%0A%20%20%20%20failure_retries%3A%20final_failure_retries%0A%20%20%20%20failure_exception%3A%20final_failure_exception%0A%20%20%20%20failure_guard%3A%20final_failure_guard%0A"
- },
- "name": "vlb",
- "version": "1.0.0"
-} \ No newline at end of file
diff --git a/controlloop/common/controller-usecases/src/test/resources/vlb/vlb.onset.json b/controlloop/common/controller-usecases/src/test/resources/vlb/vlb.onset.json
deleted file mode 100644
index 3360c0abb..000000000
--- a/controlloop/common/controller-usecases/src/test/resources/vlb/vlb.onset.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
- "closedLoopAlarmStart": 1484677482204798,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6",
- "target_type": "VNF",
- "target": "vserver.vserver-name",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "vserver.vserver-name": "OzVServer"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file