diff options
author | Pamela Dragosh <pdragosh@research.att.com> | 2019-03-15 14:30:00 -0400 |
---|---|---|
committer | Pamela Dragosh <pdragosh@research.att.com> | 2019-03-18 12:25:32 -0400 |
commit | 59c38b6b3dfbd43c876f85ffb1e4b484951ced44 (patch) | |
tree | 99120b17e967d8497c03fb038c664fa0063b3871 /applications/monitoring/src/test | |
parent | 934c39bcdb5ff9a095331f60ef1b279ec91875a9 (diff) |
Started with test decision JSON objects.
Added new Policy Finder Factory that ONAP will use and
got the code working with new policy/models (see other
review which will have to be merged first).
Added some new conversion methods to convert from a
Xacml request to an Onap request.
Added some property methods for XACML Properties objects
and JUnit tests.
Started filling in some Guard application details and
combining code.
Issue-ID: POLICY-1602
Change-Id: I5235b74f3b036dcf05779b655a03ac290d594354
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'applications/monitoring/src/test')
-rw-r--r-- | applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java (renamed from applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java) | 131 | ||||
-rw-r--r-- | applications/monitoring/src/test/resources/vDNS.policy.input.yaml | 49 |
2 files changed, 97 insertions, 83 deletions
diff --git a/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java index 940a974b..af6e6548 100644 --- a/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java +++ b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/application/monitoring/MonitoringPdpApplicationTest.java @@ -20,23 +20,15 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.xacml.pdp.engine; +package org.onap.policy.xacml.pdp.application.monitoring; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; -import static org.junit.Assert.assertEquals; -import com.att.research.xacml.api.Decision; -import com.att.research.xacml.api.Response; -import com.att.research.xacml.api.Result; -import com.att.research.xacml.std.annotations.RequestParser; -import com.att.research.xacml.std.annotations.XACMLAction; -import com.att.research.xacml.std.annotations.XACMLRequest; -import com.att.research.xacml.std.annotations.XACMLResource; -import com.att.research.xacml.std.annotations.XACMLSubject; import com.att.research.xacml.util.XACMLProperties; import com.google.common.io.Files; +import com.google.gson.Gson; import java.io.File; import java.io.FileInputStream; @@ -56,46 +48,50 @@ import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +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.decisions.serialization.DecisionRequestMessageBodyHandler; +import org.onap.policy.models.decisions.serialization.DecisionResponseMessageBodyHandler; import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionException; import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; -public class OnapXacmlPdpEngineTest { +public class MonitoringPdpApplicationTest { - private static final Logger LOGGER = LoggerFactory.getLogger(OnapXacmlPdpEngineTest.class); - private static OnapXacmlPdpEngine onapPdpEngine; + private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPdpApplicationTest.class); private static Properties properties = new Properties(); private static File propertiesFile; + private static XacmlApplicationServiceProvider service; + private static DecisionRequest requestSinglePolicy; + + private static Gson gsonDecisionRequest; + private static Gson gsonDecisionResponse; @ClassRule public static final TemporaryFolder policyFolder = new TemporaryFolder(); /** - * This is a simple annotation class to simulate - * requests coming in. - */ - @XACMLRequest(ReturnPolicyIdList = true) - public class MyXacmlRequest { - - @XACMLSubject(includeInResults = true) - String onapName = "DCAE"; - - @XACMLResource(includeInResults = true) - String resource = "onap.policies.Monitoring"; - - @XACMLAction() - String action = "configure"; - } - - /** * Load a test engine. */ @BeforeClass public static void setup() { assertThatCode(() -> { // + // Create our Gson builder + // + gsonDecisionRequest = new DecisionRequestMessageBodyHandler().getGson(); + gsonDecisionResponse = new DecisionResponseMessageBodyHandler().getGson(); + // + // Load Single Decision Request + // + requestSinglePolicy = gsonDecisionRequest.fromJson( + TextFileUtils + .getTextFileAsString("../../main/src/test/resources/decisions/decision.single.input.json"), + DecisionRequest.class); + // // Copy all the properties and root policies to the temporary folder // try (InputStream is = new FileInputStream("src/test/resources/xacml.properties")) { @@ -147,6 +143,16 @@ public class OnapXacmlPdpEngineTest { Iterator<XacmlApplicationServiceProvider> iterator = applicationLoader.iterator(); while (iterator.hasNext()) { XacmlApplicationServiceProvider application = iterator.next(); + // + // Is it our service? + // + if (application instanceof MonitoringPdpApplication) { + // + // Should be the first and only one + // + assertThat(service).isNull(); + service = application; + } strDump.append(application.applicationName()); strDump.append(" supports "); strDump.append(application.supportedPolicyTypes()); @@ -154,31 +160,27 @@ public class OnapXacmlPdpEngineTest { } LOGGER.debug("{}", strDump); // - // Create the engine instance - // - onapPdpEngine = new OnapXacmlPdpEngine(); - // // Tell it to initialize based on the properties file // we just built for it. // - onapPdpEngine.initialize(propertiesFile.toPath().getParent()); + service.initialize(propertiesFile.toPath().getParent()); // // Make sure there's an application name // - assertThat(onapPdpEngine.applicationName()).isNotEmpty(); + assertThat(service.applicationName()).isNotEmpty(); // // Ensure it has the supported policy types and // can support the correct policy types. // - assertThat(onapPdpEngine.canSupportPolicyType("onap.Monitoring", "1.0.0")).isTrue(); - assertThat(onapPdpEngine.canSupportPolicyType("onap.Monitoring", "1.5.0")).isTrue(); - assertThat(onapPdpEngine.canSupportPolicyType("onap.policies.monitoring.foobar", "1.0.1")).isTrue(); - assertThat(onapPdpEngine.canSupportPolicyType("onap.foobar", "1.0.0")).isFalse(); - assertThat(onapPdpEngine.supportedPolicyTypes()).contains("onap.Monitoring"); + assertThat(service.canSupportPolicyType("onap.Monitoring", "1.0.0")).isTrue(); + assertThat(service.canSupportPolicyType("onap.Monitoring", "1.5.0")).isTrue(); + assertThat(service.canSupportPolicyType("onap.policies.monitoring.foobar", "1.0.1")).isTrue(); + assertThat(service.canSupportPolicyType("onap.foobar", "1.0.0")).isFalse(); + assertThat(service.supportedPolicyTypes()).contains("onap.Monitoring"); // // Ensure it supports decisions // - assertThat(onapPdpEngine.actionDecisionsSupported()).contains("configure"); + assertThat(service.actionDecisionsSupported()).contains("configure"); }).doesNotThrowAnyException(); } @@ -188,11 +190,16 @@ public class OnapXacmlPdpEngineTest { // Make a simple decision - NO policies are loaded // assertThatCode(() -> { - Response response = onapPdpEngine.decision(RequestParser.parseRequest(new MyXacmlRequest())); - for (Result result : response.getResults()) { - LOGGER.info("Decision {}", result.getDecision()); - assertEquals(Decision.PERMIT, result.getDecision()); - } + // + // Ask for a decision + // + DecisionResponse response = service.makeDecision(requestSinglePolicy); + LOGGER.info("Decision {}", response); + + assertThat(response).isNotNull(); + assertThat(response.getErrorMessage()).isNullOrEmpty(); + assertThat(response.getPolicies().size()).isEqualTo(0); + }).doesNotThrowAnyException(); } @@ -227,7 +234,7 @@ public class OnapXacmlPdpEngineTest { // Find the type and make sure the engine supports it // assertThat(policyDefinition.containsKey("type")).isTrue(); - assertThat(onapPdpEngine.canSupportPolicyType( + assertThat(service.canSupportPolicyType( policyDefinition.get("type").toString(), policyDefinition.get("version").toString())) .isTrue(); @@ -238,18 +245,31 @@ public class OnapXacmlPdpEngineTest { // // Assuming all are supported etc. // - onapPdpEngine.loadPolicies(toscaObject); + service.loadPolicies(toscaObject); + // + // Ask for a decision + // + DecisionResponse response = service.makeDecision(requestSinglePolicy); + LOGGER.info("Decision {}", response); - //List<PolicyType> policies = onapPdpEngine.convertPolicies(is); + assertThat(response).isNotNull(); + assertThat(response.getPolicies().size()).isEqualTo(1); + // + // Dump it out as Json // - // Should have a policy - //// assertThat(policies.isEmpty()).isFalse(); + LOGGER.info(gsonDecisionResponse.toJson(response)); } }).doesNotThrowAnyException(); } @Test public void testBadPolicies() { + // + // No need for service, just test some of the methods + // for bad policies + // + MonitoringPdpApplication onapPdpEngine = new MonitoringPdpApplication(); + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { try (InputStream is = new FileInputStream("src/test/resources/test.monitoring.policy.missingmetadata.yaml")) { @@ -284,13 +304,6 @@ public class OnapXacmlPdpEngineTest { onapPdpEngine.convertPolicies(is); } }).withMessageContaining("missing metadata policy-id"); - - assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { - try (InputStream is = - new FileInputStream("src/test/resources/test.monitoring.policy.missingproperties.yaml")) { - onapPdpEngine.convertPolicies(is); - } - }).withMessageContaining("missing properties section"); } } diff --git a/applications/monitoring/src/test/resources/vDNS.policy.input.yaml b/applications/monitoring/src/test/resources/vDNS.policy.input.yaml index ee12c702..763af75f 100644 --- a/applications/monitoring/src/test/resources/vDNS.policy.input.yaml +++ b/applications/monitoring/src/test/resources/vDNS.policy.input.yaml @@ -8,27 +8,28 @@ policies: policy-id: onap.scaleout.tca policy-version: 1 properties: - domain: measurementsForVfScaling - metricsPerEventName: - - - eventName: vLoadBalancer - controlLoopSchemaType: VNF - policyScope: "type=configuration" - policyName: "onap.scaleout.tca" - policyVersion: "v0.0.1" - thresholds: - - closedLoopControlName: "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A" - closedLoopEventStatus: ONSET - version: "1.0.2" - fieldPath: "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated" - thresholdValue: 500 - direction: LESS_OR_EQUAL - severity: MAJOR - - - closedLoopControlName: "CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B" - closedLoopEventStatus: ONSET - version: "1.0.2" - fieldPath: "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated" - thresholdValue: 5000 - direction: GREATER_OR_EQUAL - severity: CRITICAL + tca_policy: + domain: measurementsForVfScaling + metricsPerEventName: + - + eventName: vLoadBalancer + controlLoopSchemaType: VNF + policyScope: "type=configuration" + policyName: "onap.scaleout.tca" + policyVersion: "v0.0.1" + thresholds: + - closedLoopControlName: "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A" + closedLoopEventStatus: ONSET + version: "1.0.2" + fieldPath: "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated" + thresholdValue: 500 + direction: LESS_OR_EQUAL + severity: MAJOR + - + closedLoopControlName: "CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B" + closedLoopEventStatus: ONSET + version: "1.0.2" + fieldPath: "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated" + thresholdValue: 5000 + direction: GREATER_OR_EQUAL + severity: CRITICAL |