Merge "Remove unused commons-fileupload"
authorJorge Hernandez <jorge.hernandez-herrero@att.com>
Tue, 23 Oct 2018 16:37:41 +0000 (16:37 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 23 Oct 2018 16:37:41 +0000 (16:37 +0000)
63 files changed:
ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java
TestSuite/Performance/pom.xml [new file with mode: 0644]
TestSuite/Performance/src/main/resources/testplans/PerformancePDPXdecisionsTestPlan.jmx [new file with mode: 0644]
TestSuite/Stability/pom.xml [new file with mode: 0644]
TestSuite/Stability/src/main/resources/testplans/XacmlPdpTestPlan.jmx [new file with mode: 0644]
TestSuite/pom.xml [new file with mode: 0644]
docs/platform/RunEcl_telemetry.png
docs/platform/Tut_cl_confirmAndDirectory.PNG
docs/platform/Tut_cl_finalStep.PNG
docs/platform/Tut_cl_preDeploy.PNG
docs/platform/Tut_cl_propFile.PNG
docs/platform/Tut_cl_valuesHighlight.png
docs/platform/Tut_vCPE_appc_request.JPG
docs/platform/Tut_vCPE_final_memory.JPG
docs/platform/Tut_vCPE_get_facts.JPG
docs/platform/Tut_vCPE_get_facts_2.JPG
docs/platform/Tut_vCPE_guard_not_queried.JPG
docs/platform/Tut_vCPE_guard_result.JPG
docs/platform/Tut_vCPE_inject_appc_response.JPG
docs/platform/Tut_vCPE_insert_abatement.JPG
docs/platform/Tut_vCPE_insert_onset.JPG
docs/platform/Tut_vCPE_policy_active.JPG
docs/platform/Tut_vCPE_policy_final_success.JPG
docs/platform/Tut_vCPE_policy_operation.JPG
docs/platform/Tut_vCPE_policy_operation_success.JPG
docs/platform/Tut_vCPE_policy_start.JPG
docs/platform/Tut_vCPE_simulated_abatement.JPG
docs/platform/Tut_vCPE_simulated_appc_response.JPG
docs/platform/Tut_vCPE_simulated_onset.JPG
docs/platform/Tut_vCPE_simulators_enabled.JPG
docs/platform/Tut_vFW_aai_get.JPG
docs/platform/Tut_vFW_aai_named_query_request.JPG
docs/platform/Tut_vFW_aai_named_query_response.JPG
docs/platform/Tut_vFW_appc_request.JPG
docs/platform/Tut_vFW_final_memory.JPG
docs/platform/Tut_vFW_get_facts.JPG
docs/platform/Tut_vFW_get_facts_2.JPG
docs/platform/Tut_vFW_insert_appc_response.JPG
docs/platform/Tut_vFW_onset_injected.JPG
docs/platform/Tut_vFW_policy_active.JPG
docs/platform/Tut_vFW_policy_final_success.JPG
docs/platform/Tut_vFW_policy_guard_result.JPG
docs/platform/Tut_vFW_policy_guard_start.JPG
docs/platform/Tut_vFW_policy_operation_start.JPG
docs/platform/Tut_vFW_policy_operation_success.JPG
docs/platform/Tut_vFW_policy_start.JPG
docs/platform/Tut_vFW_simulated_appc_response.JPG
docs/platform/Tut_vFW_simulated_onset.JPG
docs/platform/Tut_vFW_simulators_enabled.JPG
docs/platform/clsimulation.rst
docs/platform/mat_hello_world.JPG
docs/platform/runningEclipse.rst
docs/platform/tutorial_VOLTE.rst
docs/platform/tutorial_VOLTE_1.png
docs/platform/tutorial_VOLTE_2.png
docs/platform/tutorial_vCPE.rst
docs/platform/tutorial_vDNS.rst
docs/platform/tutorial_vDNS_1.png [changed mode: 0755->0644]
docs/platform/tutorial_vDNS_2.png [changed mode: 0755->0644]
docs/platform/tutorial_vFW.rst
docs/release-notes.rst
packages/base/src/files/install/mysql/data/181003_upgrade_script.sql
pom.xml

index 00c27ea..9248644 100644 (file)
@@ -99,6 +99,7 @@ public class PolicyValidation {
     private static Map<String, String> jsonRequestMap = new HashMap<>();
     private static List<String> modelRequiredFieldsList = new ArrayList<>();
     private Set<String> allReqTrueKeys = new HashSet<>();
+    private Set<String> allOptReqTrueKeys = new HashSet<>();
 
     private static CommonClassDao commonClassDao;
 
@@ -619,7 +620,8 @@ public class PolicyValidation {
                         valid = false;
                     }
                 }
-
+                
+                // Validate MicroService Policy Data
                 if (MICROSERVICES.equals(policyData.getConfigPolicyType())) {
                     boolean tmpValid = validateMsModel(policyData, responseString);
                     if (!tmpValid) {
@@ -629,154 +631,8 @@ public class PolicyValidation {
 
                 // Validate Optimization Policy Data
                 if (OPTIMIZATION.equals(policyData.getConfigPolicyType())){
-
-                    if(!Strings.isNullOrEmpty(policyData.getServiceType())){
-
-                        modelRequiredFieldsList.clear();
-                        pullJsonKeyPairs((JsonNode) policyData.getPolicyJSON());
-
-                        String service;
-                        String version;
-                        if (policyData.getServiceType().contains("-v")){
-                            service = policyData.getServiceType().split("-v")[0];
-                            version = policyData.getServiceType().split("-v")[1];
-                        }else {
-                            service = policyData.getServiceType();
-                            version = policyData.getVersion();
-                        }
-
-                        if (!Strings.isNullOrEmpty(version)) {
-                            OptimizationModels returnModel = getOptimizationModelData(service, version);
-
-                            if (returnModel != null) {
-
-                                String annotation = returnModel.getAnnotation();
-                                String refAttributes = returnModel.getRefattributes();
-                                String subAttributes = returnModel.getSubattributes();
-                                String modelAttributes = returnModel.getAttributes();
-
-                                if (!Strings.isNullOrEmpty(annotation)) {
-                                    Map<String, String> rangeMap = Splitter.on(",").withKeyValueSeparator("=")
-                                            .split(annotation);
-                                    for (Entry<String, String> rMap : rangeMap.entrySet()) {
-                                        if (rMap.getValue().contains("range::")) {
-                                            String value = mapAttribute.get(rMap.getKey().trim());
-                                            String[] tempString = rMap.getValue().split("::")[1].split("-");
-                                            int startNum = Integer.parseInt(tempString[0]);
-                                            int endNum = Integer.parseInt(tempString[1]);
-                                            String returnString = "InvalidreturnModel Range:" + rMap.getKey()
-                                            + " must be between " + startNum + " - " + endNum + ",";
-
-                                            if (value != null) {
-                                                if (PolicyUtils.isInteger(value.replace("\"", ""))) {
-                                                    int result = Integer.parseInt(value.replace("\"", ""));
-                                                    if (result < startNum || result > endNum) {
-                                                        responseString.append(returnString);
-                                                        valid = false;
-                                                    }
-                                                } else {
-                                                    responseString.append(returnString);
-                                                    valid = false;
-                                                }
-                                            } else {
-                                                responseString.append("<b>" + rMap.getKey() + "</b>:<i>" + rMap.getKey()
-                                                + " is required for the Optimization model " + service
-                                                + HTML_ITALICS_LNBREAK);
-                                                valid = false;
-                                            }
-
-                                        }
-                                    }
-                                }
-
-                                // If request comes from the API we need to validate required fields in the
-                                // Micro Service Model
-                                // GUI request are already validated from the SDK-APP
-                                if ("API".equals(policyData.getApiflag())) {
-                                    // get list of required fields from the sub_Attributes of the Model
-                                    if (!Strings.isNullOrEmpty(subAttributes)) {
-                                        JsonObject subAttributesJson = stringToJsonObject(subAttributes);
-                                        findRequiredFields(subAttributesJson);
-                                    }
-
-                                    // get list of required fields from the attributes of the Model
-                                    if (!Strings.isNullOrEmpty(modelAttributes)) {
-                                        Map<String, String> modelAttributesMap = null;
-                                        if (",".equals(modelAttributes.substring(modelAttributes.length() - 1))) {
-                                            String attributeString = modelAttributes.substring(0,
-                                                    modelAttributes.length() - 1);
-                                            modelAttributesMap = Splitter.on(",").withKeyValueSeparator("=")
-                                                    .split(attributeString);
-                                        } else {
-                                            modelAttributesMap = Splitter.on(",").withKeyValueSeparator("=")
-                                                    .split(modelAttributes);
-                                        }
-                                        String json = new ObjectMapper().writeValueAsString(modelAttributesMap);
-                                        findRequiredFields(stringToJsonObject(json));
-                                    }
-
-                                    // get list of required fields from the ref_Attributes of the Model
-                                    if (!Strings.isNullOrEmpty(refAttributes)) {
-                                        Map<String, String> refAttributesMap = null;
-                                        if (",".equals(refAttributes.substring(refAttributes.length() - 1))) {
-                                            String attributesString = refAttributes.substring(0,
-                                                    refAttributes.length() - 1);
-                                            refAttributesMap = Splitter.on(",").withKeyValueSeparator("=")
-                                                    .split(attributesString);
-                                        } else {
-                                            refAttributesMap = Splitter.on(",").withKeyValueSeparator("=")
-                                                    .split(modelAttributes);
-                                        }
-                                        String json = new ObjectMapper().writeValueAsString(refAttributesMap);
-                                        findRequiredFields(stringToJsonObject(json));
-                                    }
-
-                                    if (modelRequiredFieldsList != null || !modelRequiredFieldsList.isEmpty()) {
-                                        // create jsonRequestMap with all json keys and values from request
-                                        JsonNode rootNode = (JsonNode) policyData.getPolicyJSON();
-                                        jsonRequestMap.clear();
-                                        pullModelJsonKeyPairs(rootNode);
-
-                                        // validate if the requiredFields are in the request
-                                        for (String requiredField : modelRequiredFieldsList) {
-                                            if (jsonRequestMap.containsKey(requiredField)) {
-                                                String value = jsonRequestMap.get(requiredField);
-                                                if (Strings.isNullOrEmpty(jsonRequestMap.get(requiredField))
-                                                        || "\"\"".equals(value)
-                                                        || "".equals(jsonRequestMap.get(requiredField))) {
-                                                    responseString.append("<b>Optimization Service Model</b>:<i> "
-                                                            + requiredField + ISREQUIRED + HTML_ITALICS_LNBREAK);
-                                                    valid = false;
-                                                }
-                                            } else {
-                                                responseString.append("<b>Optimization Service Model</b>:<i> "
-                                                        + requiredField + ISREQUIRED + HTML_ITALICS_LNBREAK);
-                                                valid = false;
-                                            }
-                                        }
-                                    }
-                                }
-                            } else {
-                                responseString
-                                .append("<b>Optimization Service Model</b>:<i> Invalid Model. The model name, "
-                                        + service + " of version, " + version
-                                        + " was not found in the dictionary" + HTML_ITALICS_LNBREAK);
-                                valid = false;
-                            }
-                        } else {
-                            responseString.append(
-                                    "<b>Optimization Service Version</b>:<i> Optimization Service Version is required"
-                                            + HTML_ITALICS_LNBREAK);
-                            valid = false;
-                        }
-                    } else {
-                        responseString.append("<b>Optimization Service</b>:<i> Optimization Service Model is required"
-                                + HTML_ITALICS_LNBREAK);
-                        valid = false;
-                    }
-
-                    if (Strings.isNullOrEmpty(policyData.getPriority())) {
-                        responseString.append("<b>Priority</b>:<i> Priority is required" + HTML_ITALICS_LNBREAK);
+                    boolean tmpValid = validateOptimization(policyData, responseString);
+                    if (!tmpValid) {
                         valid = false;
                     }
                 }
@@ -1102,6 +958,11 @@ public class PolicyValidation {
                 try {
                     String valueStr = value.toString();
                     String stringValue = valueStr.substring(valueStr.indexOf('[') + 1, valueStr.lastIndexOf(']'));
+                    
+                    if (stringValue.isEmpty()) {
+                        stringValue = "{\"test\":\"test\"}";
+                    }
+                    
                     ObjectMapper mapper = new ObjectMapper();
                     JsonNode newValue = mapper.readTree(stringValue);
                     jsonRequestMap.put(key.trim(), value.toString().trim());
@@ -1183,7 +1044,9 @@ public class PolicyValidation {
             if (obj instanceof String && ((String) obj).contains(REQUIRED_ATTRIBUTE)) {
                 LOGGER.debug("key : " + key);
                 LOGGER.debug("obj : " + obj);
-                allReqTrueKeys.add(key);
+                allReqTrueKeys.add(key);    //For MicroService policies
+                allOptReqTrueKeys.add(key); //For Optimization policies
+                
                 // get the type from value and add that one also
                 String type = StringUtils.substringBefore((String) obj, ":");
                 if (!StringUtils.isBlank(type) && !StringUtils.containsAny(type.toLowerCase(), MSModelUtils.STRING,
@@ -1281,7 +1144,7 @@ public class PolicyValidation {
                                     + HTML_ITALICS_LNBREAK);
                             valid = false;
                         }
-
+                        
                         if (Strings.isNullOrEmpty(policyData.getPolicyScope())) {
                             responseString
                             .append("<b>Micro Service Model</b>:<i> policyScope is required for this model"
@@ -1346,6 +1209,128 @@ public class PolicyValidation {
 
         return valid;
     }
+    
+    private boolean validateOptimization(PolicyRestAdapter policyData, StringBuilder responseString) {
+        boolean valid = true;
+        if (!Strings.isNullOrEmpty(policyData.getServiceType())) {
+
+            modelRequiredFieldsList.clear();
+            pullJsonKeyPairs((JsonNode) policyData.getPolicyJSON());
+
+            String service;
+            String version;
+            if (policyData.getServiceType().contains("-v")) {
+                service = policyData.getServiceType().split("-v")[0];
+                version = policyData.getServiceType().split("-v")[1];
+            } else {
+                service = policyData.getServiceType();
+                version = policyData.getVersion();
+            }
+
+            if (!Strings.isNullOrEmpty(version)) {
+                OptimizationModels returnModel = getOptimizationModelData(service, version);
+
+                if (returnModel != null) {
+
+                    String annotation = returnModel.getAnnotation();
+                    String refAttributes = returnModel.getRefattributes();
+                    String subAttributes = returnModel.getSubattributes();
+                    String modelAttributes = returnModel.getAttributes();
+
+                    if (!Strings.isNullOrEmpty(annotation)) {
+                        Map<String, String> rangeMap = Splitter.on(",").withKeyValueSeparator("=")
+                                .split(annotation);
+                        for (Entry<String, String> rMap : rangeMap.entrySet()) {
+                            if (rMap.getValue().contains("range::")) {
+                                String value = mapAttribute.get(rMap.getKey().trim());
+                                String[] tempString = rMap.getValue().split("::")[1].split("-");
+                                int startNum = Integer.parseInt(tempString[0]);
+                                int endNum = Integer.parseInt(tempString[1]);
+                                String returnString = "InvalidreturnModel Range:" + rMap.getKey()
+                                + " must be between " + startNum + " - " + endNum + ",";
+
+                                if (value != null) {
+                                    if (PolicyUtils.isInteger(value.replace("\"", ""))) {
+                                        int result = Integer.parseInt(value.replace("\"", ""));
+                                        if (result < startNum || result > endNum) {
+                                            responseString.append(returnString);
+                                            valid = false;
+                                        }
+                                    } else {
+                                        responseString.append(returnString);
+                                        valid = false;
+                                    }
+                                } else {
+                                    responseString.append("<b>" + rMap.getKey() + "</b>:<i>" + rMap.getKey()
+                                    + " is required for the Optimization model " + service
+                                    + HTML_ITALICS_LNBREAK);
+                                    valid = false;
+                                }
+
+                            }
+                        }
+                    }
+
+                    // If request comes from the API we need to validate required fields in the Micro Service Modelvalid
+                    // GUI request are already validated from the SDK-APP
+                    if ("API".equals(policyData.getApiflag())) {
+                        // first , get the complete set of required fields
+                        populateReqFieldSet(new String[] {refAttributes, modelAttributes}, subAttributes);
+                        
+                        Iterator<String> reqTrueKeysIter = allOptReqTrueKeys.iterator();
+                        while (reqTrueKeysIter.hasNext()) {
+                            modelRequiredFieldsList.add(reqTrueKeysIter.next());
+                        }
+
+                        if (modelRequiredFieldsList != null && !modelRequiredFieldsList.isEmpty()) {
+                            
+                            // create jsonRequestMap with all json keys and values from request
+                            JsonNode rootNode = (JsonNode) policyData.getPolicyJSON();
+                            jsonRequestMap.clear();
+                            pullModelJsonKeyPairs(rootNode);
+
+                            // validate if the requiredFields are in the request
+                            for (String requiredField : modelRequiredFieldsList) {
+                                if (jsonRequestMap.containsKey(requiredField)) {
+                                    String value = jsonRequestMap.get(requiredField);
+                                    if (StringUtils.isBlank(value) || "\"\"".equals(value)) {
+                                        responseString.append("<b>Optimization Service Model</b>:<i> " 
+                                                + requiredField + ISREQUIRED + HTML_ITALICS_LNBREAK);
+                                        valid = false;
+                                    }
+                                } else {
+                                    responseString.append("<b>Optimization Service Model</b>:<i> " 
+                                            + requiredField + ISREQUIRED + HTML_ITALICS_LNBREAK);
+                                    valid = false;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    responseString.append("<b>Optimization Service Model</b>:<i> Invalid Model. The model name, " 
+                            + service + " of version, " + version 
+                            + " was not found in the dictionary" + HTML_ITALICS_LNBREAK);
+                    valid = false;
+                }
+            } else {
+                responseString.append(
+                        "<b>Optimization Service Version</b>:<i> Optimization Service Version is required" 
+                                + HTML_ITALICS_LNBREAK);
+                valid = false;
+            }
+        } else {
+            responseString.append("<b>Optimization Service</b>:<i> Optimization policy data is missing or invalid Json." 
+                    + HTML_ITALICS_LNBREAK);
+            valid = false;
+        }
+
+        if (Strings.isNullOrEmpty(policyData.getPriority())) {
+            responseString.append("<b>Priority</b>:<i> Priority is required" + HTML_ITALICS_LNBREAK);
+            valid = false;
+        }
+
+        return valid;
+    }
 
     private void populateRequiredFields(String[] attrArr, String subAttributes, String modelAttributes)
             throws JsonProcessingException {
@@ -1367,7 +1352,6 @@ public class PolicyValidation {
 
         }
 
-
         // get list of required fields from the sub_Attributes of the Model
         if (!StringUtils.isBlank(subAttributes)) {
             JsonObject subAttributesJson = stringToJsonObject(subAttributes);
diff --git a/TestSuite/Performance/pom.xml b/TestSuite/Performance/pom.xml
new file mode 100644 (file)
index 0000000..e7e27bc
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP Policy Engine
+  ================================================================================
+  Copyright (C) 2018 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=========================================================
+  -->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.onap.policy.engine</groupId>
+    <artifactId>TestSuite</artifactId>
+    <version>1.3.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>Performance</artifactId>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+</project>
diff --git a/TestSuite/Performance/src/main/resources/testplans/PerformancePDPXdecisionsTestPlan.jmx b/TestSuite/Performance/src/main/resources/testplans/PerformancePDPXdecisionsTestPlan.jmx
new file mode 100644 (file)
index 0000000..e82a1ab
--- /dev/null
@@ -0,0 +1,1619 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP Policy Engine
+  ================================================================================
+  Copyright (C) 2018 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=========================================================
+  -->
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.0 r1840935">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="PDP-X Performance Policy Decisions Test Plan" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">ClientAuth</stringProp>
+            <stringProp name="Header.value">cHl0aG9uOnRlc3Q=</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Authorization</stringProp>
+            <stringProp name="Header.value">Basic dGVzdHBkcDphbHBoYTEyMw==</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Environment</stringProp>
+            <stringProp name="Header.value">TEST</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain">10.12.6.225</stringProp>
+        <stringProp name="HTTPSampler.port">8081</stringProp>
+        <stringProp name="HTTPSampler.protocol">https</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+        <stringProp name="HTTPSampler.path"></stringProp>
+        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
+        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+        <stringProp name="HTTPSampler.response_timeout"></stringProp>
+      </ConfigTestElement>
+      <hashTree/>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </SetupThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Create and Push Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">10</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+    &quot;policyClass&quot;: &quot;Decision&quot;,&#xd;
+    &quot;policyName&quot;: &quot;com.TestingGUARD${request_number}&quot;,&#xd;
+    &quot;policyDescription&quot;: &quot;Testing new YAML Guard Policy&quot;,&#xd;
+    &quot;onapName&quot;: &quot;PDPD&quot;,&#xd;
+    &quot;ruleProvider&quot;: &quot;GUARD_YAML&quot;,&#xd;
+    &quot;attributes&quot;: {&#xd;
+        &quot;MATCHING&quot;: {&#xd;
+            &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+            &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+            &quot;targets&quot; : &quot;test&quot;,&#xd;
+            &quot;clname&quot; : &quot;test&quot;,&#xd;
+            &quot;limit&quot;: &quot;5&quot;,&#xd;
+            &quot;timeWindow&quot;: &quot;15&quot;,&#xd;
+            &quot;timeUnits&quot; : &quot;minute&quot;,&#xd;
+            &quot;guardActiveStart&quot;: &quot;05:00:00-05:00&quot;,&#xd;
+            &quot;guardActiveEnd&quot;: &quot;23:59:59-05:00&quot;&#xd;
+        }&#xd;
+    }&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/createPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">createGuardPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guard Min/Max Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+       &quot;policyClass&quot;: &quot;Decision&quot;,&#xd;
+       &quot;policyName&quot;: &quot;com.TestingGuardMinMax${request_number}&quot;,&#xd;
+       &quot;policyDescription&quot;: &quot;Testing Min Max Guard Policy&quot;,&#xd;
+       &quot;onapName&quot;: &quot;PDPD&quot;,&#xd;
+       &quot;ruleProvider&quot;: &quot;GUARD_MIN_MAX&quot;,&#xd;
+       &quot;attributes&quot;: {&#xd;
+               &quot;MATCHING&quot;: {&#xd;
+                       &quot;actor&quot;: &quot;testActorMinMax${request_number}&quot;,&#xd;
+                       &quot;recipe&quot;: &quot;scaleOut&quot;,&#xd;
+                       &quot;targets&quot;: &quot;test&quot;,&#xd;
+                       &quot;clname&quot;: &quot;ControlLoop-Test&quot;,&#xd;
+                       &quot;min&quot;: &quot;1&quot;,&#xd;
+                       &quot;max&quot;: &quot;5&quot;,&#xd;
+                       &quot;guardActiveStart&quot;: &quot;00:00:01-05:00&quot;,&#xd;
+                       &quot;guardActiveEnd&quot;: &quot;00:00:00-05:00&quot;&#xd;
+               }&#xd;
+       }&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/createPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">createGuardMinMaxPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Config Base Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+       &quot;attributes&quot;: {&#xd;
+               &quot;MATCHING&quot;: {&#xd;
+                       &quot;key&quot;: &quot;value&quot;&#xd;
+               }&#xd;
+       },&#xd;
+       &quot;configBody&quot;: &quot;test body&quot;,&#xd;
+       &quot;configBodyType&quot;: &quot;OTHER&quot;,&#xd;
+       &quot;configName&quot;: &quot;testConfig&quot;,&#xd;
+       &quot;onapName&quot;: &quot;PDPD&quot;,&#xd;
+       &quot;policyConfigType&quot;: &quot;Base&quot;,&#xd;
+       &quot;policyDescription&quot;: &quot;Testing Config Base Policy&quot;,&#xd;
+     &quot;policyName&quot;: &quot;com.TestingConfig${request_number}&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/createPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">createBasePolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Push Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/pushPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">pushGuardPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Push Guard Min/Max Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGUARDMinMax${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/pushPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">pushGuardMinMaxPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Push Config Base Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingConfig${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Base&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/pushPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">pushBasePolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename">CreateAndPushSummar.jtl</stringProp>
+        </ResultCollector>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Execute Policy Thread Group Permit" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Decision Permit Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;decisionAttributes&quot;: {&#xd;
+        &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+        &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+        &quot;target&quot;: &quot;test&quot;,&#xd;
+        &quot;clname&quot; : &quot;test&quot;&#xd;
+    },&#xd;
+  &quot;onapName&quot;: &quot;PDPD&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="1966519771">&quot;decision&quot;:&quot;PERMIT&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardPermit.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Min Max Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value"> {&#xd;
+   &quot;decisionAttributes&quot;: {&#xd;
+           &quot;actor&quot;: &quot;testActorMinMax${request_number}&quot;,&#xd;
+         &quot;recipe&quot;: &quot;scaleOut&quot;,&#xd;
+         &quot;target&quot;: &quot;test&quot;,&#xd;
+         &quot;clname&quot; : &quot;ControlLoop-Test&quot;,&#xd;
+         &quot;vfCount&quot; : &quot;4&quot;&#xd;
+     },&#xd;
+   &quot;onapName&quot;: &quot;PDPD&quot;&#xd;
+ }</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="1966519771">&quot;decision&quot;:&quot;PERMIT&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardMinMaxPermit.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename">permitSummary.jtl</stringProp>
+        </ResultCollector>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Execute Policy Thread Group Deny" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Decision Deny Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;decisionAttributes&quot;: {&#xd;
+        &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+        &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+        &quot;target&quot;: &quot;test&quot;,&#xd;
+        &quot;clname&quot; : &quot;test&quot;&#xd;
+    },&#xd;
+  &quot;onapName&quot;: &quot;test&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="-1586691318">&quot;decision&quot;:&quot;DENY&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardDeny.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Min Max Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value"> {&#xd;
+   &quot;decisionAttributes&quot;: {&#xd;
+           &quot;actor&quot;: &quot;testActorMinMax${request_number}&quot;,&#xd;
+         &quot;recipe&quot;: &quot;scaleOut&quot;,&#xd;
+         &quot;target&quot;: &quot;test&quot;,&#xd;
+         &quot;clname&quot; : &quot;ControlLoop-Test&quot;,&#xd;
+         &quot;vfCount&quot; : &quot;9&quot;&#xd;
+     },&#xd;
+   &quot;onapName&quot;: &quot;test&quot;&#xd;
+ }</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="-1586691318">&quot;decision&quot;:&quot;DENY&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardMinMaxDeny.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename">denySummary.jtl</stringProp>
+        </ResultCollector>
+        <hashTree/>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <intProp name="LoopController.loops">-1</intProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </PostThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">10</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Policy From PDP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PDP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteGuardPDP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Min Max Policy From PDP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGuardMinMax${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PDP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteGuardMinMaxPDP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Config Base Policy From PDP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;com.TestingConfig${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Base&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PDP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteBasePDP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Policy From PAP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PAP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteGuardPAP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Min Max Policy From PAP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;policyName&quot;: &quot;com.TestingGuardMinMax${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PAP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteGuardMinMaxPAP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Config Base Policy From PAP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;policyName&quot;: &quot;com.TestingConfig${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Base&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PAP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <url>true</url>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deleteBasePAP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename">deleteSummary.jtl</stringProp>
+        </ResultCollector>
+        <hashTree/>
+      </hashTree>
+      <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">fullSummary.jtl</stringProp>
+        <boolProp name="useGroupName">true</boolProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">aggregate.jtl</stringProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/TestSuite/Stability/pom.xml b/TestSuite/Stability/pom.xml
new file mode 100644 (file)
index 0000000..e14d6a6
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP Policy Engine
+  ================================================================================
+  Copyright (C) 2018 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=========================================================
+  -->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.onap.policy.engine</groupId>
+    <artifactId>TestSuite</artifactId>
+    <version>1.3.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>Stability</artifactId>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+</project>
diff --git a/TestSuite/Stability/src/main/resources/testplans/XacmlPdpTestPlan.jmx b/TestSuite/Stability/src/main/resources/testplans/XacmlPdpTestPlan.jmx
new file mode 100644 (file)
index 0000000..93694e6
--- /dev/null
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP Policy Engine
+  ================================================================================
+  Copyright (C) 2018 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=========================================================
+  -->
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.0 r1840935">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="PDPX Stability Test Plan" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">ClientAuth</stringProp>
+            <stringProp name="Header.value">cHl0aG9uOnRlc3Q=</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Authorization</stringProp>
+            <stringProp name="Header.value">Basic dGVzdHBkcDphbHBoYTEyMw==</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Environment</stringProp>
+            <stringProp name="Header.value">TEST</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain">10.12.6.225</stringProp>
+        <stringProp name="HTTPSampler.port">8081</stringProp>
+        <stringProp name="HTTPSampler.protocol">https</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+        <stringProp name="HTTPSampler.path"></stringProp>
+        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
+        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+        <stringProp name="HTTPSampler.response_timeout"></stringProp>
+      </ConfigTestElement>
+      <hashTree/>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </SetupThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Create and Push Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+    &quot;policyClass&quot;: &quot;Decision&quot;,&#xd;
+    &quot;policyName&quot;: &quot;Test.TestingGUARD${request_number}&quot;,&#xd;
+    &quot;policyDescription&quot;: &quot;Testing new YAML Guard Policy&quot;,&#xd;
+    &quot;onapName&quot;: &quot;PDPD&quot;,&#xd;
+    &quot;ruleProvider&quot;: &quot;GUARD_YAML&quot;,&#xd;
+    &quot;attributes&quot;: {&#xd;
+        &quot;MATCHING&quot;: {&#xd;
+            &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+            &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+            &quot;targets&quot; : &quot;test&quot;,&#xd;
+            &quot;clname&quot; : &quot;test&quot;,&#xd;
+            &quot;limit&quot;: &quot;5&quot;,&#xd;
+            &quot;timeWindow&quot;: &quot;15&quot;,&#xd;
+            &quot;timeUnits&quot; : &quot;minute&quot;,&#xd;
+            &quot;guardActiveStart&quot;: &quot;05:00:00-05:00&quot;,&#xd;
+            &quot;guardActiveEnd&quot;: &quot;23:59:59-05:00&quot;&#xd;
+        }&#xd;
+    }&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/createPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">createPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Push Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;Test.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/pushPolicy</stringProp>
+              <stringProp name="HTTPSampler.method">PUT</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">pushPolicy.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Execute Policy Thread Group Permit" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Decision Permit Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end">10</stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;decisionAttributes&quot;: {&#xd;
+        &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+        &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+        &quot;target&quot;: &quot;test&quot;,&#xd;
+        &quot;clname&quot; : &quot;test&quot;&#xd;
+    },&#xd;
+  &quot;onapName&quot;: &quot;PDPD&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="1966519771">&quot;decision&quot;:&quot;PERMIT&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardPermit.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Execute Policy Thread Group Deny" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">10</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Decision Deny Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">11</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Execute Guard Policy" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;decisionAttributes&quot;: {&#xd;
+        &quot;actor&quot;: &quot;testActor${request_number}&quot;,&#xd;
+        &quot;recipe&quot;: &quot;restart&quot;,&#xd;
+        &quot;target&quot;: &quot;test&quot;,&#xd;
+        &quot;clname&quot; : &quot;test&quot;&#xd;
+    },&#xd;
+  &quot;onapName&quot;: &quot;test&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/getDecision</stringProp>
+              <stringProp name="HTTPSampler.method">POST</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                  <stringProp name="-1586691318">&quot;decision&quot;:&quot;DENY&quot;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.custom_message"></stringProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+              </ResponseAssertion>
+              <hashTree/>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">guardDeny.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </PostThreadGroup>
+      <hashTree>
+        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">true</boolProp>
+          <stringProp name="LoopController.loops">1000</stringProp>
+        </LoopController>
+        <hashTree>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree>
+            <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="RequestNumber" enabled="true">
+              <stringProp name="CounterConfig.start">1</stringProp>
+              <stringProp name="CounterConfig.end"></stringProp>
+              <stringProp name="CounterConfig.incr">1</stringProp>
+              <stringProp name="CounterConfig.name">request_number</stringProp>
+              <stringProp name="CounterConfig.format">000</stringProp>
+              <boolProp name="CounterConfig.per_user">false</boolProp>
+            </CounterConfig>
+            <hashTree/>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Policy From PDP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;pdpGroup&quot;: &quot;default&quot;,&#xd;
+  &quot;policyName&quot;: &quot;Test.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PDP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deletePDP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Guard Policy From PAP" enabled="true">
+              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+                <collectionProp name="Arguments.arguments">
+                  <elementProp name="" elementType="HTTPArgument">
+                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                    <stringProp name="Argument.value">{&#xd;
+  &quot;policyName&quot;: &quot;Test.TestingGUARD${request_number}&quot;,&#xd;
+  &quot;policyType&quot;: &quot;Decision&quot;,&#xd;
+  &quot;policyComponent&quot;: &quot;PAP&quot;,&#xd;
+  &quot;deleteCondition&quot;: &quot;All Versions&quot;&#xd;
+}</stringProp>
+                    <stringProp name="Argument.metadata">=</stringProp>
+                  </elementProp>
+                </collectionProp>
+              </elementProp>
+              <stringProp name="HTTPSampler.domain"></stringProp>
+              <stringProp name="HTTPSampler.port"></stringProp>
+              <stringProp name="HTTPSampler.protocol"></stringProp>
+              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+              <stringProp name="HTTPSampler.path">pdp/api/deletePolicy</stringProp>
+              <stringProp name="HTTPSampler.method">DELETE</stringProp>
+              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+              <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+              <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            </HTTPSamplerProxy>
+            <hashTree>
+              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+                <boolProp name="ResultCollector.error_logging">false</boolProp>
+                <objProp>
+                  <name>saveConfig</name>
+                  <value class="SampleSaveConfiguration">
+                    <time>true</time>
+                    <latency>true</latency>
+                    <timestamp>true</timestamp>
+                    <success>true</success>
+                    <label>true</label>
+                    <code>true</code>
+                    <message>true</message>
+                    <threadName>true</threadName>
+                    <dataType>true</dataType>
+                    <encoding>false</encoding>
+                    <assertions>true</assertions>
+                    <subresults>true</subresults>
+                    <responseData>false</responseData>
+                    <samplerData>false</samplerData>
+                    <xml>false</xml>
+                    <fieldNames>true</fieldNames>
+                    <responseHeaders>false</responseHeaders>
+                    <requestHeaders>false</requestHeaders>
+                    <responseDataOnError>false</responseDataOnError>
+                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+                    <assertionsResultsToSave>0</assertionsResultsToSave>
+                    <bytes>true</bytes>
+                    <sentBytes>true</sentBytes>
+                    <threadCounts>true</threadCounts>
+                    <idleTime>true</idleTime>
+                    <connectTime>true</connectTime>
+                  </value>
+                </objProp>
+                <stringProp name="filename">deletePAP.jtl</stringProp>
+              </ResultCollector>
+              <hashTree/>
+            </hashTree>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+      <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">summary</stringProp>
+        <boolProp name="useGroupName">true</boolProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">aggregate</stringProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/TestSuite/pom.xml b/TestSuite/pom.xml
new file mode 100644 (file)
index 0000000..50ede0d
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP Policy Engine
+  ================================================================================
+  Copyright (C) 2018 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=========================================================
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.policy.engine</groupId>
+        <artifactId>PolicyEngineSuite</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>TestSuite</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>Performance</module>
+        <module>Stability</module>
+    </modules>  
+</project>
\ No newline at end of file
index 38e361f..ae4f65c 100755 (executable)
Binary files a/docs/platform/RunEcl_telemetry.png and b/docs/platform/RunEcl_telemetry.png differ
index 9a7f20d..cdb84a8 100755 (executable)
Binary files a/docs/platform/Tut_cl_confirmAndDirectory.PNG and b/docs/platform/Tut_cl_confirmAndDirectory.PNG differ
index 6f6e218..b56b06e 100755 (executable)
Binary files a/docs/platform/Tut_cl_finalStep.PNG and b/docs/platform/Tut_cl_finalStep.PNG differ
index 1b0bf0d..69a2cdb 100755 (executable)
Binary files a/docs/platform/Tut_cl_preDeploy.PNG and b/docs/platform/Tut_cl_preDeploy.PNG differ
index 5c0d865..960e182 100755 (executable)
Binary files a/docs/platform/Tut_cl_propFile.PNG and b/docs/platform/Tut_cl_propFile.PNG differ
index e8d3852..7a4bb79 100755 (executable)
Binary files a/docs/platform/Tut_cl_valuesHighlight.png and b/docs/platform/Tut_cl_valuesHighlight.png differ
index fd9d11e..75d8848 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_appc_request.JPG and b/docs/platform/Tut_vCPE_appc_request.JPG differ
index 2f9661e..f68aac7 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_final_memory.JPG and b/docs/platform/Tut_vCPE_final_memory.JPG differ
index 2b9198e..2763725 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_get_facts.JPG and b/docs/platform/Tut_vCPE_get_facts.JPG differ
index 32bdce9..4bf8e9f 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_get_facts_2.JPG and b/docs/platform/Tut_vCPE_get_facts_2.JPG differ
index b30a4aa..14e52e7 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_guard_not_queried.JPG and b/docs/platform/Tut_vCPE_guard_not_queried.JPG differ
index 8e32dc0..b1818d3 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_guard_result.JPG and b/docs/platform/Tut_vCPE_guard_result.JPG differ
index fec0704..6f5f21b 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_inject_appc_response.JPG and b/docs/platform/Tut_vCPE_inject_appc_response.JPG differ
index f850d12..d0da4d5 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_insert_abatement.JPG and b/docs/platform/Tut_vCPE_insert_abatement.JPG differ
index e0aea9f..0316609 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_insert_onset.JPG and b/docs/platform/Tut_vCPE_insert_onset.JPG differ
index c9ccd9d..02544f4 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_policy_active.JPG and b/docs/platform/Tut_vCPE_policy_active.JPG differ
index ed0e785..f063d09 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_policy_final_success.JPG and b/docs/platform/Tut_vCPE_policy_final_success.JPG differ
index dd41866..1666ea6 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_policy_operation.JPG and b/docs/platform/Tut_vCPE_policy_operation.JPG differ
index 9362cc2..9206847 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_policy_operation_success.JPG and b/docs/platform/Tut_vCPE_policy_operation_success.JPG differ
index a33a24c..91be90e 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_policy_start.JPG and b/docs/platform/Tut_vCPE_policy_start.JPG differ
index 06f173f..2133ff8 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_simulated_abatement.JPG and b/docs/platform/Tut_vCPE_simulated_abatement.JPG differ
index 69699f4..3d90e04 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_simulated_appc_response.JPG and b/docs/platform/Tut_vCPE_simulated_appc_response.JPG differ
index 5ee0901..a50b3c2 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_simulated_onset.JPG and b/docs/platform/Tut_vCPE_simulated_onset.JPG differ
index f350e2c..8cd9902 100755 (executable)
Binary files a/docs/platform/Tut_vCPE_simulators_enabled.JPG and b/docs/platform/Tut_vCPE_simulators_enabled.JPG differ
index 3fa0e03..1b00d60 100755 (executable)
Binary files a/docs/platform/Tut_vFW_aai_get.JPG and b/docs/platform/Tut_vFW_aai_get.JPG differ
index a07e7b0..c7f86f9 100755 (executable)
Binary files a/docs/platform/Tut_vFW_aai_named_query_request.JPG and b/docs/platform/Tut_vFW_aai_named_query_request.JPG differ
index d611629..b3a9fa9 100755 (executable)
Binary files a/docs/platform/Tut_vFW_aai_named_query_response.JPG and b/docs/platform/Tut_vFW_aai_named_query_response.JPG differ
index 2215e66..737719f 100755 (executable)
Binary files a/docs/platform/Tut_vFW_appc_request.JPG and b/docs/platform/Tut_vFW_appc_request.JPG differ
index 2f9661e..f68aac7 100755 (executable)
Binary files a/docs/platform/Tut_vFW_final_memory.JPG and b/docs/platform/Tut_vFW_final_memory.JPG differ
index 2b9198e..2763725 100755 (executable)
Binary files a/docs/platform/Tut_vFW_get_facts.JPG and b/docs/platform/Tut_vFW_get_facts.JPG differ
index 3344c80..4bf8e9f 100755 (executable)
Binary files a/docs/platform/Tut_vFW_get_facts_2.JPG and b/docs/platform/Tut_vFW_get_facts_2.JPG differ
index 5e2edf9..d631603 100755 (executable)
Binary files a/docs/platform/Tut_vFW_insert_appc_response.JPG and b/docs/platform/Tut_vFW_insert_appc_response.JPG differ
index 0852ff8..ebff2e3 100755 (executable)
Binary files a/docs/platform/Tut_vFW_onset_injected.JPG and b/docs/platform/Tut_vFW_onset_injected.JPG differ
index 3eb8568..d3530a7 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_active.JPG and b/docs/platform/Tut_vFW_policy_active.JPG differ
index 1fa4a0c..bdb7858 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_final_success.JPG and b/docs/platform/Tut_vFW_policy_final_success.JPG differ
index 03bcbe7..89a2f4f 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_guard_result.JPG and b/docs/platform/Tut_vFW_policy_guard_result.JPG differ
index dc8dea9..1aa5490 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_guard_start.JPG and b/docs/platform/Tut_vFW_policy_guard_start.JPG differ
index ce452cb..0203c93 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_operation_start.JPG and b/docs/platform/Tut_vFW_policy_operation_start.JPG differ
index 1ada6e9..8e4b8e1 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_operation_success.JPG and b/docs/platform/Tut_vFW_policy_operation_success.JPG differ
index a33a24c..91be90e 100755 (executable)
Binary files a/docs/platform/Tut_vFW_policy_start.JPG and b/docs/platform/Tut_vFW_policy_start.JPG differ
index c1d022c..8ceb89c 100755 (executable)
Binary files a/docs/platform/Tut_vFW_simulated_appc_response.JPG and b/docs/platform/Tut_vFW_simulated_appc_response.JPG differ
index 65ccafa..b6d4011 100755 (executable)
Binary files a/docs/platform/Tut_vFW_simulated_onset.JPG and b/docs/platform/Tut_vFW_simulated_onset.JPG differ
index f350e2c..8cd9902 100755 (executable)
Binary files a/docs/platform/Tut_vFW_simulators_enabled.JPG and b/docs/platform/Tut_vFW_simulators_enabled.JPG differ
index bb87669..0492a25 100644 (file)
@@ -194,6 +194,7 @@ Responses
           "vserver-name2": "vjunos0",
           "vserver-selflink": "https://aai-ext1.test.att.com:8443/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/AAIAIC25/tenants/tenant/USMSO1SX7NJ0103UJZZ01%3A%3AuCPE-VMS/vservers/vserver/d0668d4f-c25e-4a1b-87c4-83845c01efd8",
           "in-maint": false,
+          "prov-status":"ACTIVE",
           "is-closed-loop-disabled": isDisabled, // True if the vserverName is "disableClosedLoop", false otherwise
           "resource-version": "1494001931513",
           "relationship-list": {
@@ -222,7 +223,7 @@ Responses
           }
          }]
         }
-
+        
 
     .. code-block:: bash
        :caption: vserver-GET-error
index 04cf799..d52e4c7 100755 (executable)
Binary files a/docs/platform/mat_hello_world.JPG and b/docs/platform/mat_hello_world.JPG differ
index b2bcd88..136efe7 100644 (file)
@@ -36,7 +36,7 @@ To interact with the PDP-D, the Telemetry API can be used. A simple GET on the e
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n -X GET http://localhost:9696/policy/pdp/engine/ | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n -X GET https://localhost:9696/policy/pdp/engine/ | python -m json.tool
 
     .. image:: RunEcl_telemetry.png
 
index 3ccb027..2dc8462 100644 (file)
@@ -58,28 +58,27 @@ Next, we're going to create a file named *dcae.volte.onset.json* and edit it to
 Here are the contents of the VOLTE ONSET message. Copy/paste this into dcae.volte.onset.json:
 
     .. code-block:: json
-    
+
         {
+            "closedLoopControlName": "ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b",
+            "closedLoopAlarmStart": 1484677482204798,
             "closedLoopEventClient": "DCAE.HolmesInstance",
-            "policyVersion": "1.0.0.5",
-            "policyName": "vVOLTE",
-            "policyScope": "resource=volte,service=VolteSErvice,type=SampleType,closedLoopControlName=CL-VOLTE-SIG-d925ed73-8231-4d02-9545-db4e101f88f8",
+            "closedLoopEventStatus": "ONSET",
+            "requestID": "97964e10-686e-4790-8c45-bdfa61df770f",
             "target_type": "VM",
+            "target": "vserver.vserver-name",
             "AAI": {
+                "vserver.is-closed-loop-disabled": "false",
+                "vserver.prov-status": "ACTIVE",
                 "vserver.vserver-name": "dfw1lb01lb01",
-                "service-instance.service-instance-id" : "TBD",
-                "generic-vnf.vnf-id" : "TBD",
-                "generic-vnf.vnf-name" : "TBD"
+                "service-instance.service-instance-id" : "vserver-name-16102016-aai3255-data-11-1",
+                "generic-vnf.vnf-id" : "vnf-id-16102016-aai3255-data-11-1",
+                "generic-vnf.vnf-name" : "vnf-name-16102016-aai3255-data-11-1"
             },
-            "closedLoopAlarmStart": 1484677482204798,
-            "closedLoopEventStatus": "ONSET",
-            "closedLoopControlName": "ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b",
-            "version": "1.0.2",
-            "target": "vserver.vserver-name",
-            "requestID": "97964e10-686e-4790-8c45-bdfa61df770f",
-            "from": "DCAE"
+            "from": "DCAE",
+            "version": "1.0.2"
         }
-
+        
 
 Enabling the VFC Simulator
 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 
@@ -101,7 +100,7 @@ We are now ready to inject an ONSET message to trigger the VOLTE flow. Simply na
 
     .. code-block:: bash
     
-        http -a @1b3rt:31nst31n PUT :9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_CL_OUTPUT/events @dcae.volte.onset.json Content-Type:"text/plain"
+        http --verify=no --default-scheme=https -a @1b3rt:31nst31n PUT :9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_CL_OUTPUT/events @dcae.volte.onset.json Content-Type:"text/plain"
 
 You should see some output similar to this:
 
index c1ce8e4..938604d 100755 (executable)
Binary files a/docs/platform/tutorial_VOLTE_1.png and b/docs/platform/tutorial_VOLTE_1.png differ
index 51f7e7a..53ee780 100755 (executable)
Binary files a/docs/platform/tutorial_VOLTE_2.png and b/docs/platform/tutorial_VOLTE_2.png differ
index 7c6c9fb..9a2ac1a 100644 (file)
@@ -32,7 +32,7 @@ The telemetry API is used to see what is in memory. There should only be 1 fact,
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n -X GET http://localhost:9696/policy/pdp/engine/controllers/amsterdam/drools/facts/amsterdam | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n -X GET https://localhost:9696/policy/pdp/engine/controllers/amsterdam/drools/facts/amsterdam | python -m json.tool
 
 
     .. image:: Tut_vCPE_get_facts.JPG
@@ -47,7 +47,7 @@ Inject the onset using the Telemetry API.
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vcpe.onset.json -X PUT http://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vcpe.onset.json -X PUT https://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
 
     .. image:: Tut_vCPE_insert_onset.JPG
 
@@ -55,7 +55,6 @@ Inject the onset using the Telemetry API.
 
 Now check the facts in memory, there should be 7 objects present. Two timers exist to put a time limit on the operation and on the overall control loop (in the case of retries or policy chaining). The event and it's associated manager and operation manager are also present in memory. A lock on the target entity is inserted to ensure no other events try to take action on the VM/VNF that is currently processing.
 
-
     .. image:: Tut_vCPE_get_facts_2.JPG
 
 The network log will be used to monitor the activity coming in and out of the PDP-D. This log is located at *$POLICY_HOME/logs/network.log*. This will show the notifications that the PDP-D sends out at different stages of processing. The order of successful processing begins with an ACTIVE notification to show that the onset was acknowledged and the operation is beginning transit.
@@ -66,8 +65,12 @@ Once the event is in the ACTIVE state, the PDP-D consults Guard to determine if
 
     .. image:: Tut_vCPE_guard_not_queried.JPG
 
+|
+
     .. image:: Tut_vCPE_guard_result.JPG
 
+|
+
     .. image:: Tut_vCPE_policy_operation.JPG
 
 Once the operation starts an APPC request is sent out.
@@ -82,7 +85,7 @@ Inject the response using the Telemetry API.
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @appc.lcm.success.json -X PUT http://localhost:9696/policy/pdp/engine/topics/sources/ueb/APPC-LCM-WRITE/events | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @appc.lcm.success.json -X PUT https://localhost:9696/policy/pdp/engine/topics/sources/ueb/APPC-LCM-WRITE/events | python -m json.tool
 
     .. image:: Tut_vCPE_inject_appc_response.JPG
 
@@ -98,7 +101,7 @@ Inject the abatement message using the Telemetry API.
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vcpe.abatement.json -X PUT http://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vcpe.abatement.json -X PUT https://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
 
     .. image:: Tut_vCPE_insert_abatement.JPG
 
index 5e864a8..330bb64 100644 (file)
@@ -59,20 +59,23 @@ Here are the contents of the vDNS ONSET message. Copy/paste this into dcae.vdns.
 
     .. code-block:: json
     
-        {  "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",  
-           "target_type": "VNF",  
-           "AAI": {   
-               "vserver.vserver-name": "vlb-lb-32c8",   
-               "vserver.is-closed-loop-disabled": "false"  
-           },  
-           "closedLoopAlarmStart": 1484677482204798,  
-           "closedLoopEventStatus": "ONSET",  
-           "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",  
-           "version": "1.0.2",  
-           "target": "vserver.vserver-name",  
-           "requestID": "99999999-686e-4790-8c45-bdfa61df770f",  
-           "from": "DCAE" 
+        {
+          "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
+          "closedLoopAlarmStart": 1484677482204798,
+          "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
+          "closedLoopEventStatus": "ONSET",
+          "requestID": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6",
+          "target_type": "VNF",
+          "target": "vserver.vserver-name",
+          "AAI": {
+            "vserver.is-closed-loop-disabled": "false",
+            "vserver.prov-status": "ACTIVE",
+            "vserver.vserver-name": "dfw1lb01lb01"
+          },
+          "from": "DCAE",
+          "version": "1.0.2"
         }
+        
 
 
 Enabling the AAI and SO Simulators
@@ -95,11 +98,11 @@ We are now ready to inject an ONSET message to trigger the vDNS flow. Simply nav
 
     .. code-block:: bash
     
-        http -a @1b3rt:31nst31n PUT :9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_CL_OUTPUT/events @dcae.vdns.onset.json Content-Type:"text/plain"
+        http --verify=no --default-scheme=https -a @1b3rt:31nst31n PUT :9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_CL_OUTPUT/events @dcae.vdns.onset.json Content-Type:"text/plain"
 
 You should see some output similar to this:
 
-.. image:: tutorial_vDNS_1.png
+    .. image:: tutorial_vDNS_1.png
 
 You can view the logs to see the network activity or find any errors that may have occurred. Logs are located in */opt/app/policy/logs*.
 
@@ -108,9 +111,9 @@ Reading the logs
 
 Once you've injected the onset message, this should appear in the network.log:
 
-.. image:: tutorial_vDNS_2.png
+    .. image:: tutorial_vDNS_2.png
 
 
 End of Document
 
-.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Using+guard+in+the+PDP-D
+.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Tutorial%3A+Testing+the+vDNS+Use+Case+in+a+standalone+PDP-D
old mode 100755 (executable)
new mode 100644 (file)
index a9c3e6e..ed2cb36
Binary files a/docs/platform/tutorial_vDNS_1.png and b/docs/platform/tutorial_vDNS_1.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 8de7853..bbfb820
Binary files a/docs/platform/tutorial_vDNS_2.png and b/docs/platform/tutorial_vDNS_2.png differ
index 4b402d0..72288f3 100644 (file)
@@ -32,7 +32,7 @@ The telemetry API is used to see what is in memory. There should only be 1 fact,
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n -X GET http://localhost:9696/policy/pdp/engine/controllers/amsterdam/drools/facts/amsterdam | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n -X GET https://localhost:9696/policy/pdp/engine/controllers/amsterdam/drools/facts/amsterdam | python -m json.tool
 
     .. image:: Tut_vFW_get_facts.JPG
 
@@ -46,7 +46,7 @@ Inject the onset using the Telemetry API.
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vfw.onset.json -X PUT http://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @dcae.vfw.onset.json -X PUT https://localhost:9696/policy/pdp/engine/topics/sources/ueb/unauthenticated.DCAE_EVENT_OUTPUT/events | python -m json.tool
 
     .. image:: Tut_vFW_onset_injected.JPG
 
@@ -76,8 +76,12 @@ Once the target entity is found, the PDP-D consults Guard to determine if this o
 
     .. image:: Tut_vFW_policy_guard_start.JPG
 
+|
+
     .. image:: Tut_vFW_policy_guard_result.JPG
 
+|
+
     .. image:: Tut_vFW_policy_operation_start.JPG
 
 Once the operation starts an APPC request is sent out.
@@ -92,7 +96,7 @@ Inject the response using the Telemetry API.
 
     .. code-block:: bash
 
-        curl --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @appc.legacy.success.json -X PUT http://localhost:9696/policy/pdp/engine/topics/sources/ueb/APPC-CL/events | python -m json.tool
+        curl -k --silent --user @1b3rt:31nst31n --header "Content-Type: text/plain" --data @appc.legacy.success.json -X PUT https://localhost:9696/policy/pdp/engine/topics/sources/ueb/APPC-CL/events | python -m json.tool
 
     .. image:: Tut_vFW_insert_appc_response.JPG
 
index 9f0b35d..e69c658 100644 (file)
@@ -145,8 +145,6 @@ The Casablanca release for POLICY delivered the following Epics. For a full list
 
 The following bug fixes have been deployed with this release:
 
-    * `[POLICY-484] <https://jira.onap.org/browse/POLICY-484>`_ - Extend election handler run window and clean up error messages
-
     * `[POLICY-909] <https://jira.onap.org/browse/POLICY-909>`_ - get_ZoneDictionaryDataByName class type error
     * `[POLICY-1085] <https://jira.onap.org/browse/POLICY-1085>`_ - Stand-alone install will not run
     * `[POLICY-1106] <https://jira.onap.org/browse/POLICY-1106>`_ - Checkstyle fixes appear to have broken persistence
@@ -156,7 +154,13 @@ The following bug fixes have been deployed with this release:
     * `[POLICY-1155] <https://jira.onap.org/browse/POLICY-1155>`_ - PDP-D [APPS] : DRL Templates Compilation Errors
     * `[POLICY-1158] <https://jira.onap.org/browse/POLICY-1158>`_ - meet ASDC_AUTHORIZATION_FAILED for client setting
     * `[POLICY-1160] <https://jira.onap.org/browse/POLICY-1160>`_ - meet nullPointer exception based on the new schema of HPA capability requirement
-
+    * `[POLICY-1192] <https://jira.onap.org/browse/POLICY-1192>`_ - Update portal.properties in PE for AAF integration
+    * `[POLICY-1193] <https://jira.onap.org/browse/POLICY-1193>`_ - Policy: Heat Installation: policy host in certificate was generated incorrectly
+    * `[POLICY-1194] <https://jira.onap.org/browse/POLICY-1194>`_ - Policy: Heat installation: reconfigure URLs to point to a DNS hostname that matches the DMaaP certificate
+    * `[POLICY-1198] <https://jira.onap.org/browse/POLICY-1198>`_ - POLICY: OOM: PAP: cannot talk https directly to PDP-X pod bypassing service
+    * `[POLICY-1200] <https://jira.onap.org/browse/POLICY-1200>`_ - meet NullPointerException error since the PolicyScope should be set a default value
+    * `[POLICY-1201] <https://jira.onap.org/browse/POLICY-1201>`_ - Error while forwarding policy from policy-distribution to apex-pdp
+    * `[POLICY-1204] <https://jira.onap.org/browse/POLICY-1204>`_ - PAPLP: invalid schema database errors
 
 
 **Security Notes**
index b060292..6f2f151 100644 (file)
@@ -17,4 +17,9 @@
 -- ============LICENSE_END=========================================================
 use onap_sdk;
 update fn_app set APP_PASSWORD = '/xMjAl0TB1FgnHih2qA4V5gUkFQNZaK1fiNf3QlRaLI=' where app_id =1;
+
+use log;
+ALTER TABLE systemlogdb
+MODIFY remote varchar(255) null;
+
 commit;
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4c055ac..e33efe9 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -81,6 +81,7 @@
         <module>POLICY-SDK-APP</module>
         <module>ONAP-SDK-APP</module>
         <module>packages</module>
+        <module>TestSuite</module>
     </modules>
     <distributionManagement>
         <repository>