aboutsummaryrefslogtreecommitdiffstats
path: root/applications/guard/src/test
diff options
context:
space:
mode:
authorPamela Dragosh <pdragosh@research.att.com>2021-02-17 15:48:01 -0600
committerPamela Dragosh <pdragosh@research.att.com>2021-02-18 10:28:38 -0600
commit5920c029d3818a22f591c6aa1ffff4e34b6df234 (patch)
treeefaec005974d050c78a48b13a34d4e8916098a77 /applications/guard/src/test
parent8cea7022f62f1dba805564acd3f71525cdf95e23 (diff)
Utilize time extensions
Switched to using the new Time Extensions released in XACML from github v3.0. Added more thorough tests for it as well as the flexibility of specifying the current time etc. More syntax checking on the inputs from the policy. Issue-ID: POLICY-2810 Change-Id: I1b4ec885c706e37949e5dabe14c63b0d7456cd4f Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'applications/guard/src/test')
-rw-r--r--applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardPdpApplicationTest.java64
-rw-r--r--applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java14
-rw-r--r--applications/guard/src/test/resources/requests/guard.timeinrange.json15
-rw-r--r--applications/guard/src/test/resources/test-bad-policies.yaml42
-rw-r--r--applications/guard/src/test/resources/test-policies.yaml4
-rw-r--r--applications/guard/src/test/resources/test-time-in-range.yaml19
6 files changed, 151 insertions, 7 deletions
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 3b1b1c60..5b32b2a8 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
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,6 +32,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Date;
import java.time.Instant;
+import java.time.OffsetDateTime;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -426,6 +427,67 @@ public class GuardPdpApplicationTest {
requestAndCheckDecision(requestVfCount, PERMIT);
}
+ @Test
+ public void test7TimeInRange() throws Exception {
+ LOGGER.info("**************** Running test7TimeInRange ****************");
+ //
+ // Re-Load Decision Request - so we can start from scratch
+ //
+ DecisionRequest requestInRange =
+ gson.decode(TextFileUtils.getTextFileAsString("src/test/resources/requests/guard.timeinrange.json"),
+ DecisionRequest.class);
+ //
+ // Load the test policy in with the others.
+ //
+ List<ToscaPolicy> loadedPolicies =
+ TestUtils.loadPolicies("src/test/resources/test-time-in-range.yaml", service);
+ assertThat(loadedPolicies).hasSize(1);
+ //
+ // Mock what the current date and time is. Set to 12 Noon
+ // We actually do not care about time zone or the date yet, but these are here
+ // for future.
+ //
+ OffsetDateTime offsetDateTime = OffsetDateTime.parse("2020-01-01T12:00:00+05:00");
+ requestInRange.setCurrentDateTime(offsetDateTime);
+ requestInRange.setCurrentDate(offsetDateTime.toLocalDate());
+ requestInRange.setCurrentTime(offsetDateTime.toOffsetTime());
+ requestInRange.setTimeZone(offsetDateTime.getOffset());
+
+ requestAndCheckDecision(requestInRange, PERMIT);
+
+ offsetDateTime = OffsetDateTime.parse("2020-01-01T07:59:59+05:00");
+ requestInRange.setCurrentDateTime(offsetDateTime);
+ requestInRange.setCurrentDate(offsetDateTime.toLocalDate());
+ requestInRange.setCurrentTime(offsetDateTime.toOffsetTime());
+ requestInRange.setTimeZone(offsetDateTime.getOffset());
+
+ requestAndCheckDecision(requestInRange, DENY);
+
+ offsetDateTime = OffsetDateTime.parse("2020-01-01T08:00:00+05:00");
+ requestInRange.setCurrentDateTime(offsetDateTime);
+ requestInRange.setCurrentDate(offsetDateTime.toLocalDate());
+ requestInRange.setCurrentTime(offsetDateTime.toOffsetTime());
+ requestInRange.setTimeZone(offsetDateTime.getOffset());
+
+ requestAndCheckDecision(requestInRange, PERMIT);
+
+ offsetDateTime = OffsetDateTime.parse("2020-01-01T23:59:59+05:00");
+ requestInRange.setCurrentDateTime(offsetDateTime);
+ requestInRange.setCurrentDate(offsetDateTime.toLocalDate());
+ requestInRange.setCurrentTime(offsetDateTime.toOffsetTime());
+ requestInRange.setTimeZone(offsetDateTime.getOffset());
+
+ requestAndCheckDecision(requestInRange, PERMIT);
+
+ offsetDateTime = OffsetDateTime.parse("2020-01-01T00:00:00+05:00");
+ requestInRange.setCurrentDateTime(offsetDateTime);
+ requestInRange.setCurrentDate(offsetDateTime.toLocalDate());
+ requestInRange.setCurrentTime(offsetDateTime.toOffsetTime());
+ requestInRange.setTimeZone(offsetDateTime.getOffset());
+
+ requestAndCheckDecision(requestInRange, DENY);
+ }
+
@SuppressWarnings("unchecked")
private void insertOperationEvent(DecisionRequest request) {
//
diff --git a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java
index e4c958b9..cf8c0158 100644
--- a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java
+++ b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import com.att.research.xacml.api.Decision;
import com.att.research.xacml.api.Request;
-import com.att.research.xacml.api.XACML3;
import com.att.research.xacml.std.StdMutableResponse;
import com.att.research.xacml.std.StdMutableResult;
import com.att.research.xacml.std.StdStatus;
@@ -43,6 +42,7 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
import org.junit.Test;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.coder.StandardYamlCoder;
@@ -119,6 +119,9 @@ public class GuardTranslatorTest {
final Map<String, String> name2message = new HashMap<>();
name2message.put("frequency-missing-properties", "Missing property limit");
name2message.put("frequency-timewindow", "timeWindow is not an integer");
+ name2message.put("frequency-badtimerange_start", "Invalid timeRange");
+ name2message.put("frequency-badtimerange_end", "Invalid timeRange");
+ name2message.put("frequency-badtimerange_value", "timestamp 99:99:99 could not be parsed");
name2message.put("minmax-notarget", "Missing target field in minmax policy");
name2message.put("minmax-nominmax", "Missing min or max field in minmax policy");
name2message.put("blacklist-noblacklist", "Missing blacklist");
@@ -223,7 +226,7 @@ public class GuardTranslatorTest {
boolean foundOperation = false;
boolean foundTarget = false;
boolean foundControlLoop = false;
- boolean foundTimeRange = false;
+ //boolean foundTimeRange = false;
assertThat(xacmlPolicy.getTarget()).isNotNull();
assertThat(xacmlPolicy.getTarget().getAnyOf()).isNotEmpty();
@@ -257,11 +260,13 @@ public class GuardTranslatorTest {
assertThat(policy.getProperties()).containsKey(GuardTranslator.FIELD_CONTROLLOOP);
foundControlLoop = true;
}
+ /*
if (XACML3.ID_ENVIRONMENT_CURRENT_TIME.toString().equals(
match.getAttributeDesignator().getAttributeId())) {
assertThat(policy.getProperties()).containsKey(GuardTranslator.FIELD_TIMERANGE);
foundTimeRange = true;
}
+ */
}
}
}
@@ -274,7 +279,8 @@ public class GuardTranslatorTest {
assertThat(foundControlLoop).isTrue();
}
if (policy.getProperties().containsKey(GuardTranslator.FIELD_TIMERANGE)) {
- assertThat(foundTimeRange).isTrue();
+ assertThat(xacmlPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition())
+ .hasAtLeastOneElementOfType(VariableDefinitionType.class);
}
}
diff --git a/applications/guard/src/test/resources/requests/guard.timeinrange.json b/applications/guard/src/test/resources/requests/guard.timeinrange.json
new file mode 100644
index 00000000..709796c2
--- /dev/null
+++ b/applications/guard/src/test/resources/requests/guard.timeinrange.json
@@ -0,0 +1,15 @@
+{
+ "ONAPName": "Policy",
+ "ONAPComponent": "drools-pdp",
+ "ONAPInstance": "usecase-template",
+ "requestId": "unique-request-id-1",
+ "action": "guard",
+ "resource": {
+ "guard": {
+ "actor": "ACTOR",
+ "operation": "OPERATION",
+ "clname": "LOOP",
+ "target": "vnf1"
+ }
+ }
+}
diff --git a/applications/guard/src/test/resources/test-bad-policies.yaml b/applications/guard/src/test/resources/test-bad-policies.yaml
index eb39aded..bdc8ba78 100644
--- a/applications/guard/src/test/resources/test-bad-policies.yaml
+++ b/applications/guard/src/test/resources/test-bad-policies.yaml
@@ -14,6 +14,48 @@ topology_template:
properties:
limit: 5
timeWindow: i am a bad value
+ - frequency-badtimerange_start:
+ type: onap.policies.controlloop.guard.common.FrequencyLimiter
+ type_version: 1.0.0
+ version: 1.0.0
+ properties:
+ actor: APPC
+ operation: Restart
+ timeRange:
+ startTime: 08:00:00Z
+ end_time: 23:59:59Z
+ id: loop-3
+ timeWindow: 8
+ timeUnits: hour
+ limit: 0
+ - frequency-badtimerange_end:
+ type: onap.policies.controlloop.guard.common.FrequencyLimiter
+ type_version: 1.0.0
+ version: 1.0.0
+ properties:
+ actor: APPC
+ operation: Restart
+ timeRange:
+ start_time: 08:00:00Z
+ endTime: 23:59:59Z
+ id: loop-3
+ timeWindow: 8
+ timeUnits: hour
+ limit: 0
+ - frequency-badtimerange_value:
+ type: onap.policies.controlloop.guard.common.FrequencyLimiter
+ type_version: 1.0.0
+ version: 1.0.0
+ properties:
+ actor: APPC
+ operation: Restart
+ timeRange:
+ start_time: 99:99:99
+ end_time: 23:59:59Z
+ id: loop-3
+ timeWindow: 8
+ timeUnits: hour
+ limit: 0
- minmax-notarget:
type: onap.policies.controlloop.guard.common.MinMax
type_version: 1.0.0
diff --git a/applications/guard/src/test/resources/test-policies.yaml b/applications/guard/src/test/resources/test-policies.yaml
index e33f116a..c92006e3 100644
--- a/applications/guard/src/test/resources/test-policies.yaml
+++ b/applications/guard/src/test/resources/test-policies.yaml
@@ -49,8 +49,8 @@ topology_template:
actor: APPC
operation: Restart
timeRange:
- start_time: T00:00:00Z
- end_time: T08:00:00Z
+ start_time: 08:00:00Z
+ end_time: 23:59:59Z
id: loop-3
timeWindow: 8
timeUnits: hour
diff --git a/applications/guard/src/test/resources/test-time-in-range.yaml b/applications/guard/src/test/resources/test-time-in-range.yaml
new file mode 100644
index 00000000..f9463fc1
--- /dev/null
+++ b/applications/guard/src/test/resources/test-time-in-range.yaml
@@ -0,0 +1,19 @@
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+ policies:
+ -
+ guard.frequency.inrange:
+ type: onap.policies.controlloop.guard.common.FrequencyLimiter
+ type_version: 1.0.0
+ version: 1.0.0
+ name: guard.frequency.inrange
+ properties:
+ actor: ACTOR
+ operation: OPERATION
+ id: LOOP
+ timeWindow: 10
+ timeUnits: minute
+ limit: 10
+ timeRange:
+ start_time: 08:00:00+05:00
+ end_time: 23:59:59+05:00