aboutsummaryrefslogtreecommitdiffstats
path: root/feature-lifecycle/src/test
diff options
context:
space:
mode:
authorjhh <jorge.hernandez-herrero@att.com>2020-03-05 22:32:58 -0600
committerjhh <jorge.hernandez-herrero@att.com>2020-03-10 11:29:27 -0500
commit3f563fe552e35b3bc3d95c47a3cabdfe7645ad07 (patch)
tree9439dc357096b69b670e7dad666084a5cb08dcfb /feature-lifecycle/src/test
parent845cbbc74445909613aff1912d3cfc9083c57d53 (diff)
policy routing and reorg into policy-domains
- Native Drools Controller Policy support. - Move domain policies into the policy-domains project. - Route legacy/compliant operational policies to one or all controller supporting the policy's policy type. - Enhancements to scripts to invoke commands external to the container. Issue-ID: POLICY-2388 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: Id41f04d10a28d2ea86bdd41334e499c28d0438ae Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'feature-lifecycle/src/test')
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DomainPolicyTypesTest.java240
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyModelsTest.java90
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java2
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeDroolsControllerTest.java100
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactControllerTest.java (renamed from feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesControllerTest.java)16
-rw-r--r--feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeDroolsControllerTest.java (renamed from feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeControllerTest.java)29
-rw-r--r--feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.Operational-1.0.0.schema.json91
-rw-r--r--feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json331
-rw-r--r--feature-lifecycle/src/test/resources/tosca-policy-native-artifact-example.json (renamed from feature-lifecycle/src/test/resources/example.policy.native.drools.tosca.json)2
-rw-r--r--feature-lifecycle/src/test/resources/tosca-policy-native-controller-example.json (renamed from feature-lifecycle/src/test/resources/example.policy.drools.controller.tosca.json)14
10 files changed, 139 insertions, 776 deletions
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DomainPolicyTypesTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DomainPolicyTypesTest.java
deleted file mode 100644
index dd70553d..00000000
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DomainPolicyTypesTest.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.drools.domain.models;
-
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.worldturner.medeia.api.ValidationFailedException;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import org.junit.Before;
-import org.junit.Test;
-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.drools.domain.models.controller.ControllerPolicy;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsController;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsPolicy;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsProperties;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsRulesArtifact;
-import org.onap.policy.drools.policies.DomainMaker;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-
-public class DomainPolicyTypesTest {
-
- // Policy Types
- private static final String OPERATIONAL_DROOLS_POLICY_TYPE = "onap.policies.controlloop.operational.common.Drools";
- private static final String NATIVE_DROOLS_POLICY_TYPE = "onap.policies.native.Drools";
-
- // Operational vCPE Policy
- private static final String OP_POLICY_NAME_VCPE = "operational.restart";
- private static final String VCPE_OPERATIONAL_DROOLS_POLICY_JSON =
- "policies/vCPE.policy.operational.input.tosca.json";
- public static final String VCPE_OPERATIONAL_DROOLS_LEGACY_POLICY_JSON =
- "src/test/resources/tosca-policy-operational-restart.json";
-
- // Native Drools Policy
- private static final String EXAMPLE_NATIVE_DROOLS_POLICY_NAME = "example";
- private static final String EXAMPLE_NATIVE_DROOLS_POLICY_JSON =
- "src/test/resources/example.policy.native.drools.tosca.json";
-
- // Controller Drools Policy
- private static final String EXAMPLE_CONTROLLER_DROOLS_POLICY_NAME = "example";
- private static final String EXAMPLE_CONTROLLER_DROOLS_POLICY_JSON =
- "src/test/resources/example.policy.drools.controller.tosca.json";
-
- private DomainMaker domainMaker;
- private StandardCoder nonValCoder;
-
- @Before
- public void setUp() {
- domainMaker = new DomainMaker();
- nonValCoder = new StandardCoder();
- }
-
- @Test
- public void testToscaOperationalPolicyType() throws CoderException, IOException {
- String rawVcpeToscaPolicy = getExamplesPolicyString(VCPE_OPERATIONAL_DROOLS_POLICY_JSON, OP_POLICY_NAME_VCPE);
- String rawVcpeLegacyToscaPolicy = getJsonFromFile(VCPE_OPERATIONAL_DROOLS_LEGACY_POLICY_JSON);
-
- // valid "known" policy type with implicit schema
- assertTrue(domainMaker
- .isConformant(new ToscaPolicyTypeIdentifier(OPERATIONAL_DROOLS_POLICY_TYPE, "1.0.0"),
- rawVcpeToscaPolicy));
-
- // policy type without schema
- assertFalse(domainMaker
- .isConformant(new ToscaPolicyTypeIdentifier("blah.blah", "1.0.0"), rawVcpeToscaPolicy));
-
- // known policy type but invalid json (legacy).
- assertFalse(domainMaker
- .isConformant(new ToscaPolicyTypeIdentifier(OPERATIONAL_DROOLS_POLICY_TYPE, "1.0.0"),
- rawVcpeLegacyToscaPolicy));
-
- ToscaPolicy vcpeToscaPolicy = getExamplesPolicy(VCPE_OPERATIONAL_DROOLS_POLICY_JSON, OP_POLICY_NAME_VCPE);
- assertTrue(domainMaker.isConformant(vcpeToscaPolicy));
- assertTrue(domainMaker.conformance(vcpeToscaPolicy));
-
- // set an invalid value in the Tosca Policy (timeout less than minimum value).
- final int timeout = (int) vcpeToscaPolicy.getProperties().get("timeout");
- vcpeToscaPolicy.getProperties().put("timeout", 0);
- assertFalse(domainMaker.isConformant(vcpeToscaPolicy));
- assertThatThrownBy(() ->
- domainMaker.conformance(vcpeToscaPolicy))
- .isInstanceOf(ValidationFailedException.class)
- .hasMessageContaining("Value 0 is smaller than minimum 1");
-
- // put back the original timeout value in the Tosca Policy
- vcpeToscaPolicy.getProperties().put("timeout", timeout);
- assertTrue(domainMaker.isConformant(vcpeToscaPolicy));
- assertTrue(domainMaker.conformance(vcpeToscaPolicy));
-
- // remove required element
- final Object operations = vcpeToscaPolicy.getProperties().remove("operations");
- assertFalse(domainMaker.isConformant(vcpeToscaPolicy));
- assertThatThrownBy(() ->
- domainMaker.conformance(vcpeToscaPolicy))
- .isInstanceOf(ValidationFailedException.class)
- .hasMessageContaining("Required property operations is missing from object");
-
- // put back the original operations value in the Tosca Policy
- vcpeToscaPolicy.getProperties().put("operations", operations);
- assertTrue(domainMaker.isConformant(vcpeToscaPolicy));
- assertTrue(domainMaker.conformance(vcpeToscaPolicy));
- }
-
- @Test
- public void testToscaNativeDroolsPolicy() throws CoderException, IOException {
- String rawNativeDroolsPolicy =
- getPolicyFromFileString(EXAMPLE_NATIVE_DROOLS_POLICY_JSON, EXAMPLE_NATIVE_DROOLS_POLICY_NAME);
- ToscaPolicy toscaPolicy =
- getExamplesPolicy(EXAMPLE_NATIVE_DROOLS_POLICY_JSON, EXAMPLE_NATIVE_DROOLS_POLICY_NAME);
-
- ToscaPolicyTypeIdentifier policyTypeId =
- new ToscaPolicyTypeIdentifier(NATIVE_DROOLS_POLICY_TYPE, "1.0.0");
- domainMaker.isConformant(policyTypeId, rawNativeDroolsPolicy);
-
- assertTrue(domainMaker.isConformant(toscaPolicy));
- NativeDroolsPolicy domainDroolsPolicy = domainMaker.convertTo(toscaPolicy, NativeDroolsPolicy.class);
- assertEquals("org.onap.policy.drools.test", domainDroolsPolicy.getProperties().getRulesArtifact().getGroupId());
- assertEquals("lifecycle", domainDroolsPolicy.getProperties().getRulesArtifact().getArtifactId());
- assertEquals("1.0.0", domainDroolsPolicy.getProperties().getRulesArtifact().getVersion());
-
- String policyId = toscaPolicy.getMetadata().remove("policy-id");
- assertThatThrownBy(() -> domainMaker.convertTo(toscaPolicy, NativeDroolsPolicy.class))
- .isInstanceOf(CoderException.class).hasCauseInstanceOf(ValidationFailedException.class);
-
- toscaPolicy.getMetadata().put("policy-id", policyId);
-
- assertTrue(domainMaker.isDomainConformant(policyTypeId, domainDroolsPolicy));
- assertTrue(domainMaker.conformance(policyTypeId, domainDroolsPolicy));
-
- domainDroolsPolicy.setName("");
- assertFalse(domainMaker.isDomainConformant(policyTypeId, domainDroolsPolicy));
- assertThatThrownBy(() -> domainMaker.conformance(policyTypeId, domainDroolsPolicy))
- .isInstanceOf(ValidationFailedException.class)
- .hasMessageContaining("Pattern ^(.+)$ is not contained in text");
-
- NativeDroolsPolicy domainDroolsPolicy2 =
- NativeDroolsPolicy.builder().metadata(Metadata.builder().policyId("policy-id").build()).name("example")
- .version("1.0.0").properties(
- NativeDroolsProperties.builder().controller(
- NativeDroolsController.builder().name("example").version("1.0.0").build())
- .rulesArtifact(
- NativeDroolsRulesArtifact.builder().groupId("org.onap.policy.controlloop")
- .artifactId("example").version("example").build()).build())
- .type("onap.policies.native.Drools")
- .typeVersion("1.0.0").build();
- assertTrue(domainMaker
- .isDomainConformant(
- new ToscaPolicyTypeIdentifier(domainDroolsPolicy2.getType(), domainDroolsPolicy2.getTypeVersion()),
- domainDroolsPolicy2));
- }
-
- @Test
- public void testToscaControllerPolicy() throws CoderException {
- ToscaPolicy toscaPolicy =
- getExamplesPolicy(EXAMPLE_CONTROLLER_DROOLS_POLICY_JSON, EXAMPLE_CONTROLLER_DROOLS_POLICY_NAME);
-
- assertTrue(domainMaker.isConformant(toscaPolicy));
- ControllerPolicy controllerPolicy = domainMaker.convertTo(toscaPolicy, ControllerPolicy.class);
-
- assertEquals("example", controllerPolicy.getName());
- assertEquals("1.0.0", controllerPolicy.getVersion());
- assertEquals("onap.policies.drools.Controller", controllerPolicy.getType());
- assertEquals("1.0.0", controllerPolicy.getTypeVersion());
- assertEquals("example", controllerPolicy.getMetadata().getPolicyId());
- assertEquals("lifecycle", controllerPolicy.getProperties().getControllerName());
- assertEquals("DCAE_TOPIC", controllerPolicy.getProperties().getSourceTopics().get(0).getTopicName());
- assertEquals("org.onap.policy.controlloop.CanonicalOnset",
- controllerPolicy.getProperties().getSourceTopics().get(0).getSerialization().get(0).getEventClass());
- assertEquals("[?($.closedLoopEventStatus == 'ONSET')]",
- controllerPolicy.getProperties().getSourceTopics().get(0).getSerialization().get(0).getEventFilter());
- assertEquals("org.onap.policy.controlloop.util.Serialization",
- controllerPolicy.getProperties().getSourceTopics().get(0).getSerialization().get(0)
- .getCustomSerializer().getCustomSerializerClass());
- assertEquals("gson",
- controllerPolicy.getProperties().getSourceTopics().get(0).getSerialization().get(0)
- .getCustomSerializer().getJsonParser());
- assertEquals("APPC-CL", controllerPolicy.getProperties().getSinkTopics().get(0).getTopicName());
- assertEquals("org.onap.policy.appc.Response",
- controllerPolicy.getProperties().getSinkTopics().get(0).getSerialization().get(0).getEventClass());
- assertEquals("[?($.CommonHeader && $.Status)]",
- controllerPolicy.getProperties().getSinkTopics().get(0).getSerialization().get(0).getEventFilter());
- assertEquals("org.onap.policy.appc.util.Serialization",
- controllerPolicy.getProperties().getSinkTopics().get(0).getSerialization().get(0)
- .getCustomSerializer().getCustomSerializerClass());
- assertEquals("gsonPretty",
- controllerPolicy.getProperties().getSinkTopics().get(0).getSerialization().get(0)
- .getCustomSerializer().getJsonParser());
- assertEquals("value1", controllerPolicy.getProperties().getCustomConfig().get("field1"));
- }
-
- private String getJsonFromFile(String filePath) throws IOException {
- return new String(Files.readAllBytes(Paths.get(filePath)));
- }
-
- private String getJsonFromResource(String resourcePath) {
- return ResourceUtils.getResourceAsString(resourcePath);
- }
-
- private String getPolicyFromFileString(String filePath, String policyName) throws CoderException, IOException {
- String policyJson = getJsonFromFile(filePath);
- ToscaServiceTemplate serviceTemplate = new StandardCoder().decode(policyJson, ToscaServiceTemplate.class);
- return nonValCoder.encode(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName));
- }
-
- private ToscaPolicy getExamplesPolicy(String resourcePath, String policyName) throws CoderException {
- String policyJson = getJsonFromResource(resourcePath);
- ToscaServiceTemplate serviceTemplate = new StandardCoder().decode(policyJson, ToscaServiceTemplate.class);
- return serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName);
- }
-
- private String getExamplesPolicyString(String resourcePath, String policyName) throws CoderException {
- return nonValCoder.encode(getExamplesPolicy(resourcePath, policyName));
- }
-} \ No newline at end of file
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyModelsTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyModelsTest.java
deleted file mode 100644
index d99dd089..00000000
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyModelsTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.drools.domain.models;
-
-import static org.junit.Assert.assertNotNull;
-
-import com.openpojo.reflection.PojoClass;
-import com.openpojo.reflection.filters.FilterChain;
-import com.openpojo.reflection.filters.FilterClassName;
-import com.openpojo.reflection.filters.FilterNonConcrete;
-import com.openpojo.reflection.impl.PojoClassFactory;
-import com.openpojo.validation.Validator;
-import com.openpojo.validation.ValidatorBuilder;
-import com.openpojo.validation.test.impl.GetterTester;
-import com.openpojo.validation.test.impl.SetterTester;
-import java.util.ArrayList;
-import java.util.List;
-import org.junit.Test;
-import org.onap.policy.drools.domain.models.controller.ControllerPolicy;
-import org.onap.policy.drools.domain.models.controller.ControllerProperties;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsController;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsPolicy;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsProperties;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsRulesArtifact;
-
-public class DroolsPolicyModelsTest {
-
- @Test
- public void testPackage() {
- /* validate model pojos */
- List<PojoClass> pojoClasses =
- PojoClassFactory
- .getPojoClassesRecursively("org.onap.policy.drools.domain.models",
- new FilterChain(new FilterNonConcrete(),
- new FilterClassName(DroolsPolicy.class.getName())));
-
- Validator validator = ValidatorBuilder.create()
- .with(new SetterTester(), new GetterTester()).build();
- validator.validate(pojoClasses);
- }
-
- @Test
- public void testBuildDomainPolicyNativeDrools() {
- /* manually create a native drools policy */
- assertNotNull(NativeDroolsPolicy.builder().metadata(Metadata.builder().policyId("policy-id").build())
- .name("example")
- .type("onap.policies.native.Drools")
- .typeVersion("1.0.0")
- .version("1.0.0")
- .properties(
- NativeDroolsProperties.builder().controller(
- NativeDroolsController.builder().name("example").version("1.0.0").build())
- .rulesArtifact(
- NativeDroolsRulesArtifact.builder().groupId("org.onap.policy.controlloop")
- .artifactId("example").version("example").build()).build())
- .build());
- }
-
- @Test
- public void testBuildDomainPolicyController() {
- /* manually create a controller policy */
- assertNotNull(ControllerPolicy.builder().metadata(Metadata.builder().policyId("policy-id").build())
- .name("example")
- .version("1.0.0")
- .type("onap.policies.drools.Controller")
- .typeVersion("1.0.0")
- .properties(ControllerProperties.builder().controllerName("example").sourceTopics(
- new ArrayList<>()).sinkTopics(new ArrayList<>()).build())
- .build());
- }
-
-} \ No newline at end of file
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java
index b42e0fb6..219aa0fb 100644
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java
@@ -77,7 +77,7 @@ public class LifecycleStatePassiveTest extends LifecycleStateRunningTest {
((PolicyTypeDroolsController) fsm.getController(
new ToscaPolicyTypeIdentifier(
ControllerSupport.POLICY_TYPE, ControllerSupport.POLICY_TYPE_VERSION)))
- .getController());
+ .controllers().get(0));
fsm.stop(controllerSupport.getController());
assertNull(fsm.getController(new ToscaPolicyTypeIdentifier(ControllerSupport.POLICY_TYPE,
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeDroolsControllerTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeDroolsControllerTest.java
new file mode 100644
index 00000000..a56e250b
--- /dev/null
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeDroolsControllerTest.java
@@ -0,0 +1,100 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * =============LICENSE_END========================================================
+ */
+
+package org.onap.policy.drools.lifecycle;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+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.drools.domain.models.operational.OperationalPolicy;
+import org.onap.policy.drools.system.PolicyControllerConstants;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+
+/**
+ * Drools Controller Policy Test.
+ */
+public class PolicyTypeDroolsControllerTest extends LifecycleStateRunningTest {
+
+ // Operational vCPE Policies
+ private static final String OP_POLICY_NAME_VCPE = "operational.restart";
+ private static final String VCPE_OPERATIONAL_DROOLS_POLICY_JSON =
+ "policies/vCPE.policy.operational.input.tosca.json";
+
+ private ToscaPolicy policy;
+ private OperationalPolicy operationalPolicy;
+ private PolicyTypeDroolsController controller;
+
+ /**
+ * Test initialization.
+ */
+ @Before
+ public void init() throws CoderException {
+ fsm = makeFsmWithPseudoTime();
+ policy = getExamplesPolicy(VCPE_OPERATIONAL_DROOLS_POLICY_JSON, OP_POLICY_NAME_VCPE);
+ operationalPolicy = fsm.getDomainMaker().convertTo(policy, OperationalPolicy.class);
+ controller = new PolicyTypeDroolsController(
+ fsm, PolicyTypeDroolsController.compliantType, controllerSupport.getController());
+
+ assertTrue(controllerSupport.getController().getDrools().isBrained());
+ assertFalse(controllerSupport.getController().isAlive());
+ assertFalse(controllerSupport.getController().getDrools().isAlive());
+ assertSame(controllerSupport.getController(), PolicyControllerConstants.getFactory().get("lifecycle"));
+
+ /* start controller */
+ assertTrue(controllerSupport.getController().start());
+
+ assertTrue(controllerSupport.getController().isAlive());
+ assertTrue(controllerSupport.getController().getDrools().isAlive());
+ assertTrue(controllerSupport.getController().getDrools().isBrained());
+ assertSame(controllerSupport.getController(), PolicyControllerConstants.getFactory().get("lifecycle"));
+ }
+
+ @Test
+ public void testDeployUndeploy() {
+ /* non-existing controller */
+ assertFalse(controller.undeploy(policy));
+ assertFalse(controller.deploy(policy));
+
+ policy.getProperties().remove("controllerName");
+ assertTrue(controller.deploy(policy));
+ assertTrue(controller.undeploy(policy));
+ assertFalse(controller.undeploy(policy));
+
+ /* existing controller */
+ policy.getProperties().put("controllerName", "lifecycle");
+ assertTrue(controller.deploy(policy));
+ assertTrue(controller.undeploy(policy));
+ assertFalse(controller.undeploy(policy));
+ }
+
+ private ToscaPolicy getExamplesPolicy(String resourcePath, String policyName) throws CoderException {
+ String policyJson = ResourceUtils.getResourceAsString(resourcePath);
+ ToscaServiceTemplate serviceTemplate = new StandardCoder().decode(policyJson, ToscaServiceTemplate.class);
+ return serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName);
+ }
+
+} \ No newline at end of file
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesControllerTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactControllerTest.java
index 369284dc..cb55e637 100644
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesControllerTest.java
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactControllerTest.java
@@ -33,7 +33,7 @@ import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.drools.controller.DroolsControllerConstants;
import org.onap.policy.drools.controller.internal.MavenDroolsController;
import org.onap.policy.drools.controller.internal.NullDroolsController;
-import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsPolicy;
+import org.onap.policy.drools.domain.models.artifact.NativeArtifactPolicy;
import org.onap.policy.drools.system.PolicyControllerConstants;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
@@ -41,15 +41,15 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifi
/**
* Rules Controller Test.
*/
-public class PolicyTypeRulesControllerTest extends LifecycleStateRunningTest {
+public class PolicyTypeNativeArtifactControllerTest extends LifecycleStateRunningTest {
// Native Drools Policy
private static final String EXAMPLE_NATIVE_DROOLS_POLICY_NAME = "example";
private static final String EXAMPLE_NATIVE_DROOLS_POLICY_JSON =
- "src/test/resources/example.policy.native.drools.tosca.json";
+ "src/test/resources/tosca-policy-native-artifact-example.json";
private ToscaPolicy policy;
- private NativeDroolsPolicy nativePolicy;
- private PolicyTypeRulesController controller;
+ private NativeArtifactPolicy nativePolicy;
+ private PolicyTypeNativeArtifactController controller;
/**
* Test Set initialization.
@@ -58,10 +58,10 @@ public class PolicyTypeRulesControllerTest extends LifecycleStateRunningTest {
public void init() throws IOException, CoderException {
fsm = makeFsmWithPseudoTime();
policy = getPolicyFromFile(EXAMPLE_NATIVE_DROOLS_POLICY_JSON, EXAMPLE_NATIVE_DROOLS_POLICY_NAME);
- nativePolicy = fsm.getDomainMaker().convertTo(policy, NativeDroolsPolicy.class);
+ nativePolicy = fsm.getDomainMaker().convertTo(policy, NativeArtifactPolicy.class);
controller =
- new PolicyTypeRulesController(fsm,
- new ToscaPolicyTypeIdentifier("onap.policies.native.Drools", "1.0.0"));
+ new PolicyTypeNativeArtifactController(fsm,
+ new ToscaPolicyTypeIdentifier("onap.policies.native.drools.Artifact", "1.0.0"));
assertTrue(controllerSupport.getController().getDrools().isBrained());
assertFalse(controllerSupport.getController().isAlive());
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeControllerTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeDroolsControllerTest.java
index 528fa7ef..1aa3a684 100644
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeControllerTest.java
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeDroolsControllerTest.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ * 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.
@@ -26,26 +26,28 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
+import java.util.Properties;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
+import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.drools.domain.models.controller.ControllerPolicy;
import org.onap.policy.drools.system.PolicyControllerConstants;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Native Controller Policy Test.
*/
-public class PolicyTypeNativeControllerTest extends LifecycleStateRunningTest {
+public class PolicyTypeNativeDroolsControllerTest extends LifecycleStateRunningTest {
// Native Drools Policy
private static final String EXAMPLE_NATIVE_DROOLS_POLICY_NAME = "example";
private static final String EXAMPLE_NATIVE_DROOLS_POLICY_JSON =
- "src/test/resources/example.policy.drools.controller.tosca.json";
+ "src/test/resources/tosca-policy-native-controller-example.json";
private ToscaPolicy policy;
private ControllerPolicy controllerPolicy;
- private PolicyTypeNativeController controller;
+ private PolicyTypeNativeDroolsController controller;
/**
* Test initialization.
@@ -55,9 +57,7 @@ public class PolicyTypeNativeControllerTest extends LifecycleStateRunningTest {
fsm = makeFsmWithPseudoTime();
policy = getPolicyFromFile(EXAMPLE_NATIVE_DROOLS_POLICY_JSON, EXAMPLE_NATIVE_DROOLS_POLICY_NAME);
controllerPolicy = fsm.getDomainMaker().convertTo(policy, ControllerPolicy.class);
- controller =
- new PolicyTypeNativeController(fsm,
- new ToscaPolicyTypeIdentifier("onap.policies.drools.Controller", "1.0.0"));
+ controller = new PolicyTypeNativeDroolsController(fsm, policy.getTypeIdentifier());
assertTrue(controllerSupport.getController().getDrools().isBrained());
assertFalse(controllerSupport.getController().isAlive());
@@ -74,9 +74,20 @@ public class PolicyTypeNativeControllerTest extends LifecycleStateRunningTest {
}
@Test
- public void testUndeploy() {
+ public void testUndeployDeploy() {
assertTrue(controller.undeploy(policy));
assertThatIllegalArgumentException().isThrownBy(
() -> PolicyControllerConstants.getFactory().get(controllerPolicy.getName()));
+
+ assertFalse(controller.deploy(policy));
+
+ Properties noopTopicProperties = new Properties();
+ noopTopicProperties.put(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS, "DCAE_TOPIC");
+ noopTopicProperties.put(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS, "APPC-CL");
+ TopicEndpointManager.getManager().addTopics(noopTopicProperties);
+
+ controller.deploy(policy);
+
+ return;
}
} \ No newline at end of file
diff --git a/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.Operational-1.0.0.schema.json b/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.Operational-1.0.0.schema.json
deleted file mode 100644
index 801859be..00000000
--- a/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.Operational-1.0.0.schema.json
+++ /dev/null
@@ -1,91 +0,0 @@
-{
- "definitions": {},
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "http://www.onap.org/policy/models/schemas/onap.policies.controlloop.Operational.schema.json",
- "type": "object",
- "title": "Root Schema for legacy onap.policies.controlloop.Operational policy type domain policies",
- "required": [
- "type",
- "type_version",
- "name",
- "version",
- "properties"
- ],
- "properties": {
- "type": {
- "$id": "#/properties/type",
- "type": "string",
- "title": "Policy Type",
- "default": "onap.policies.controlloop.Operational",
- "examples": [
- "onap.policies.controlloop.Operational"
- ],
- "pattern": "^(.+)$"
- },
- "type_version": {
- "$id": "#/properties/type_version",
- "type": "string",
- "title": "Policy Type Version",
- "examples": [
- "1.0.0"
- ],
- "pattern": "^(.+)$"
- },
- "version": {
- "$id": "#/properties/version",
- "type": "string",
- "title": "Version",
- "examples": [
- "1.0.0"
- ],
- "pattern": "^(.+)$"
- },
- "name": {
- "$id": "#/properties/name",
- "type": "string",
- "title": "Name",
- "examples": [
- "example"
- ],
- "pattern": "^(.+)$"
- },
- "metadata": {
- "$id": "#/properties/metadata",
- "type": "object",
- "title": "Metadata",
- "required": [
- "policy-id"
- ],
- "properties": {
- "policy-id": {
- "$id": "#/properties/metadata/properties/policy-id",
- "type": "string",
- "title": "Policy Name",
- "examples": [
- "example"
- ],
- "pattern": "^(.+)$"
- }
- }
- },
- "properties": {
- "$id": "#/properties/properties",
- "type": "object",
- "title": "Properties",
- "required": [
- "content"
- ],
- "properties": {
- "content": {
- "$id": "#/properties/properties/properties/content",
- "type": "string",
- "title": "Legacy policy in yaml format",
- "examples": [
- "controlLoop%3A%0A%20%20version%3A%202.0.0%0A%20%20controlLoopName%3A%20ControlLoop-vCPEv2-48f0c2c3-a172-4192-9ae3-052274181b6e%0A%20%20trigger_policy%3A%20unique-policy-id-1-restart%0A%20%20timeout%3A%203600%0A%20%20abatement%3A%20true%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"
- ],
- "pattern": "^(.+)$"
- }
- }
- }
- }
-}
diff --git a/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json b/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json
deleted file mode 100644
index 5d032f06..00000000
--- a/feature-lifecycle/src/test/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json
+++ /dev/null
@@ -1,331 +0,0 @@
-{
- "definitions": {},
- "$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "http://www.onap.org/policy/models/schemas/onap.policies.controlloop.operational.common.Drools.schema.json",
- "type": "object",
- "title": "The Root Schema",
- "required": [
- "type",
- "type_version",
- "version",
- "metadata",
- "properties"
- ],
- "properties": {
- "type": {
- "$id": "#/properties/type",
- "type": "string",
- "title": "Policy Type",
- "default": "onap.policies.controlloop.operational.common.Drools",
- "examples": [
- "onap.policies.controlloop.operational.common.Drools"
- ],
- "pattern": "^(.+)$"
- },
- "type_version": {
- "$id": "#/properties/type_version",
- "type": "string",
- "title": "Policy Type Version",
- "default": "1.0.0",
- "examples": [
- "1.0.0"
- ],
- "pattern": "^(.+)$"
- },
- "name": {
- "$id": "#/properties/name",
- "type": "string",
- "title": "Policy Name",
- "default": "",
- "examples": [
- "example"
- ],
- "pattern": "^(.*)$"
- },
- "version": {
- "$id": "#/properties/version",
- "type": "string",
- "title": "Policy Version",
- "default": "1.0.0",
- "examples": [
- "1.0.0"
- ],
- "pattern": "^(.+)$"
- },
- "metadata": {
- "$id": "#/properties/metadata",
- "type": "object",
- "title": "Metadata",
- "required": [
- "policy-id"
- ],
- "properties": {
- "policy-id": {
- "$id": "#/properties/metadata/properties/policy-id",
- "type": "string",
- "title": "Policy ID",
- "examples": [
- "operational.restart"
- ],
- "pattern": "^(.+)$"
- }
- }
- },
- "properties": {
- "$id": "#/properties/properties",
- "type": "object",
- "title": "Properties",
- "required": [
- "id",
- "timeout",
- "abatement",
- "trigger",
- "operations",
- "controllerName"
- ],
- "properties": {
- "id": {
- "$id": "#/properties/properties/properties/id",
- "type": "string",
- "title": "Control Loop Name",
- "examples": [
- "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e"
- ],
- "pattern": "^(.+)$"
- },
- "timeout": {
- "$id": "#/properties/properties/properties/timeout",
- "type": "integer",
- "title": "Timeout in seconds",
- "minimum": 1,
- "default": 30,
- "examples": [
- 3600
- ]
- },
- "abatement": {
- "$id": "#/properties/properties/properties/abatement",
- "type": "boolean",
- "title": "Abatement",
- "default": false,
- "examples": [
- true
- ]
- },
- "trigger": {
- "$id": "#/properties/properties/properties/trigger",
- "type": "string",
- "title": "Trigger Operation",
- "examples": [
- "unique-policy-id-1-restart"
- ],
- "pattern": "^(.+)$"
- },
- "operations": {
- "$id": "#/properties/properties/properties/operations",
- "type": "array",
- "title": "Operations",
- "items": {
- "$id": "#/properties/properties/properties/operations/items",
- "type": "object",
- "title": "Items",
- "uniqueItems": true,
- "required": [
- "id",
- "operation",
- "timeout",
- "retries",
- "success",
- "failure"
- ],
- "properties": {
- "id": {
- "$id": "#/properties/properties/properties/operations/items/properties/id",
- "type": "string",
- "title": "Operation Identifier",
- "examples": [
- "unique-policy-id-1-restart"
- ],
- "pattern": "^(.+)$"
- },
- "description": {
- "$id": "#/properties/properties/properties/operations/items/properties/description",
- "type": "string",
- "title": "Description",
- "examples": [
- "Restart the VM"
- ],
- "pattern": "^(.+)$"
- },
- "operation": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation",
- "type": "object",
- "title": "Operation",
- "required": [
- "actor",
- "operation",
- "target"
- ],
- "properties": {
- "actor": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/actor",
- "type": "string",
- "title": "Actor",
- "examples": [
- "APPC"
- ],
- "pattern": "^(.+)$"
- },
- "operation": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/operation",
- "type": "string",
- "title": "Operation Name",
- "examples": [
- "Restart"
- ],
- "pattern": "^(.+)$"
- },
- "target": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/target",
- "type": "object",
- "title": "Target",
- "required": [
- "targetType"
- ],
- "properties": {
- "targetType": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/target/properties/targetType",
- "type": "string",
- "title": "Target Type",
- "examples": [
- "VNF"
- ],
- "pattern": "^(.+)$"
- },
- "entityIds": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/target/properties/entityIds",
- "type": "object",
- "title": "Arbitrary Resource Identities",
- "examples": [
- "Eace933104d443b496b8.nodes.heat.vpg"
- ],
- "additionalProperties": {
- "type": "string",
- "pattern": "^(.+)$"
- }
- }
- }
- },
- "payload": {
- "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/payload",
- "type": "object",
- "title": "Payload",
- "additionalProperties": {
- "type": "string",
- "pattern": "^(.+)$"
- }
- }
- }
- },
- "timeout": {
- "$id": "#/properties/properties/properties/operations/items/properties/timeout",
- "type": "integer",
- "title": "Operation Timeout in seconds",
- "default": 10,
- "minimum": 1,
- "examples": [
- 1200
- ]
- },
- "retries": {
- "$id": "#/properties/properties/properties/operations/items/properties/retries",
- "type": "integer",
- "title": "Number of Retries",
- "default": 0,
- "examples": [
- 3
- ]
- },
- "success": {
- "$id": "#/properties/properties/properties/operations/items/properties/success",
- "type": "string",
- "title": "Success Treatment",
- "default": "final_success",
- "examples": [
- "final_success",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- },
- "failure": {
- "$id": "#/properties/properties/properties/operations/items/properties/failure",
- "type": "string",
- "title": "Failure Treatment",
- "default": "final_failure",
- "examples": [
- "final_failure",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- },
- "failure_timeout": {
- "$id": "#/properties/properties/properties/operations/items/properties/failure_timeout",
- "type": "string",
- "title": "Failure Timeout Treatment",
- "default": "final_failure_timeout",
- "examples": [
- "final_failure_timeout",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- },
- "failure_retries": {
- "$id": "#/properties/properties/properties/operations/items/properties/failure_retries",
- "type": "string",
- "title": "Failure Retry Treatment",
- "default": "final_failure_retries",
- "examples": [
- "final_failure_retries",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- },
- "failure_exception": {
- "$id": "#/properties/properties/properties/operations/items/properties/failure_exception",
- "type": "string",
- "title": "Failure Exception Treatment",
- "default": "",
- "examples": [
- "final_failure_exception",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- },
- "failure_guard": {
- "$id": "#/properties/properties/properties/operations/items/properties/failure_guard",
- "type": "string",
- "title": "Failure Guard Treatment",
- "default": "final_failure_guard",
- "examples": [
- "final_failure_guard",
- "unique-policy-id-2"
- ],
- "pattern": "^(.+)$"
- }
- }
- }
- },
- "controllerName": {
- "$id": "#/properties/properties/properties/controllerName",
- "type": "string",
- "title": "Controller Name",
- "default": "",
- "examples": [
- "usecases"
- ],
- "pattern": "^(.+)$"
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/feature-lifecycle/src/test/resources/example.policy.native.drools.tosca.json b/feature-lifecycle/src/test/resources/tosca-policy-native-artifact-example.json
index f3f34b6f..f521953d 100644
--- a/feature-lifecycle/src/test/resources/example.policy.native.drools.tosca.json
+++ b/feature-lifecycle/src/test/resources/tosca-policy-native-artifact-example.json
@@ -4,7 +4,7 @@
"policies": [
{
"example": {
- "type": "onap.policies.native.Drools",
+ "type": "onap.policies.native.drools.Artifact",
"type_version": "1.0.0",
"version": "1.0.0",
"name": "example",
diff --git a/feature-lifecycle/src/test/resources/example.policy.drools.controller.tosca.json b/feature-lifecycle/src/test/resources/tosca-policy-native-controller-example.json
index f5a9151f..3d716845 100644
--- a/feature-lifecycle/src/test/resources/example.policy.drools.controller.tosca.json
+++ b/feature-lifecycle/src/test/resources/tosca-policy-native-controller-example.json
@@ -4,7 +4,7 @@
"policies": [
{
"example": {
- "type": "onap.policies.drools.Controller",
+ "type": "onap.policies.native.drools.Controller",
"type_version": "1.0.0",
"version": "1.0.0",
"name": "example",
@@ -16,14 +16,18 @@
"sourceTopics": [
{
"topicName": "DCAE_TOPIC",
- "serialization": [
+ "events": [
{
"eventClass": "org.onap.policy.controlloop.CanonicalOnset",
"eventFilter": "[?($.closedLoopEventStatus == 'ONSET')]",
- "customSerializer": {
+ "customSerialization": {
"customSerializerClass": "org.onap.policy.controlloop.util.Serialization",
"jsonParser": "gson"
}
+ },
+ {
+ "eventClass": "org.onap.policy.controlloop.CanonicalAbated",
+ "eventFilter": "[?($.closedLoopEventStatus == 'ABATED')]"
}
]
}
@@ -31,11 +35,11 @@
"sinkTopics": [
{
"topicName": "APPC-CL",
- "serialization": [
+ "events": [
{
"eventClass": "org.onap.policy.appc.Response",
"eventFilter": "[?($.CommonHeader && $.Status)]",
- "customSerializer": {
+ "customSerialization": {
"customSerializerClass": "org.onap.policy.appc.util.Serialization",
"jsonParser": "gsonPretty"
}