summaryrefslogtreecommitdiffstats
path: root/controlloop/common
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-03-23 15:49:28 -0400
committerJim Hahn <jrh3@att.com>2020-03-23 17:48:52 -0400
commit6084c6dcf5bf061f33204e01116573160bf39fa6 (patch)
tree80f8e286ab3e26dbca322aa9f640001c95cc2ec2 /controlloop/common
parentdc24e69b789603dd7c8df72a945eaa82e05dd21c (diff)
Enable guards in junit tests
Flipped the flag(s) to enable guard checks in the various junit tests for the Usecases and Frankfurt controllers. Note: the guard checks use the guard simulator. Modified new actor code to not include operation history on first "guard denied" report (i.e., make it work like usecases does). Issue-ID: POLICY-2434 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: I2897da4a0c8fb76fa00cb0f6cf8562c0703005d3
Diffstat (limited to 'controlloop/common')
-rw-r--r--controlloop/common/controller-frankfurt/pom.xml5
-rw-r--r--controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties7
-rw-r--r--controlloop/common/controller-usecases/src/test/resources/config/controlloop.properties.environment4
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java23
-rw-r--r--controlloop/common/eventmanager/src/test/resources/eventService/event-svc-guard-disabled.properties3
-rw-r--r--controlloop/common/eventmanager/src/test/resources/eventService/event-svc-invalid-db.properties3
-rw-r--r--controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties3
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/feature/config/event-manager.properties3
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java6
9 files changed, 48 insertions, 9 deletions
diff --git a/controlloop/common/controller-frankfurt/pom.xml b/controlloop/common/controller-frankfurt/pom.xml
index 39511705c..078235d07 100644
--- a/controlloop/common/controller-frankfurt/pom.xml
+++ b/controlloop/common/controller-frankfurt/pom.xml
@@ -195,6 +195,11 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<profiles>
diff --git a/controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties b/controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties
index 50f337263..9244fd2ed 100644
--- a/controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties
+++ b/controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties
@@ -29,8 +29,11 @@ operation.history.password=
# configured and started. Thus some of them have a "placeholder" property.
#
-actor.service.GUARD.disabled=true
+#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=GUARD
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decision
actor.service.AAI.clientName=AAI
@@ -57,7 +60,7 @@ actor.service.CDS.grpcTimeout=10
actor.service.CDS.operations.xxx.yyy=
actor.service.SDNC.clientName=SDNC
-actor.service.SDNC.path=
+actor.service.SDNC.path=/
actor.service.SDNC.operations.BandwidthOnDemand.placeholder=
actor.service.SDNC.operations.Reroute.placeholder=
diff --git a/controlloop/common/controller-usecases/src/test/resources/config/controlloop.properties.environment b/controlloop/common/controller-usecases/src/test/resources/config/controlloop.properties.environment
index f5d1c5d83..d0b5448c4 100644
--- a/controlloop/common/controller-usecases/src/test/resources/config/controlloop.properties.environment
+++ b/controlloop/common/controller-usecases/src/test/resources/config/controlloop.properties.environment
@@ -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.
# Modifications Copyright (C) 2019 Bell Canada.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@ pdpx.password=pdpx
guard.url=http://localhost:6669/policy/pdpx/v1/decision
guard.jdbc.url=jdbc:mariadb://localhost:3306/operationshistory
-guard.disabled=true
+guard.disabled=false
sdnc.url=sdnc
sdnc.username=sdnc
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
index b880fd190..156dad7e6 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
@@ -107,6 +107,13 @@ public class ControlLoopOperationManager2 implements Serializable {
private final Deque<Operation> operationHistory = new ConcurrentLinkedDeque<>();
/**
+ * Set to {@code true} to prevent the last item in {@link #operationHistory} from
+ * being included in the outcome of {@link #getHistory()}. Used when the operation
+ * aborts prematurely due to lock-denied, guard-denied, etc.
+ */
+ private boolean holdLast = false;
+
+ /**
* Queue of outcomes yet to be processed. Outcomes are added to this each time the
* "start" or "complete" callback is invoked.
*/
@@ -417,6 +424,7 @@ public class ControlLoopOperationManager2 implements Serializable {
case LOCK_LOST:
case GUARD_DENIED:
case CONTROL_LOOP_TIMEOUT:
+ holdLast = false;
return false;
default:
break;
@@ -541,8 +549,16 @@ public class ControlLoopOperationManager2 implements Serializable {
* @return the list of control loop operations
*/
public List<ControlLoopOperation> getHistory() {
- return operationHistory.stream().map(Operation::getClOperation).map(ControlLoopOperation::new)
- .collect(Collectors.toList());
+ Operation last = (holdLast ? operationHistory.removeLast() : null);
+
+ List<ControlLoopOperation> result = operationHistory.stream().map(Operation::getClOperation)
+ .map(ControlLoopOperation::new).collect(Collectors.toList());
+
+ if (last != null) {
+ operationHistory.add(last);
+ }
+
+ return result;
}
/**
@@ -553,6 +569,9 @@ public class ControlLoopOperationManager2 implements Serializable {
* @param message message to put into the DB
*/
private void storeFailureInDataBase(OperationOutcome outcome, PolicyResult result, String message) {
+ // don't include this in history yet
+ holdLast = true;
+
outcome.setActor(actor);
outcome.setOperation(operation);
outcome.setMessage(message);
diff --git a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-guard-disabled.properties b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-guard-disabled.properties
index 65f6c0cc1..289de44eb 100644
--- a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-guard-disabled.properties
+++ b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-guard-disabled.properties
@@ -20,4 +20,7 @@
actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
diff --git a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-invalid-db.properties b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-invalid-db.properties
index 59b0615b0..09a6fbb31 100644
--- a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-invalid-db.properties
+++ b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-invalid-db.properties
@@ -20,6 +20,9 @@
#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
# purposely missing the URL
diff --git a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties
index 6e003f6d6..0fd886b46 100644
--- a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties
+++ b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties
@@ -20,6 +20,9 @@
#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
operation.history.url=jdbc:h2:mem:EventManagerServicesTest
diff --git a/controlloop/common/feature-controlloop-management/src/main/feature/config/event-manager.properties b/controlloop/common/feature-controlloop-management/src/main/feature/config/event-manager.properties
index 7c90703ae..21476847f 100644
--- a/controlloop/common/feature-controlloop-management/src/main/feature/config/event-manager.properties
+++ b/controlloop/common/feature-controlloop-management/src/main/feature/config/event-manager.properties
@@ -32,6 +32,9 @@ operation.history.password=${env:SQL_PASSWORD}
actor.service.GUARD.disabled=${envd:GUARD_DISABLED:false}
actor.service.GUARD.clientName=GUARD
+actor.service.GUARD.onapName=Policy
+actor.service.GUARD.onapComponent=Drools PDP
+actor.service.GUARD.onapInstance=Frankfurt
actor.service.GUARD.operations.Decision.path=decision
actor.service.AAI.clientName=AAI
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java
index ed6cd6c5f..5a5218c40 100644
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java
+++ b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java
@@ -1,8 +1,8 @@
/*-
* ============LICENSE_START=======================================================
- * guard
+ * ONAP
* ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -72,7 +72,7 @@ public class PolicyGuardXacmlHelper {
decisionRequest.setAction("guard");
Map<String, String> guard = new HashMap<>();
guard.put("actor", xacmlReq.getActorId());
- guard.put("recipe", xacmlReq.getOperationId());
+ guard.put("operation", xacmlReq.getOperationId());
guard.put("target", xacmlReq.getTargetId());
if (xacmlReq.getClnameId() != null) {
guard.put("clname", xacmlReq.getClnameId());