summaryrefslogtreecommitdiffstats
path: root/controlloop/common/rules-test/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/common/rules-test/src/main')
-rw-r--r--controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseTest.java (renamed from controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseRuleTest.java)130
-rw-r--r--controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/DroolsRuleTest.java97
-rw-r--r--controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/Rules.java5
3 files changed, 165 insertions, 67 deletions
diff --git a/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseRuleTest.java b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseTest.java
index 7c34fc875..725057661 100644
--- a/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseRuleTest.java
+++ b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/BaseTest.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.UUID;
-import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import lombok.AccessLevel;
@@ -33,19 +32,19 @@ import org.junit.Test;
import org.onap.policy.appc.Request;
import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
import org.onap.policy.common.utils.coder.Coder;
+import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.coder.StandardCoderInstantAsMillis;
import org.onap.policy.controlloop.ControlLoopNotificationType;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2;
-import org.onap.policy.drools.system.PolicyController;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.sdnr.PciMessage;
/**
* Superclass used for rule tests.
*/
-public abstract class BaseRuleTest {
+public abstract class BaseTest {
private static final String APPC_RESTART_OP = "restart";
private static final String APPC_MODIFY_CONFIG_OP = "ModifyConfig";
@@ -114,8 +113,9 @@ public abstract class BaseRuleTest {
/*
* Coders used to decode requests and responses.
*/
- private static final Coder APPC_LEGACY_CODER = new StandardCoderInstantAsMillis();
- private static final Coder APPC_LCM_CODER = new StandardCoder();
+ protected static final Coder APPC_LEGACY_CODER = new StandardCoderInstantAsMillis();
+ protected static final Coder APPC_LCM_CODER = new StandardCoder();
+ protected static final Coder POLICY_CL_MGT_CODER = new PolicyClMgtCoder();
/*
* Coders used to decode requests and responses.
@@ -123,10 +123,9 @@ public abstract class BaseRuleTest {
private static final Coder SDNR_CODER = new StandardCoder();
// these may be overridden by junit tests
- private static Function<String, Rules> ruleMaker = Rules::new;
- private static Supplier<HttpClients> httpClientMaker = HttpClients::new;
- private static Supplier<Simulators> simMaker = Simulators::new;
- private static Supplier<Topics> topicMaker = Topics::new;
+ protected static Supplier<HttpClients> httpClientMaker = HttpClients::new;
+ protected static Supplier<Simulators> simMaker = Simulators::new;
+ protected static Supplier<Topics> topicMaker = Topics::new;
protected static Rules rules;
protected static HttpClients httpClients;
@@ -134,7 +133,7 @@ public abstract class BaseRuleTest {
// used to inject and wait for messages
@Getter(AccessLevel.PROTECTED)
- private Topics topics;
+ protected static Topics topics;
// used to wait for messages on SINK topics
protected Listener<VirtualControlLoopNotification> policyClMgt;
@@ -142,21 +141,15 @@ public abstract class BaseRuleTest {
protected Listener<AppcLcmDmaapWrapper> appcLcmRead;
protected Listener<PciMessage> sdnrClSink;
- protected PolicyController controller;
-
/*
* Tosca Policy that was loaded.
*/
protected ToscaPolicy policy;
-
/**
* Initializes {@link #rules}, {@link #httpClients}, and {@link #simulators}.
- *
- * @param controllerName the rule controller name
*/
- public static void initStatics(String controllerName) {
- rules = ruleMaker.apply(controllerName);
+ public static void initStatics() {
httpClients = httpClientMaker.get();
simulators = simMaker.get();
}
@@ -167,7 +160,6 @@ public abstract class BaseRuleTest {
public static void finishStatics() {
httpClients.destroy();
simulators.destroy();
- rules.destroy();
}
/**
@@ -175,7 +167,6 @@ public abstract class BaseRuleTest {
*/
public void init() {
topics = topicMaker.get();
- controller = rules.getController();
}
/**
@@ -183,7 +174,6 @@ public abstract class BaseRuleTest {
*/
public void finish() {
topics.destroy();
- rules.resetFacts();
}
// Service123 (i.e., Policy with multiple operations)
@@ -193,17 +183,14 @@ public abstract class BaseRuleTest {
*/
@Test
public void testService123Compliant() {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcLcmRead = topics.createListener(APPC_LCM_READ_TOPIC, AppcLcmDmaapWrapper.class, APPC_LCM_CODER);
-
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(SERVICE123_TOSCA_COMPLIANT_POLICY);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(SERVICE123_TOSCA_COMPLIANT_POLICY);
// inject an ONSET event over the DCAE topic
topics.inject(DCAE_TOPIC, SERVICE123_ONSET);
-
/* Wait to acquire a LOCK and a PDP-X PERMIT */
+
waitForLockAndPermit(policy, policyClMgt);
// restart request should be sent and fail four times (i.e., because retry=3)
@@ -213,23 +200,16 @@ public abstract class BaseRuleTest {
topics.inject(APPC_LCM_WRITE_TOPIC, SERVICE123_APPC_RESTART_FAILURE,
appcreq.getBody().getInput().getCommonHeader().getSubRequestId());
}
-
// rebuild request should be sent and fail once
AppcLcmDmaapWrapper appcreq = appcLcmRead.await(req -> "rebuild".equals(req.getRpcName()));
-
topics.inject(APPC_LCM_WRITE_TOPIC, SERVICE123_APPC_REBUILD_FAILURE,
appcreq.getBody().getInput().getCommonHeader().getSubRequestId());
-
// migrate request should be sent and succeed
appcreq = appcLcmRead.await(req -> "migrate".equals(req.getRpcName()));
-
topics.inject(APPC_LCM_WRITE_TOPIC, SERVICE123_APPC_MIGRATE_SUCCESS,
appcreq.getBody().getInput().getCommonHeader().getSubRequestId());
-
/* --- Operation Completed --- */
-
waitForOperationSuccess();
-
/* --- Transaction Completed --- */
waitForFinalSuccess(policy, policyClMgt);
}
@@ -247,12 +227,10 @@ public abstract class BaseRuleTest {
*/
@Test
public void testDuplicatesEvents() {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcLcmRead = topics.createListener(APPC_LCM_READ_TOPIC, AppcLcmDmaapWrapper.class, APPC_LCM_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(DUPLICATES_TOSCA_COMPLIANT_POLICY);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(DUPLICATES_TOSCA_COMPLIANT_POLICY);
final long initCount = getCreateCount();
@@ -439,12 +417,11 @@ public abstract class BaseRuleTest {
* @param operation expected APPC operation request
*/
protected void appcLcmSunnyDay(String policyFile, List<String> onsetFiles, String operation) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcLcmRead = topics.createListener(APPC_LCM_READ_TOPIC, AppcLcmDmaapWrapper.class, APPC_LCM_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
+
// inject several ONSET events over the DCAE topic
for (String onsetFile : onsetFiles) {
@@ -482,12 +459,10 @@ public abstract class BaseRuleTest {
* @param operation expected APPC operation request
*/
protected void appcLegacySunnyDay(String policyFile, String onsetFile, String operation) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcClSink = topics.createListener(APPC_CL_TOPIC, Request.class, APPC_LEGACY_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -523,12 +498,10 @@ public abstract class BaseRuleTest {
* @param checkOperation flag to determine whether or not to wait for operation timeout
*/
protected void appcLegacyRainyDay(String policyFile, String onsetFile, String operation) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcClSink = topics.createListener(APPC_CL_TOPIC, Request.class, APPC_LEGACY_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -563,12 +536,10 @@ public abstract class BaseRuleTest {
* @param operation expected APPC operation request
*/
protected void appcLegacyRainyDayNoResponse(String policyFile, String onsetFile, String operation) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
appcClSink = topics.createListener(APPC_CL_TOPIC, Request.class, APPC_LEGACY_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -597,13 +568,10 @@ public abstract class BaseRuleTest {
* @param operation expected SDNR operation request
*/
protected void sdnrSunnyDay(String policyFile, String onsetFile, String successFile, String operation) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC,
- VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
sdnrClSink = topics.createListener(SDNR_CL_TOPIC, PciMessage.class, SDNR_CODER);
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -637,11 +605,9 @@ public abstract class BaseRuleTest {
* @param operation expected APPC operation request
*/
protected void httpSunnyDay(String policyFile, String onsetFile) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -665,11 +631,9 @@ public abstract class BaseRuleTest {
* @param operation expected APPC operation request
*/
protected void httpRainyDay(String policyFile, String onsetFile) {
- policyClMgt = topics.createListener(POLICY_CL_MGT_TOPIC, VirtualControlLoopNotification.class, controller);
+ policyClMgt = createNoficationTopicListener();
- assertEquals(0, controller.getDrools().factCount(rules.getControllerName()));
- policy = rules.setupPolicyFromFile(policyFile);
- assertEquals(2, controller.getDrools().factCount(rules.getControllerName()));
+ policy = checkPolicy(policyFile);
/* Inject an ONSET event over the DCAE topic */
topics.inject(DCAE_TOPIC, onsetFile);
@@ -740,4 +704,38 @@ public abstract class BaseRuleTest {
*/
protected abstract VirtualControlLoopNotification waitForFinal(ToscaPolicy policy,
Listener<VirtualControlLoopNotification> policyClMgt, ControlLoopNotificationType finalType);
+
+ /**
+ * Returns ToscaPolicy from File.
+ *
+ * @param fileName a path name
+ * @return ToscaPolicy
+ */
+ protected ToscaPolicy checkPolicy(String fileName) {
+ try {
+ return Rules.getPolicyFromFile(fileName);
+ } catch (CoderException e) {
+ throw new IllegalArgumentException(fileName, e);
+ }
+ }
+
+ /**
+ * Creates a Coder for PolicyClMgt from StandardCoder.
+ *
+ */
+ public static class PolicyClMgtCoder extends StandardCoder {
+ public PolicyClMgtCoder() {
+ super(org.onap.policy.controlloop.util.Serialization.gson,
+ org.onap.policy.controlloop.util.Serialization.gsonPretty);
+ }
+ }
+
+ /**
+ * Returns Listener from createListner based on Coder.
+ * @return the Listener
+ */
+ protected Listener<VirtualControlLoopNotification> createNoficationTopicListener() {
+ return topics.createListener(POLICY_CL_MGT_TOPIC,
+ VirtualControlLoopNotification.class, POLICY_CL_MGT_CODER);
+ }
}
diff --git a/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/DroolsRuleTest.java b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/DroolsRuleTest.java
new file mode 100644
index 000000000..a57395cb6
--- /dev/null
+++ b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/DroolsRuleTest.java
@@ -0,0 +1,97 @@
+/*-
+ * ============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.common.rules.test;
+
+import java.util.function.Function;
+import org.onap.policy.controlloop.ControlLoopNotificationType;
+import org.onap.policy.controlloop.VirtualControlLoopNotification;
+import org.onap.policy.drools.system.PolicyController;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+
+/**
+ * Superclass used for rule tests.
+ */
+public abstract class DroolsRuleTest extends BaseTest {
+
+ // these may be overridden by junit tests
+ private static Function<String, Rules> ruleMaker = Rules::new;
+
+ protected static Rules rules;
+
+ protected PolicyController controller;
+
+ /**
+ * Initializes {@link #rules}, {@link #httpClients}, and {@link #simulators}.
+ *
+ * @param controllerName the rule controller name
+ */
+ public static void initStatics(String controllerName) {
+ rules = ruleMaker.apply(controllerName);
+ BaseTest.initStatics();
+ }
+
+ /**
+ * Destroys {@link #httpClients}, {@link #simulators}, and {@link #rules}.
+ */
+ public static void finishStatics() {
+ BaseTest.finishStatics();
+ rules.destroy();
+ }
+
+ /**
+ * Initializes {@link #topics} and {@link #controller}.
+ */
+ @Override
+ public void init() {
+ super.init();
+ controller = rules.getController();
+ }
+
+ /**
+ * Destroys {@link #topics} and resets the rule facts.
+ */
+ @Override
+ public void finish() {
+ super.finish();
+ rules.resetFacts();
+ }
+
+ /**
+ * Returns ToscaPolicy from File.
+ *
+ * @param fileName a path name
+ * @return ToscaPolicy
+ */
+ @Override
+ protected ToscaPolicy checkPolicy(String fileName) {
+ return rules.setupPolicyFromFile(fileName);
+ }
+
+ /**
+ * Returns Listener from createListener based on Coder.
+ * @return the Listener
+ */
+ @Override
+ protected Listener<VirtualControlLoopNotification> createNoficationTopicListener() {
+ return topics.createListener(POLICY_CL_MGT_TOPIC,
+ VirtualControlLoopNotification.class, controller);
+ }
+}
diff --git a/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/Rules.java b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/Rules.java
index 62632e9d2..64f088070 100644
--- a/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/Rules.java
+++ b/controlloop/common/rules-test/src/main/java/org/onap/policy/controlloop/common/rules/test/Rules.java
@@ -223,7 +223,10 @@ public class Rules {
}
}
- private ToscaPolicy getPolicyFromFile(String policyPath) throws CoderException {
+ /**
+ * Get policy from file.
+ */
+ public static ToscaPolicy getPolicyFromFile(String policyPath) throws CoderException {
String policyJson = ResourceUtils.getResourceAsString(policyPath);
if (policyJson == null) {
throw new CoderException(new FileNotFoundException(policyPath));