X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=applications%2Fguard%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Fpdp%2Fapplication%2Fguard%2FGuardPdpApplicationTest.java;h=a5c5ff41afbd8f6cd53497b232c9b18924dc0042;hb=85b5178017e89c815af7792826f52a90814f5dba;hp=17917af030bdf0ee44fbf48edaea046b5e42fa97;hpb=f29c828ff0a1479393001e487d5f86a1c8d744ee;p=policy%2Fxacml-pdp.git diff --git a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardPdpApplicationTest.java b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardPdpApplicationTest.java index 17917af0..a5c5ff41 100644 --- a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardPdpApplicationTest.java +++ b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardPdpApplicationTest.java @@ -24,6 +24,8 @@ package org.onap.policy.xacml.pdp.application.guard; import static org.assertj.core.api.Assertions.assertThat; +import com.att.research.xacml.api.Response; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -39,6 +41,7 @@ import java.util.UUID; import javax.persistence.EntityManager; import javax.persistence.Persistence; +import org.apache.commons.lang3.tuple.Pair; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -47,17 +50,19 @@ import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runners.MethodSorters; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.TextFileUtils; import org.onap.policy.models.decisions.concepts.DecisionRequest; import org.onap.policy.models.decisions.concepts.DecisionResponse; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; -import org.onap.policy.pdp.xacml.application.common.OnapOperationsHistoryDbao; import org.onap.policy.pdp.xacml.application.common.TestUtils; import org.onap.policy.pdp.xacml.application.common.XacmlApplicationException; import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider; import org.onap.policy.pdp.xacml.application.common.XacmlPolicyUtils; +import org.onap.policy.pdp.xacml.application.common.operationshistory.CountRecentOperationsPip; +import org.onap.policy.pdp.xacml.application.common.operationshistory.Dbao; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,6 +72,7 @@ public class GuardPdpApplicationTest { private static final Logger LOGGER = LoggerFactory.getLogger(GuardPdpApplicationTest.class); private static Properties properties = new Properties(); private static File propertiesFile; + private static RestServerParameters clientParams = new RestServerParameters(); private static XacmlApplicationServiceProvider service; private static DecisionRequest requestVfCount1; private static DecisionRequest requestVfCount3; @@ -85,7 +91,7 @@ public class GuardPdpApplicationTest { * instance of provider off for other tests to use. */ @BeforeClass - public static void setUp() throws Exception { + public static void setup() throws Exception { LOGGER.info("Setting up class"); // // Setup our temporary folder @@ -125,27 +131,28 @@ public class GuardPdpApplicationTest { // Tell it to initialize based on the properties file // we just built for it. // - service.initialize(propertiesFile.toPath().getParent()); + service.initialize(propertiesFile.toPath().getParent(), clientParams); // // Load Decision Requests // requestVfCount1 = gson.decode( TextFileUtils.getTextFileAsString( - "../../main/src/test/resources/decisions/decision.guard.vfCount.1.input.json"), + "src/test/resources/requests/guard.vfCount.1.json"), DecisionRequest.class); requestVfCount3 = gson.decode( TextFileUtils.getTextFileAsString( - "../../main/src/test/resources/decisions/decision.guard.vfCount.3.input.json"), + "src/test/resources/requests/guard.vfCount.3.json"), DecisionRequest.class); requestVfCount6 = gson.decode( TextFileUtils.getTextFileAsString( - "../../main/src/test/resources/decisions/decision.guard.vfCount.6.input.json"), + "src/test/resources/requests/guard.vfCount.6.json"), DecisionRequest.class); // // Create EntityManager for manipulating DB // + String persistenceUnit = CountRecentOperationsPip.ISSUER_NAME + ".persistenceunit"; em = Persistence.createEntityManagerFactory( - GuardPdpApplicationTest.properties.getProperty("historydb.persistenceunit"), properties) + GuardPdpApplicationTest.properties.getProperty(persistenceUnit), properties) .createEntityManager(); } @@ -156,7 +163,7 @@ public class GuardPdpApplicationTest { @Before public void startClean() throws Exception { em.getTransaction().begin(); - em.createQuery("DELETE FROM OnapOperationsHistoryDbao").executeUpdate(); + em.createQuery("DELETE FROM Dbao").executeUpdate(); em.getTransaction().commit(); } @@ -189,11 +196,11 @@ public class GuardPdpApplicationTest { // // Ask for a decision // - DecisionResponse response = service.makeDecision(request); + Pair decision = service.makeDecision(request); // // Check decision // - checkDecision(expected, response); + checkDecision(expected, decision.getKey()); } @Test @@ -213,7 +220,7 @@ public class GuardPdpApplicationTest { // can support the correct policy types. // assertThat(service.supportedPolicyTypes()).isNotEmpty(); - assertThat(service.supportedPolicyTypes().size()).isEqualTo(2); + assertThat(service.supportedPolicyTypes().size()).isEqualTo(4); assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( "onap.policies.controlloop.guard.FrequencyLimiter", "1.0.0"))).isTrue(); assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( @@ -222,6 +229,14 @@ public class GuardPdpApplicationTest { "onap.policies.controlloop.guard.MinMax", "1.0.0"))).isTrue(); assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( "onap.policies.controlloop.guard.MinMax", "1.0.1"))).isFalse(); + assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( + "onap.policies.controlloop.guard.Blacklist", "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( + "onap.policies.controlloop.guard.Blacklist", "1.0.1"))).isFalse(); + assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( + "onap.policies.controlloop.guard.coordination.FirstBlocksSecond", "1.0.0"))).isTrue(); + assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier( + "onap.policies.controlloop.guard.coordination.FirstBlocksSecond", "1.0.1"))).isFalse(); assertThat(service.canSupportPolicyType(new ToscaPolicyTypeIdentifier("onap.foo", "1.0.1"))).isFalse(); } @@ -329,22 +344,44 @@ public class GuardPdpApplicationTest { // // Ask for a decision - should get permit // - DecisionResponse response = service.makeDecision(request); - LOGGER.info("Looking for Permit Decision {}", response); - assertThat(response).isNotNull(); - assertThat(response.getStatus()).isNotNull(); - assertThat(response.getStatus()).isEqualTo("Permit"); + Pair decision = service.makeDecision(request); + LOGGER.info("Looking for Permit Decision {}", decision.getKey()); + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getStatus()).isNotNull(); + assertThat(decision.getKey().getStatus()).isEqualTo("Permit"); // // Try a deny // guard.put("vfCount", "10"); resource.put("guard", guard); request.setResource(resource); - response = service.makeDecision(request); - LOGGER.info("Looking for Deny Decision {}", response); - assertThat(response).isNotNull(); - assertThat(response.getStatus()).isNotNull(); - assertThat(response.getStatus()).isEqualTo("Deny"); + decision = service.makeDecision(request); + LOGGER.info("Looking for Deny Decision {}", decision.getKey()); + assertThat(decision.getKey()).isNotNull(); + assertThat(decision.getKey().getStatus()).isNotNull(); + assertThat(decision.getKey().getStatus()).isEqualTo("Deny"); + } + + @SuppressWarnings("unchecked") + @Test + public void test6Blacklist() throws CoderException, XacmlApplicationException { + LOGGER.info("**************** Running test4 ****************"); + // + // Setup requestVfCount1 to point to another target for this test + // + ((Map)requestVfCount3.getResource().get("guard")).put("targets", "vLoadBalancer-01"); + // + // vfcount=1 above min of 2: should get a permit + // + requestAndCheckDecision(requestVfCount3, PERMIT); + // + // Now load the vDNS blacklist policy + // + TestUtils.loadPolicies("src/test/resources/vDNS.policy.guard.blacklist.output.tosca.yaml", service); + // + // vfcount=1 above min of 2: should get a permit + // + requestAndCheckDecision(requestVfCount3, DENY); } @SuppressWarnings("unchecked") @@ -357,10 +394,10 @@ public class GuardPdpApplicationTest { // // Add an entry // - OnapOperationsHistoryDbao newEntry = new OnapOperationsHistoryDbao(); + Dbao newEntry = new Dbao(); newEntry.setActor(properties.get("actor").toString()); newEntry.setOperation(properties.get("recipe").toString()); - newEntry.setClName(properties.get("clname").toString()); + newEntry.setClosedLoopName(properties.get("clname").toString()); newEntry.setOutcome("SUCCESS"); newEntry.setStarttime(Date.from(Instant.now().minusMillis(20000))); newEntry.setEndtime(Date.from(Instant.now())); @@ -372,8 +409,14 @@ public class GuardPdpApplicationTest { em.getTransaction().commit(); } + /** + * Close the entity manager. + */ @AfterClass public static void cleanup() throws Exception { - em.close(); + if (em != null) { + em.close(); + } } + }