Fix some sonar issues in drools-applications 23/90623/4
authorJim Hahn <jrh3@att.com>
Thu, 27 Jun 2019 14:52:06 +0000 (10:52 -0400)
committerJim Hahn <jrh3@att.com>
Thu, 27 Jun 2019 22:00:21 +0000 (18:00 -0400)
Added coverage to:
- feature-controlloop-management

Fixed sonar issues, but didn't add coverage to:
- feature-controlloop-trans
- eventmanager
- guard

Change-Id: I12f09c4a533e838c6fb9762ba56194e51ce864eb
Issue-ID: POLICY-1791
Signed-off-by: Jim Hahn <jrh3@att.com>
30 files changed:
controlloop/common/eventmanager/pom.xml
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopExceptionTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopLoggerTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ControlLoopPublisherTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/SupportUtil.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/utils/ControlLoopUtilsTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/drools/DroolsPolicyEngineTest.java
controlloop/common/eventmanager/src/test/resources/META-INF/persistence.xml
controlloop/common/feature-controlloop-management/pom.xml
controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/apps/controlloop/feature/management/ControlLoopManagementFeature.java
controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/apps/controlloop/feature/management/ControlLoopManagementFeatureTest.java
controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java
controlloop/common/feature-controlloop-trans/src/main/java/org/onap/policy/drools/apps/controlloop/feature/trans/CacheBasedControlLoopMetricsManager.java
controlloop/common/feature-controlloop-trans/src/test/java/org/onap/policy/drools/apps/controlloop/feature/trans/ControlLoopMetricsFeatureTest.java
controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/PnfTargetLock.java
controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java [new file with mode: 0644]
controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VmTargetLock.java
controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VnfTargetLock.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/GuardUtilTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardRequestTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardResponseTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardXacmlHelperTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardYamlToXacmlTest.java
controlloop/common/guard/src/test/java/org/onap/policy/guard/SupportTextFileUtils.java

index e1621e5..bb5d903 100644 (file)
       <artifactId>powermock-api-mockito</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
index b82a5f8..57df6b3 100644 (file)
@@ -24,13 +24,19 @@ import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Set;
 import java.util.UUID;
+import java.util.stream.Collectors;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.policy.aai.AaiCqResponse;
 import org.onap.policy.aai.AaiGetVnfResponse;
 import org.onap.policy.aai.AaiGetVserverResponse;
@@ -90,6 +96,16 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
     private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManager.class);
 
     private static final long serialVersionUID = -1216568161322872641L;
+
+    private static final Set<String> VALID_TARGETS;
+
+    static {
+        VALID_TARGETS = Collections.unmodifiableSet(new HashSet<>(
+                        Arrays.asList(VM_NAME, VNF_NAME, VSERVER_VSERVER_NAME,
+                                        GENERIC_VNF_VNF_ID, GENERIC_VNF_VNF_NAME)
+                        .stream().map(String::toLowerCase).collect(Collectors.toList())));
+    }
+
     public final String closedLoopControlName;
     private final UUID requestId;
 
@@ -308,18 +324,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
      * @throws ControlLoopException if an error occurs
      */
     public VirtualControlLoopNotification isControlLoopFinal() throws ControlLoopException {
-        //
-        // Check if they activated us
-        //
-        if (!this.isActivated) {
-            throw new ControlLoopException("ControlLoopEventManager MUST be activated first.");
-        }
-        //
-        // Make sure we are expecting this call.
-        //
-        if (this.onset == null) {
-            throw new ControlLoopException("No onset event for ControlLoopEventManager.");
-        }
+        validateFinalControlLoop();
         //
         // Ok, start creating the notification
         //
@@ -374,14 +379,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
         return notification;
     }
 
-    /**
-     * Process the control loop.
-     *
-     * @return a ControlLoopOperationManager
-     * @throws ControlLoopException if an error occurs
-     * @throws AaiException if an error occurs retrieving information from A&AI
-     */
-    public ControlLoopOperationManager processControlLoop() throws ControlLoopException, AaiException {
+    private void validateFinalControlLoop() throws ControlLoopException {
         //
         // Check if they activated us
         //
@@ -394,6 +392,17 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
         if (this.onset == null) {
             throw new ControlLoopException("No onset event for ControlLoopEventManager.");
         }
+    }
+
+    /**
+     * Process the control loop.
+     *
+     * @return a ControlLoopOperationManager
+     * @throws ControlLoopException if an error occurs
+     * @throws AaiException if an error occurs retrieving information from A&AI
+     */
+    public ControlLoopOperationManager processControlLoop() throws ControlLoopException, AaiException {
+        validateFinalControlLoop();
         //
         // Is there a current operation?
         //
@@ -692,12 +701,8 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
      * @throws ControlLoopException if an error occurs
      */
     public void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
-        if (event.getClosedLoopEventStatus() == null
-                || (event.getClosedLoopEventStatus() != ControlLoopEventStatus.ONSET
-                        && event.getClosedLoopEventStatus() != ControlLoopEventStatus.ABATED)) {
-            throw new ControlLoopException("Invalid value in closedLoopEventStatus");
-        }
-        if (event.getClosedLoopControlName() == null || event.getClosedLoopControlName().length() < 1) {
+        validateStatus(event);
+        if (StringUtils.isBlank(event.getClosedLoopControlName())) {
             throw new ControlLoopException("No control loop name");
         }
         if (event.getRequestId() == null) {
@@ -706,14 +711,23 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
         if (event.getClosedLoopEventStatus() == ControlLoopEventStatus.ABATED) {
             return;
         }
-        if (event.getTarget() == null || event.getTarget().length() < 1) {
+        if (StringUtils.isBlank(event.getTarget())) {
             throw new ControlLoopException("No target field");
-        } else if (!VM_NAME.equalsIgnoreCase(event.getTarget()) && !VNF_NAME.equalsIgnoreCase(event.getTarget())
-                && !VSERVER_VSERVER_NAME.equalsIgnoreCase(event.getTarget())
-                && !GENERIC_VNF_VNF_ID.equalsIgnoreCase(event.getTarget())
-                && !GENERIC_VNF_VNF_NAME.equalsIgnoreCase(event.getTarget())) {
+        } else if (!VALID_TARGETS.contains(event.getTarget().toLowerCase())) {
             throw new ControlLoopException("target field invalid - expecting VM_NAME or VNF_NAME");
         }
+        validateAaiData(event);
+    }
+
+    private void validateStatus(VirtualControlLoopEvent event) throws ControlLoopException {
+        if (event.getClosedLoopEventStatus() == null
+                || (event.getClosedLoopEventStatus() != ControlLoopEventStatus.ONSET
+                        && event.getClosedLoopEventStatus() != ControlLoopEventStatus.ABATED)) {
+            throw new ControlLoopException("Invalid value in closedLoopEventStatus");
+        }
+    }
+
+    private void validateAaiData(VirtualControlLoopEvent event) throws ControlLoopException {
         if (event.getAai() == null) {
             throw new ControlLoopException("AAI is null");
         }
index 3ff5c26..006899e 100644 (file)
@@ -62,6 +62,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ControlLoopOperationManager implements Serializable {
+    private static final String SUCCESS_MSG = " Success";
+    private static final String FAILED_MSG = " Failed";
+    private static final String AAI_CUSTOM_QUERY = "aai.customQuery";
     private static final long serialVersionUID = -3773199283624595410L;
     private static final Logger logger = LoggerFactory.getLogger(ControlLoopOperationManager.class);
 
@@ -110,28 +113,7 @@ public class ControlLoopOperationManager implements Serializable {
         //
         switch (policy.getActor()) {
             case "APPC":
-                if ("ModifyConfig".equalsIgnoreCase(policy.getRecipe())) {
-                    /*
-                     * The target vnf-id may not be the same as the source vnf-id specified in the yaml, the target
-                     * vnf-id is retrieved by a named query to A&AI.
-                     */
-                    if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-                        GenericVnf genvnf = this.eventManager.getCqResponse((VirtualControlLoopEvent) onset)
-                                .getGenericVnfByModelInvariantId(policy.getTarget().getResourceID());
-                        if (genvnf == null) {
-                            logger.info("Target entity could not be found");
-                            throw new AaiException("Target vnf-id could not be found");
-                        }
-                        this.targetEntity = genvnf.getVnfId();
-
-                    } else {
-                        this.targetEntity =
-                                AppcLcmActorServiceProvider.vnfNamedQuery(policy.getTarget().getResourceID(),
-                                        this.targetEntity, PolicyEngine.manager.getEnvironmentProperty("aai.url"),
-                                        PolicyEngine.manager.getEnvironmentProperty("aai.username"),
-                                        PolicyEngine.manager.getEnvironmentProperty("aai.password"));
-                    }
-                }
+                initAppc(onset, policy);
                 break;
             case "SO":
                 break;
@@ -147,6 +129,32 @@ public class ControlLoopOperationManager implements Serializable {
     }
 
 
+    private void initAppc(ControlLoopEvent onset, Policy policy) throws AaiException {
+        if ("ModifyConfig".equalsIgnoreCase(policy.getRecipe())) {
+            /*
+             * The target vnf-id may not be the same as the source vnf-id specified in the yaml, the target
+             * vnf-id is retrieved by a named query to A&AI.
+             */
+            if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty(AAI_CUSTOM_QUERY))) {
+                GenericVnf genvnf = this.eventManager.getCqResponse((VirtualControlLoopEvent) onset)
+                        .getGenericVnfByModelInvariantId(policy.getTarget().getResourceID());
+                if (genvnf == null) {
+                    logger.info("Target entity could not be found");
+                    throw new AaiException("Target vnf-id could not be found");
+                }
+                this.targetEntity = genvnf.getVnfId();
+
+            } else {
+                this.targetEntity =
+                        AppcLcmActorServiceProvider.vnfNamedQuery(policy.getTarget().getResourceID(),
+                                this.targetEntity, PolicyEngine.manager.getEnvironmentProperty("aai.url"),
+                                PolicyEngine.manager.getEnvironmentProperty("aai.username"),
+                                PolicyEngine.manager.getEnvironmentProperty("aai.password"));
+            }
+        }
+    }
+
+
     public ControlLoopEventManager getEventManager() {
         return eventManager;
     }
@@ -218,72 +226,48 @@ public class ControlLoopOperationManager implements Serializable {
                 throw new ControlLoopException("PNF target is not supported");
             case VM:
             case VNF:
-                VirtualControlLoopEvent virtualOnset = (VirtualControlLoopEvent) this.onset;
-                if (this.onset.getTarget().equalsIgnoreCase(VSERVER_VSERVER_NAME)) {
-                    return virtualOnset.getAai().get(VSERVER_VSERVER_NAME);
-                } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_ID)) {
-                    return virtualOnset.getAai().get(GENERIC_VNF_VNF_ID);
-                } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_NAME)) {
-                    /*
-                     * If the onset is enriched with the vnf-id, we don't need an A&AI response
-                     */
-                    if (virtualOnset.getAai().containsKey(GENERIC_VNF_VNF_ID)) {
-                        return virtualOnset.getAai().get(GENERIC_VNF_VNF_ID);
-                    }
-
-                    /*
-                     * If the vnf-name was retrieved from the onset then the vnf-id must be obtained from the event
-                     * manager's A&AI GET query
-                     */
-                    String vnfId;
-                    if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-                        vnfId = this.eventManager.getCqResponse((VirtualControlLoopEvent) onset).getDefaultGenericVnf()
-                                .getVnfId();
-                    } else {
-                        vnfId = this.eventManager.getVnfResponse().getVnfId();
-                    }
-                    if (vnfId == null) {
-                        throw new AaiException("No vnf-id found");
-                    }
-                    return vnfId;
-                }
-                throw new ControlLoopException("Target does not match target type");
+                return getVfModuleTarget();
             case VFMODULE:
-                VirtualControlLoopEvent virtualOnsetEvent = (VirtualControlLoopEvent) this.onset;
-                if (this.onset.getTarget().equalsIgnoreCase(VSERVER_VSERVER_NAME)) {
-                    return virtualOnsetEvent.getAai().get(VSERVER_VSERVER_NAME);
-                } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_ID)) {
-                    return virtualOnsetEvent.getAai().get(GENERIC_VNF_VNF_ID);
-                } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_NAME)) {
-                    /*
-                     * If the onset is enriched with the vnf-id, we don't need an A&AI response
-                     */
-                    if (virtualOnsetEvent.getAai().containsKey(GENERIC_VNF_VNF_ID)) {
-                        return virtualOnsetEvent.getAai().get(GENERIC_VNF_VNF_ID);
-                    }
-
-                    /*
-                     * If the vnf-name was retrieved from the onset then the vnf-id must be obtained from the event
-                     * manager's A&AI GET query
-                     */
-                    String vnfId;
-                    if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-                        vnfId = this.eventManager.getCqResponse((VirtualControlLoopEvent) onset).getDefaultGenericVnf()
-                                .getVnfId();
-                    } else {
-                        vnfId = this.eventManager.getVnfResponse().getVnfId();
-                    }
-                    if (vnfId == null) {
-                        throw new AaiException("No vnf-id found");
-                    }
-                    return vnfId;
-                }
-                throw new ControlLoopException("Target does not match target type");
+                return getVfModuleTarget();
             default:
                 throw new ControlLoopException("The target type is not supported");
         }
     }
 
+
+    private String getVfModuleTarget() throws AaiException, ControlLoopException {
+        VirtualControlLoopEvent virtualOnsetEvent = (VirtualControlLoopEvent) this.onset;
+        if (this.onset.getTarget().equalsIgnoreCase(VSERVER_VSERVER_NAME)) {
+            return virtualOnsetEvent.getAai().get(VSERVER_VSERVER_NAME);
+        } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_ID)) {
+            return virtualOnsetEvent.getAai().get(GENERIC_VNF_VNF_ID);
+        } else if (this.onset.getTarget().equalsIgnoreCase(GENERIC_VNF_VNF_NAME)) {
+            /*
+             * If the onset is enriched with the vnf-id, we don't need an A&AI response
+             */
+            if (virtualOnsetEvent.getAai().containsKey(GENERIC_VNF_VNF_ID)) {
+                return virtualOnsetEvent.getAai().get(GENERIC_VNF_VNF_ID);
+            }
+
+            /*
+             * If the vnf-name was retrieved from the onset then the vnf-id must be obtained from the event
+             * manager's A&AI GET query
+             */
+            String vnfId;
+            if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty(AAI_CUSTOM_QUERY))) {
+                vnfId = this.eventManager.getCqResponse((VirtualControlLoopEvent) onset).getDefaultGenericVnf()
+                        .getVnfId();
+            } else {
+                vnfId = this.eventManager.getVnfResponse().getVnfId();
+            }
+            if (vnfId == null) {
+                throw new AaiException("No vnf-id found");
+            }
+            return vnfId;
+        }
+        throw new ControlLoopException("Target does not match target type");
+    }
+
     /**
      * Start an operation.
      *
@@ -311,88 +295,113 @@ public class ControlLoopOperationManager implements Serializable {
         //
         switch (policy.getActor()) {
             case "APPC":
-                /*
-                 * If the recipe is ModifyConfig, a legacy APPC request is constructed. Otherwise an LCMRequest is
-                 * constructed.
-                 */
-                this.currentOperation = operation;
-                if ("ModifyConfig".equalsIgnoreCase(policy.getRecipe())) {
-                    this.operationRequest = AppcActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
-                            operation.clOperation, this.policy, this.targetEntity);
-                } else {
-                    this.operationRequest = AppcLcmActorServiceProvider.constructRequest(
-                            (VirtualControlLoopEvent) onset, operation.clOperation, this.policy, this.targetEntity);
-                }
-                //
-                // Save the operation
-                //
-
-                return operationRequest;
+                return startAppcOperation(onset, operation);
             case "SO":
-                SoActorServiceProvider soActorSp = new SoActorServiceProvider();
-                if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-                    this.operationRequest =
-                            soActorSp.constructRequestCq((VirtualControlLoopEvent) onset, operation.clOperation,
-                                    this.policy, eventManager.getCqResponse((VirtualControlLoopEvent) onset));
-                } else {
-                    this.operationRequest = soActorSp.constructRequest((VirtualControlLoopEvent) onset,
-                            operation.clOperation, this.policy, eventManager.getNqVserverFromAai());
-                }
-
-                // Save the operation
-                this.currentOperation = operation;
-
-                if (this.operationRequest == null) {
-                    this.policyResult = PolicyResult.FAILURE;
-                }
-
-                return operationRequest;
+                return startSoOperation(onset, operation);
             case "VFC":
-                if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-                    this.operationRequest = VfcActorServiceProvider.constructRequestCq((VirtualControlLoopEvent) onset,
-                            operation.clOperation, this.policy,
-                            eventManager.getCqResponse((VirtualControlLoopEvent) onset));
-                } else {
-                    this.operationRequest = VfcActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
-                            operation.clOperation, this.policy, this.eventManager.getVnfResponse(),
-                            PolicyEngine.manager.getEnvironmentProperty("vfc.url"),
-                            PolicyEngine.manager.getEnvironmentProperty("vfc.username"),
-                            PolicyEngine.manager.getEnvironmentProperty("vfc.password"));
-                }
-                this.currentOperation = operation;
-                if (this.operationRequest == null) {
-                    this.policyResult = PolicyResult.FAILURE;
-                }
-                return operationRequest;
+                return startVfcOperation(onset, operation);
             case "SDNR":
-                /*
-                 * If the recipe is ModifyConfig or ModifyConfigANR, a SDNR request is constructed.
-                 */
-                this.currentOperation = operation;
-                this.operationRequest = SdnrActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
-                        operation.clOperation, this.policy);
-                //
-                // Save the operation
-                //
-                if (this.operationRequest == null) {
-                    this.policyResult = PolicyResult.FAILURE;
-                }
-
-                return operationRequest;
+                return startSdnrOperation(onset, operation);
             case "SDNC":
-                SdncActorServiceProvider provider = new SdncActorServiceProvider();
-                this.operationRequest =
-                        provider.constructRequest((VirtualControlLoopEvent) onset, operation.clOperation, this.policy);
-                this.currentOperation = operation;
-                if (this.operationRequest == null) {
-                    this.policyResult = PolicyResult.FAILURE;
-                }
-                return operationRequest;
+                return startSdncOperation(onset, operation);
             default:
                 throw new ControlLoopException("invalid actor " + policy.getActor() + " on policy");
         }
     }
 
