diff options
author | jhh <jorge.hernandez-herrero@att.com> | 2020-03-05 22:32:58 -0600 |
---|---|---|
committer | jhh <jorge.hernandez-herrero@att.com> | 2020-03-10 11:29:27 -0500 |
commit | 3f563fe552e35b3bc3d95c47a3cabdfe7645ad07 (patch) | |
tree | 9439dc357096b69b670e7dad666084a5cb08dcfb /feature-lifecycle/src/test/java | |
parent | 845cbbc74445909613aff1912d3cfc9083c57d53 (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/java')
-rw-r--r-- | feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DomainPolicyTypesTest.java | 240 | ||||
-rw-r--r-- | feature-lifecycle/src/test/java/org/onap/policy/drools/domain/models/DroolsPolicyModelsTest.java | 90 | ||||
-rw-r--r-- | feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/LifecycleStatePassiveTest.java | 2 | ||||
-rw-r--r-- | feature-lifecycle/src/test/java/org/onap/policy/drools/lifecycle/PolicyTypeDroolsControllerTest.java | 100 | ||||
-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 |
6 files changed, 129 insertions, 348 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 |