summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java288
-rw-r--r--TestSuite/Performance/pom.xml34
-rw-r--r--TestSuite/Performance/src/main/resources/testplans/PerformancePDPXdecisionsTestPlan.jmx1619
-rw-r--r--TestSuite/Stability/pom.xml34
-rw-r--r--TestSuite/Stability/src/main/resources/testplans/XacmlPdpTestPlan.jmx732
-rw-r--r--TestSuite/pom.xml36
-rwxr-xr-xdocs/platform/RunEcl_telemetry.pngbin196878 -> 10547 bytes
-rwxr-xr-xdocs/platform/Tut_cl_confirmAndDirectory.PNGbin23009 -> 3936 bytes
-rwxr-xr-xdocs/platform/Tut_cl_finalStep.PNGbin29863 -> 4897 bytes
-rwxr-xr-xdocs/platform/Tut_cl_preDeploy.PNGbin24600 -> 5523 bytes
-rwxr-xr-xdocs/platform/Tut_cl_propFile.PNGbin6029 -> 1957 bytes
-rwxr-xr-xdocs/platform/Tut_cl_valuesHighlight.pngbin86319 -> 42778 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_appc_request.JPGbin67534 -> 56962 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_final_memory.JPGbin28333 -> 22558 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_get_facts.JPGbin27806 -> 23109 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_get_facts_2.JPGbin58905 -> 49524 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_guard_not_queried.JPGbin109468 -> 84978 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_guard_result.JPGbin106475 -> 69855 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_inject_appc_response.JPGbin64526 -> 78116 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_insert_abatement.JPGbin160715 -> 119192 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_insert_onset.JPGbin96526 -> 76924 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_policy_active.JPGbin106966 -> 70803 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_policy_final_success.JPGbin127833 -> 97867 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_policy_operation.JPGbin113837 -> 81980 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_policy_operation_success.JPGbin143048 -> 94969 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_policy_start.JPGbin16784 -> 12438 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_simulated_abatement.JPGbin69933 -> 55714 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_simulated_appc_response.JPGbin42586 -> 38742 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_simulated_onset.JPGbin67349 -> 50680 bytes
-rwxr-xr-xdocs/platform/Tut_vCPE_simulators_enabled.JPGbin34420 -> 23142 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_aai_get.JPGbin189259 -> 236040 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_aai_named_query_request.JPGbin49838 -> 37155 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_aai_named_query_response.JPGbin159269 -> 120139 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_appc_request.JPGbin77207 -> 64608 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_final_memory.JPGbin28333 -> 22558 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_get_facts.JPGbin27806 -> 23109 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_get_facts_2.JPGbin57808 -> 49524 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_insert_appc_response.JPGbin72401 -> 80927 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_onset_injected.JPGbin61028 -> 71215 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_active.JPGbin71657 -> 69632 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_final_success.JPGbin92351 -> 91758 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_guard_result.JPGbin74536 -> 72263 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_guard_start.JPGbin76845 -> 65518 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_operation_start.JPGbin83521 -> 84268 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_operation_success.JPGbin111772 -> 114571 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_policy_start.JPGbin16784 -> 12438 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_simulated_appc_response.JPGbin52482 -> 59739 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_simulated_onset.JPGbin38999 -> 38781 bytes
-rwxr-xr-xdocs/platform/Tut_vFW_simulators_enabled.JPGbin34420 -> 23142 bytes
-rw-r--r--docs/platform/clsimulation.rst3
-rwxr-xr-xdocs/platform/mat_hello_world.JPGbin139969 -> 71742 bytes
-rw-r--r--docs/platform/runningEclipse.rst2
-rw-r--r--docs/platform/tutorial_VOLTE.rst31
-rwxr-xr-xdocs/platform/tutorial_VOLTE_1.pngbin19686 -> 33482 bytes
-rwxr-xr-xdocs/platform/tutorial_VOLTE_2.pngbin11402 -> 26091 bytes
-rw-r--r--docs/platform/tutorial_vCPE.rst13
-rw-r--r--docs/platform/tutorial_vDNS.rst37
-rw-r--r--[-rwxr-xr-x]docs/platform/tutorial_vDNS_1.pngbin11696 -> 10737 bytes
-rw-r--r--[-rwxr-xr-x]docs/platform/tutorial_vDNS_2.pngbin7741 -> 7657 bytes
-rw-r--r--docs/platform/tutorial_vFW.rst10
-rw-r--r--docs/release-notes.rst10
-rw-r--r--packages/base/src/files/install/mysql/data/181003_upgrade_script.sql5
-rw-r--r--pom.xml1
63 files changed, 2657 insertions, 198 deletions
diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java b/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java
index 00c27eab5..924864443 100644
--- a/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java
+++ b/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidation.java
@@ -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
index 000000000..e7e27bc98
--- /dev/null
+++ b/TestSuite/Performance/pom.xml
@@ -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
index 000000000..e82a1abba
--- /dev/null
+++ b/TestSuite/Performance/src/main/resources/testplans/PerformancePDPXdecisionsTestPlan.jmx
@@ -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
index 000000000..e14d6a6d8
--- /dev/null
+++ b/TestSuite/Stability/pom.xml
@@ -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
index 000000000..93694e630
--- /dev/null
+++ b/TestSuite/Stability/src/main/resources/testplans/XacmlPdpTestPlan.jmx
@@ -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
index 000000000..50ede0d5d
--- /dev/null
+++ b/TestSuite/pom.xml
@@ -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
diff --git a/docs/platform/RunEcl_telemetry.png b/docs/platform/RunEcl_telemetry.png
index 38e361fc8..ae4f65ccc 100755
--- a/docs/platform/RunEcl_telemetry.png
+++ b/docs/platform/RunEcl_telemetry.png
Binary files differ
diff --git a/docs/platform/Tut_cl_confirmAndDirectory.PNG b/docs/platform/Tut_cl_confirmAndDirectory.PNG
index 9a7f20db6..cdb84a891 100755
--- a/docs/platform/Tut_cl_confirmAndDirectory.PNG
+++ b/docs/platform/Tut_cl_confirmAndDirectory.PNG
Binary files differ
diff --git a/docs/platform/Tut_cl_finalStep.PNG b/docs/platform/Tut_cl_finalStep.PNG
index 6f6e2183c..b56b06e4a 100755
--- a/docs/platform/Tut_cl_finalStep.PNG
+++ b/docs/platform/Tut_cl_finalStep.PNG
Binary files differ
diff --git a/docs/platform/Tut_cl_preDeploy.PNG b/docs/platform/Tut_cl_preDeploy.PNG
index 1b0bf0d7c..69a2cdb12 100755
--- a/docs/platform/Tut_cl_preDeploy.PNG
+++ b/docs/platform/Tut_cl_preDeploy.PNG
Binary files differ
diff --git a/docs/platform/Tut_cl_propFile.PNG b/docs/platform/Tut_cl_propFile.PNG
index 5c0d86541..960e182d7 100755
--- a/docs/platform/Tut_cl_propFile.PNG
+++ b/docs/platform/Tut_cl_propFile.PNG
Binary files differ
diff --git a/docs/platform/Tut_cl_valuesHighlight.png b/docs/platform/Tut_cl_valuesHighlight.png
index e8d385293..7a4bb7901 100755
--- a/docs/platform/Tut_cl_valuesHighlight.png
+++ b/docs/platform/Tut_cl_valuesHighlight.png
Binary files differ
diff --git a/docs/platform/Tut_vCPE_appc_request.JPG b/docs/platform/Tut_vCPE_appc_request.JPG
index fd9d11e2b..75d8848a5 100755
--- a/docs/platform/Tut_vCPE_appc_request.JPG
+++ b/docs/platform/Tut_vCPE_appc_request.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_final_memory.JPG b/docs/platform/Tut_vCPE_final_memory.JPG
index 2f9661e47..f68aac796 100755
--- a/docs/platform/Tut_vCPE_final_memory.JPG
+++ b/docs/platform/Tut_vCPE_final_memory.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_get_facts.JPG b/docs/platform/Tut_vCPE_get_facts.JPG
index 2b9198efb..276372574 100755
--- a/docs/platform/Tut_vCPE_get_facts.JPG
+++ b/docs/platform/Tut_vCPE_get_facts.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_get_facts_2.JPG b/docs/platform/Tut_vCPE_get_facts_2.JPG
index 32bdce9f0..4bf8e9f3d 100755
--- a/docs/platform/Tut_vCPE_get_facts_2.JPG
+++ b/docs/platform/Tut_vCPE_get_facts_2.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_guard_not_queried.JPG b/docs/platform/Tut_vCPE_guard_not_queried.JPG
index b30a4aa0e..14e52e790 100755
--- a/docs/platform/Tut_vCPE_guard_not_queried.JPG
+++ b/docs/platform/Tut_vCPE_guard_not_queried.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_guard_result.JPG b/docs/platform/Tut_vCPE_guard_result.JPG
index 8e32dc0c6..b1818d39c 100755
--- a/docs/platform/Tut_vCPE_guard_result.JPG
+++ b/docs/platform/Tut_vCPE_guard_result.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_inject_appc_response.JPG b/docs/platform/Tut_vCPE_inject_appc_response.JPG
index fec070473..6f5f21ba9 100755
--- a/docs/platform/Tut_vCPE_inject_appc_response.JPG
+++ b/docs/platform/Tut_vCPE_inject_appc_response.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_insert_abatement.JPG b/docs/platform/Tut_vCPE_insert_abatement.JPG
index f850d12b9..d0da4d5d4 100755
--- a/docs/platform/Tut_vCPE_insert_abatement.JPG
+++ b/docs/platform/Tut_vCPE_insert_abatement.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_insert_onset.JPG b/docs/platform/Tut_vCPE_insert_onset.JPG
index e0aea9f6a..0316609a8 100755
--- a/docs/platform/Tut_vCPE_insert_onset.JPG
+++ b/docs/platform/Tut_vCPE_insert_onset.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_policy_active.JPG b/docs/platform/Tut_vCPE_policy_active.JPG
index c9ccd9d53..02544f417 100755
--- a/docs/platform/Tut_vCPE_policy_active.JPG
+++ b/docs/platform/Tut_vCPE_policy_active.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_policy_final_success.JPG b/docs/platform/Tut_vCPE_policy_final_success.JPG
index ed0e78509..f063d09cd 100755
--- a/docs/platform/Tut_vCPE_policy_final_success.JPG
+++ b/docs/platform/Tut_vCPE_policy_final_success.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_policy_operation.JPG b/docs/platform/Tut_vCPE_policy_operation.JPG
index dd4186652..1666ea623 100755
--- a/docs/platform/Tut_vCPE_policy_operation.JPG
+++ b/docs/platform/Tut_vCPE_policy_operation.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_policy_operation_success.JPG b/docs/platform/Tut_vCPE_policy_operation_success.JPG
index 9362cc29b..9206847f1 100755
--- a/docs/platform/Tut_vCPE_policy_operation_success.JPG
+++ b/docs/platform/Tut_vCPE_policy_operation_success.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_policy_start.JPG b/docs/platform/Tut_vCPE_policy_start.JPG
index a33a24cd0..91be90e68 100755
--- a/docs/platform/Tut_vCPE_policy_start.JPG
+++ b/docs/platform/Tut_vCPE_policy_start.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_simulated_abatement.JPG b/docs/platform/Tut_vCPE_simulated_abatement.JPG
index 06f173fbe..2133ff859 100755
--- a/docs/platform/Tut_vCPE_simulated_abatement.JPG
+++ b/docs/platform/Tut_vCPE_simulated_abatement.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_simulated_appc_response.JPG b/docs/platform/Tut_vCPE_simulated_appc_response.JPG
index 69699f4f2..3d90e04d8 100755
--- a/docs/platform/Tut_vCPE_simulated_appc_response.JPG
+++ b/docs/platform/Tut_vCPE_simulated_appc_response.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_simulated_onset.JPG b/docs/platform/Tut_vCPE_simulated_onset.JPG
index 5ee0901b6..a50b3c298 100755
--- a/docs/platform/Tut_vCPE_simulated_onset.JPG
+++ b/docs/platform/Tut_vCPE_simulated_onset.JPG
Binary files differ
diff --git a/docs/platform/Tut_vCPE_simulators_enabled.JPG b/docs/platform/Tut_vCPE_simulators_enabled.JPG
index f350e2c25..8cd9902df 100755
--- a/docs/platform/Tut_vCPE_simulators_enabled.JPG
+++ b/docs/platform/Tut_vCPE_simulators_enabled.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_aai_get.JPG b/docs/platform/Tut_vFW_aai_get.JPG
index 3fa0e0353..1b00d60b5 100755
--- a/docs/platform/Tut_vFW_aai_get.JPG
+++ b/docs/platform/Tut_vFW_aai_get.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_aai_named_query_request.JPG b/docs/platform/Tut_vFW_aai_named_query_request.JPG
index a07e7b056..c7f86f93f 100755
--- a/docs/platform/Tut_vFW_aai_named_query_request.JPG
+++ b/docs/platform/Tut_vFW_aai_named_query_request.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_aai_named_query_response.JPG b/docs/platform/Tut_vFW_aai_named_query_response.JPG
index d6116292b..b3a9fa94d 100755
--- a/docs/platform/Tut_vFW_aai_named_query_response.JPG
+++ b/docs/platform/Tut_vFW_aai_named_query_response.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_appc_request.JPG b/docs/platform/Tut_vFW_appc_request.JPG
index 2215e6694..737719f79 100755
--- a/docs/platform/Tut_vFW_appc_request.JPG
+++ b/docs/platform/Tut_vFW_appc_request.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_final_memory.JPG b/docs/platform/Tut_vFW_final_memory.JPG
index 2f9661e47..f68aac796 100755
--- a/docs/platform/Tut_vFW_final_memory.JPG
+++ b/docs/platform/Tut_vFW_final_memory.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_get_facts.JPG b/docs/platform/Tut_vFW_get_facts.JPG
index 2b9198efb..276372574 100755
--- a/docs/platform/Tut_vFW_get_facts.JPG
+++ b/docs/platform/Tut_vFW_get_facts.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_get_facts_2.JPG b/docs/platform/Tut_vFW_get_facts_2.JPG
index 3344c80e0..4bf8e9f3d 100755
--- a/docs/platform/Tut_vFW_get_facts_2.JPG
+++ b/docs/platform/Tut_vFW_get_facts_2.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_insert_appc_response.JPG b/docs/platform/Tut_vFW_insert_appc_response.JPG
index 5e2edf949..d631603c2 100755
--- a/docs/platform/Tut_vFW_insert_appc_response.JPG
+++ b/docs/platform/Tut_vFW_insert_appc_response.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_onset_injected.JPG b/docs/platform/Tut_vFW_onset_injected.JPG
index 0852ff8a8..ebff2e363 100755
--- a/docs/platform/Tut_vFW_onset_injected.JPG
+++ b/docs/platform/Tut_vFW_onset_injected.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_active.JPG b/docs/platform/Tut_vFW_policy_active.JPG
index 3eb856831..d3530a74f 100755
--- a/docs/platform/Tut_vFW_policy_active.JPG
+++ b/docs/platform/Tut_vFW_policy_active.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_final_success.JPG b/docs/platform/Tut_vFW_policy_final_success.JPG
index 1fa4a0c2d..bdb7858b8 100755
--- a/docs/platform/Tut_vFW_policy_final_success.JPG
+++ b/docs/platform/Tut_vFW_policy_final_success.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_guard_result.JPG b/docs/platform/Tut_vFW_policy_guard_result.JPG
index 03bcbe7ce..89a2f4f8e 100755
--- a/docs/platform/Tut_vFW_policy_guard_result.JPG
+++ b/docs/platform/Tut_vFW_policy_guard_result.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_guard_start.JPG b/docs/platform/Tut_vFW_policy_guard_start.JPG
index dc8dea915..1aa5490a0 100755
--- a/docs/platform/Tut_vFW_policy_guard_start.JPG
+++ b/docs/platform/Tut_vFW_policy_guard_start.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_operation_start.JPG b/docs/platform/Tut_vFW_policy_operation_start.JPG
index ce452cbd8..0203c93a1 100755
--- a/docs/platform/Tut_vFW_policy_operation_start.JPG
+++ b/docs/platform/Tut_vFW_policy_operation_start.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_operation_success.JPG b/docs/platform/Tut_vFW_policy_operation_success.JPG
index 1ada6e935..8e4b8e186 100755
--- a/docs/platform/Tut_vFW_policy_operation_success.JPG
+++ b/docs/platform/Tut_vFW_policy_operation_success.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_policy_start.JPG b/docs/platform/Tut_vFW_policy_start.JPG
index a33a24cd0..91be90e68 100755
--- a/docs/platform/Tut_vFW_policy_start.JPG
+++ b/docs/platform/Tut_vFW_policy_start.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_simulated_appc_response.JPG b/docs/platform/Tut_vFW_simulated_appc_response.JPG
index c1d022c31..8ceb89cfc 100755
--- a/docs/platform/Tut_vFW_simulated_appc_response.JPG
+++ b/docs/platform/Tut_vFW_simulated_appc_response.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_simulated_onset.JPG b/docs/platform/Tut_vFW_simulated_onset.JPG
index 65ccafafd..b6d40113f 100755
--- a/docs/platform/Tut_vFW_simulated_onset.JPG
+++ b/docs/platform/Tut_vFW_simulated_onset.JPG
Binary files differ
diff --git a/docs/platform/Tut_vFW_simulators_enabled.JPG b/docs/platform/Tut_vFW_simulators_enabled.JPG
index f350e2c25..8cd9902df 100755
--- a/docs/platform/Tut_vFW_simulators_enabled.JPG
+++ b/docs/platform/Tut_vFW_simulators_enabled.JPG
Binary files differ
diff --git a/docs/platform/clsimulation.rst b/docs/platform/clsimulation.rst
index bb8766901..0492a2594 100644
--- a/docs/platform/clsimulation.rst
+++ b/docs/platform/clsimulation.rst
@@ -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
diff --git a/docs/platform/mat_hello_world.JPG b/docs/platform/mat_hello_world.JPG
index 04cf799ce..d52e4c754 100755
--- a/docs/platform/mat_hello_world.JPG
+++ b/docs/platform/mat_hello_world.JPG
Binary files differ
diff --git a/docs/platform/runningEclipse.rst b/docs/platform/runningEclipse.rst
index b2bcd88fa..136efe736 100644
--- a/docs/platform/runningEclipse.rst
+++ b/docs/platform/runningEclipse.rst
@@ -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
diff --git a/docs/platform/tutorial_VOLTE.rst b/docs/platform/tutorial_VOLTE.rst
index 3ccb02704..2dc846282 100644
--- a/docs/platform/tutorial_VOLTE.rst
+++ b/docs/platform/tutorial_VOLTE.rst
@@ -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:
diff --git a/docs/platform/tutorial_VOLTE_1.png b/docs/platform/tutorial_VOLTE_1.png
index c1ce8e4be..938604df3 100755
--- a/docs/platform/tutorial_VOLTE_1.png
+++ b/docs/platform/tutorial_VOLTE_1.png
Binary files differ
diff --git a/docs/platform/tutorial_VOLTE_2.png b/docs/platform/tutorial_VOLTE_2.png
index 51f7e7aeb..53ee78026 100755
--- a/docs/platform/tutorial_VOLTE_2.png
+++ b/docs/platform/tutorial_VOLTE_2.png
Binary files differ
diff --git a/docs/platform/tutorial_vCPE.rst b/docs/platform/tutorial_vCPE.rst
index 7c6c9fb05..9a2ac1a4d 100644
--- a/docs/platform/tutorial_vCPE.rst
+++ b/docs/platform/tutorial_vCPE.rst
@@ -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
diff --git a/docs/platform/tutorial_vDNS.rst b/docs/platform/tutorial_vDNS.rst
index 5e864a8a2..330bb64ef 100644
--- a/docs/platform/tutorial_vDNS.rst
+++ b/docs/platform/tutorial_vDNS.rst
@@ -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
diff --git a/docs/platform/tutorial_vDNS_1.png b/docs/platform/tutorial_vDNS_1.png
index a9c3e6e18..ed2cb36f4 100755..100644
--- a/docs/platform/tutorial_vDNS_1.png
+++ b/docs/platform/tutorial_vDNS_1.png
Binary files differ
diff --git a/docs/platform/tutorial_vDNS_2.png b/docs/platform/tutorial_vDNS_2.png
index 8de785362..bbfb82066 100755..100644
--- a/docs/platform/tutorial_vDNS_2.png
+++ b/docs/platform/tutorial_vDNS_2.png
Binary files differ
diff --git a/docs/platform/tutorial_vFW.rst b/docs/platform/tutorial_vFW.rst
index 4b402d017..72288f339 100644
--- a/docs/platform/tutorial_vFW.rst
+++ b/docs/platform/tutorial_vFW.rst
@@ -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
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 9f0b35d98..e69c65889 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -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**
diff --git a/packages/base/src/files/install/mysql/data/181003_upgrade_script.sql b/packages/base/src/files/install/mysql/data/181003_upgrade_script.sql
index b060292fe..6f2f151cd 100644
--- a/packages/base/src/files/install/mysql/data/181003_upgrade_script.sql
+++ b/packages/base/src/files/install/mysql/data/181003_upgrade_script.sql
@@ -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 4c055ac0e..e33efe9cb 100644
--- 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>