+
+    private Object startAppcOperation(ControlLoopEvent onset, Operation operation) {
+        /*
+         * If the recipe is ModifyConfig, a legacy APPC request is constructed. Otherwise an LCMRequest is
+         * constructed.
+         */
+        this.currentOperation = operation;
+        if ("ModifyConfig".equalsIgnoreCase(policy.getRecipe())) {
+            this.operationRequest = AppcActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
+                    operation.clOperation, this.policy, this.targetEntity);
+        } else {
+            this.operationRequest = AppcLcmActorServiceProvider.constructRequest(
+                    (VirtualControlLoopEvent) onset, operation.clOperation, this.policy, this.targetEntity);
+        }
+        //
+        // Save the operation
+        //
+
+        return operationRequest;
+    }
+
+
+    private Object startSoOperation(ControlLoopEvent onset, Operation operation) throws AaiException {
+        SoActorServiceProvider soActorSp = new SoActorServiceProvider();
+        if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty(AAI_CUSTOM_QUERY))) {
+            this.operationRequest =
+                    soActorSp.constructRequestCq((VirtualControlLoopEvent) onset, operation.clOperation,
+                            this.policy, eventManager.getCqResponse((VirtualControlLoopEvent) onset));
+        } else {
+            this.operationRequest = soActorSp.constructRequest((VirtualControlLoopEvent) onset,
+                    operation.clOperation, this.policy, eventManager.getNqVserverFromAai());
+        }
+
+        // Save the operation
+        this.currentOperation = operation;
+
+        if (this.operationRequest == null) {
+            this.policyResult = PolicyResult.FAILURE;
+        }
+
+        return operationRequest;
+    }
+
+
+    private Object startVfcOperation(ControlLoopEvent onset, Operation operation) throws AaiException {
+        if (Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty(AAI_CUSTOM_QUERY))) {
+            this.operationRequest = VfcActorServiceProvider.constructRequestCq((VirtualControlLoopEvent) onset,
+                    operation.clOperation, this.policy,
+                    eventManager.getCqResponse((VirtualControlLoopEvent) onset));
+        } else {
+            this.operationRequest = VfcActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
+                    operation.clOperation, this.policy, this.eventManager.getVnfResponse(),
+                    PolicyEngine.manager.getEnvironmentProperty("vfc.url"),
+                    PolicyEngine.manager.getEnvironmentProperty("vfc.username"),
+                    PolicyEngine.manager.getEnvironmentProperty("vfc.password"));
+        }
+        this.currentOperation = operation;
+        if (this.operationRequest == null) {
+            this.policyResult = PolicyResult.FAILURE;
+        }
+        return operationRequest;
+    }
+
+
+    private Object startSdnrOperation(ControlLoopEvent onset, Operation operation) {
+        /*
+         * If the recipe is ModifyConfig or ModifyConfigANR, a SDNR request is constructed.
+         */
+        this.currentOperation = operation;
+        this.operationRequest = SdnrActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset,
+                operation.clOperation, this.policy);
+        //
+        // Save the operation
+        //
+        if (this.operationRequest == null) {
+            this.policyResult = PolicyResult.FAILURE;
+        }
+
+        return operationRequest;
+    }
+
+
+    private Object startSdncOperation(ControlLoopEvent onset, Operation operation) {
+        SdncActorServiceProvider provider = new SdncActorServiceProvider();
+        this.operationRequest =
+                provider.constructRequest((VirtualControlLoopEvent) onset, operation.clOperation, this.policy);
+        this.currentOperation = operation;
+        if (this.operationRequest == null) {
+            this.policyResult = PolicyResult.FAILURE;
+        }
+        return operationRequest;
+    }
+
     /**
      * Handle a response.
      *
@@ -448,15 +457,10 @@ public class ControlLoopOperationManager implements Serializable {
         //
         // Determine which subrequestID (ie. attempt)
         //
-        Integer operationAttempt = null;
-        try {
-            operationAttempt = Integer.parseInt(appcResponse.getCommonHeader().getSubRequestId());
-        } catch (NumberFormatException e) {
-            //
-            // We cannot tell what happened if this doesn't exist
-            //
+        Integer operationAttempt = getSubRequestId(appcResponse);
+        if (operationAttempt == null) {
             this.completeOperation(operationAttempt, "Policy was unable to parse APP-C SubRequestID (it was null).",
-                    PolicyResult.FAILURE_EXCEPTION);
+                            PolicyResult.FAILURE_EXCEPTION);
             return PolicyResult.FAILURE_EXCEPTION;
         }
         //
@@ -483,6 +487,12 @@ public class ControlLoopOperationManager implements Serializable {
                     PolicyResult.FAILURE_EXCEPTION);
             return PolicyResult.FAILURE_EXCEPTION;
         }
+
+        return onResponse(appcResponse, operationAttempt, code);
+    }
+
+
+    private PolicyResult onResponse(Response appcResponse, Integer operationAttempt, ResponseCode code) {
         //
         // Ok, let's figure out what APP-C's response is
         //
@@ -502,30 +512,21 @@ public class ControlLoopOperationManager implements Serializable {
                 //
                 this.completeOperation(operationAttempt, appcResponse.getStatus().getDescription(),
                         PolicyResult.FAILURE_EXCEPTION);
-                if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                    return null;
-                }
-                return PolicyResult.FAILURE_EXCEPTION;
+                return getTimeoutResult(PolicyResult.FAILURE_EXCEPTION);
             case SUCCESS:
                 //
                 //
                 //
                 this.completeOperation(operationAttempt, appcResponse.getStatus().getDescription(),
                         PolicyResult.SUCCESS);
-                if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                    return null;
-                }
-                return PolicyResult.SUCCESS;
+                return getTimeoutResult(PolicyResult.SUCCESS);
             case FAILURE:
                 //
                 //
                 //
                 this.completeOperation(operationAttempt, appcResponse.getStatus().getDescription(),
                         PolicyResult.FAILURE);
-                if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                    return null;
-                }
-                return PolicyResult.FAILURE;
+                return getTimeoutResult(PolicyResult.FAILURE);
             default:
                 return null;
         }
@@ -546,6 +547,7 @@ public class ControlLoopOperationManager implements Serializable {
         if (operationAttempt == null) {
             this.completeOperation(operationAttempt, "Policy was unable to parse APP-C SubRequestID (it was null).",
                     PolicyResult.FAILURE_EXCEPTION);
+            return PolicyResult.FAILURE_EXCEPTION;
         }
 
         /*
@@ -579,6 +581,7 @@ public class ControlLoopOperationManager implements Serializable {
         if (operationAttempt == null) {
             this.completeOperation(operationAttempt, "Policy was unable to parse SDNR SubRequestID.",
                     PolicyResult.FAILURE_EXCEPTION);
+            return PolicyResult.FAILURE_EXCEPTION;
         }
 
         /*
@@ -610,22 +613,16 @@ public class ControlLoopOperationManager implements Serializable {
                 //
                 // Consider it as success
                 //
-                this.completeOperation(this.attempts, msoResponse.getSoResponse().getHttpResponseCode() + " Success",
+                this.completeOperation(this.attempts, msoResponse.getSoResponse().getHttpResponseCode() + SUCCESS_MSG,
                         PolicyResult.SUCCESS);
-                if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                    return null;
-                }
-                return PolicyResult.SUCCESS;
+                return getTimeoutResult(PolicyResult.SUCCESS);
             default:
                 //
                 // Consider it as failure
                 //
-                this.completeOperation(this.attempts, msoResponse.getSoResponse().getHttpResponseCode() + " Failed",
+                this.completeOperation(this.attempts, msoResponse.getSoResponse().getHttpResponseCode() + FAILED_MSG,
                         PolicyResult.FAILURE);
-                if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                    return null;
-                }
-                return PolicyResult.FAILURE;
+                return getTimeoutResult(PolicyResult.FAILURE);
         }
     }
 
@@ -640,17 +637,14 @@ public class ControlLoopOperationManager implements Serializable {
             //
             // Consider it as success
             //
-            this.completeOperation(this.attempts, " Success", PolicyResult.SUCCESS);
-            if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                return null;
-            }
-            return PolicyResult.SUCCESS;
+            this.completeOperation(this.attempts, SUCCESS_MSG, PolicyResult.SUCCESS);
+            return getTimeoutResult(PolicyResult.SUCCESS);
         } else {
             //
             // Consider it as failure
             //
-            this.completeOperation(this.attempts, " Failed", PolicyResult.FAILURE);
-            if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
+            this.completeOperation(this.attempts, FAILED_MSG, PolicyResult.FAILURE);
+            if (PolicyResult.FAILURE_TIMEOUT.equals(this.policyResult)) {
                 return null;
             }
             // increment operation attempts for retries
@@ -670,17 +664,14 @@ public class ControlLoopOperationManager implements Serializable {
             //
             // Consider it as success
             //
-            this.completeOperation(this.attempts, " Success", PolicyResult.SUCCESS);
-            if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
-                return null;
-            }
-            return PolicyResult.SUCCESS;
+            this.completeOperation(this.attempts, SUCCESS_MSG, PolicyResult.SUCCESS);
+            return getTimeoutResult(PolicyResult.SUCCESS);
         } else {
             //
             // Consider it as failure
             //
-            this.completeOperation(this.attempts, " Failed", PolicyResult.FAILURE);
-            if (this.policyResult != null && this.policyResult.equals(PolicyResult.FAILURE_TIMEOUT)) {
+            this.completeOperation(this.attempts, FAILED_MSG, PolicyResult.FAILURE);
+            if (PolicyResult.FAILURE_TIMEOUT.equals(this.policyResult)) {
                 return null;
             }
             // increment operation attempts for retries
@@ -689,6 +680,22 @@ public class ControlLoopOperationManager implements Serializable {
         }
     }
 
+    private PolicyResult getTimeoutResult(PolicyResult result) {
+        return (PolicyResult.FAILURE_TIMEOUT.equals(this.policyResult) ? null : result);
+    }
+
+
+    private Integer getSubRequestId(Response appcResponse) {
+        try {
+            return Integer.valueOf(appcResponse.getCommonHeader().getSubRequestId());
+        } catch (NumberFormatException e) {
+            //
+            // We cannot tell what happened if this doesn't exist
+            //
+            return null;
+        }
+    }
+
     /**
      * Get the operation timeout.
      *
index f06ea34..e33b260 100644 (file)
@@ -3,6 +3,7 @@
  * eventmanager
  * ================================================================================
  * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,12 +29,14 @@ import org.junit.Test;
 
 public class ControlLoopExceptionTest {
 
+    private static final String IN_OZ = "In Oz";
+
     @Test
     public void testControlLoopException() {
         assertNotNull(new ControlLoopException());
-        assertNotNull(new ControlLoopException("In Oz"));
+        assertNotNull(new ControlLoopException(IN_OZ));
         assertNotNull(new ControlLoopException(new IOException()));
-        assertNotNull(new ControlLoopException("In Oz", new IOException()));
-        assertNotNull(new ControlLoopException("In Oz", new IOException(), false, false));
+        assertNotNull(new ControlLoopException(IN_OZ, new IOException()));
+        assertNotNull(new ControlLoopException(IN_OZ, new IOException(), false, false));
     }
 }
index 4e27190..35e4d53 100644 (file)
@@ -8,9 +8,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,9 +21,8 @@
 
 package org.onap.policy.controlloop;
 
-import static org.junit.Assert.assertEquals;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 
 import org.junit.Test;
 import org.onap.policy.controlloop.impl.ControlLoopLoggerStdOutImpl;
@@ -38,11 +37,7 @@ public class ControlLoopLoggerTest {
         logger.metrics("a metric", "and another", " and another");
         logger.metrics(Double.valueOf(3));
 
-        try {
-            new ControlLoopLogger.Factory().buildLogger("java.lang.String");
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Cannot load class java.lang.String as a control loop logger", e.getMessage());
-        }
+        assertThatThrownBy(() -> new ControlLoopLogger.Factory().buildLogger("java.lang.String"))
+                        .hasMessage("Cannot load class java.lang.String as a control loop logger");
     }
 }
index 77a3d64..42b721e 100644 (file)
@@ -8,9 +8,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,9 +21,8 @@
 
 package org.onap.policy.controlloop;
 
-import static org.junit.Assert.assertEquals;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 
 import org.junit.Test;
 import org.onap.policy.controlloop.impl.ControlLoopPublisherJUnitImpl;
@@ -35,19 +34,11 @@ public class ControlLoopPublisherTest {
                 new ControlLoopPublisher.Factory().buildLogger(ControlLoopPublisherJUnitImpl.class.getName());
         assertNotNull(publisher);
 
-        try {
-            publisher.publish(Double.valueOf(3));
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("publish() method is not implemented on "
-                    + "org.onap.policy.controlloop.impl.ControlLoopPublisherJUnitImpl", e.getMessage());
-        }
+        assertThatThrownBy(() -> publisher.publish(Double.valueOf(3)))
+            .hasMessage("publish() method is not implemented on "
+                            + "org.onap.policy.controlloop.impl.ControlLoopPublisherJUnitImpl");
 
-        try {
-            new ControlLoopPublisher.Factory().buildLogger("java.lang.String");
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Cannot load class java.lang.String as a control loop publisher", e.getMessage());
-        }
+        assertThatThrownBy(() -> new ControlLoopPublisher.Factory().buildLogger("java.lang.String"))
+            .hasMessage("Cannot load class java.lang.String as a control loop publisher");
     }
 }
index 39077e3..9534f93 100644 (file)
@@ -2,14 +2,14 @@
  * ============LICENSE_START=======================================================
  * util
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.policy.controlloop;
 
-import static org.junit.Assert.fail;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-
 import org.apache.commons.io.IOUtils;
 import org.onap.policy.controlloop.policy.ControlLoopPolicy;
 import org.yaml.snakeyaml.Yaml;
@@ -45,13 +42,18 @@ public final class SupportUtil {
         }
     }
 
+    private SupportUtil() {
+        // do nothing
+    }
+
     /**
      * Load yaml into a Pair object.
-     * 
+     *
      * @param testFile the yaml file
      * @return a Pair
+     * @throws IOException if the file cannot be read
      */
