From 6d284bc693b5103ad27ff533957ec2a51fa61f42 Mon Sep 17 00:00:00 2001 From: jhh Date: Mon, 24 Feb 2020 18:14:04 -0600 Subject: vDNS tosca compliant policies support Issue-ID: POLICY-2383 Signed-off-by: jhh Change-Id: I5d5d864b2853f6e7e0c7e1096cb17746500f2495 Signed-off-by: jhh --- .../org/onap/policy/controlloop/UsecasesBase.java | 67 ++++++++++++++++------ .../java/org/onap/policy/controlloop/VcpeTest.java | 6 +- .../java/org/onap/policy/controlloop/VfwTest.java | 6 +- .../java/org/onap/policy/controlloop/VlbTest.java | 44 +++++++++----- 4 files changed, 84 insertions(+), 39 deletions(-) (limited to 'controlloop/common/controller-usecases/src/test/java/org') diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java index 618963a70..66ad32462 100644 --- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java +++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/UsecasesBase.java @@ -36,6 +36,7 @@ import java.util.Queue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import lombok.Getter; +import org.apache.commons.lang3.StringUtils; import org.kie.api.event.rule.AfterMatchFiredEvent; import org.kie.api.event.rule.BeforeMatchFiredEvent; import org.kie.api.event.rule.DefaultAgendaEventListener; @@ -54,6 +55,7 @@ import org.onap.policy.common.endpoints.event.comm.TopicListener; import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.controlloop.drl.legacy.ControlLoopParams; import org.onap.policy.drools.persistence.SystemPersistence; import org.onap.policy.drools.persistence.SystemPersistenceConstants; @@ -66,6 +68,7 @@ import org.onap.policy.drools.util.KieUtils; import org.onap.policy.drools.utils.PropertyUtil; import org.onap.policy.drools.utils.logging.LoggerUtil; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.simulators.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,6 +79,7 @@ import org.slf4j.LoggerFactory; public abstract class UsecasesBase { private static final Logger logger = LoggerFactory.getLogger(UsecasesBase.class); + private static final StandardCoder coder = new StandardCoder(); /** * PDP-D Engine. @@ -151,14 +155,33 @@ public abstract class UsecasesBase { .get(); } + protected ToscaPolicy getPolicyFromResource(String resourcePath, String policyName) throws CoderException { + String policyJson = ResourceUtils.getResourceAsString(resourcePath); + ToscaServiceTemplate serviceTemplate = coder.decode(policyJson, ToscaServiceTemplate.class); + ToscaPolicy policy = serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName); + assertNotNull(policy); + + /* + * name and version are used within a drl. api component and drools core will ensure that these + * are populated. + */ + if (StringUtils.isBlank(policy.getName())) { + policy.setName(policyName); + } - /** - * Installs a given policy. - */ - protected ToscaPolicy setupPolicy(String policyPath) throws IOException, CoderException, InterruptedException { + if (StringUtils.isBlank(policy.getVersion())) { + policy.setVersion(policy.getTypeVersion()); + } + + return serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyName); + } + + protected ToscaPolicy getPolicyFromFile(String policyPath) throws IOException, CoderException { String rawPolicy = new String(Files.readAllBytes(Paths.get(policyPath))); - ToscaPolicy policy = new StandardCoder().decode(rawPolicy, ToscaPolicy.class); + return coder.decode(rawPolicy, ToscaPolicy.class); + } + private ToscaPolicy setupPolicy(ToscaPolicy policy) throws InterruptedException { final KieObjectExpectedCallback policyTracker = new KieObjectInsertedExpectedCallback<>(policy); final KieObjectExpectedCallback paramsTracker = new KieClassInsertedExpectedCallback<>(ControlLoopParams.class); @@ -167,23 +190,31 @@ public abstract class UsecasesBase { assertTrue(policyTracker.isNotified()); assertTrue(paramsTracker.isNotified()); - assertEquals(1, - usecases - .getDrools() - .facts(USECASES, ToscaPolicy.class).stream() - .filter((anotherPolicy) -> anotherPolicy == policy) - .count()); - - assertEquals(1, - usecases - .getDrools() - .facts(USECASES, ControlLoopParams.class).stream() - .filter((params) -> params.getToscaPolicy() == policy) - .count()); + assertEquals(1, usecases.getDrools().facts(USECASES, ToscaPolicy.class).stream() + .filter((anotherPolicy) -> anotherPolicy == policy).count()); + assertEquals(1, usecases.getDrools().facts(USECASES, ControlLoopParams.class).stream() + .filter((params) -> params.getToscaPolicy() == policy).count()); return policy; } + /** + * Installs a policy from policy/models (examples) repo. + */ + protected ToscaPolicy setupPolicyFromResource(String resourcePath, String policyName) + throws CoderException, InterruptedException { + return setupPolicy(getPolicyFromResource(resourcePath, policyName)); + } + + + /** + * Installs a given policy. + */ + protected ToscaPolicy setupPolicyFromFile(String policyPath) + throws IOException, CoderException, InterruptedException { + return setupPolicy(getPolicyFromFile(policyPath)); + } + /** * Deletes a policy. */ diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java index 1d9d0dd26..ec3b50213 100644 --- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java +++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VcpeTest.java @@ -127,7 +127,7 @@ public class VcpeTest extends UsecasesBase { @Test public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException { assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_LEGACY_POLICY_VCPE); + policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VCPE); assertEquals(2, usecases.getDrools().factCount(USECASES)); sunnyDay(); @@ -139,7 +139,7 @@ public class VcpeTest extends UsecasesBase { @Test public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException { assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_COMPLIANT_POLICY_VCPE); + policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VCPE); assertEquals(2, usecases.getDrools().factCount(USECASES)); sunnyDay(); @@ -153,7 +153,7 @@ public class VcpeTest extends UsecasesBase { @Test public void onsetFloodPrevention() throws IOException, InterruptedException, CoderException { assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_LEGACY_POLICY_VCPE); + policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VCPE); assertEquals(2, usecases.getDrools().factCount(USECASES)); injectOnTopic(DCAE_TOPIC, Paths.get(ONSET_1)); diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java index 3796f0bfb..8386b3028 100644 --- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java +++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VfwTest.java @@ -68,7 +68,7 @@ public class VfwTest extends UsecasesBase { * Prepare PDP-D Framework for testing. */ @BeforeClass - public static void prepareResouces() throws InterruptedException, CoderException, IOException { + public static void prepareResouces() throws InterruptedException, IOException { setupLogging(); preparePdpD(); setupSimulators(); @@ -124,7 +124,7 @@ public class VfwTest extends UsecasesBase { @Test public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException { assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_LEGACY_POLICY_VFW); + policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VFW); assertEquals(2, usecases.getDrools().factCount(USECASES)); sunnyDay(); @@ -136,7 +136,7 @@ public class VfwTest extends UsecasesBase { @Test public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException { assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_COMPLIANT_POLICY_VFW); + policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VFW); assertEquals(2, usecases.getDrools().factCount(USECASES)); sunnyDay(); diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java index e577fab9b..73eeae882 100644 --- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java +++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/controlloop/VlbTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +41,8 @@ public class VlbTest extends UsecasesBase { /** * VLB Tosca Policy File. */ - private static final String TOSCA_POLICY_VLB = "src/test/resources/vlb/tosca-vlb.json"; + private static final String TOSCA_LEGACY_POLICY_VLB = "src/test/resources/vlb/tosca-vlb.json"; + private static final String TOSCA_COMPLIANT_POLICY_VLB = "src/test/resources/vlb/tosca-compliant-vlb.json"; /* * VLB Use case Messages. @@ -62,7 +63,7 @@ public class VlbTest extends UsecasesBase { * Prepare PDP-D Framework for testing. */ @BeforeClass - public static void prepareResouces() throws InterruptedException, CoderException, IOException { + public static void prepareResouces() throws InterruptedException, IOException { setupLogging(); preparePdpD(); setupSimulators(); @@ -80,8 +81,7 @@ public class VlbTest extends UsecasesBase { /** * Sunny day scenario for the VCPE use case. */ - @Test - public void sunnyDay() throws IOException { + private void sunnyDay() throws IOException { /* Inject an ONSET event over the DCAE topic */ injectOnTopic(DCAE_TOPIC, Paths.get(ONSET)); @@ -100,6 +100,30 @@ public class VlbTest extends UsecasesBase { waitForFinalSuccess(policy, policyClMgt); } + /** + * Sunny Day with Legacy Tosca Policy. + */ + @Test + public void sunnyDayLegacy() throws InterruptedException, CoderException, IOException { + assertEquals(0, usecases.getDrools().factCount(USECASES)); + policy = setupPolicyFromFile(TOSCA_LEGACY_POLICY_VLB); + assertEquals(2, usecases.getDrools().factCount(USECASES)); + + sunnyDay(); + } + + /** + * Sunny Day with Tosca Compliant Policy. + */ + @Test + public void sunnyDayCompliant() throws InterruptedException, CoderException, IOException { + assertEquals(0, usecases.getDrools().factCount(USECASES)); + policy = setupPolicyFromFile(TOSCA_COMPLIANT_POLICY_VLB); + assertEquals(2, usecases.getDrools().factCount(USECASES)); + + sunnyDay(); + } + /** * Observe Topics. */ @@ -118,16 +142,6 @@ public class VlbTest extends UsecasesBase { } } - /** - * Install Policy. - */ - @Before - public void installPolicy() throws IOException, CoderException, InterruptedException { - assertEquals(0, usecases.getDrools().factCount(USECASES)); - policy = setupPolicy(TOSCA_POLICY_VLB); - assertEquals(2, usecases.getDrools().factCount(USECASES)); - } - /** * Uninstall Policy. */ -- cgit 1.2.3-korg