summaryrefslogtreecommitdiffstats
path: root/applications/monitoring/src/test
diff options
context:
space:
mode:
authorPamela Dragosh <pdragosh@research.att.com>2019-03-15 14:30:00 -0400
committerPamela Dragosh <pdragosh@research.att.com>2019-03-18 12:25:32 -0400
commit59c38b6b3dfbd43c876f85ffb1e4b484951ced44 (patch)
tree99120b17e967d8497c03fb038c664fa0063b3871 /applications/monitoring/src/test
parent934c39bcdb5ff9a095331f60ef1b279ec91875a9 (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.yaml49
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