-    public static Pair<ControlLoopPolicy, String> loadYaml(String testFile) {
+    public static Pair<ControlLoopPolicy, String> loadYaml(String testFile) throws IOException {
         try (InputStream is = new FileInputStream(new File(testFile))) {
             String contents = IOUtils.toString(is, StandardCharsets.UTF_8);
             //
@@ -59,11 +61,8 @@ public final class SupportUtil {
             //
             Yaml yaml = new Yaml(new Constructor(ControlLoopPolicy.class));
             Object obj = yaml.load(contents);
-            return new Pair<ControlLoopPolicy, String>((ControlLoopPolicy) obj, contents);
-        } catch (IOException e) {
-            fail(e.getLocalizedMessage());
+            return new Pair<>((ControlLoopPolicy) obj, contents);
         }
-        return null;
     }
 
 }
index beea88d..3a4b277 100644 (file)
 
 package org.onap.policy.controlloop.eventmanager;
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -71,16 +71,37 @@ import org.onap.policy.guard.PolicyGuard;
 import org.onap.policy.guard.PolicyGuard.LockResult;
 import org.onap.policy.guard.TargetLock;
 import org.powermock.reflect.Whitebox;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class ControlLoopEventManagerTest {
+    private static final String PROCESS_VSERVER_RESPONSE = "processVServerResponse";
+    private static final String ONSET_ONE = "onsetOne";
+    private static final String VSERVER_NAME = "vserver.vserver-name";
+    private static final String TEST_YAML = "src/test/resources/test.yaml";
+    private static final String SERVICE_TYPE = "service-subscription.service-type";
+    private static final String SERVICE_INSTANCE_NAME = "service-instance.service-instance-name";
+    private static final String SERVICE_INSTANCE_ID = "service-instance.service-instance-id";
+    private static final String SERVICE_INSTANCE = "service-instance";
+    private static final String VNF_NAME_TEXT = "lll_vnf_010317";
+    private static final String SERVICE_INSTANCE_NAME_TEXT = "lll_svc_010317";
+    private static final String VNF_NAME = "generic-vnf.vnf-name";
+    private static final String VNF_ID = "generic-vnf.vnf-id";
+    private static final String SERVICE_INSTANCE_UUID = "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970";
+    private static final String MSO_CUSTOMER_ID = "customer.global-customer-id";
+    private static final String AAI_USERNAME = "aai.username";
+    private static final String AAI_URL = "aai.url";
+    private static final String AAI_PASS = "aai.password";
+    private static final String TWO_ONSET_TEST = "TwoOnsetTest";
+    private static final String MSO_1610_ST = "MSO_1610_ST";
+    private static final String MSO_DEV_SERVICE_TYPE = "MSO-dev-service-type";
+    private static final String VNF_UUID = "83f674e8-7555-44d7-9a39-bdc3770b0491";
+    private static final String AAI_SERVICE_SUBSCRIPTION_URI =
+                    "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription";
+    private static final String MSO_SERVICE_INSTANCE_URI = "/MSO-dev-service-type/service-instances/service-instance/";
+
     private static final String PROCESS_VNF_RESPONSE_METHOD_NAME = "processVnfResponse";
 
     private static final String INVALID_URL = "http://localhost:9999";
 
-    private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManagerTest.class);
-
 
     @Rule
     public ExpectedException thrown = ExpectedException.none();
@@ -91,15 +112,12 @@ public class ControlLoopEventManagerTest {
      * Set up test class.
      */
     @BeforeClass
-    public static void setUpSimulator() {
-        try {
-            org.onap.policy.simulators.Util.buildAaiSim();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
-        PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
-        PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
-        PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
+    public static void setUpSimulator() throws Exception {
+        org.onap.policy.simulators.Util.buildAaiSim();
+
+        PolicyEngine.manager.setEnvironmentProperty(AAI_USERNAME, "AAI");
+        PolicyEngine.manager.setEnvironmentProperty(AAI_PASS, "AAI");
+        PolicyEngine.manager.setEnvironmentProperty(AAI_URL, "http://localhost:6666");
     }
 
     @AfterClass
@@ -120,113 +138,70 @@ public class ControlLoopEventManagerTest {
         onset.setAai(new HashMap<String, String>());
         onset.getAai().put("cloud-region.identity-url", "foo");
         onset.getAai().put("vserver.selflink", "bar");
-        onset.getAai().put("generic-vnf.vnf-id", "83f674e8-7555-44d7-9a39-bdc3770b0491");
+        onset.getAai().put(VNF_ID, VNF_UUID);
         onset.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
 
-        PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
+        PolicyEngine.manager.setEnvironmentProperty(AAI_URL, "http://localhost:6666");
     }
 
     @Test
-    public void testAaiVnfInfo() {
-        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml("src/test/resources/test.yaml");
+    public void testAaiVnfInfo() throws IOException {
+        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(TEST_YAML);
         onset.setClosedLoopControlName(pair.key.getControlLoop().getControlLoopName());
-        try {
-            AaiGetVnfResponse response = getQueryByVnfId2(
-                    PolicyEngine.manager.getEnvironmentProperty("aai.url")
-                            + "/aai/v11/network/generic-vnfs/generic-vnf/",
-                    PolicyEngine.manager.getEnvironmentProperty("aai.username"),
-                    PolicyEngine.manager.getEnvironmentProperty("aai.password"), UUID.randomUUID(),
-                    "5e49ca06-2972-4532-9ed4-6d071588d792");
-            assertNotNull(response);
-            logger.info("testAAIVnfInfo test result is " + (response == null ? "null" : "not null"));
-        } catch (Exception e) {
-            logger.error("testAAIVnfInfo Exception: ", e);
-            fail(e.getMessage());
-        }
+        AaiGetVnfResponse response = getQueryByVnfId2();
+        assertNotNull(response);
     }
 
     @Test
-    public void testAaiVnfInfo2() {
-        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml("src/test/resources/test.yaml");
+    public void testAaiVnfInfo2() throws IOException {
+        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(TEST_YAML);
         onset.setClosedLoopControlName(pair.key.getControlLoop().getControlLoopName());
-        try {
-            AaiGetVnfResponse response = getQueryByVnfName2(
-                    PolicyEngine.manager.getEnvironmentProperty("aai.url")
-                            + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=",
-                    PolicyEngine.manager.getEnvironmentProperty("aai.username"),
-                    PolicyEngine.manager.getEnvironmentProperty("aai.password"), UUID.randomUUID(), "lll_vnf_010317");
-            assertNotNull(response);
-            logger.info("testAAIVnfInfo2 test result is " + (response == null ? "null" : "not null"));
-        } catch (Exception e) {
-            logger.error("testAAIVnfInfo2 Exception: ", e);
-            fail(e.getMessage());
-        }
+        AaiGetVnfResponse response = getQueryByVnfName2();
+        assertNotNull(response);
     }
 
     @Test
-    public void testAaiVserver() {
-        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml("src/test/resources/test.yaml");
+    public void testAaiVserver() throws IOException {
+        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(TEST_YAML);
         onset.setClosedLoopControlName(pair.key.getControlLoop().getControlLoopName());
-        try {
-            AaiGetVserverResponse response = getQueryByVserverName2(
-                    PolicyEngine.manager.getEnvironmentProperty("aai.url") + "/aai/v11/nodes/vservers?vserver-name=",
-                    PolicyEngine.manager.getEnvironmentProperty("aai.username"),
-                    PolicyEngine.manager.getEnvironmentProperty("aai.password"), UUID.randomUUID(),
-                    "USMSO1SX7NJ0103UJZZ01-vjunos0");
-            assertNotNull(response);
-            logger.info("testAAIVserver test result is " + (response == null ? "null" : "not null"));
-        } catch (Exception e) {
-            logger.error("testAAIVserver Exception: ", e);
-            fail(e.getMessage());
-        }
+        AaiGetVserverResponse response = getQueryByVserverName2();
+        assertNotNull(response);
     }
 
     @Test
-    public void abatementCheckEventSyntaxTest() {
+    public void abatementCheckEventSyntaxTest() throws ControlLoopException {
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
         event.setClosedLoopControlName("abatementAAI");
         event.setRequestId(UUID.randomUUID());
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
         ControlLoopEventManager manager = makeManager(event);
         assertNull(manager.getVnfResponse());
         assertNull(manager.getVserverResponse());
-        try {
-            manager.checkEventSyntax(event);
-        } catch (ControlLoopException e) {
-            logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: " + e.getMessage());
-            e.printStackTrace();
-            fail("Exception in check event syntax");
-        }
+        manager.checkEventSyntax(event);
         assertNull(manager.getVnfResponse());
         assertNull(manager.getVserverResponse());
 
 
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "abatementTest");
-        try {
-            manager.checkEventSyntax(event);
-        } catch (ControlLoopException e) {
-            logger.debug("ControlLoopException in abatemetCheckEventSyntaxTest: " + e.getMessage());
-            e.printStackTrace();
-            fail("Exception in check event syntax");
-        }
+        event.getAai().put(VNF_NAME, "abatementTest");
+        manager.checkEventSyntax(event);
         assertNull(manager.getVnfResponse());
         assertNull(manager.getVserverResponse());
     }
 
     @Test
-    public void subsequentOnsetTest() throws IOException {
+    public void subsequentOnsetTest() throws Exception {
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        event.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
         VirtualControlLoopNotification notification = manager.activate(event);
@@ -235,12 +210,7 @@ public class ControlLoopEventManagerTest {
         assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
 
         ControlLoopEventManager.NewEventStatus status = null;
-        try {
-            status = manager.onNewEvent(event);
-        } catch (AaiException e) {
-            logger.warn(e.toString());
-            fail("A&AI Query Failed");
-        }
+        status = manager.onNewEvent(event);
         assertNotNull(status);
         assertEquals(ControlLoopEventManager.NewEventStatus.FIRST_ONSET, status);
 
@@ -249,21 +219,16 @@ public class ControlLoopEventManagerTest {
         assertNull(manager.getVserverResponse());
 
         VirtualControlLoopEvent event2 = new VirtualControlLoopEvent();
-        event2.setClosedLoopControlName("TwoOnsetTest");
+        event2.setClosedLoopControlName(TWO_ONSET_TEST);
         event2.setRequestId(requestId);
-        event2.setTarget("generic-vnf.vnf-id");
+        event2.setTarget(VNF_ID);
         event2.setClosedLoopAlarmStart(Instant.now());
         event2.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event2.setAai(new HashMap<>());
-        event2.getAai().put("generic-vnf.vnf-name", "onsetTwo");
+        event2.getAai().put(VNF_NAME, "onsetTwo");
 
 
-        try {
-            status = manager.onNewEvent(event2);
-        } catch (AaiException e) {
-            logger.warn(e.toString());
-            fail("A&AI Query Failed");
-        }
+        status = manager.onNewEvent(event2);
         assertEquals(ControlLoopEventManager.NewEventStatus.SUBSEQUENT_ONSET, status);
         AaiGetVnfResponse response2 = manager.getVnfResponse();
         assertNotNull(response2);
@@ -275,12 +240,11 @@ public class ControlLoopEventManagerTest {
     /**
      * Simulate a response.
      */
-    public static AaiGetVnfResponse getQueryByVnfId2(String urlGet, String username, String password, UUID requestId,
-            String key) {
+    public static AaiGetVnfResponse getQueryByVnfId2() {
         AaiGetVnfResponse response = new AaiGetVnfResponse();
 
-        response.setVnfId("83f674e8-7555-44d7-9a39-bdc3770b0491");
-        response.setVnfName("lll_vnf_010317");
+        response.setVnfId(VNF_UUID);
+        response.setVnfName(VNF_NAME_TEXT);
         response.setVnfType("Basa-122216-Service/VidVsamp12BaseVolume 1");
         response.setServiceId("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
         response.setOrchestrationStatus("Created");
@@ -293,28 +257,28 @@ public class ControlLoopEventManagerTest {
         final Relationship relationship = new Relationship();
         RelationshipData relationshipDataItem = new RelationshipData();
 
-        relationshipDataItem.setRelationshipKey("customer.global-customer-id");
-        relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+        relationshipDataItem.setRelationshipKey(MSO_CUSTOMER_ID);
+        relationshipDataItem.setRelationshipValue(MSO_1610_ST);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-subscription.service-type");
-        relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+        relationshipDataItem.setRelationshipKey(SERVICE_TYPE);
+        relationshipDataItem.setRelationshipValue(MSO_DEV_SERVICE_TYPE);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
-        relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+        relationshipDataItem.setRelationshipKey(SERVICE_INSTANCE_ID);
+        relationshipDataItem.setRelationshipValue(SERVICE_INSTANCE_UUID);
         relationship.getRelationshipData().add(relationshipDataItem);
 
         RelatedToProperty item = new RelatedToProperty();
-        item.setPropertyKey("service-instance.service-instance-name");
-        item.setPropertyValue("lll_svc_010317");
+        item.setPropertyKey(SERVICE_INSTANCE_NAME);
+        item.setPropertyValue(SERVICE_INSTANCE_NAME_TEXT);
         relationship.getRelatedToProperty().add(item);
 
-        relationship.setRelatedTo("service-instance");
+        relationship.setRelatedTo(SERVICE_INSTANCE);
         relationship.setRelatedLink(
-                "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription"
-                        + "/MSO-dev-service-type/service-instances/service-instance/"
-                        + "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+                AAI_SERVICE_SUBSCRIPTION_URI
+                        + MSO_SERVICE_INSTANCE_URI
+                        + SERVICE_INSTANCE_UUID);
 
         relationshipList.getRelationships().add(relationship);
         response.setRelationshipList(relationshipList);
@@ -325,12 +289,11 @@ public class ControlLoopEventManagerTest {
     /**
      * Simulate a response.
      */
-    public static AaiGetVnfResponse getQueryByVnfName2(String urlGet, String username, String password, UUID requestId,
-            String key) {
+    public static AaiGetVnfResponse getQueryByVnfName2() {
         AaiGetVnfResponse response = new AaiGetVnfResponse();
 
-        response.setVnfId("83f674e8-7555-44d7-9a39-bdc3770b0491");
-        response.setVnfName("lll_vnf_010317");
+        response.setVnfId(VNF_UUID);
+        response.setVnfName(VNF_NAME_TEXT);
         response.setVnfType("Basa-122216-Service/VidVsamp12BaseVolume 1");
         response.setServiceId("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
         response.setOrchestrationStatus("Created");
@@ -343,28 +306,28 @@ public class ControlLoopEventManagerTest {
         final Relationship relationship = new Relationship();
         RelationshipData relationshipDataItem = new RelationshipData();
 
-        relationshipDataItem.setRelationshipKey("customer.global-customer-id");
-        relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+        relationshipDataItem.setRelationshipKey(MSO_CUSTOMER_ID);
+        relationshipDataItem.setRelationshipValue(MSO_1610_ST);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-subscription.service-type");
-        relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+        relationshipDataItem.setRelationshipKey(SERVICE_TYPE);
+        relationshipDataItem.setRelationshipValue(MSO_DEV_SERVICE_TYPE);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
-        relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+        relationshipDataItem.setRelationshipKey(SERVICE_INSTANCE_ID);
+        relationshipDataItem.setRelationshipValue(SERVICE_INSTANCE_UUID);
         relationship.getRelationshipData().add(relationshipDataItem);
 
         RelatedToProperty item = new RelatedToProperty();
-        item.setPropertyKey("service-instance.service-instance-name");
-        item.setPropertyValue("lll_svc_010317");
+        item.setPropertyKey(SERVICE_INSTANCE_NAME);
+        item.setPropertyValue(SERVICE_INSTANCE_NAME_TEXT);
         relationship.getRelatedToProperty().add(item);
 
-        relationship.setRelatedTo("service-instance");
+        relationship.setRelatedTo(SERVICE_INSTANCE);
         relationship.setRelatedLink(
-                "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription"
-                        + "/MSO-dev-service-type/service-instances/service-instance/"
-                        + "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+                AAI_SERVICE_SUBSCRIPTION_URI
+                        + MSO_SERVICE_INSTANCE_URI
+                        + SERVICE_INSTANCE_UUID);
 
         relationshipList.getRelationships().add(relationship);
         response.setRelationshipList(relationshipList);
@@ -375,8 +338,7 @@ public class ControlLoopEventManagerTest {
     /**
      * Simulate a response.
      */
-    public static AaiGetVserverResponse getQueryByVserverName2(String urlGet, String username, String password,
-            UUID requestId, String key) {
+    public static AaiGetVserverResponse getQueryByVserverName2() {
         final AaiGetVserverResponse response = new AaiGetVserverResponse();
 
         AaiNqVServer svr = new AaiNqVServer();
@@ -394,28 +356,28 @@ public class ControlLoopEventManagerTest {
         final Relationship relationship = new Relationship();
         RelationshipData relationshipDataItem = new RelationshipData();
 
-        relationshipDataItem.setRelationshipKey("customer.global-customer-id");
-        relationshipDataItem.setRelationshipValue("MSO_1610_ST");
+        relationshipDataItem.setRelationshipKey(MSO_CUSTOMER_ID);
+        relationshipDataItem.setRelationshipValue(MSO_1610_ST);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-subscription.service-type");
-        relationshipDataItem.setRelationshipValue("MSO-dev-service-type");
+        relationshipDataItem.setRelationshipKey(SERVICE_TYPE);
+        relationshipDataItem.setRelationshipValue(MSO_DEV_SERVICE_TYPE);
         relationship.getRelationshipData().add(relationshipDataItem);
 
-        relationshipDataItem.setRelationshipKey("service-instance.service-instance-id");
-        relationshipDataItem.setRelationshipValue("e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+        relationshipDataItem.setRelationshipKey(SERVICE_INSTANCE_ID);
+        relationshipDataItem.setRelationshipValue(SERVICE_INSTANCE_UUID);
         relationship.getRelationshipData().add(relationshipDataItem);
 
         RelatedToProperty item = new RelatedToProperty();
-        item.setPropertyKey("service-instance.service-instance-name");
-        item.setPropertyValue("lll_svc_010317");
+        item.setPropertyKey(SERVICE_INSTANCE_NAME);
+        item.setPropertyValue(SERVICE_INSTANCE_NAME_TEXT);
         relationship.getRelatedToProperty().add(item);
 
-        relationship.setRelatedTo("service-instance");
+        relationship.setRelatedTo(SERVICE_INSTANCE);
         relationship.setRelatedLink(
-                "/aai/v11/business/customers/customer/MSO_1610_ST/service-subscriptions/service-subscription"
-                        + "/MSO-dev-service-type/service-instances/service-instance/"
-                        + "e1e9c97c-02c0-4919-9b4c-eb5d5ef68970");
+                AAI_SERVICE_SUBSCRIPTION_URI
+                        + MSO_SERVICE_INSTANCE_URI
+                        + SERVICE_INSTANCE_UUID);
 
         relationshipList.getRelationships().add(relationship);
         svr.setRelationshipList(relationshipList);
@@ -463,13 +425,13 @@ public class ControlLoopEventManagerTest {
     public void testAlreadyActivated() {
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        event.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
         manager.setActivated(true);
@@ -479,7 +441,7 @@ public class ControlLoopEventManagerTest {
 
     @Test
     public void testActivationYaml() throws IOException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         InputStream isBad = new FileInputStream(new File("src/test/resources/notutf8.yaml"));
@@ -487,13 +449,13 @@ public class ControlLoopEventManagerTest {
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        event.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
 
@@ -523,35 +485,28 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testControlLoopFinal() throws ControlLoopException, IOException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+    public void testControlLoopFinal() throws Exception {
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        event.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
-        try {
-            manager.isControlLoopFinal();
-            fail("test should throw an exception here");
-        } catch (ControlLoopException e) {
-            assertEquals("ControlLoopEventManager MUST be activated first.", e.getMessage());
-        }
+        ControlLoopEventManager manager2 = manager;
+        assertThatThrownBy(manager2::isControlLoopFinal).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("ControlLoopEventManager MUST be activated first.");
 
         manager.setActivated(true);
-        try {
-            manager.isControlLoopFinal();
-            fail("test should throw an exception here");
-        } catch (ControlLoopException e) {
-            assertEquals("No onset event for ControlLoopEventManager.", e.getMessage());
-        }
+        assertThatThrownBy(manager2::isControlLoopFinal).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("No onset event for ControlLoopEventManager.");
 
         manager.setActivated(false);
         VirtualControlLoopNotification notification = manager.activate(yamlString, event);
@@ -596,35 +551,28 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testProcessControlLoop() throws ControlLoopException, IOException, AaiException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+    public void testProcessControlLoop() throws Exception {
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        event.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
-        try {
-            manager.processControlLoop();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("ControlLoopEventManager MUST be activated first.", e.getMessage());
-        }
+        ControlLoopEventManager manager2 = manager;
+        assertThatThrownBy(manager2::processControlLoop).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("ControlLoopEventManager MUST be activated first.");
 
         manager.setActivated(true);
-        try {
-            manager.processControlLoop();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("No onset event for ControlLoopEventManager.", e.getMessage());
-        }
+        assertThatThrownBy(manager2::processControlLoop).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("No onset event for ControlLoopEventManager.");
 
         manager.setActivated(false);
         VirtualControlLoopNotification notification = manager.activate(yamlString, event);
@@ -639,12 +587,9 @@ public class ControlLoopEventManagerTest {
         manager = Serializer.roundTrip(manager);
 
         // Test operation in progress
-        try {
-            manager.processControlLoop();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Already working an Operation, do not call this method.", e.getMessage());
-        }
+        ControlLoopEventManager manager3 = manager;
+        assertThatThrownBy(manager3::processControlLoop).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("Already working an Operation, do not call this method.");
 
         manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
         notification = manager.activate(yamlString, event);
@@ -657,12 +602,9 @@ public class ControlLoopEventManagerTest {
         assertEquals(ControlLoopNotificationType.FINAL_FAILURE, clfNotification.getNotification());
 
         // Test operation completed
-        try {
-            manager.processControlLoop();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Control Loop is in FINAL state, do not call this method.", e.getMessage());
-        }
+        ControlLoopEventManager manager4 = manager;
+        assertThatThrownBy(manager4::processControlLoop).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("Control Loop is in FINAL state, do not call this method.");
 
         manager = new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
         notification = manager.activate(yamlString, event);
@@ -671,59 +613,45 @@ public class ControlLoopEventManagerTest {
         manager.getProcessor().nextPolicyForResult(PolicyResult.FAILURE);
 
         // Test operation with no next policy defined
-        try {
-            manager.processControlLoop();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("The target type is null", e.getMessage());
-        }
+        ControlLoopEventManager manager5 = manager;
+        assertThatThrownBy(manager5::processControlLoop).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("The target type is null");
     }
 
     @Test
-    public void testFinishOperation() throws IOException, ControlLoopException, AaiException {
+    public void testFinishOperation() throws Exception {
         InputStream is = new FileInputStream(new File("src/test/resources/testSOactor.yaml"));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
-        InputStream isStd = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream isStd = new FileInputStream(new File(TEST_YAML));
         final String yamlStringStd = IOUtils.toString(isStd, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-        event.setClosedLoopControlName("TwoOnsetTest");
+        event.setClosedLoopControlName(TWO_ONSET_TEST);
         event.setRequestId(requestId);
-        event.setTarget("generic-vnf.vnf-id");
+        event.setTarget(VNF_ID);
         event.setClosedLoopAlarmStart(Instant.now());
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setAai(new HashMap<>());
-        event.getAai().put("generic-vnf.vnf-id", "onsetOne");
+        event.getAai().put(VNF_ID, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(event);
-        try {
-            manager.finishOperation(null);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("No operation to finish.", e.getMessage());
-        }
+        ControlLoopEventManager manager2 = manager;
+        assertThatThrownBy(() -> manager2.finishOperation(null)).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("No operation to finish.");
 
         manager.setActivated(true);
-        try {
-            manager.finishOperation(null);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("No operation to finish.", e.getMessage());
-        }
+        assertThatThrownBy(() -> manager2.finishOperation(null)).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("No operation to finish.");
 
         manager.setActivated(false);
         VirtualControlLoopNotification notification = manager.activate(yamlString, event);
         assertNotNull(notification);
         assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
 
-        try {
-            manager.lockCurrentOperation();
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Do not have a current operation.", e.getMessage());
-        }
+        assertThatThrownBy(manager2::lockCurrentOperation).isInstanceOf(ControlLoopException.class)
+                        .hasMessage("Do not have a current operation.");
 
         assertNull(manager.unlockCurrentOperation());
 
@@ -769,28 +697,28 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testOnNewEvent() throws IOException, AaiException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+    public void testOnNewEvent() throws Exception {
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         VirtualControlLoopEvent abatedEvent = new VirtualControlLoopEvent();
-        abatedEvent.setClosedLoopControlName("TwoOnsetTest");
+        abatedEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         abatedEvent.setRequestId(requestId);
-        abatedEvent.setTarget("generic-vnf.vnf-id");
+        abatedEvent.setTarget(VNF_ID);
         abatedEvent.setClosedLoopAlarmStart(Instant.now());
         abatedEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
         abatedEvent.setAai(new HashMap<>());
-        abatedEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        abatedEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(onsetEvent);
         VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
@@ -828,7 +756,7 @@ public class ControlLoopEventManagerTest {
         checkSyntaxEvent.setClosedLoopControlName("");
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
-        checkSyntaxEvent.setClosedLoopControlName("TwoOnsetTest");
+        checkSyntaxEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
         checkSyntaxEvent.setRequestId(null);
@@ -861,13 +789,13 @@ public class ControlLoopEventManagerTest {
         checkSyntaxEvent.setTarget("VNF_NAME");
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
-        checkSyntaxEvent.setTarget("vserver.vserver-name");
+        checkSyntaxEvent.setTarget(VSERVER_NAME);
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
-        checkSyntaxEvent.setTarget("generic-vnf.vnf-id");
+        checkSyntaxEvent.setTarget(VNF_ID);
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
-        checkSyntaxEvent.setTarget("generic-vnf.vnf-name");
+        checkSyntaxEvent.setTarget(VNF_NAME);
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
         checkSyntaxEvent.setAai(null);
@@ -876,30 +804,30 @@ public class ControlLoopEventManagerTest {
         checkSyntaxEvent.setAai(new HashMap<>());
         assertEquals(NewEventStatus.SYNTAX_ERROR, manager.onNewEvent(checkSyntaxEvent));
 
-        checkSyntaxEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        checkSyntaxEvent.getAai().put(VNF_NAME, ONSET_ONE);
         assertEquals(NewEventStatus.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
 
-        checkSyntaxEvent.getAai().put("vserver.vserver-name", "onsetOne");
+        checkSyntaxEvent.getAai().put(VSERVER_NAME, ONSET_ONE);
         assertEquals(NewEventStatus.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
 
-        checkSyntaxEvent.getAai().put("generic-vnf.vnf-id", "onsetOne");
+        checkSyntaxEvent.getAai().put(VNF_ID, ONSET_ONE);
         assertEquals(NewEventStatus.SUBSEQUENT_ABATEMENT, manager.onNewEvent(abatedEvent));
     }
 
     @Test
     public void testControlLoopTimeout() throws IOException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(onsetEvent);
         assertTrue(0 == manager.getControlLoopTimeout(null));
@@ -909,7 +837,7 @@ public class ControlLoopEventManagerTest {
         assertNotNull(notification);
         assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
 
-        assertTrue(60 == manager.getControlLoopTimeout(null));
+        assertEquals(60, manager.getControlLoopTimeout(null));
     }
 
     @Test
@@ -919,13 +847,13 @@ public class ControlLoopEventManagerTest {
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(onsetEvent);
 
@@ -944,13 +872,13 @@ public class ControlLoopEventManagerTest {
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager = makeManager(onsetEvent);
 
@@ -964,43 +892,28 @@ public class ControlLoopEventManagerTest {
 
     @Test
     public void testQueryAai_AlreadyDisabled() throws AaiException {
-        ControlLoopEventManager mgr = null;
-
-        try {
-            onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, Boolean.TRUE.toString());
-            onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_PROV_STATUS,
-                    ControlLoopEventManager.PROV_STATUS_ACTIVE);
-
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
+        onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, Boolean.TRUE.toString());
+        onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_PROV_STATUS, ControlLoopEventManager.PROV_STATUS_ACTIVE);
 
-            fail("missing exception");
+        ControlLoopEventManager mgr = makeManager(onset);
 
-        } catch (AaiException expected) {
-            assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", expected.getMessage());
-            assertNull(mgr.getVnfResponse());
-            assertNull(mgr.getVserverResponse());
-        }
+        assertThatThrownBy(() -> mgr.queryAai(onset)).isInstanceOf(AaiException.class)
+                        .hasMessage("is-closed-loop-disabled is set to true on VServer or VNF");
+        assertNull(mgr.getVnfResponse());
+        assertNull(mgr.getVserverResponse());
     }
 
     @Test
     public void testQueryAai_AlreadyInactive() throws AaiException {
-        ControlLoopEventManager mgr = null;
-
-        try {
-            onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, Boolean.FALSE.toString());
-            onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_PROV_STATUS, "not-active2");
+        onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, Boolean.FALSE.toString());
+        onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_PROV_STATUS, "not-active2");
 
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
+        ControlLoopEventManager mgr = makeManager(onset);
 
-            fail("missing exception");
-
-        } catch (AaiException expected) {
-            assertEquals("prov-status is not ACTIVE on VServer or VNF", expected.getMessage());
-            assertNull(mgr.getVnfResponse());
-            assertNull(mgr.getVserverResponse());
-        }
+        assertThatThrownBy(() -> mgr.queryAai(onset)).isInstanceOf(AaiException.class)
+                        .hasMessage("prov-status is not ACTIVE on VServer or VNF");
+        assertNull(mgr.getVnfResponse());
+        assertNull(mgr.getVserverResponse());
     }
 
     @Test
@@ -1046,33 +959,24 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testQueryAai_QueryVnfById_Disabled() throws AaiException {
-        ControlLoopEventManager mgr = null;
+    public void testQueryAai_QueryVnfById_Disabled() {
+        onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_VNF_ID, "disableClosedLoop");
 
-        try {
-            onset.getAai().put(ControlLoopEventManager.GENERIC_VNF_VNF_ID, "disableClosedLoop");
+        ControlLoopEventManager mgr = makeManager(onset);
 
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
+        assertThatThrownBy(() -> mgr.queryAai(onset)).isInstanceOf(AaiException.class)
+                        .hasMessage("is-closed-loop-disabled is set to true (query by vnf-id)");
 
-            fail("missing exception");
-
-        } catch (AaiException expected) {
-            assertEquals("is-closed-loop-disabled is set to true (query by vnf-id)", expected.getMessage());
-
-            assertNotNull(mgr.getVnfResponse());
-            assertNull(mgr.getVserverResponse());
-        }
+        assertNotNull(mgr.getVnfResponse());
+        assertNull(mgr.getVserverResponse());
     }
 
     @Test
     public void testQueryAai_QueryVserver() throws AaiException {
-        ControlLoopEventManager mgr = null;
-
         onset.getAai().remove(ControlLoopEventManager.GENERIC_VNF_VNF_ID);
         onset.getAai().put(ControlLoopEventManager.VSERVER_VSERVER_NAME, "AVserver");
 
-        mgr = makeManager(onset);
+        ControlLoopEventManager mgr = makeManager(onset);
         mgr.queryAai(onset);
 
         assertNull(mgr.getVnfResponse());
@@ -1088,30 +992,23 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testQueryAai_QueryVserver_Disabled() throws AaiException {
-        ControlLoopEventManager mgr = null;
-
-        try {
-            onset.getAai().remove(ControlLoopEventManager.GENERIC_VNF_VNF_ID);
-            onset.getAai().put(ControlLoopEventManager.VSERVER_VSERVER_NAME, "disableClosedLoop");
-
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
+    public void testQueryAai_QueryVserver_Disabled() {
+        onset.getAai().remove(ControlLoopEventManager.GENERIC_VNF_VNF_ID);
+        onset.getAai().put(ControlLoopEventManager.VSERVER_VSERVER_NAME, "disableClosedLoop");
 
-            fail("missing exception");
+        ControlLoopEventManager mgr = makeManager(onset);
 
-        } catch (AaiException expected) {
-            assertEquals("is-closed-loop-disabled is set to true (query by vserver-name)", expected.getMessage());
+        assertThatThrownBy(() -> mgr.queryAai(onset)).isInstanceOf(AaiException.class)
+                        .hasMessage("is-closed-loop-disabled is set to true (query by vserver-name)");
 
-            assertNull(mgr.getVnfResponse());
-            assertNotNull(mgr.getVserverResponse());
-        }
+        assertNull(mgr.getVnfResponse());
+        assertNotNull(mgr.getVserverResponse());
     }
 
     @Test(expected = AaiException.class)
     public void testQueryAai_QueryException() throws AaiException {
         // Force AAI errors
-        PolicyEngine.manager.setEnvironmentProperty("aai.url", INVALID_URL);
+        PolicyEngine.manager.setEnvironmentProperty(AAI_URL, INVALID_URL);
 
         makeManager(onset).queryAai(onset);
     }
@@ -1178,7 +1075,7 @@ public class ControlLoopEventManagerTest {
 
         svr.setIsClosedLoopDisabled(false);
         svr.setProvStatus(ControlLoopEventManager.PROV_STATUS_ACTIVE);
-        Whitebox.invokeMethod(ControlLoopEventManager.class, "processVServerResponse", resp);
+        Whitebox.invokeMethod(ControlLoopEventManager.class, PROCESS_VSERVER_RESPONSE, resp);
     }
 
     @Test
@@ -1187,7 +1084,7 @@ public class ControlLoopEventManagerTest {
         thrown.expectMessage("AAI Response is null (query by vserver-name)");
 
         AaiGetVserverResponse resp = null;
-        Whitebox.invokeMethod(ControlLoopEventManager.class, "processVServerResponse", resp);
+        Whitebox.invokeMethod(ControlLoopEventManager.class, PROCESS_VSERVER_RESPONSE, resp);
     }
 
     @Test
@@ -1205,7 +1102,7 @@ public class ControlLoopEventManagerTest {
         svr.setIsClosedLoopDisabled(false);
         svr.setProvStatus(ControlLoopEventManager.PROV_STATUS_ACTIVE);
 
-        Whitebox.invokeMethod(ControlLoopEventManager.class, "processVServerResponse", resp);
+        Whitebox.invokeMethod(ControlLoopEventManager.class, PROCESS_VSERVER_RESPONSE, resp);
     }
 
     @Test
@@ -1219,7 +1116,7 @@ public class ControlLoopEventManagerTest {
 
         svr.setIsClosedLoopDisabled(true);
         svr.setProvStatus(ControlLoopEventManager.PROV_STATUS_ACTIVE);
-        Whitebox.invokeMethod(ControlLoopEventManager.class, "processVServerResponse", resp);
+        Whitebox.invokeMethod(ControlLoopEventManager.class, PROCESS_VSERVER_RESPONSE, resp);
     }
 
     @Test
@@ -1233,7 +1130,7 @@ public class ControlLoopEventManagerTest {
 
         svr.setIsClosedLoopDisabled(false);
         svr.setProvStatus("inactive1");
-        Whitebox.invokeMethod(ControlLoopEventManager.class, "processVServerResponse", resp);
+        Whitebox.invokeMethod(ControlLoopEventManager.class, PROCESS_VSERVER_RESPONSE, resp);
     }
 
     @Test
@@ -1310,7 +1207,7 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testGetNqVserverFromAai() throws Exception {
+    public void testGetNqVserverFromAai() {
 
         // empty vserver name
         ControlLoopEventManager manager = makeManager(onset);
@@ -1334,7 +1231,7 @@ public class ControlLoopEventManagerTest {
 
 
         // Force AAI error
-        PolicyEngine.manager.setEnvironmentProperty("aai.url", INVALID_URL);
+        PolicyEngine.manager.setEnvironmentProperty(AAI_URL, INVALID_URL);
 
         // re-create manager
         manager = makeManager(onset);
@@ -1343,36 +1240,22 @@ public class ControlLoopEventManagerTest {
     }
 
     @Test
-    public void testGetCqResponseEmptyVserver() {
-        try {
-            ControlLoopEventManager mgr = null;
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
-            mgr.getCqResponse(onset);
-            fail();
-
-
-        } catch (AaiException e) {
-            logger.error("testGetCqResponse Exception: ", e);
-            assertEquals(e.getMessage(), "Vserver name is missing");
-        }
+    public void testGetCqResponseEmptyVserver() throws AaiException {
+        ControlLoopEventManager mgr = makeManager(onset);
+        mgr.queryAai(onset);
+
+        assertThatThrownBy(() -> mgr.getCqResponse(onset)).isInstanceOf(AaiException.class)
+                        .hasMessage("Vserver name is missing");
     }
 
     @Test
-    public void testGetCqResponse() {
-        try {
-            ControlLoopEventManager mgr = null;
-            mgr = makeManager(onset);
-            mgr.queryAai(onset);
-            onset.getAai().put("vserver.vserver-name", "sample");
-            AaiCqResponse aaiCqResponse = mgr.getCqResponse(onset);
-            assertNotNull(aaiCqResponse);
-
-
-        } catch (Exception e) {
-            logger.error("testGetCqResponse Exception: ", e);
-            fail(e.getMessage());
-        }
+    public void testGetCqResponse() throws AaiException {
+        ControlLoopEventManager mgr = makeManager(onset);
+        mgr.queryAai(onset);
+        onset.getAai().put(VSERVER_NAME, "sample");
+
+        AaiCqResponse aaiCqResponse = mgr.getCqResponse(onset);
+        assertNotNull(aaiCqResponse);
     }
 
 
index 568f8bc..835b4ac 100644 (file)
 
 package org.onap.policy.controlloop.eventmanager;
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -37,8 +37,6 @@ import java.util.HashMap;
 import java.util.UUID;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
-import javax.persistence.NoResultException;
-import javax.persistence.NonUniqueResultException;
 import javax.persistence.Persistence;
 import javax.persistence.Query;
 import org.apache.commons.io.IOUtils;
@@ -79,6 +77,21 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ControlLoopOperationManagerTest {
+    private static final String VSERVER_NAME = "vserver.vserver-name";
+    private static final String TEST_YAML = "src/test/resources/test.yaml";
+    private static final String ONSET_ONE = "onsetOne";
+    private static final String VNF_NAME = "generic-vnf.vnf-name";
+    private static final String VNF_ID = "generic-vnf.vnf-id";
+    private static final String TWO_ONSET_TEST = "TwoOnsetTest";
+    private static final String OPER_MSG = "The Wizard Escaped";
+    private static final String OZ_VNF = "OzVNF";
+    private static final String OPERATIONS_HISTORY_PU_TEST = "OperationsHistoryPUTest";
+    private static final String OPERATIONS_HISTORY_PU = "OperationsHistoryPU";
+    private static final String DOROTHY = "Dorothy";
+    private static final String APPC_FAILURE_REASON = "AppC failed for some reason";
+    private static final String ACCEPT = "ACCEPT";
+
+
     private static final Logger logger = LoggerFactory.getLogger(ControlLoopOperationManagerTest.class);
 
 
@@ -87,11 +100,11 @@ public class ControlLoopOperationManagerTest {
     static {
         onset = new VirtualControlLoopEvent();
         onset.setRequestId(UUID.randomUUID());
-        onset.setTarget("generic-vnf.vnf-name");
+        onset.setTarget(VNF_NAME);
         onset.setTargetType(ControlLoopTargetType.VNF);
         onset.setClosedLoopAlarmStart(Instant.now());
         onset.setAai(new HashMap<>());
-        onset.getAai().put("generic-vnf.vnf-name", "testTriggerSource");
+        onset.getAai().put(VNF_NAME, "testTriggerSource");
         onset.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
 
         /* Set environment properties */
@@ -109,14 +122,7 @@ public class ControlLoopOperationManagerTest {
         String sql = "select count(*) as count from operationshistory";
         Query nq = em.createNativeQuery(sql);
 
-        int numEvents = -1;
-        try {
-            numEvents = ((Number) nq.getSingleResult()).intValue();
-        } catch (NoResultException | NonUniqueResultException ex) {
-            logger.error("getCountFromDb threw: ", ex);
-            fail(ex.getMessage());
-        }
-        return numEvents;
+        return ((Number) nq.getSingleResult()).intValue();
     }
 
 
@@ -124,16 +130,12 @@ public class ControlLoopOperationManagerTest {
      * Set up test class.
      */
     @BeforeClass
-    public static void setUp() {
+    public static void setUp() throws Exception {
 
-        try {
-            org.onap.policy.simulators.Util.buildAaiSim();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
+        org.onap.policy.simulators.Util.buildAaiSim();
 
         // Set PU
-        System.setProperty("OperationsHistoryPU", "OperationsHistoryPUTest");
+        System.setProperty(OPERATIONS_HISTORY_PU, OPERATIONS_HISTORY_PU_TEST);
 
         // Enter dummy props to avoid nullPointerException
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_URL, "a");
@@ -141,7 +143,7 @@ public class ControlLoopOperationManagerTest {
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_PASS, "c");
 
         // Connect to in-mem db
-        emf = Persistence.createEntityManagerFactory("OperationsHistoryPUTest");
+        emf = Persistence.createEntityManagerFactory(OPERATIONS_HISTORY_PU_TEST);
         em = emf.createEntityManager();
     }
 
@@ -157,232 +159,214 @@ public class ControlLoopOperationManagerTest {
     }
 
     @Test
-    public void testRetriesFail() {
+    public void testRetriesFail() throws Exception {
         //
         // Load up the policy
         //
-        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml("src/test/resources/test.yaml");
+        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(TEST_YAML);
         onset.setClosedLoopControlName(pair.key.getControlLoop().getControlLoopName());
-        try {
-            //
-            // Create a processor
-            //
-            final ControlLoopProcessor processor = new ControlLoopProcessor(pair.value);
-            //
-            // create the manager
-            //
-            ControlLoopEventManager eventManager =
-                    new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestId());
-            VirtualControlLoopNotification notification = eventManager.activate(onset);
-
-            assertNotNull(notification);
-            assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
-
-            ControlLoopEventManager.NewEventStatus status = null;
-            try {
-                status = eventManager.onNewEvent(onset);
-            } catch (AaiException e) {
-                logger.warn(e.toString());
-                fail("A&AI Query Failed");
-            }
-            assertNotNull(status);
-            assertEquals(ControlLoopEventManager.NewEventStatus.FIRST_ONSET, status);
-
-            ControlLoopOperationManager manager =
-                    new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
-            logger.debug("{}", manager);
-            //
-            //
-            //
-            assertFalse(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            //
-            // Start
-            //
-            Object request = manager.startOperation(onset);
-            logger.debug("{}", manager);
-            assertNotNull(request);
-            assertTrue(request instanceof LcmRequestWrapper);
-            LcmRequestWrapper dmaapRequest = (LcmRequestWrapper) request;
-            LcmRequest appcRequest = dmaapRequest.getBody();
-            assertTrue(appcRequest.getCommonHeader().getSubRequestId().contentEquals("1"));
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            // Accept
-            //
-            LcmResponseWrapper dmaapResponse = new LcmResponseWrapper();
-            LcmResponse appcResponse = new LcmResponse(appcRequest);
-            appcResponse.getStatus().setCode(100);
-            appcResponse.getStatus().setMessage("ACCEPT");
-            dmaapResponse.setBody(appcResponse);
-            //
-            //
-            //
-            PolicyResult result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            assertTrue(result == null);
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            // Now we are going to Fail it
-            //
-            appcResponse = new LcmResponse(appcRequest);
-            appcResponse.getStatus().setCode(401);
-            appcResponse.getStatus().setMessage("AppC failed for some reason");
-            dmaapResponse.setBody(appcResponse);
-            result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            assertTrue(result.equals(PolicyResult.FAILURE));
-            assertFalse(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            //
-            // Retry it
-            //
-            request = manager.startOperation(onset);
-            logger.debug("{}", manager);
-            assertNotNull(request);
-            assertTrue(request instanceof LcmRequestWrapper);
-            dmaapRequest = (LcmRequestWrapper) request;
-            appcRequest = dmaapRequest.getBody();
-            assertTrue(appcRequest.getCommonHeader().getSubRequestId().contentEquals("2"));
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            //
-            //
-            appcResponse = new LcmResponse(appcRequest);
-            logger.debug("{}", manager);
-            appcResponse.getStatus().setCode(100);
-            appcResponse.getStatus().setMessage("ACCEPT");
-            dmaapResponse.setBody(appcResponse);
-            //
-            //
-            //
-            result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            assertTrue(result == null);
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            // Now we are going to Fail it
-            //
-            appcResponse = new LcmResponse(appcRequest);
-            appcResponse.getStatus().setCode(401);
-            appcResponse.getStatus().setMessage("AppC failed for some reason");
-            dmaapResponse.setBody(appcResponse);
-            result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            assertTrue(result.equals(PolicyResult.FAILURE));
-            //
-            // Should be complete now
-            //
-            assertTrue(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            assertNotNull(manager.getOperationResult());
-            assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_RETRIES));
-            assertTrue(manager.getHistory().size() == 2);
-        } catch (ControlLoopException | AaiException e) {
-            fail(e.getMessage());
-        }
+
+        //
+        // Create a processor
+        //
+        final ControlLoopProcessor processor = new ControlLoopProcessor(pair.value);
+        //
+        // create the manager
+        //
+        ControlLoopEventManager eventManager =
+                new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestId());
+        VirtualControlLoopNotification notification = eventManager.activate(onset);
+
+        assertNotNull(notification);
+        assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+        ControlLoopEventManager.NewEventStatus status = eventManager.onNewEvent(onset);
+        assertNotNull(status);
+        assertEquals(ControlLoopEventManager.NewEventStatus.FIRST_ONSET, status);
+
+        ControlLoopOperationManager manager =
+                new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
+        logger.debug("{}", manager);
+        //
+        //
+        //
+        assertFalse(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        //
+        // Start
+        //
+        Object request = manager.startOperation(onset);
+        logger.debug("{}", manager);
+        assertNotNull(request);
+        assertTrue(request instanceof LcmRequestWrapper);
+        LcmRequestWrapper dmaapRequest = (LcmRequestWrapper) request;
+        LcmRequest appcRequest = dmaapRequest.getBody();
+        assertTrue(appcRequest.getCommonHeader().getSubRequestId().contentEquals("1"));
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        // Accept
+        //
+        LcmResponseWrapper dmaapResponse = new LcmResponseWrapper();
+        LcmResponse appcResponse = new LcmResponse(appcRequest);
+        appcResponse.getStatus().setCode(100);
+        appcResponse.getStatus().setMessage(ACCEPT);
+        dmaapResponse.setBody(appcResponse);
+        //
+        //
+        //
+        PolicyResult result = manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        assertTrue(result == null);
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        // Now we are going to Fail it
+        //
+        appcResponse = new LcmResponse(appcRequest);
+        appcResponse.getStatus().setCode(401);
+        appcResponse.getStatus().setMessage(APPC_FAILURE_REASON);
+        dmaapResponse.setBody(appcResponse);
+        result = manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        assertTrue(result.equals(PolicyResult.FAILURE));
+        assertFalse(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        //
+        // Retry it
+        //
+        request = manager.startOperation(onset);
+        logger.debug("{}", manager);
+        assertNotNull(request);
+        assertTrue(request instanceof LcmRequestWrapper);
+        dmaapRequest = (LcmRequestWrapper) request;
+        appcRequest = dmaapRequest.getBody();
+        assertTrue(appcRequest.getCommonHeader().getSubRequestId().contentEquals("2"));
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        //
+        //
+        appcResponse = new LcmResponse(appcRequest);
+        logger.debug("{}", manager);
+        appcResponse.getStatus().setCode(100);
+        appcResponse.getStatus().setMessage(ACCEPT);
+        dmaapResponse.setBody(appcResponse);
+        //
+        //
+        //
+        result = manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        assertTrue(result == null);
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        // Now we are going to Fail it
+        //
+        appcResponse = new LcmResponse(appcRequest);
+        appcResponse.getStatus().setCode(401);
+        appcResponse.getStatus().setMessage(APPC_FAILURE_REASON);
+        dmaapResponse.setBody(appcResponse);
+        result = manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        assertTrue(result.equals(PolicyResult.FAILURE));
+        //
+        // Should be complete now
+        //
+        assertTrue(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        assertNotNull(manager.getOperationResult());
+        assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_RETRIES));
+        assertTrue(manager.getHistory().size() == 2);
     }
 
     @Test
-    public void testTimeout() {
+    public void testTimeout() throws Exception {
         //
         // Load up the policy
         //
-        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml("src/test/resources/test.yaml");
+        final SupportUtil.Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(TEST_YAML);
         onset.setClosedLoopControlName(pair.key.getControlLoop().getControlLoopName());
-        try {
-            //
-            // Create a processor
-            //
-            final ControlLoopProcessor processor = new ControlLoopProcessor(pair.value);
-            //
-            // create the manager
-            //
-            ControlLoopEventManager eventManager =
-                    new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestId());
-            VirtualControlLoopNotification notification = eventManager.activate(onset);
-
-            assertNotNull(notification);
-            assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
-
-            ControlLoopEventManager.NewEventStatus status = null;
-            try {
-                status = eventManager.onNewEvent(onset);
-            } catch (AaiException e) {
-                logger.warn(e.toString());
-                fail("A&AI Query Failed");
-            }
-            assertNotNull(status);
-            assertEquals(ControlLoopEventManager.NewEventStatus.FIRST_ONSET, status);
-
-            ControlLoopOperationManager manager =
-                    new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
-            //
-            //
-            //
-            logger.debug("{}", manager);
-            assertFalse(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            //
-            // Start
-            //
-            Object request = manager.startOperation(onset);
-            logger.debug("{}", manager);
-            assertNotNull(request);
-            assertTrue((request) instanceof LcmRequestWrapper);
-            LcmRequestWrapper dmaapRequest = (LcmRequestWrapper) request;
-            LcmRequest appcRequest = dmaapRequest.getBody();
-            assertTrue((appcRequest).getCommonHeader().getSubRequestId().contentEquals("1"));
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            // Accept
-            //
-            LcmResponseWrapper dmaapResponse = new LcmResponseWrapper();
-            LcmResponse appcResponse = new LcmResponse(appcRequest);
-            dmaapResponse.setBody(appcResponse);
-            appcResponse.getStatus().setCode(100);
-            appcResponse.getStatus().setMessage("ACCEPT");
-            //
-            //
-            //
-            PolicyResult result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            assertTrue(result == null);
-            assertFalse(manager.isOperationComplete());
-            assertTrue(manager.isOperationRunning());
-            //
-            // Now we are going to simulate Timeout
-            //
-            manager.setOperationHasTimedOut();
-            logger.debug("{}", manager);
-            assertTrue(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            assertTrue(manager.getHistory().size() == 1);
-            assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_TIMEOUT));
-            //
-            // Now we are going to Fail the previous request
-            //
-            appcResponse = new LcmResponse(appcRequest);
-            appcResponse.getStatus().setCode(401);
-            appcResponse.getStatus().setMessage("AppC failed for some reason");
-            dmaapResponse.setBody(appcResponse);
-            result = manager.onResponse(dmaapResponse);
-            logger.debug("{}", manager);
-            //
-            //
-            //
-            assertTrue(manager.isOperationComplete());
-            assertFalse(manager.isOperationRunning());
-            assertTrue(manager.getHistory().size() == 1);
-            assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_TIMEOUT));
-        } catch (ControlLoopException | AaiException e) {
-            fail(e.getMessage());
-        }
+
+        //
+        // Create a processor
+        //
+        final ControlLoopProcessor processor = new ControlLoopProcessor(pair.value);
+        //
+        // create the manager
+        //
+        ControlLoopEventManager eventManager =
+                new ControlLoopEventManager(onset.getClosedLoopControlName(), onset.getRequestId());
+        VirtualControlLoopNotification notification = eventManager.activate(onset);
+
+        assertNotNull(notification);
+        assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+        ControlLoopEventManager.NewEventStatus status = eventManager.onNewEvent(onset);
+        assertNotNull(status);
+        assertEquals(ControlLoopEventManager.NewEventStatus.FIRST_ONSET, status);
+
+        ControlLoopOperationManager manager =
+                new ControlLoopOperationManager(onset, processor.getCurrentPolicy(), eventManager);
+        //
+        //
+        //
+        logger.debug("{}", manager);
+        assertFalse(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        //
+        // Start
+        //
+        Object request = manager.startOperation(onset);
+        logger.debug("{}", manager);
+        assertNotNull(request);
+        assertTrue((request) instanceof LcmRequestWrapper);
+        LcmRequestWrapper dmaapRequest = (LcmRequestWrapper) request;
+        LcmRequest appcRequest = dmaapRequest.getBody();
+        assertTrue((appcRequest).getCommonHeader().getSubRequestId().contentEquals("1"));
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        // Accept
+        //
+        LcmResponseWrapper dmaapResponse = new LcmResponseWrapper();
+        LcmResponse appcResponse = new LcmResponse(appcRequest);
+        dmaapResponse.setBody(appcResponse);
+        appcResponse.getStatus().setCode(100);
+        appcResponse.getStatus().setMessage(ACCEPT);
+        //
+        //
+        //
+        PolicyResult result = manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        assertTrue(result == null);
+        assertFalse(manager.isOperationComplete());
+        assertTrue(manager.isOperationRunning());
+        //
+        // Now we are going to simulate Timeout
+        //
+        manager.setOperationHasTimedOut();
+        logger.debug("{}", manager);
+        assertTrue(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        assertTrue(manager.getHistory().size() == 1);
+        assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_TIMEOUT));
+        //
+        // Now we are going to Fail the previous request
+        //
+        appcResponse = new LcmResponse(appcRequest);
+        appcResponse.getStatus().setCode(401);
+        appcResponse.getStatus().setMessage(APPC_FAILURE_REASON);
+        dmaapResponse.setBody(appcResponse);
+        manager.onResponse(dmaapResponse);
+        logger.debug("{}", manager);
+        //
+        //
+        //
+        assertTrue(manager.isOperationComplete());
+        assertFalse(manager.isOperationRunning());
+        assertTrue(manager.getHistory().size() == 1);
+        assertTrue(manager.getOperationResult().equals(PolicyResult.FAILURE_TIMEOUT));
     }
 
     @Test
@@ -392,13 +376,13 @@ public class ControlLoopOperationManagerTest {
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -425,80 +409,55 @@ public class ControlLoopOperationManagerTest {
 
         final Target savedTarget = policy.getTarget();
         policy.setTarget(null);
-        try {
-            clom.getTarget(policy);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("The target is null", e.getMessage());
-        }
+        assertThatThrownBy(() -> clom.getTarget(policy)).hasMessage("The target is null");
 
         policy.setTarget(new Target());
-        try {
-            clom.getTarget(policy);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("The target type is null", e.getMessage());
-        }
+        assertThatThrownBy(() -> clom.getTarget(policy)).hasMessage("The target type is null");
 
         policy.setTarget(savedTarget);
 
         policy.getTarget().setType(TargetType.PNF);
-        try {
-            clom.getTarget(policy);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("PNF target is not supported", e.getMessage());
-        }
+        assertThatThrownBy(() -> clom.getTarget(policy)).hasMessage("PNF target is not supported");
 
         onsetEvent.setTarget("Oz");
-        onsetEvent.getAai().remove("generic-vnf.vnf-name");
-        onsetEvent.getAai().remove("generic-vnf.vnf-id");
-        onsetEvent.getAai().remove("vserver.vserver-name");
+        onsetEvent.getAai().remove(VNF_NAME);
+        onsetEvent.getAai().remove(VNF_ID);
+        onsetEvent.getAai().remove(VSERVER_NAME);
 
         policy.getTarget().setType(TargetType.VNF);
-        try {
-            clom.getTarget(policy);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Target does not match target type", e.getMessage());
-        }
+        assertThatThrownBy(() -> clom.getTarget(policy)).hasMessage("Target does not match target type");
 
-        onsetEvent.setTarget("vserver.vserver-name");
-        onsetEvent.getAai().put("vserver.vserver-name", "OzVServer");
+        onsetEvent.setTarget(VSERVER_NAME);
+        onsetEvent.getAai().put(VSERVER_NAME, "OzVServer");
         assertEquals("OzVServer", clom.getTarget(policy));
 
-        onsetEvent.getAai().remove("vserver.vserver-name");
-        onsetEvent.setTarget("generic-vnf.vnf-id");
-        onsetEvent.getAai().put("generic-vnf.vnf-id", "OzVNF");
-        assertEquals("OzVNF", clom.getTarget(policy));
+        onsetEvent.getAai().remove(VSERVER_NAME);
+        onsetEvent.setTarget(VNF_ID);
+        onsetEvent.getAai().put(VNF_ID, OZ_VNF);
+        assertEquals(OZ_VNF, clom.getTarget(policy));
 
-        onsetEvent.setTarget("generic-vnf.vnf-name");
-        assertEquals("OzVNF", clom.getTarget(policy));
+        onsetEvent.setTarget(VNF_NAME);
+        assertEquals(OZ_VNF, clom.getTarget(policy));
 
         manager.onNewEvent(onsetEvent);
 
-        onsetEvent.getAai().remove("generic-vnf.vnf-id");
+        onsetEvent.getAai().remove(VNF_ID);
         manager.getVnfResponse();
         if (!Boolean.valueOf(PolicyEngine.manager.getEnvironmentProperty("aai.customQuery"))) {
-            clom.getEventManager().getVnfResponse().setVnfId("generic-vnf.vnf-id");
-            assertEquals("generic-vnf.vnf-id", clom.getTarget(policy));
+            clom.getEventManager().getVnfResponse().setVnfId(VNF_ID);
+            assertEquals(VNF_ID, clom.getTarget(policy));
         }
 
 
         policy.getTarget().setType(TargetType.VFC);
-        try {
-            clom.getTarget(policy);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("The target type is not supported", e.getMessage());
-        }
+        assertThatThrownBy(() -> clom.getTarget(policy)).hasMessage("The target type is not supported");
 
         assertEquals(Integer.valueOf(20), clom.getOperationTimeout());
 
         assertEquals("20s", clom.getOperationTimeoutString(100));
 
         assertEquals(null, clom.getOperationMessage());
-        assertEquals(null, clom.getOperationMessage("The Wizard Escaped"));
+        assertEquals(null, clom.getOperationMessage(OPER_MSG));
 
         clom.startOperation(onsetEvent);
 
@@ -506,8 +465,8 @@ public class ControlLoopOperationManagerTest {
                 clom.getOperationMessage());
         assertEquals(
                 "actor=SO,operation=Restart,target=Target [type=VFC, resourceId=null],subRequestId=1, Guard result: "
-                        + "The Wizard Escaped",
-                clom.getOperationMessage("The Wizard Escaped"));
+                        + OPER_MSG,
+                clom.getOperationMessage(OPER_MSG));
 
         assertEquals("actor=SO,operation=Restart,tar", clom.getOperationHistory().substring(0, 30));
 
@@ -517,18 +476,18 @@ public class ControlLoopOperationManagerTest {
 
     @Test
     public void testConstructor() throws IOException, ControlLoopException, AaiException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -542,12 +501,8 @@ public class ControlLoopOperationManagerTest {
 
         policy.setRecipe("ModifyConfig");
         policy.getTarget().setResourceID(UUID.randomUUID().toString());
-        try {
-            new ControlLoopOperationManager(onsetEvent, policy, manager);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("Target vnf-id could not be found", e.getMessage());
-        }
+        assertThatThrownBy(() -> new ControlLoopOperationManager(onsetEvent, policy, manager))
+                        .hasMessage("Target vnf-id could not be found");
 
         policy.getTarget().setResourceID("82194af1-3c2c-485a-8f44-420e22a9eaa4");
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
@@ -562,29 +517,25 @@ public class ControlLoopOperationManagerTest {
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
         assertNotNull(clom);
 
-        policy.setActor("Dorothy");
-        try {
-            new ControlLoopOperationManager(onsetEvent, policy, manager);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("ControlLoopEventManager: policy has an unknown actor.", e.getMessage());
-        }
+        policy.setActor(DOROTHY);
+        assertThatThrownBy(() -> new ControlLoopOperationManager(onsetEvent, policy, manager))
+                        .hasMessage("ControlLoopEventManager: policy has an unknown actor.");
     }
 
     @Test
     public void testStartOperation() throws IOException, ControlLoopException, AaiException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -597,13 +548,9 @@ public class ControlLoopOperationManagerTest {
         assertNotNull(clom);
 
         clom.startOperation(onsetEvent);
-
-        try {
-            clom.startOperation(onsetEvent);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("current operation is not null (an operation is already running)", e.getMessage());
-        }
+        ControlLoopOperationManager clom2 = clom;
+        assertThatThrownBy(() -> clom2.startOperation(onsetEvent))
+                        .hasMessage("current operation is not null (an operation is already running)");
 
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
         assertNotNull(clom);
@@ -619,12 +566,9 @@ public class ControlLoopOperationManagerTest {
         clom.startOperation(onsetEvent);
         clom.setOperationHasTimedOut();
         assertTrue(clom.isOperationComplete());
-        try {
-            clom.startOperation(onsetEvent);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("current operation failed and retries are not allowed", e.getMessage());
-        }
+        ControlLoopOperationManager clom3 = clom;
+        assertThatThrownBy(() -> clom3.startOperation(onsetEvent))
+                        .hasMessage("current operation failed and retries are not allowed");
 
         policy.setRetry(0);
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
@@ -632,12 +576,9 @@ public class ControlLoopOperationManagerTest {
         clom.startOperation(onsetEvent);
         clom.setOperationHasTimedOut();
         assertTrue(clom.isOperationComplete());
-        try {
-            clom.startOperation(onsetEvent);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("current operation failed and retries are not allowed", e.getMessage());
-        }
+        ControlLoopOperationManager clom4 = clom;
+        assertThatThrownBy(() -> clom4.startOperation(onsetEvent))
+                        .hasMessage("current operation failed and retries are not allowed");
 
         policy.setRetry(1);
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
@@ -647,12 +588,9 @@ public class ControlLoopOperationManagerTest {
         clom.startOperation(onsetEvent);
         clom.setOperationHasTimedOut();
         assertTrue(clom.isOperationComplete());
-        try {
-            clom.startOperation(onsetEvent);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("current oepration has failed after 2 retries", e.getMessage());
-        }
+        ControlLoopOperationManager clom5 = clom;
+        assertThatThrownBy(() -> clom5.startOperation(onsetEvent))
+                        .hasMessage("current oepration has failed after 2 retries");
 
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
         assertNotNull(clom);
@@ -667,28 +605,25 @@ public class ControlLoopOperationManagerTest {
         clom = new ControlLoopOperationManager(onsetEvent, policy, manager);
         assertNotNull(clom);
         policy.setActor("Oz");
-        try {
-            clom.startOperation(onsetEvent);
-            fail("test should throw an exception here");
-        } catch (Exception e) {
-            assertEquals("invalid actor Oz on policy", e.getMessage());
-        }
+        ControlLoopOperationManager clom6 = clom;
+        assertThatThrownBy(() -> clom6.startOperation(onsetEvent))
+                        .hasMessage("invalid actor Oz on policy");
     }
 
     @Test
     public void testOnResponse() throws IOException, ControlLoopException, AaiException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -770,18 +705,18 @@ public class ControlLoopOperationManagerTest {
 
     @Test
     public void testCompleteOperation() throws ControlLoopException, AaiException, IOException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -801,34 +736,32 @@ public class ControlLoopOperationManagerTest {
         PolicyEngine.manager.setEnvironmentProperty("guard.disabled", "false");
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_URL,
                 "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, "Dorothy");
+        PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, DOROTHY);
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_PASS, "Toto");
 
         assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw));
 
-        System.setProperty("OperationsHistoryPU", "OperationsHistoryPUTest");
+        System.setProperty(OPERATIONS_HISTORY_PU, OPERATIONS_HISTORY_PU_TEST);
         assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw));
     }
 
     @Test
-    public void testCommitAbatement() throws ControlLoopException, AaiException, IOException {
+    public void testCommitAbatement() throws Exception {
 
         String yamlString = null;
-        try (InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"))) {
+        try (InputStream is = new FileInputStream(new File(TEST_YAML))) {
             yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
-        } catch (Exception e) {
-            fail(e.getMessage());
         }
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -850,23 +783,24 @@ public class ControlLoopOperationManagerTest {
         int numEventsAfter = getCount();
         logger.info("numEventsAfter={}", numEventsAfter);
 
-        assertEquals(1, numEventsAfter - numEventsBefore);
+        int diff = numEventsAfter - numEventsBefore;
+        assertEquals(1, diff);
     }
 
     @Test
     public void testSerialization() throws Exception {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
+        InputStream is = new FileInputStream(new File(TEST_YAML));
         final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         UUID requestId = UUID.randomUUID();
         VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
-        onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+        onsetEvent.setClosedLoopControlName(TWO_ONSET_TEST);
         onsetEvent.setRequestId(requestId);
-        onsetEvent.setTarget("generic-vnf.vnf-id");
+        onsetEvent.setTarget(VNF_ID);
         onsetEvent.setClosedLoopAlarmStart(Instant.now());
         onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         onsetEvent.setAai(new HashMap<>());
-        onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+        onsetEvent.getAai().put(VNF_NAME, ONSET_ONE);
 
         ControlLoopEventManager manager =
                 new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
@@ -891,7 +825,7 @@ public class ControlLoopOperationManagerTest {
         PolicyEngine.manager.setEnvironmentProperty("guard.disabled", "false");
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_URL,
                 "http://somewhere.over.the.rainbow");
-        PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, "Dorothy");
+        PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, DOROTHY);
         PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_PASS, "Toto");
 
         assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw));
@@ -903,7 +837,7 @@ public class ControlLoopOperationManagerTest {
         assertFalse(clom.isOperationRunning());
         assertEquals(1, clom.getHistory().size());
 
-        System.setProperty("OperationsHistoryPU", "OperationsHistoryPUTest");
+        System.setProperty(OPERATIONS_HISTORY_PU, OPERATIONS_HISTORY_PU_TEST);
         assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw));
 
         clom = Serializer.roundTrip(clom);
index 2a6dc7b..84fe449 100644 (file)
@@ -2,14 +2,14 @@
  * ============LICENSE_START=======================================================
  * unit test
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.policy.controlloop.processor;
 
-import static org.junit.Assert.assertEquals;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-
 import org.apache.commons.io.IOUtils;
 import org.junit.Test;
 import org.onap.policy.controlloop.ControlLoopException;
@@ -56,13 +54,8 @@ public class ControlLoopProcessorTest {
         InputStream is = new FileInputStream(new File("src/test/resources/string.yaml"));
         String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
-        try {
-            new ControlLoopProcessor(yamlString);
-            fail("test should thrown an exception");
-        } catch (Exception e) {
-            assertEquals("Cannot create property=string for JavaBean=ControlLoopPolicy",
-                    e.getMessage().substring(0, 60));
-        }
+        assertThatThrownBy(() -> new ControlLoopProcessor(yamlString))
+            .hasMessageStartingWith("Cannot create property=string for JavaBean=ControlLoopPolicy");
     }
 
     @Test
@@ -73,12 +66,8 @@ public class ControlLoopProcessorTest {
         ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
         assertNull(clProcessor.getCurrentPolicy());
 
-        try {
-            clProcessor.nextPolicyForResult(PolicyResult.SUCCESS);
-            fail("test shold throw an exception here");
-        } catch (ControlLoopException e) {
-            assertEquals("There is no current policy to determine where to go to.", e.getMessage());
-        }
+        assertThatThrownBy(() -> clProcessor.nextPolicyForResult(PolicyResult.SUCCESS))
+            .hasMessageStartingWith("There is no current policy to determine where to go to.");
     }
 
     @Test
@@ -87,13 +76,8 @@ public class ControlLoopProcessorTest {
         String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
-
-        try {
-            clProcessor.getCurrentPolicy();
-            fail("test shold throw an exception here");
-        } catch (ControlLoopException e) {
-            assertEquals("There are no policies defined.", e.getMessage());
-        }
+        assertThatThrownBy(clProcessor::getCurrentPolicy)
+            .hasMessage("There are no policies defined.");
     }
 
     @Test
@@ -128,7 +112,7 @@ public class ControlLoopProcessorTest {
 
     /**
      * Test policies in the given yaml following the successfull path.
-     * 
+     *
      * @param yaml yaml containing the policies to test
      * @throws ControlLoopException if an error occurs
      */
@@ -150,7 +134,7 @@ public class ControlLoopProcessorTest {
 
     /**
      * Test policies in the given yaml following the failure path.
-     * 
+     *
      * @param yaml yaml containing the policies to test
      * @throws ControlLoopException if an error occurs
      */
index 72e51ba..47907d9 100644 (file)
@@ -22,12 +22,10 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
-import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.Map;
 import org.junit.Test;
-import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.controlloop.params.ControlLoopParams;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
@@ -35,7 +33,7 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 public class ControlLoopUtilsTest {
 
     @Test
-    public void toControlLoopParams() throws IOException, CoderException {
+    public void toControlLoopParams() throws Exception {
         String policy =
             new String(Files.readAllBytes(Paths.get("src/test/resources/tosca-policy-operational-restart.json")));
 
index dcf3e6c..cc5302f 100644 (file)
@@ -3,6 +3,7 @@
  * eventmanager
  * ================================================================================
  * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,40 +35,43 @@ import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.drools.impl.PolicyEngineJUnitImpl;
 
 public class DroolsPolicyEngineTest {
+    private static final String TOPIC = "TheWizardOfOz";
+    private static final String OMNI_BUS = "OmniBus";
+
     @Test
     public void testDroolsPolicyEngine() {
         PolicyEngineJUnitImpl pe = new PolicyEngineJUnitImpl();
         assertNotNull(pe);
 
         pe.addListener(new TestPolicyEngineListener());
-        pe.notifyListeners("TheWizardOfOz");
+        pe.notifyListeners(TOPIC);
 
-        pe.subscribe("OmniBus", "TheWizardOfOz");
+        pe.subscribe(OMNI_BUS, TOPIC);
 
-        pe.deliver("OmniBus", "TheWizardOfOz", "Dorothy");
+        pe.deliver(OMNI_BUS, TOPIC, "Dorothy");
 
-        pe.subscribe("OmniBus", "TheWizardOfOz");
-        pe.subscribe("OmniBus", "ThisTopicDoesNotExist");
+        pe.subscribe(OMNI_BUS, TOPIC);
+        pe.subscribe(OMNI_BUS, "ThisTopicDoesNotExist");
 
         ControlLoopNotification notification = new VirtualControlLoopNotification();
-        pe.deliver("OmniBus", "TheWizardOfOz", notification);
+        pe.deliver(OMNI_BUS, TOPIC, notification);
 
         Request request = new Request();
         request.setCommonHeader(new CommonHeader());
         request.getCommonHeader().setSubRequestId("12321");
-        pe.deliver("OmniBus", "TheWizardOfOz", request);
+        pe.deliver(OMNI_BUS, TOPIC, request);
 
         LcmRequestWrapper lcmRw = new LcmRequestWrapper();
         lcmRw.setBody(new LcmRequest());
         lcmRw.getBody().setCommonHeader(new LcmCommonHeader());
         lcmRw.getBody().getCommonHeader().setSubRequestId("54321");
-        pe.deliver("OmniBus", "TheWizardOfOz", lcmRw);
+        pe.deliver(OMNI_BUS, TOPIC, lcmRw);
     }
 
     private class TestPolicyEngineListener implements PolicyEngineListener {
         @Override
         public void newEventNotification(String topic) {
-            assertEquals("TheWizardOfOz", topic);
+            assertEquals(TOPIC, topic);
         }
     }
 }
index e1aa93f..07dafec 100644 (file)
   limitations under the License.\r
   ============LICENSE_END=========================================================\r
   -->\r
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">\r
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">\r
 \r
     <!-- In-mem DB for junit -->\r
-    <persistence-unit name="OperationsHistoryPUTest"\r
-        transaction-type="RESOURCE_LOCAL">\r
+    <persistence-unit name="OperationsHistoryPUTest" transaction-type="RESOURCE_LOCAL">\r
         <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>\r
 \r
-       <class>org.onap.policy.database.operationshistory.Dbao</class>\r
+        <class>org.onap.policy.database.operationshistory.Dbao</class>\r
 \r
         <properties>\r
             <property name="eclipselink.ddl-generation" value="create-tables" />\r
             <property name="eclipselink.logging.level" value="FINE" />\r
-           <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>\r
+            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />\r
             <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />\r
             <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:testdb;DATABASE_TO_UPPER=FALSE" />\r
             <property name="javax.persistence.jdbc.user" value="policy" />\r
             <property name="javax.persistence.jdbc.password" value="P01icY" />\r
-            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>\r
-            <property name="javax.persistence.schema-generation.create-source" value="metadata"/>\r
+            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create" />\r
+            <property name="javax.persistence.schema-generation.create-source" value="metadata" />\r
         </properties>\r
     </persistence-unit>\r
 \r
index acbbc73..b3a3e37 100644 (file)
             <version>3.0.0</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+          <groupId>org.powermock</groupId>
+          <artifactId>powermock-api-mockito</artifactId>
+          <scope>test</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.assertj</groupId>
+          <artifactId>assertj-core</artifactId>
+          <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
index 800971a..d78545a 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -33,6 +33,12 @@ public class ControlLoopManagementFeature implements PolicyEngineFeatureAPI {
     private static final String FEATURE_NAME = "controlloop-management";
     private static final int SEQNO = 1000;
 
+    /**
+     * Factory for various objects.  May be overridden by junit tests.
+     */
+    private static Factory factory = new Factory();
+
+
     /**
      * retrieves control loops.
      *
@@ -41,7 +47,7 @@ public class ControlLoopManagementFeature implements PolicyEngineFeatureAPI {
      * @return control loops.
      */
     public static Stream<ControlLoopParams> controlLoops(String controllerName, String sessionName) {
-        PolicyController controller = PolicyController.factory.get(controllerName);
+        PolicyController controller = factory.getController(controllerName);
         if (controller == null) {
             throw new IllegalArgumentException("Invalid Controller Name");
         }
@@ -89,4 +95,12 @@ public class ControlLoopManagementFeature implements PolicyEngineFeatureAPI {
         return FEATURE_NAME;
     }
 
+    /**
+     * Factory that can be overridden by junit tests.
+     */
+    public static class Factory {
+        public PolicyController getController(String controllerName) {
+            return PolicyController.factory.get(controllerName);
+        }
+    }
 }
index ac9bff9..e503401 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.drools.apps.controlloop.feature.management;
 
+import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import org.junit.After;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
+import org.onap.policy.drools.apps.controlloop.feature.management.ControlLoopManagementFeature.Factory;
+import org.onap.policy.drools.controller.DroolsController;
+import org.onap.policy.drools.system.PolicyController;
+import org.powermock.reflect.Whitebox;
 
 /**
  * Control Loop Management Feature Test.
  */
 public class ControlLoopManagementFeatureTest {
+    private static final String FACTORY_FIELD = "factory";
+    private static final String SESSION_NAME = "my-session";
+    private static final String CONTROLLER_NAME = "my-controller";
+
+    private static Factory saveFactory;
+
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        saveFactory = Whitebox.getInternalState(ControlLoopManagementFeature.class, FACTORY_FIELD);
+    }
+
+    @After
+    public void tearDown() {
+        Whitebox.setInternalState(ControlLoopManagementFeature.class, FACTORY_FIELD, saveFactory);
+    }
 
     /**
      * Sequence Number Test.
@@ -43,4 +70,33 @@ public class ControlLoopManagementFeatureTest {
     public void getName() {
         Assert.assertEquals("controlloop-management", new ControlLoopManagementFeature().getName());
     }
-}
\ No newline at end of file
+
+    @Test
+    public void testControlLoops_InvalidArgs() {
+        Factory factory = mock(Factory.class);
+        Whitebox.setInternalState(ControlLoopManagementFeature.class, FACTORY_FIELD, factory);
+
+        // returns null controller
+        when(factory.getController(any())).thenReturn(null);
+        assertThatIllegalArgumentException()
+            .isThrownBy(() -> ControlLoopManagementFeature.controlLoops(CONTROLLER_NAME, SESSION_NAME))
+            .withMessage("Invalid Controller Name");
+
+        // non-matching session name
+        PolicyController ctlr = mock(PolicyController.class);
+        DroolsController drools = mock(DroolsController.class);
+        when(drools.getSessionNames()).thenReturn(Collections.emptyList());
+        when(ctlr.getDrools()).thenReturn(drools);
+        when(factory.getController(any())).thenReturn(ctlr);
+        assertThatIllegalArgumentException()
+            .isThrownBy(() -> ControlLoopManagementFeature.controlLoops(CONTROLLER_NAME, SESSION_NAME))
+            .withMessage("Invalid Session Name");
+    }
+
+    @Test
+    public void testFactoryGetController() {
+        // invoking controlLoops() will invoke the factory.getController() method
+        assertThatIllegalArgumentException().isThrownBy(
+            () -> ControlLoopManagementFeature.controlLoops("unknown-controller", SESSION_NAME));
+    }
+}
index 3ed1adf..3d89e5a 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -126,7 +126,6 @@ public class RestControlLoopManagerTest {
             Files.deleteIfExists(controllerPath);
         } catch (Exception ignored) {
             /* to satisfy checkstyle */
-            ;
         }
 
         Path controllerBakPath =
@@ -136,7 +135,6 @@ public class RestControlLoopManagerTest {
             Files.deleteIfExists(controllerBakPath);
         } catch (Exception ignored) {
             /* to satisfy checkstyle */
-            ;
         }
     }
 
index c5d6a32..672ff3f 100644 (file)
@@ -24,7 +24,6 @@ import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.cache.RemovalListener;
-import com.google.common.cache.RemovalNotification;
 
 import java.time.Instant;
 import java.time.ZonedDateTime;
@@ -47,6 +46,8 @@ import org.slf4j.LoggerFactory;
  */
 class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
 
+    private static final String UNEXPECTED_NOTIFICATION_TYPE = "unexpected notification type {} in notification {}";
+
     private static final Logger logger = LoggerFactory.getLogger(CacheBasedControlLoopMetricsManager.class);
 
     private LoadingCache<UUID, VirtualControlLoopNotification> cache;
@@ -98,16 +99,12 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
             }
         };
 
-        RemovalListener<UUID, VirtualControlLoopNotification> listener =
-                new RemovalListener<UUID, VirtualControlLoopNotification>() {
-            @Override
-            public void onRemoval(RemovalNotification<UUID, VirtualControlLoopNotification> notification) {
-                if (notification.wasEvicted()) {
-                    evicted(notification.getValue());
-                } else {
-                    logger.info("REMOVAL: {} because of {}", notification.getValue().getRequestId(),
-                                    notification.getCause().name());
-                }
+        RemovalListener<UUID, VirtualControlLoopNotification> listener = notification -> {
+            if (notification.wasEvicted()) {
+                evicted(notification.getValue());
+            } else {
+                logger.info("REMOVAL: {} because of {}", notification.getValue().getRequestId(),
+                                notification.getCause().name());
             }
         };
 
@@ -139,16 +136,11 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
 
     @Override
     public void transactionEvent(PolicyController controller, VirtualControlLoopNotification notification) {
-        if (notification == null || notification.getRequestId() == null || notification.getNotification() == null) {
-            logger.warn("Invalid notification: {}", notification);
+        if (!isNotificationValid(notification)) {
             return;
         }
 
-        if (notification.getNotificationTime() == null) {
-            notification.setNotificationTime(ZonedDateTime.now());
-        }
-
-        notification.setFrom(notification.getFrom() + ":" + controller.getName());
+        setNotificationValues(controller, notification);
 
         switch (notification.getNotification()) {
             case REJECTED:
@@ -166,12 +158,29 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                 break;
             default:
                 /* unexpected */
-                logger.warn("unexpected notification type {} in notification {}",
-                        notification.getNotification().toString(), notification);
+                logger.warn(UNEXPECTED_NOTIFICATION_TYPE,
+                        notification.getNotification(), notification);
                 break;
         }
     }
 
+    private boolean isNotificationValid(VirtualControlLoopNotification notification) {
+        if (notification == null || notification.getRequestId() == null || notification.getNotification() == null) {
+            logger.warn("Invalid notification: {}", notification);
+            return false;
+        }
+
+        return true;
+    }
+
+    private void setNotificationValues(PolicyController controller, VirtualControlLoopNotification notification) {
+        if (notification.getNotificationTime() == null) {
+            notification.setNotificationTime(ZonedDateTime.now());
+        }
+
+        notification.setFrom(notification.getFrom() + ":" + controller.getName());
+    }
+
     @Override
     public VirtualControlLoopNotification getTransaction(UUID requestId) {
         return cache.getIfPresent(requestId);
@@ -260,13 +269,7 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                 trans.metric().resetTransaction();
                 break;
             case OPERATION:
-                trans.setStatusCode(true);
-                if (!operations.isEmpty()) {
-                    ControlLoopOperation operation = operations.get(operations.size() - 1);
-                    trans.setTargetEntity(operation.getTarget());
-                    trans.setTargetServiceName(operation.getActor());
-                }
-                trans.metric().resetTransaction();
+                metricOperation(trans, operations);
                 break;
             case OPERATION_SUCCESS:
                 trans.setStatusCode(true);
@@ -280,12 +283,22 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                 break;
             default:
                 /* unexpected */
-                logger.warn("unexpected notification type {} in notification {}",
-                        notification.getNotification().toString(), notification);
+                logger.warn(UNEXPECTED_NOTIFICATION_TYPE,
+                        notification.getNotification(), notification);
                 break;
         }
     }
 
+    private void metricOperation(MDCTransaction trans, List<ControlLoopOperation> operations) {
+        trans.setStatusCode(true);
+        if (!operations.isEmpty()) {
+            ControlLoopOperation operation = operations.get(operations.size() - 1);
+            trans.setTargetEntity(operation.getTarget());
+            trans.setTargetServiceName(operation.getActor());
+        }
+        trans.metric().resetTransaction();
+    }
+
     protected void operation(MDCTransaction trans, List<ControlLoopOperation> operations) {
         if (!operations.isEmpty()) {
             ControlLoopOperation operation = operations.get(operations.size() - 1);
@@ -340,7 +353,7 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                 break;
             default:
                 /* unexpected */
-                logger.warn("unexpected notification type {} in notification {}",
+                logger.warn(UNEXPECTED_NOTIFICATION_TYPE,
                         notification.getNotification(), notification);
                 break;
         }
index 1f1e9de..6618033 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 
 package org.onap.policy.drools.apps.controlloop.feature.trans;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -27,7 +28,6 @@ import static org.junit.Assert.assertTrue;
 
 import java.nio.file.Path;
 import java.util.UUID;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -43,6 +43,7 @@ import org.onap.policy.drools.system.PolicyEngine;
  */
 public class ControlLoopMetricsFeatureTest {
 
+    private static final String POLICY_CL_MGT = "POLICY-CL-MGT";
     private static final Path configPath = SystemPersistence.manager.getConfigurationPath();
     private static PolicyController testController;
 
@@ -63,46 +64,42 @@ public class ControlLoopMetricsFeatureTest {
 
     @Test
     public void cacheDefaults() {
-        assertTrue(ControlLoopMetrics.manager.getCacheSize() == 3);
-        assertTrue(ControlLoopMetrics.manager.getTransactionTimeout() == 10);
-        assertTrue(ControlLoopMetrics.manager.getCacheOccupancy() == 0);
+        assertEquals(3, ControlLoopMetrics.manager.getCacheSize());
+        assertEquals(10, ControlLoopMetrics.manager.getTransactionTimeout());
+        assertEquals(0, ControlLoopMetrics.manager.getCacheOccupancy());
     }
 
     @Test
     public void invalidNotifications() {
         ControlLoopMetricsFeature feature = new ControlLoopMetricsFeature();
         VirtualControlLoopNotification notification = new VirtualControlLoopNotification();
-        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT", notification);
+        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT, notification);
         this.cacheDefaults();
 
         UUID requestId = UUID.randomUUID();
         notification.setRequestId(requestId);
 
-        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT", notification);
+        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT, notification);
         assertNull(ControlLoopMetrics.manager.getTransaction(requestId));
         this.cacheDefaults();
     }
 
     @Test
-    public void validActiveNotification() {
+    public void validActiveNotification() throws InterruptedException {
         ControlLoopMetricsFeature feature = new ControlLoopMetricsFeature();
         VirtualControlLoopNotification notification = new VirtualControlLoopNotification();
         UUID requestId = UUID.randomUUID();
         notification.setRequestId(requestId);
         notification.setNotification(ControlLoopNotificationType.ACTIVE);
 
-        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT", notification);
+        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT, notification);
         assertNotNull(ControlLoopMetrics.manager.getTransaction(requestId));
         assertTrue(ControlLoopMetrics.manager.getTransaction(requestId).getFrom().contains(testController.getName()));
         assertNotNull(ControlLoopMetrics.manager.getTransaction(requestId).getNotificationTime());
         assertTrue(ControlLoopMetrics.manager.getCacheOccupancy() == 1);
 
         /* let the entries expire */
-        try {
-            Thread.sleep((ControlLoopMetrics.manager.getTransactionTimeout() + 5) * 1000L);
-        } catch (InterruptedException e) {
-            /* nothing to do */
-        }
+        Thread.sleep((ControlLoopMetrics.manager.getTransactionTimeout() + 1) * 1000L);
 
         assertNull(ControlLoopMetrics.manager.getTransaction(requestId));
         this.cacheDefaults();
@@ -111,7 +108,7 @@ public class ControlLoopMetricsFeatureTest {
     @Test
     public void reset() {
         VirtualControlLoopNotification notification = this.generateNotification();
-        new ControlLoopMetricsFeature().beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT",
+        new ControlLoopMetricsFeature().beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT,
                 notification);
 
         assertNotNull(ControlLoopMetrics.manager.getTransaction(notification.getRequestId()));
@@ -135,19 +132,19 @@ public class ControlLoopMetricsFeatureTest {
     }
 
     @Test
-    public void eviction() {
+    public void eviction() throws InterruptedException {
         ControlLoopMetricsFeature feature = new ControlLoopMetricsFeature();
         for (int i = 0; i < ControlLoopMetrics.manager.getCacheSize(); i++) {
             VirtualControlLoopNotification notification = generateNotification();
-            feature.beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT", notification);
+            feature.beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT, notification);
             assertNotNull(ControlLoopMetrics.manager.getTransaction(notification.getRequestId()));
         }
 
-        assertTrue(ControlLoopMetrics.manager.getCacheOccupancy() == ControlLoopMetrics.manager.getCacheOccupancy());
+        assertEquals(ControlLoopMetrics.manager.getCacheOccupancy(), ControlLoopMetrics.manager.getCacheOccupancy());
 
         VirtualControlLoopNotification overflowNotification = generateNotification();
-        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, "POLICY-CL-MGT", overflowNotification);
-        assertTrue(ControlLoopMetrics.manager.getCacheOccupancy() == ControlLoopMetrics.manager.getCacheOccupancy());
+        feature.beforeDeliver(testController, CommInfrastructure.DMAAP, POLICY_CL_MGT, overflowNotification);
+        assertEquals(ControlLoopMetrics.manager.getCacheOccupancy(), ControlLoopMetrics.manager.getCacheOccupancy());
         assertNotNull(ControlLoopMetrics.manager.getTransaction(overflowNotification.getRequestId()));
         assertTrue(ControlLoopMetrics.manager.getTransactionIds().size() == ControlLoopMetrics.manager.getCacheSize());
         assertTrue(ControlLoopMetrics.manager.getCacheOccupancy() == ControlLoopMetrics.manager.getCacheSize());
@@ -155,11 +152,7 @@ public class ControlLoopMetricsFeatureTest {
         assertFalse(ControlLoopMetrics.manager.getTransactions().isEmpty());
 
         /* let the entries expire */
-        try {
-            Thread.sleep((ControlLoopMetrics.manager.getTransactionTimeout() + 5) * 1000L);
-        } catch (InterruptedException e) {
-            /* nothing to do */
-        }
+        Thread.sleep((ControlLoopMetrics.manager.getTransactionTimeout() + 1) * 1000L);
 
         ControlLoopMetrics.manager.refresh();
         assertTrue(ControlLoopMetrics.manager.getTransactionIds().size() == ControlLoopMetrics.manager
index c1ad34a..8ddb5ff 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.policy.guard.impl;
 
-import java.io.Serializable;
 import java.util.UUID;
-
 import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.guard.LockCallback;
-import org.onap.policy.guard.TargetLock;
 
-public class PnfTargetLock implements TargetLock, Serializable {
+public class PnfTargetLock extends TargetLockImpl {
 
     private static final long serialVersionUID = 2335897394577202732L;
 
-    private final UUID lockId;
-    private final TargetType targetType;
-    private final String target;
-    private final UUID requestId;
-    private final transient LockCallback callback;
-
     /**
      * Construct an instance.
-     * 
+     *
      * @param type the target type
      * @param target the target
      * @param requestId the request Id
      * @param callback the callback
      */
     public PnfTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
-        this.lockId = UUID.randomUUID();
-        this.targetType = type;
-        this.target = target;
-        this.requestId = requestId;
-        this.callback = callback;
-    }
-
-    @Override
-    public UUID getLockId() {
-        return this.lockId;
-    }
-
-
-    @Override
-    public TargetType getTargetType() {
-        return targetType;
-    }
-
-    @Override
-    public String getTargetInstance() {
-        return target;
-    }
-
-    @Override
-    public UUID getRequestId() {
-        return this.requestId;
-    }
-
-    public LockCallback getCallback() {
-        return this.callback;
+        super(type, target, requestId, callback);
     }
 
     @Override
     public String toString() {
-        return "PnfTargetLock [lockId=" + lockId + ", targetType=" + targetType + ", target=" + target + ", requestId="
-                + requestId + "]";
+        return "PnfTargetLock [" + super.toString() + "]";
     }
-
-
-
 }
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java
new file mode 100644 (file)
index 0000000..d406999
--- /dev/null
@@ -0,0 +1,86 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * guard
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.guard.impl;
+
+import java.io.Serializable;
+import java.util.UUID;
+
+import org.onap.policy.controlloop.policy.TargetType;
+import org.onap.policy.guard.LockCallback;
+import org.onap.policy.guard.TargetLock;
+
+public class TargetLockImpl implements TargetLock, Serializable {
+
+    private static final long serialVersionUID = 2335897394577202732L;
+
+    private final UUID lockId;
+    private final TargetType targetType;
+    private final String target;
+    private final UUID requestId;
+    private final transient LockCallback callback;
+
+    /**
+     * Construct an instance.
+     *
+     * @param type the target type
+     * @param target the target
+     * @param requestId the request Id
+     * @param callback the callback
+     */
+    public TargetLockImpl(TargetType type, String target, UUID requestId, LockCallback callback) {
+        this.lockId = UUID.randomUUID();
+        this.targetType = type;
+        this.target = target;
+        this.requestId = requestId;
+        this.callback = callback;
+    }
+
+    @Override
+    public UUID getLockId() {
+        return this.lockId;
+    }
+
+
+    @Override
+    public TargetType getTargetType() {
+        return targetType;
+    }
+
+    @Override
+    public String getTargetInstance() {
+        return target;
+    }
+
+    @Override
+    public UUID getRequestId() {
+        return this.requestId;
+    }
+
+    public LockCallback getCallback() {
+        return this.callback;
+    }
+
+    @Override
+    public String toString() {
+        return "lockId=" + lockId + ", targetType=" + targetType + ", target=" + target + ", requestId="
+                + requestId;
+    }
+}
index 301c6ec..2e612a0 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.policy.guard.impl;
 
-import java.io.Serializable;
 import java.util.UUID;
-
 import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.guard.LockCallback;
-import org.onap.policy.guard.TargetLock;
 
-public class VmTargetLock implements TargetLock, Serializable {
+public class VmTargetLock extends TargetLockImpl {
 
-    private static final long serialVersionUID = -8795145054334409724L;
-    private final UUID lockId;
-    private final TargetType targetType;
-    private final String target;
-    private final UUID requestId;
-    private final transient LockCallback callback;
+    private static final long serialVersionUID = 2335897394577202732L;
 
     /**
-     * Create an instance.
-     * 
-     * @param targetType the target type
+     * Construct an instance.
+     *
+     * @param type the target type
      * @param target the target
      * @param requestId the request Id
      * @param callback the callback
      */
-    public VmTargetLock(TargetType targetType, String target, UUID requestId, LockCallback callback) {
-        this.lockId = UUID.randomUUID();
-        this.targetType = targetType;
-        this.target = target;
-        this.requestId = requestId;
-        this.callback = callback;
-    }
-
-    @Override
-    public UUID getLockId() {
-        return this.lockId;
-    }
-
-    @Override
-    public TargetType getTargetType() {
-        return targetType;
-    }
-
-    @Override
-    public String getTargetInstance() {
-        return target;
-    }
-
-    @Override
-    public UUID getRequestId() {
-        return this.requestId;
-    }
-
-    public LockCallback getCallback() {
-        return this.callback;
+    public VmTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
+        super(type, target, requestId, callback);
     }
 
     @Override
     public String toString() {
-        return "VmTargetLock [lockId=" + lockId + ", targetType=" + targetType + ", target=" + target + ", requestId="
-                + requestId + "]";
+        return "VmTargetLock [" + super.toString() + "]";
     }
-
 }
index 2e3fc28..2912c7a 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.policy.guard.impl;
 
-import java.io.Serializable;
 import java.util.UUID;
-
 import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.guard.LockCallback;
-import org.onap.policy.guard.TargetLock;
 
-public class VnfTargetLock implements TargetLock, Serializable {
+public class VnfTargetLock extends TargetLockImpl {
 
     private static final long serialVersionUID = 2335897394577202732L;
 
-    private final UUID lockId;
-    private final TargetType targetType;
-    private final String target;
-    private final UUID requestId;
-    private final transient LockCallback callback;
-
     /**
-     * Create an instance.
-     * 
-     * @param type the type
+     * Construct an instance.
+     *
+     * @param type the target type
      * @param target the target
      * @param requestId the request Id
      * @param callback the callback
      */
     public VnfTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
-        this.lockId = UUID.randomUUID();
-        this.targetType = type;
-        this.target = target;
-        this.requestId = requestId;
-        this.callback = callback;
-    }
-
-    @Override
-    public UUID getLockId() {
-        return this.lockId;
-    }
-
-
-    @Override
-    public TargetType getTargetType() {
-        return targetType;
-    }
-
-    @Override
-    public String getTargetInstance() {
-        return target;
-    }
-
-    @Override
-    public UUID getRequestId() {
-        return this.requestId;
-    }
-
-    public LockCallback getCallback() {
-        return this.callback;
+        super(type, target, requestId, callback);
     }
 
     @Override
     public String toString() {
-        return "VnfTargetLock [lockId=" + lockId + ", targetType=" + targetType + ", target=" + target + ", requestId="
-                + requestId + "]";
+        return "VnfTargetLock [" + super.toString() + "]";
     }
-
-
-
 }
index 0738ad1..e172076 100644 (file)
@@ -38,6 +38,7 @@ public class GuardUtilTest {
     @Test
     public void testLoadYamlOk() throws IOException {
         File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        tempYamlFile.deleteOnExit();
 
         ControlLoopPolicy clPolicy = new ControlLoopPolicy();
 
@@ -50,23 +51,21 @@ public class GuardUtilTest {
 
         assertEquals(clPolicy, result.parameterA);
         assertEquals(clYamlString, result.parameterB);
-
-        tempYamlFile.delete();
     }
 
     @Test
     public void testLoadYamlError() throws IOException {
         File tempDir = Files.createTempDir();
+        tempDir.deleteOnExit();
 
         // Read from a directory forces an IO exception
         assertNull(Util.loadYaml(tempDir.getCanonicalPath()));
-
-        tempDir.delete();
     }
 
     @Test
     public void testLoadGuardYamlOk() throws IOException {
         File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        tempYamlFile.deleteOnExit();
 
         ControlLoopGuard clGuardPolicy = new ControlLoopGuard();
 
@@ -78,18 +77,15 @@ public class GuardUtilTest {
         ControlLoopGuard result = Util.loadYamlGuard(tempYamlFile.getCanonicalPath());
 
         assertEquals(clGuardPolicy, result);
-
-        tempYamlFile.delete();
     }
 
     @Test
     public void testLoadGuardYamlError() throws IOException {
         File tempDir = Files.createTempDir();
+        tempDir.deleteOnExit();
 
         // Read from a directory forces an IO exception
         assertNull(Util.loadYamlGuard(tempDir.getCanonicalPath()));
-
-        tempDir.delete();
     }
 
     @Test
index 3b0441f..2be0e06 100644 (file)
@@ -31,25 +31,29 @@ import org.junit.Test;
 
 public class PolicyGuardRequestTest {
 
+    private static final String KANSAS = "Kansas";
+    private static final String GET_BACK_HOME = "GetBackHome";
+    private static final String DOROTHY = "Dorothy";
+
     @Test
     public void policyGuardRequestTest() {
         UUID requestId = UUID.randomUUID();
 
         assertNotNull(new PolicyGuardRequest(null, null, null, null));
 
-        PolicyGuardRequest request = new PolicyGuardRequest("Dorothy", "Kansas", requestId, "GetBackHome");
+        PolicyGuardRequest request = new PolicyGuardRequest(DOROTHY, KANSAS, requestId, GET_BACK_HOME);
 
         request.setRequestId(requestId);
         assertEquals(requestId, request.getRequestId());
 
-        request.setActor("Dorothy");
-        assertEquals("Dorothy", request.getActor());
+        request.setActor(DOROTHY);
+        assertEquals(DOROTHY, request.getActor());
 
-        request.setTarget("Kansas");
-        assertEquals("Kansas", request.getTarget());
+        request.setTarget(KANSAS);
+        assertEquals(KANSAS, request.getTarget());
 
-        request.setOperation("GetBackHome");
-        assertEquals("GetBackHome", request.getOperation());
+        request.setOperation(GET_BACK_HOME);
+        assertEquals(GET_BACK_HOME, request.getOperation());
 
         assertEquals("PolicyGuardRequest [actor=Dorothy", request.toString().substring(0, 33));
     }
index b30ae02..14e7a3a 100644 (file)
@@ -31,22 +31,25 @@ import org.junit.Test;
 
 public class PolicyGuardResponseTest {
 
+    private static final String GET_BACK_HOME = "GetBackHome";
+    private static final String BACK_HOME = "BackHome";
+
     @Test
     public void policyGuardResponseTest() {
         UUID requestId = UUID.randomUUID();
 
         assertNotNull(new PolicyGuardResponse(null, null, null));
 
-        PolicyGuardResponse response = new PolicyGuardResponse("BackHome", requestId, "GetBackHome");
+        PolicyGuardResponse response = new PolicyGuardResponse(BACK_HOME, requestId, GET_BACK_HOME);
 
         response.setRequestId(requestId);
         assertEquals(requestId, response.getRequestId());
 
-        response.setResult("BackHome");
-        assertEquals("BackHome", response.getResult());
+        response.setResult(BACK_HOME);
+        assertEquals(BACK_HOME, response.getResult());
 
-        response.setOperation("GetBackHome");
-        assertEquals("GetBackHome", response.getOperation());
+        response.setOperation(GET_BACK_HOME);
+        assertEquals(GET_BACK_HOME, response.getOperation());
 
         assertEquals("PolicyGuardResponse [requestId=", response.toString().substring(0, 31));
     }
index 8730362..5f77d03 100644 (file)
@@ -46,9 +46,9 @@ import org.onap.policy.guard.impl.VnfTargetLock;
 public class PolicyGuardTest {
     private static final String INSTANCENAME = "targetInstance";
     private static final int LOCK_SEC = 10;
-    
+
     private static Factory saveFactory;
-    
+
     private Factory factory;
     private PolicyResourceLockManager mgr;
     private UUID uuid;
@@ -69,12 +69,12 @@ public class PolicyGuardTest {
     private class DummyTargetLock implements TargetLock {
         private TargetType type;
         private UUID reqid;
-        
+
         public DummyTargetLock(TargetType type, UUID reqid) {
             this.type = type;
             this.reqid = reqid;
         }
-        
+
         @Override
         public UUID getLockId() {
             return null;
@@ -95,17 +95,17 @@ public class PolicyGuardTest {
             return reqid;
         }
     }
-    
+
     @BeforeClass
     public static void setUpBeforeClass() {
         saveFactory = PolicyGuard.getFactory();
     }
-    
+
     @AfterClass
     public static void tearDownAfterClass() {
         PolicyGuard.setFactory(saveFactory);
     }
-    
+
     /**
      * Setup method.
      */
@@ -117,10 +117,10 @@ public class PolicyGuardTest {
              * manager is protected; this gets around that
              */
         });
-        
+
         factory = mock(Factory.class);
         when(factory.getManager()).thenReturn(mgr);
-        
+
         uuid = UUID.randomUUID();
         dlcb = new DummyLockCallback();
 
@@ -279,7 +279,7 @@ public class PolicyGuardTest {
     }
 
     @Test
-    public void testLockTargetTargetTypeStringUuidLockCallbackInt() throws Exception {
+    public void testLockTargetTargetTypeStringUuidLockCallbackInt() {
         TargetType type = TargetType.VM;
 
         LockResult<GuardResult, TargetLock> result;
@@ -299,7 +299,7 @@ public class PolicyGuardTest {
     }
 
     @Test
-    public void testLockTargetTargetLockInt() throws Exception {
+    public void testLockTargetTargetLockInt() {
         TargetType type = TargetType.VM;
 
         LockResult<GuardResult, TargetLock> result;
@@ -309,16 +309,16 @@ public class PolicyGuardTest {
         verify(mgr).lock(INSTANCENAME, type + ":" + uuid, LOCK_SEC);
         assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
         assertEquals(VmTargetLock.class, result.getB().getClass());
-        
+
         TargetLock lock = result.getB();
-        
+
         // refresh - re-acquired
         assertEquals(GuardResult.LOCK_ACQUIRED, PolicyGuard.lockTarget(lock, LOCK_SEC + 1));
         verify(mgr).refresh(INSTANCENAME, type + ":" + uuid, LOCK_SEC + 1);
-        
+
         // unlock
         PolicyGuard.unlockTarget(lock);
-        
+
         // refresh - denied, as we no longer own the lock
         assertEquals(GuardResult.LOCK_DENIED, PolicyGuard.lockTarget(lock, LOCK_SEC + 2));
     }
index 2418ac6..19fed30 100644 (file)
@@ -22,10 +22,8 @@ package org.onap.policy.guard;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 
 import java.util.Properties;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -35,21 +33,24 @@ import org.onap.policy.drools.utils.logging.LoggerUtil;
 
 public class PolicyGuardXacmlHelperTest {
 
+    private static final String TARGET = "target";
+    private static final String REQUEST_ID = "requestId";
+    private static final String RECIPE = "recipe";
+    private static final String GUARD_URL = "guard.url";
+    private static final String ACTOR = "actor";
     private static final Integer VF_COUNT = 100;
 
     /**
      * Set up test class.
      */
     @BeforeClass
-    public static void setupSimulator() {
+    public static void setupSimulator() throws Exception {
         LoggerUtil.setLevel("ROOT", "INFO");
         LoggerUtil.setLevel("org.eclipse.jetty", "WARN");
-        try {
-            HttpServletServer.factory.destroy();
-            org.onap.policy.simulators.Util.buildGuardSim();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
+
+        HttpServletServer.factory.destroy();
+        org.onap.policy.simulators.Util.buildGuardSim();
+
         //
         // Set guard properties
         //
@@ -65,8 +66,8 @@ public class PolicyGuardXacmlHelperTest {
 
         // Null/ Bad Connection Case
         PolicyGuardXacmlRequestAttributes xacmlReq = new PolicyGuardXacmlRequestAttributes(
-                        org.onap.policy.simulators.GuardSimulatorJaxRs.DENY_CLNAME, "actor", "recipe", "target",
-                        "requestId", VF_COUNT);
+                        org.onap.policy.simulators.GuardSimulatorJaxRs.DENY_CLNAME, ACTOR, RECIPE, TARGET,
+                        REQUEST_ID, VF_COUNT);
         String rawDecision = new PolicyGuardXacmlHelper().callPdp(xacmlReq);
         assertNotNull(rawDecision);
         assertEquals(Util.DENY, rawDecision);
@@ -88,14 +89,14 @@ public class PolicyGuardXacmlHelperTest {
     public void testCallPdp() {
         // Deny Case
         PolicyGuardXacmlRequestAttributes xacmlReq = new PolicyGuardXacmlRequestAttributes(
-                        org.onap.policy.simulators.GuardSimulatorJaxRs.DENY_CLNAME, "actor", "recipe", "target",
-                        "requestId", VF_COUNT);
+                        org.onap.policy.simulators.GuardSimulatorJaxRs.DENY_CLNAME, ACTOR, RECIPE, TARGET,
+                        REQUEST_ID, VF_COUNT);
         String rawDecision = new PolicyGuardXacmlHelper().callPdp(xacmlReq);
         assertNotNull(rawDecision);
         assertEquals(Util.DENY, rawDecision);
 
         // Permit Case
-        xacmlReq = new PolicyGuardXacmlRequestAttributes("clname", "actor", "recipe", "target", "requestId", VF_COUNT);
+        xacmlReq = new PolicyGuardXacmlRequestAttributes("clname", ACTOR, RECIPE, TARGET, REQUEST_ID, VF_COUNT);
         rawDecision = new PolicyGuardXacmlHelper().callPdp(xacmlReq);
         assertNotNull(rawDecision);
         assertEquals(Util.PERMIT, rawDecision);
@@ -109,15 +110,15 @@ public class PolicyGuardXacmlHelperTest {
 
         assertNotNull(new PolicyGuardXacmlHelper());
 
-        PolicyEngine.manager.getEnvironment().setProperty("guard.url",
+        PolicyEngine.manager.getEnvironment().setProperty(GUARD_URL,
                 "http://localhost:6669/pdp/api/getDecision,Dorothy");
         assertNotNull(new PolicyGuardXacmlHelper());
 
-        PolicyEngine.manager.getEnvironment().setProperty("guard.url",
+        PolicyEngine.manager.getEnvironment().setProperty(GUARD_URL,
                 "http://localhost:6669/pdp/api/getDecision,Dorothy,Toto");
         assertNotNull(new PolicyGuardXacmlHelper());
 
-        PolicyEngine.manager.getEnvironment().setProperty("guard.url",
+        PolicyEngine.manager.getEnvironment().setProperty(GUARD_URL,
                 "http://localhost:6969/policy/pdpx/v1/decision");
 
         PolicyEngine.manager.getEnvironment().setProperty("pdpx.timeout", "thisIsNotANumber");
@@ -132,7 +133,7 @@ public class PolicyGuardXacmlHelperTest {
         PolicyEngine.manager.getEnvironment().setProperty("pdpx.username", "python");
         assertNotNull(new PolicyGuardXacmlHelper());
 
-        PolicyEngine.manager.getEnvironment().setProperty("guard.url", "///");
+        PolicyEngine.manager.getEnvironment().setProperty(GUARD_URL, "///");
         assertNotNull(new PolicyGuardXacmlHelper());
 
         PolicyEngine.manager.getEnvironment().setProperty("guard.disabled", "");
index a35696d..75dc73c 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * guard
  * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -41,6 +41,16 @@ import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
 
 public class PolicyGuardYamlToXacmlTest {
+    private static final String SOME_START_TIME = "someStartTime";
+    private static final String SOME_END_TIME = "someEndTime";
+    private static final String HOURS = "hours";
+    private static final String TARGET2 = "WickedWitchOfTheWest";
+    private static final String TARGET1 = "Wizard";
+    private static final String ONAPPF_FILE = "ONAPPF";
+    private static final String RECIPE = "GoToOz";
+    private static final String TEXT1 = "WestWitches";
+    private static final String TEXT2 = "EastWitches";
+    private static final String OUT_XACML = ".out.xacml";
     private ControlLoopGuard clGuard;
 
     /**
@@ -52,10 +62,10 @@ public class PolicyGuardYamlToXacmlTest {
         MatchParameters matchParameters = new MatchParameters();
         matchParameters.setControlLoopName("WizardOfOz");
         matchParameters.setActor("Dorothy");
-        matchParameters.setRecipe("GoToOz");
+        matchParameters.setRecipe(RECIPE);
         List<String> targets = new ArrayList<>();
-        targets.add("Wizard");
-        targets.add("WickedWitchOfTheWest");
+        targets.add(TARGET1);
+        targets.add(TARGET2);
         matchParameters.setTargets(targets);
         GuardPolicy guardPolicy = new GuardPolicy();
         guardPolicy.setMatch_parameters(matchParameters);
@@ -63,11 +73,11 @@ public class PolicyGuardYamlToXacmlTest {
         limitConstraint.setFreq_limit_per_target(5);
         Map<String, String> timeWindow = new HashMap<>();
         timeWindow.put("value", "10");
-        timeWindow.put("units", "hours");
+        timeWindow.put("units", HOURS);
         limitConstraint.setTime_window(timeWindow);
         Map<String, String> activeTimeRange = new HashMap<>();
-        activeTimeRange.put("start", "someStartTime");
-        activeTimeRange.put("end", "someEndTime");
+        activeTimeRange.put("start", SOME_START_TIME);
+        activeTimeRange.put("end", SOME_END_TIME);
         limitConstraint.setActive_time_range(activeTimeRange);
         LinkedList<Constraint> limitConstraints = new LinkedList<>();
         limitConstraints.add(limitConstraint);
@@ -79,9 +89,13 @@ public class PolicyGuardYamlToXacmlTest {
 
     @Test
     public void testGenerateXacmlGuardFull() throws IOException {
-        File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        File tempYamlFile = File.createTempFile(ONAPPF_FILE, "yaml");
+        tempYamlFile.deleteOnExit();
+
         File tempXacmlTemplateFile = new File("src/test/resources/frequency_limiter_template.xml");
-        File tempXacmlOutputFile = File.createTempFile("ONAPPF", ".out.xacml");
+
+        File tempXacmlOutputFile = File.createTempFile(ONAPPF_FILE, OUT_XACML);
+        tempXacmlOutputFile.deleteOnExit();
 
         Yaml clYaml = new Yaml(new Constructor(ControlLoopGuard.class));
         String clYamlString = clYaml.dump(clGuard);
@@ -98,23 +112,24 @@ public class PolicyGuardYamlToXacmlTest {
         // Assert all substitutions are made
         assertTrue(result.contains("cl"));
         assertTrue(result.contains("actor"));
-        assertTrue(result.contains("GoToOz"));
-        assertTrue(result.contains("Wizard"));
-        assertTrue(result.contains("WickedWitchOfTheWest"));
+        assertTrue(result.contains(RECIPE));
+        assertTrue(result.contains(TARGET1));
+        assertTrue(result.contains(TARGET2));
         assertTrue(result.contains("10"));
-        assertTrue(result.contains("hours"));
-        assertTrue(result.contains("someStartTime"));
-        assertTrue(result.contains("someEndTime"));
-
-        tempYamlFile.delete();
-        tempXacmlOutputFile.delete();
+        assertTrue(result.contains(HOURS));
+        assertTrue(result.contains(SOME_START_TIME));
+        assertTrue(result.contains(SOME_END_TIME));
     }
 
     @Test
     public void testGenerateXacmlGuardPartial() throws IOException {
-        final File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        final File tempYamlFile = File.createTempFile(ONAPPF_FILE, "yaml");
+        tempYamlFile.deleteOnExit();
+
         final File tempXacmlTemplateFile = new File("src/test/resources/frequency_limiter_template.xml");
-        final File tempXacmlOutputFile = File.createTempFile("ONAPPF", ".out.xacml");
+
+        final File tempXacmlOutputFile = File.createTempFile(ONAPPF_FILE, OUT_XACML);
+        tempXacmlOutputFile.deleteOnExit();
 
         MatchParameters matchParameters = clGuard.getGuards().get(0).getMatch_parameters();
         matchParameters.setControlLoopName(null);
@@ -137,16 +152,13 @@ public class PolicyGuardYamlToXacmlTest {
         // Assert all substitutions are made
         assertTrue(result.contains("cl"));
         assertTrue(result.contains("actor"));
-        assertFalse(result.contains("GoToOz"));
-        assertFalse(result.contains("Wizard"));
-        assertFalse(result.contains("WickedWitchOfTheWest"));
+        assertFalse(result.contains(RECIPE));
+        assertFalse(result.contains(TARGET1));
+        assertFalse(result.contains(TARGET2));
         assertTrue(result.contains("10"));
-        assertTrue(result.contains("hours"));
-        assertTrue(result.contains("someStartTime"));
-        assertTrue(result.contains("someEndTime"));
-
-        tempYamlFile.delete();
-        tempXacmlOutputFile.delete();
+        assertTrue(result.contains(HOURS));
+        assertTrue(result.contains(SOME_START_TIME));
+        assertTrue(result.contains(SOME_END_TIME));
     }
 
     @Test
@@ -173,13 +185,17 @@ public class PolicyGuardYamlToXacmlTest {
 
     @Test
     public void testGenerateXacmlGuardBlacklist() throws IOException {
-        final File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        final File tempYamlFile = File.createTempFile(ONAPPF_FILE, "yaml");
+        tempYamlFile.deleteOnExit();
+
         final File tempXacmlTemplateFile = new File("src/test/resources/blacklist_template.xml");
-        final File tempXacmlOutputFile = File.createTempFile("ONAPPF", ".out.xacml");
+
+        final File tempXacmlOutputFile = File.createTempFile(ONAPPF_FILE, OUT_XACML);
+        tempXacmlOutputFile.deleteOnExit();
 
         List<String> blacklist = new ArrayList<>();
-        blacklist.add("WestWitches");
-        blacklist.add("EastWitches");
+        blacklist.add(TEXT1);
+        blacklist.add(TEXT2);
         clGuard.getGuards().get(0).getLimit_constraints().get(0).setBlacklist(blacklist);
 
         Yaml clYaml = new Yaml(new Constructor(ControlLoopGuard.class));
@@ -190,27 +206,27 @@ public class PolicyGuardYamlToXacmlTest {
                 tempXacmlTemplateFile.getCanonicalPath(), tempXacmlOutputFile.getCanonicalPath());
 
         String result = SupportTextFileUtils.getTextFileAsString(tempXacmlOutputFile.getCanonicalPath());
-        System.err.println(result);
         // Assert no mote "${}" are left
         assertFalse(result.contains("${"));
         assertFalse(result.contains("}"));
         // Assert all substitutions are made
-        assertTrue(result.contains("WestWitches"));
-        assertTrue(result.contains("EastWitches"));
-
-        tempYamlFile.delete();
-        tempXacmlOutputFile.delete();
+        assertTrue(result.contains(TEXT1));
+        assertTrue(result.contains(TEXT2));
     }
 
     @Test
     public void testGenerateXacmlGuardBlacklistPartial() throws IOException {
-        final File tempYamlFile = File.createTempFile("ONAPPF", "yaml");
+        final File tempYamlFile = File.createTempFile(ONAPPF_FILE, "yaml");
+        tempYamlFile.deleteOnExit();
+
         final File tempXacmlTemplateFile = new File("src/test/resources/blacklist_template.xml");
-        final File tempXacmlOutputFile = File.createTempFile("ONAPPF", ".out.xacml");
+
+        final File tempXacmlOutputFile = File.createTempFile(ONAPPF_FILE, OUT_XACML);
+        tempXacmlOutputFile.deleteOnExit();
 
         List<String> blacklist = new ArrayList<>();
-        blacklist.add("WestWitches");
-        blacklist.add("EastWitches");
+        blacklist.add(TEXT1);
+        blacklist.add(TEXT2);
         GuardPolicy guardPolicy = clGuard.getGuards().get(0);
         guardPolicy.getLimit_constraints().get(0).setBlacklist(blacklist);
 
@@ -228,15 +244,11 @@ public class PolicyGuardYamlToXacmlTest {
                 tempXacmlTemplateFile.getCanonicalPath(), tempXacmlOutputFile.getCanonicalPath());
 
         String result = SupportTextFileUtils.getTextFileAsString(tempXacmlOutputFile.getCanonicalPath());
-        System.err.println(result);
         // Assert no mote "${}" are left
         assertFalse(result.contains("${"));
         assertFalse(result.contains("}"));
         // Assert all substitutions are made
-        assertTrue(result.contains("WestWitches"));
-        assertTrue(result.contains("EastWitches"));
-
-        tempYamlFile.delete();
-        tempXacmlOutputFile.delete();
+        assertTrue(result.contains(TEXT1));
+        assertTrue(result.contains(TEXT2));
     }
 }
index 03260ad..98c33c7 100644 (file)
@@ -3,6 +3,7 @@
  * guard
  * ================================================================================
  * Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.guard;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import org.drools.core.util.IoUtils;
 
 /**
  * The Class TextFileUtils is class that provides useful functions for handling text files.
@@ -31,7 +33,12 @@ import java.io.IOException;
  *
  * @author Liam Fallon (liam.fallon@ericsson.com)
  */
-public abstract class SupportTextFileUtils {
+public class SupportTextFileUtils {
+
+    private SupportTextFileUtils() {
+        // do nothing
+    }
+
     /**
      * Method to return the contents of a text file as a string.
      *
@@ -39,13 +46,8 @@ public abstract class SupportTextFileUtils {
      * @return A string containing the contents of the file
      * @throws IOException on errors reading text from the file
      */
-    public static String getTextFileAsString(final String textFilePath) throws IOException {
-        final File textFile = new File(textFilePath);
-        final FileInputStream textFileInputStream = new FileInputStream(textFile);
-        final byte[] textData = new byte[(int) textFile.length()];
-        textFileInputStream.read(textData);
-        textFileInputStream.close();
-        return new String(textData);
+    public static String getTextFileAsString(final String textFilePath) {
+        return IoUtils.readFileAsString(new File(textFilePath));
     }
 
     /**
@@ -56,8 +58,8 @@ public abstract class SupportTextFileUtils {
      * @throws IOException on errors reading text from the file
      */
     public static void putStringAsFile(final String outString, final File textFile) throws IOException {
-        final FileOutputStream textFileOutputStream = new FileOutputStream(textFile);
-        textFileOutputStream.write(outString.getBytes());
-        textFileOutputStream.close();
+        try (final FileOutputStream textFileOutputStream = new FileOutputStream(textFile)) {
+            textFileOutputStream.write(outString.getBytes(StandardCharsets.UTF_8));
+        }
     }
 }