diff options
Diffstat (limited to 'testsuites/performance')
-rw-r--r-- | testsuites/performance/pom.xml | 31 | ||||
-rw-r--r-- | testsuites/performance/src/main/resources/testplans/performance.jmx | 2292 | ||||
-rw-r--r-- | testsuites/performance/src/main/resources/testplans/results.sh | 32 |
3 files changed, 2355 insertions, 0 deletions
diff --git a/testsuites/performance/pom.xml b/testsuites/performance/pom.xml new file mode 100644 index 000000000..71a20d4f9 --- /dev/null +++ b/testsuites/performance/pom.xml @@ -0,0 +1,31 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2021 Nordix Foundation. + ================================================================================ + 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. + + SPDX-License-Identifier: Apache-2.0 + ============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.clamp</groupId> + <artifactId>clamp-testsuites</artifactId> + <version>6.1.3-SNAPSHOT</version> + </parent> + + <artifactId>clamp-performance</artifactId> +</project> diff --git a/testsuites/performance/src/main/resources/testplans/performance.jmx b/testsuites/performance/src/main/resources/testplans/performance.jmx new file mode 100644 index 000000000..bb0cfc98d --- /dev/null +++ b/testsuites/performance/src/main/resources/testplans/performance.jmx @@ -0,0 +1,2292 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Policy Clamp ControlLoop Performance" enabled="true"> + <stringProp name="TestPlan.comments">Policy Clamp ControlLoop Performance Tests</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">true</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="RUNTIME_HOST" elementType="Argument"> + <stringProp name="Argument.name">RUNTIME_HOST</stringProp> + <stringProp name="Argument.value">192.168.32.9</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="RUNTIME_PORT" elementType="Argument"> + <stringProp name="Argument.name">RUNTIME_PORT</stringProp> + <stringProp name="Argument.value">6969</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="POLICY_PARTICIPANT_HOST" elementType="Argument"> + <stringProp name="Argument.name">POLICY_PARTICIPANT_HOST</stringProp> + <stringProp name="Argument.value">192.168.32.8</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="POLICY_PARTICIPANT_PORT" elementType="Argument"> + <stringProp name="Argument.name">POLICY_PARTICIPANT_PORT</stringProp> + <stringProp name="Argument.value">6970</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="HOME_PATH" elementType="Argument"> + <stringProp name="Argument.name">HOME_PATH</stringProp> + <stringProp name="Argument.value">./</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="LOGS_PATH" elementType="Argument"> + <stringProp name="Argument.name">LOGS_PATH</stringProp> + <stringProp name="Argument.value">${HOME_PATH}/controlloop_perf/</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="DURATION" elementType="Argument"> + <stringProp name="Argument.name">DURATION</stringProp> + <stringProp name="Argument.value">${__P(DURATION,14400)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="USERS" elementType="Argument"> + <stringProp name="Argument.name">USERS</stringProp> + <stringProp name="Argument.value">${__P(USERS,5)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://${RUNTIME_HOST}:${RUNTIME_PORT}/onap/controlloop/v2</stringProp> + <stringProp name="Authorization.username">healthcheck</stringProp> + <stringProp name="Authorization.password">zb!XztG34</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.clearEachIteration">true</boolProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Accept</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">stoptest</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">260000</stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </SetupThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Comission control loop definition" 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">{
 + "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
 + "data_types": {
 + "onap.datatypes.ToscaConceptIdentifier": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "name": {
 + "type": "string",
 + "required": true
 + },
 + "version": {
 + "type": "string",
 + "required": true
 + }
 + }
 + },
 + "org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo": {
 + "name": "org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "consulUrl": {
 + "name": "consulUrl",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "Consul url for this entry",
 + "required": true
 + },
 + "consul_body": {
 + "name": "consulBody",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "Body of Consul entry",
 + "required": true
 + }
 + }
 + },
 + "onap.datatype.controlloop.Target": {
 + "derived_from": "tosca.datatypes.Root",
 + "description": "Definition for a entity in A&AI to perform a control loop operation on",
 + "properties": {
 + "targetType": {
 + "type": "string",
 + "description": "Category for the target type",
 + "required": true,
 + "constraints": [
 + {
 + "valid_values": [
 + "VNF",
 + "VM",
 + "VFMODULE",
 + "PNF"
 + ]
 + }
 + ]
 + },
 + "entityIds": {
 + "type": "map",
 + "description": "Map of values that identify the resource. If none are provided, it is assumed that the\nentity that generated the ONSET event will be the target.\n",
 + "required": false,
 + "metadata": {
 + "clamp_possible_values": "ClampExecution:CSAR_RESOURCES"
 + },
 + "entry_schema": {
 + "type": "string"
 + }
 + }
 + }
 + },
 + "onap.datatype.controlloop.Actor": {
 + "derived_from": "tosca.datatypes.Root",
 + "description": "An actor/operation/target definition",
 + "properties": {
 + "actor": {
 + "type": "string",
 + "description": "The actor performing the operation.",
 + "required": true,
 + "metadata": {
 + "clamp_possible_values": "Dictionary:DefaultActors,ClampExecution:CDS/actor"
 + }
 + },
 + "operation": {
 + "type": "string",
 + "description": "The operation the actor is performing.",
 + "metadata": {
 + "clamp_possible_values": "Dictionary:DefaultOperations,ClampExecution:CDS/operation"
 + },
 + "required": true
 + },
 + "target": {
 + "type": "onap.datatype.controlloop.Target",
 + "description": "The resource the operation should be performed on.",
 + "required": true
 + },
 + "payload": {
 + "type": "map",
 + "description": "Name/value pairs of payload information passed by Policy to the actor",
 + "required": false,
 + "metadata": {
 + "clamp_possible_values": "ClampExecution:CDS/payload"
 + },
 + "entry_schema": {
 + "type": "string"
 + }
 + }
 + }
 + },
 + "onap.datatype.controlloop.Operation": {
 + "derived_from": "tosca.datatypes.Root",
 + "description": "An operation supported by an actor",
 + "properties": {
 + "id": {
 + "type": "string",
 + "description": "Unique identifier for the operation",
 + "required": true
 + },
 + "description": {
 + "type": "string",
 + "description": "A user-friendly description of the intent for the operation",
 + "required": false
 + },
 + "operation": {
 + "type": "onap.datatype.controlloop.Actor",
 + "description": "The definition of the operation to be performed.",
 + "required": true
 + },
 + "timeout": {
 + "type": "integer",
 + "description": "The amount of time for the actor to perform the operation.",
 + "required": true
 + },
 + "retries": {
 + "type": "integer",
 + "description": "The number of retries the actor should attempt to perform the operation.",
 + "required": true,
 + "default": 0
 + },
 + "success": {
 + "type": "string",
 + "description": "Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.",
 + "required": false,
 + "default": "final_success"
 + },
 + "failure": {
 + "type": "string",
 + "description": "Points to the operation to invoke on Actor operation failure.",
 + "required": false,
 + "default": "final_failure"
 + },
 + "failure_timeout": {
 + "type": "string",
 + "description": "Points to the operation to invoke when the time out for the operation occurs.",
 + "required": false,
 + "default": "final_failure_timeout"
 + },
 + "failure_retries": {
 + "type": "string",
 + "description": "Points to the operation to invoke when the current operation has exceeded its max retries.",
 + "required": false,
 + "default": "final_failure_retries"
 + },
 + "failure_exception": {
 + "type": "string",
 + "description": "Points to the operation to invoke when the current operation causes an exception.",
 + "required": false,
 + "default": "final_failure_exception"
 + },
 + "failure_guard": {
 + "type": "string",
 + "description": "Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.",
 + "required": false,
 + "default": "final_failure_guard"
 + }
 + }
 + },
 + "onap.datatypes.monitoring.managedObjectDNsBasic": {
 + "constraints": [],
 + "properties": {
 + "DN": {
 + "name": "DN",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "Managed object distinguished name",
 + "required": true,
 + "constraints": [],
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.managedObjectDNsBasic",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.managedObjectDNsBasics": {
 + "constraints": [],
 + "properties": {
 + "managedObjectDNsBasic": {
 + "name": "managedObjectDNsBasic",
 + "type": "map",
 + "typeVersion": "0.0.0",
 + "description": "Managed object distinguished name object",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.managedObjectDNsBasic",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.managedObjectDNsBasics",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.measurementGroup": {
 + "constraints": [],
 + "properties": {
 + "measurementTypes": {
 + "name": "measurementTypes",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of measurement types",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.measurementTypes",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + },
 + "managedObjectDNsBasic": {
 + "name": "managedObjectDNsBasic",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of managed object distinguished names",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.managedObjectDNsBasics",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.measurementGroup",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.measurementGroups": {
 + "constraints": [],
 + "properties": {
 + "measurementGroup": {
 + "name": "measurementGroup",
 + "type": "map",
 + "typeVersion": "0.0.0",
 + "description": "Measurement Group",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.measurementGroup",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.measurementGroups",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.measurementType": {
 + "constraints": [],
 + "properties": {
 + "measurementType": {
 + "name": "measurementType",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "Measurement type",
 + "required": true,
 + "constraints": [],
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.measurementType",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.measurementTypes": {
 + "constraints": [],
 + "properties": {
 + "measurementType": {
 + "name": "measurementType",
 + "type": "map",
 + "typeVersion": "0.0.0",
 + "description": "Measurement type object",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.measurementType",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.measurementTypes",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.nfFilter": {
 + "constraints": [],
 + "properties": {
 + "modelNames": {
 + "name": "modelNames",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of model names",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + },
 + "modelInvariantIDs": {
 + "name": "modelInvariantIDs",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of model invariant IDs",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + },
 + "modelVersionIDs": {
 + "name": "modelVersionIDs",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of model version IDs",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + },
 + "nfNames": {
 + "name": "nfNames",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "List of network functions",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.nfFilter",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + },
 + "onap.datatypes.monitoring.subscription": {
 + "constraints": [],
 + "properties": {
 + "measurementGroups": {
 + "name": "measurementGroups",
 + "type": "list",
 + "typeVersion": "0.0.0",
 + "description": "Measurement Groups",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.measurementGroups",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + },
 + "fileBasedGP": {
 + "name": "fileBasedGP",
 + "type": "integer",
 + "typeVersion": "0.0.0",
 + "description": "File based granularity period",
 + "required": true,
 + "constraints": [],
 + "metadata": {}
 + },
 + "fileLocation": {
 + "name": "fileLocation",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "ROP file location",
 + "required": true,
 + "constraints": [],
 + "metadata": {}
 + },
 + "subscriptionName": {
 + "name": "subscriptionName",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "Name of the subscription",
 + "required": true,
 + "constraints": [],
 + "metadata": {}
 + },
 + "administrativeState": {
 + "name": "administrativeState",
 + "type": "string",
 + "typeVersion": "0.0.0",
 + "description": "State of the subscription",
 + "required": true,
 + "constraints": [
 + {
 + "valid_values": [
 + "LOCKED",
 + "UNLOCKED"
 + ]
 + }
 + ],
 + "metadata": {}
 + },
 + "nfFilter": {
 + "name": "nfFilter",
 + "type": "map",
 + "typeVersion": "0.0.0",
 + "description": "Network function filter",
 + "required": true,
 + "constraints": [],
 + "entry_schema": {
 + "type": "onap.datatypes.monitoring.nfFilter",
 + "typeVersion": "0.0.0",
 + "constraints": []
 + },
 + "metadata": {}
 + }
 + },
 + "name": "onap.datatypes.monitoring.subscription",
 + "version": "0.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "metadata": {}
 + }
 + },
 + "policy_types": {
 + "onap.policies.Monitoring": {
 + "derived_from": "tosca.policies.Root",
 + "description": "a base policy type for all policies that govern monitoring provisioning",
 + "version": "1.0.0",
 + "name": "onap.policies.Monitoring"
 + },
 + "onap.policies.test123": {
 + "derived_from": "tosca.policies.Root",
 + "description": "a base policy type for all policies that govern monitoring provisioning",
 + "version": "1.0.0",
 + "name": "onap.policies.test123"
 + },
 + "onap.policies.monitoring.dcae-pm-subscription-handler": {
 + "properties": {
 + "pmsh_policy": {
 + "name": "pmsh_policy",
 + "type": "onap.datatypes.monitoring.subscription",
 + "typeVersion": "0.0.0",
 + "description": "PMSH Policy JSON",
 + "required": false,
 + "constraints": [],
 + "metadata": {}
 + }
 + },
 + "name": "onap.policies.monitoring.dcae-pm-subscription-handler",
 + "version": "1.0.0",
 + "derived_from": "onap.policies.Monitoring",
 + "metadata": {}
 + },
 + "onap.policies.controlloop.operational.Common": {
 + "derived_from": "tosca.policies.Root",
 + "version": "1.0.0",
 + "name": "onap.policies.controlloop.operational.Common",
 + "description": "Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\nPolicy Types. This does NOT support the legacy Policy YAML policy type.\n",
 + "properties": {
 + "id": {
 + "type": "string",
 + "description": "The unique control loop id.",
 + "required": true
 + },
 + "timeout": {
 + "type": "integer",
 + "description": "Overall timeout for executing all the operations. This timeout should equal or exceed the total\ntimeout for each operation listed.\n",
 + "required": true
 + },
 + "abatement": {
 + "type": "boolean",
 + "description": "Whether an abatement event message will be expected for the control loop from DCAE.",
 + "required": true,
 + "default": false
 + },
 + "trigger": {
 + "type": "string",
 + "description": "Initial operation to execute upon receiving an Onset event message for the Control Loop.",
 + "required": true
 + },
 + "operations": {
 + "type": "list",
 + "description": "List of operations to be performed when Control Loop is triggered.",
 + "required": true,
 + "entry_schema": {
 + "type": "onap.datatype.controlloop.Operation"
 + }
 + }
 + }
 + },
 + "onap.policies.controlloop.operational.common.Apex": {
 + "derived_from": "onap.policies.controlloop.operational.Common",
 + "type_version": "1.0.0",
 + "version": "1.0.0",
 + "name": "onap.policies.controlloop.operational.common.Apex",
 + "description": "Operational policies for Apex PDP",
 + "properties": {
 + "engineServiceParameters": {
 + "type": "string",
 + "description": "The engine parameters like name, instanceCount, policy implementation, parameters etc.",
 + "required": true
 + },
 + "eventInputParameters": {
 + "type": "string",
 + "description": "The event input parameters.",
 + "required": true
 + },
 + "eventOutputParameters": {
 + "type": "string",
 + "description": "The event output parameters.",
 + "required": true
 + },
 + "javaProperties": {
 + "type": "string",
 + "description": "Name/value pairs of properties to be set for APEX if needed.",
 + "required": false
 + }
 + }
 + }
 + },
 + "node_types": {
 + "org.onap.policy.clamp.controlloop.Participant": {
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root",
 + "properties": {
 + "provider": {
 + "type": "string",
 + "requred": false
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.ControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root",
 + "properties": {
 + "provider": {
 + "type": "string",
 + "required": false,
 + "metadata": {
 + "common": true
 + },
 + "description": "Specifies the organization that provides the control loop element"
 + },
 + "participantType": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "required": true,
 + "metadata": {
 + "common": true
 + },
 + "description": "The identity of the participant type that hosts this type of Control Loop Element"
 + },
 + "startPhase": {
 + "type": "integer",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": 0
 + }
 + ],
 + "metadata": {
 + "common": true
 + },
 + "description": "A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously"
 + },
 + "uninitializedToPassiveTimeout": {
 + "type": "integer",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": 0
 + }
 + ],
 + "default": 60,
 + "metadata": {
 + "common": true
 + },
 + "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive"
 + },
 + "passiveToRunningTimeout": {
 + "type": "integer",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": 0
 + }
 + ],
 + "default": 60,
 + "metadata": {
 + "common": true
 + },
 + "description": "The maximum time in seconds to wait for a state chage from passive to running"
 + },
 + "runningToPassiveTimeout": {
 + "type": "integer",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": 0
 + }
 + ],
 + "default": 60,
 + "metadata": {
 + "common": true
 + },
 + "description": "The maximum time in seconds to wait for a state chage from running to passive"
 + },
 + "passiveToUninitializedTimeout": {
 + "type": "integer",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": 0
 + }
 + ],
 + "default": 60,
 + "metadata": {
 + "common": true
 + },
 + "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized"
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.ControlLoop": {
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root",
 + "properties": {
 + "provider": {
 + "type": "string",
 + "required": false,
 + "metadata": {
 + "common": true
 + },
 + "description": "Specifies the organization that provides the control loop element"
 + },
 + "elements": {
 + "type": "list",
 + "required": true,
 + "metadata": {
 + "common": true
 + },
 + "entry_schema": {
 + "type": "onap.datatypes.ToscaConceptIdentifier"
 + },
 + "description": "Specifies a list of control loop element definitions that make up this control loop definition"
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement",
 + "properties": {
 + "dcae_blueprint_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": false
 + },
 + "dcae_blueprint": {
 + "type": "onap.dcae.cloudify_blueprint",
 + "requred": false
 + },
 + "consul_info": {
 + "type": "list",
 + "required": false,
 + "entry_schema": {
 + "type": "org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo"
 + }
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.PolicyControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement",
 + "properties": {
 + "policy_type_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": true
 + },
 + "policy_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": false
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement",
 + "properties": {
 + "policy_type_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": true
 + },
 + "policy_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": false
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement",
 + "properties": {
 + "policy_type_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": true
 + },
 + "policy_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": false
 + }
 + }
 + },
 + "org.onap.policy.clamp.controlloop.CDSControlLoopElement": {
 + "version": "1.0.1",
 + "derived_from": "org.onap.policy.clamp.controlloop.ControlLoopElement",
 + "properties": {
 + "cds_blueprint_id": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "requred": true
 + }
 + }
 + }
 + },
 + "topology_template": {
 + "inputs": {
 + "pmsh_monitoring_policy": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "description": "The ID of the PMSH monitoring policy to use",
 + "default": {
 + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test",
 + "version": "1.0.0"
 + }
 + },
 + "pmsh_operational_policy": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "description": "The ID of the PMSH operational policy to use",
 + "default": {
 + "name": "operational.apex.pmcontrol",
 + "version": "1.0.0"
 + }
 + }
 + },
 + "node_templates": {
 + "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant": {
 + "version": "2.3.4",
 + "type": "org.onap.policy.clamp.controlloop.Participant",
 + "type_version": "1.0.1",
 + "description": "Participant for DCAE microservices",
 + "properties": {
 + "provider": "ONAP"
 + }
 + },
 + "org.onap.policy.controlloop.PolicyControlLoopParticipant": {
 + "version": "2.3.1",
 + "type": "org.onap.policy.clamp.controlloop.Participant",
 + "type_version": "1.0.1",
 + "description": "Participant for DCAE microservices",
 + "properties": {
 + "provider": "ONAP"
 + }
 + },
 + "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement": {
 + "version": "1.2.3",
 + "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement",
 + "type_version": "1.0.0",
 + "description": "Control loop element for the monitoring policy for Performance Management Subscription Handling",
 + "properties": {
 + "provider": "Ericsson",
 + "participantType": {
 + "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
 + "version": "2.3.1"
 + },
 + "policy_type_id": {
 + "name": "onap.policies.monitoring.pm-subscription-handler",
 + "version": "1.0.0"
 + },
 + "policy_id": {
 + "get_input": "pmsh_monitoring_policy"
 + }
 + }
 + },
 + "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement": {
 + "version": "1.2.3",
 + "type": "org.onap.policy.clamp.controlloop.PolicyControlLoopElement",
 + "type_version": "1.0.0",
 + "description": "Control loop element for the operational policy for Performance Management Subscription Handling",
 + "properties": {
 + "provider": "Ericsson",
 + "participantType": {
 + "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
 + "version": "2.3.1"
 + },
 + "policy_type_id": {
 + "name": "onap.policies.operational.pm-subscription-handler",
 + "version": "1.0.0"
 + },
 + "policy_id": {
 + "get_input": "pmsh_operational_policy"
 + }
 + }
 + },
 + "org.onap.domain.pmsh.PMSHControlLoopDefinition": {
 + "version": "1.2.3",
 + "type": "org.onap.policy.clamp.controlloop.ControlLoop",
 + "type_version": "1.0.0",
 + "description": "Control loop for Performance Management Subscription Handling",
 + "properties": {
 + "provider": "Ericsson",
 + "elements": [
 + {
 + "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
 + "version": "1.2.3"
 + },
 + {
 + "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
 + "version": "1.2.3"
 + },
 + {
 + "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
 + "version": "1.2.3"
 + }
 + ]
 + }
 + }
 + }
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/commission</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="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Instantiate control loop" 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">{
 + "controlLoopList": [
 + {
 + "name": "PMSHInstance0",
 + "version": "1.0.1",
 + "definition": {
 + "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
 + "version": "1.2.3"
 + },
 + "state": "UNINITIALISED",
 + "orderedState": "UNINITIALISED",
 + "description": "PMSH control loop instance 0",
 + "elements": {
 + "709c62b3-8918-41b9-a747-d21eb79c6c21": {
 + "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
 + "definition": {
 + "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
 + "version": "1.2.3"
 + },
 + "participantType":{
 + "name":"org.onap.policy.controlloop.PolicyControlLoopParticipant",
 + "version":"2.3.1"
 + },
 + "participantId":{
 + "name":"org.onap.PM_Policy",
 + "version":"1.0.0"
 + },
 + "state":"UNINITIALISED",
 + "orderedState":"UNINITIALISED",
 + "toscaServiceTemplateFragment":{
 + "data_types":{
 + "onap.datatype.controlloop.Actor":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "payload":{
 + "name":"payload",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Name/value pairs of payload information passed by Policy to the actor",
 + "required":false,
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0"
 + },
 + "metadata":{
 + "clamp_possible_values":"ClampExecution:CDS/payload"
 + }
 + },
 + "target":{
 + "name":"target",
 + "type":"onap.datatype.controlloop.Target",
 + "type_version":"0.0.0",
 + "description":"The resource the operation should be performed on.",
 + "required":true
 + },
 + "actor":{
 + "name":"actor",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The actor performing the operation.",
 + "required":true,
 + "metadata":{
 + "clamp_possible_values":"Dictionary:DefaultActors,ClampExecution:CDS/actor"
 + }
 + },
 + "operation":{
 + "name":"operation",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The operation the actor is performing.",
 + "required":true,
 + "metadata":{
 + "clamp_possible_values":"Dictionary:DefaultOperations,ClampExecution:CDS/operation"
 + }
 + }
 + },
 + "name":"onap.datatype.controlloop.Actor",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + },
 + "description":"An actor/operation/target definition"
 + },
 + "onap.datatype.controlloop.Operation":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "failure_retries":{
 + "name":"failure_retries",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke when the current operation has exceeded its max retries.",
 + "default":"final_failure_retries",
 + "required":false
 + },
 + "id":{
 + "name":"id",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Unique identifier for the operation",
 + "required":true
 + },
 + "failure_timeout":{
 + "name":"failure_timeout",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke when the time out for the operation occurs.",
 + "default":"final_failure_timeout",
 + "required":false
 + },
 + "failure":{
 + "name":"failure",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke on Actor operation failure.",
 + "default":"final_failure",
 + "required":false
 + },
 + "operation":{
 + "name":"operation",
 + "type":"onap.datatype.controlloop.Actor",
 + "type_version":"0.0.0",
 + "description":"The definition of the operation to be performed.",
 + "required":true
 + },
 + "failure_guard":{
 + "name":"failure_guard",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.",
 + "default":"final_failure_guard",
 + "required":false
 + },
 + "retries":{
 + "name":"retries",
 + "type":"integer",
 + "type_version":"0.0.0",
 + "description":"The number of retries the actor should attempt to perform the operation.",
 + "default":0.0,
 + "required":true
 + },
 + "timeout":{
 + "name":"timeout",
 + "type":"integer",
 + "type_version":"0.0.0",
 + "description":"The amount of time for the actor to perform the operation.",
 + "required":true
 + },
 + "failure_exception":{
 + "name":"failure_exception",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke when the current operation causes an exception.",
 + "default":"final_failure_exception",
 + "required":false
 + },
 + "description":{
 + "name":"description",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"A user-friendly description of the intent for the operation",
 + "required":false
 + },
 + "success":{
 + "name":"success",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.",
 + "default":"final_success",
 + "required":false
 + }
 + },
 + "name":"onap.datatype.controlloop.Operation",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + },
 + "description":"An operation supported by an actor"
 + },
 + "onap.datatype.controlloop.Target":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "entityIds":{
 + "name":"entityIds",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Map of values that identify the resource. If none are provided, it is assumed that the\nentity that generated the ONSET event will be the target.\n",
 + "required":false,
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0"
 + },
 + "metadata":{
 + "clamp_possible_values":"ClampExecution:CSAR_RESOURCES"
 + }
 + },
 + "targetType":{
 + "name":"targetType",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Category for the target type",
 + "required":true,
 + "constraints":[
 + {
 + "valid_values":[
 + "VNF",
 + "VM",
 + "VFMODULE",
 + "PNF"
 + ]
 + }
 + ]
 + }
 + },
 + "name":"onap.datatype.controlloop.Target",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + },
 + "description":"Definition for a entity in A&AI to perform a control loop operation on"
 + },
 + "onap.datatypes.ToscaConceptIdentifier":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "version":{
 + "name":"version",
 + "type":"string",
 + "type_version":"0.0.0",
 + "required":true
 + },
 + "name":{
 + "name":"name",
 + "type":"string",
 + "type_version":"0.0.0",
 + "required":true
 + }
 + },
 + "name":"onap.datatypes.ToscaConceptIdentifier",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.managedObjectDNsBasic":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "DN":{
 + "name":"DN",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Managed object distinguished name",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.managedObjectDNsBasic",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.managedObjectDNsBasics":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "managedObjectDNsBasic":{
 + "name":"managedObjectDNsBasic",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Managed object distinguished name object",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.managedObjectDNsBasic",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.managedObjectDNsBasics",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.measurementGroup":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "measurementTypes":{
 + "name":"measurementTypes",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of measurement types",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.measurementTypes",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + },
 + "managedObjectDNsBasic":{
 + "name":"managedObjectDNsBasic",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of managed object distinguished names",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.managedObjectDNsBasics",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.measurementGroup",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.measurementGroups":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "measurementGroup":{
 + "name":"measurementGroup",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Measurement Group",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.measurementGroup",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.measurementGroups",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.measurementType":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "measurementType":{
 + "name":"measurementType",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Measurement type",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.measurementType",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.measurementTypes":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "measurementType":{
 + "name":"measurementType",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Measurement type object",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.measurementType",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.measurementTypes",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.nfFilter":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "modelVersionIDs":{
 + "name":"modelVersionIDs",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of model version IDs",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + },
 + "modelInvariantIDs":{
 + "name":"modelInvariantIDs",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of model invariant IDs",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + },
 + "modelNames":{
 + "name":"modelNames",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of model names",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + },
 + "nfNames":{
 + "name":"nfNames",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of network functions",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"string",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.nfFilter",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + },
 + "onap.datatypes.monitoring.subscription":{
 + "constraints":[
 + 
 + ],
 + "properties":{
 + "measurementGroups":{
 + "name":"measurementGroups",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"Measurement Groups",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.measurementGroups",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + },
 + "fileBasedGP":{
 + "name":"fileBasedGP",
 + "type":"integer",
 + "type_version":"0.0.0",
 + "description":"File based granularity period",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + },
 + "fileLocation":{
 + "name":"fileLocation",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"ROP file location",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + },
 + "subscriptionName":{
 + "name":"subscriptionName",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Name of the subscription",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + },
 + "administrativeState":{
 + "name":"administrativeState",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"State of the subscription",
 + "required":true,
 + "constraints":[
 + {
 + "valid_values":[
 + "LOCKED",
 + "UNLOCKED"
 + ]
 + }
 + ],
 + "metadata":{
 + 
 + }
 + },
 + "nfFilter":{
 + "name":"nfFilter",
 + "type":"map",
 + "type_version":"0.0.0",
 + "description":"Network function filter",
 + "required":true,
 + "constraints":[
 + 
 + ],
 + "entry_schema":{
 + "type":"onap.datatypes.monitoring.nfFilter",
 + "type_version":"0.0.0",
 + "constraints":[
 + 
 + ]
 + },
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.datatypes.monitoring.subscription",
 + "version":"0.0.0",
 + "derived_from":"tosca.datatypes.Root",
 + "metadata":{
 + 
 + }
 + }
 + },
 + "policy_types":{
 + "onap.policies.Monitoring":{
 + "properties":{
 + 
 + },
 + "name":"onap.policies.Monitoring",
 + "version":"1.0.0",
 + "derived_from":"tosca.policies.Root",
 + "metadata":{
 + 
 + },
 + "description":"a base policy type for all policies that govern monitoring provisioning"
 + },
 + "onap.policies.test123":{
 + "properties":{
 + 
 + },
 + "name":"onap.policies.test123",
 + "version":"1.0.0",
 + "derived_from":"tosca.policies.Root",
 + "metadata":{
 + 
 + },
 + "description":"a base policy type for all policies that govern monitoring provisioning"
 + },
 + "onap.policies.controlloop.operational.Common":{
 + "properties":{
 + "abatement":{
 + "name":"abatement",
 + "type":"boolean",
 + "type_version":"0.0.0",
 + "description":"Whether an abatement event message will be expected for the control loop from DCAE.",
 + "default":false,
 + "required":true
 + },
 + "operations":{
 + "name":"operations",
 + "type":"list",
 + "type_version":"0.0.0",
 + "description":"List of operations to be performed when Control Loop is triggered.",
 + "required":true,
 + "entry_schema":{
 + "type":"onap.datatype.controlloop.Operation",
 + "type_version":"0.0.0"
 + }
 + },
 + "trigger":{
 + "name":"trigger",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Initial operation to execute upon receiving an Onset event message for the Control Loop.",
 + "required":true
 + },
 + "timeout":{
 + "name":"timeout",
 + "type":"integer",
 + "type_version":"0.0.0",
 + "description":"Overall timeout for executing all the operations. This timeout should equal or exceed the total\ntimeout for each operation listed.\n",
 + "required":true
 + },
 + "id":{
 + "name":"id",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The unique control loop id.",
 + "required":true
 + }
 + },
 + "name":"onap.policies.controlloop.operational.Common",
 + "version":"1.0.0",
 + "derived_from":"tosca.policies.Root",
 + "metadata":{
 + 
 + },
 + "description":"Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\nPolicy Types. This does NOT support the legacy Policy YAML policy type.\n"
 + },
 + "onap.policies.controlloop.operational.common.Apex":{
 + "properties":{
 + "engineServiceParameters":{
 + "name":"engineServiceParameters",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The engine parameters like name, instanceCount, policy implementation, parameters etc.",
 + "required":true
 + },
 + "eventOutputParameters":{
 + "name":"eventOutputParameters",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The event output parameters.",
 + "required":true
 + },
 + "javaProperties":{
 + "name":"javaProperties",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"Name/value pairs of properties to be set for APEX if needed.",
 + "required":false
 + },
 + "eventInputParameters":{
 + "name":"eventInputParameters",
 + "type":"string",
 + "type_version":"0.0.0",
 + "description":"The event input parameters.",
 + "required":true
 + }
 + },
 + "name":"onap.policies.controlloop.operational.common.Apex",
 + "version":"1.0.0",
 + "derived_from":"onap.policies.controlloop.operational.Common",
 + "metadata":{
 + 
 + },
 + "description":"Operational policies for Apex PDP"
 + },
 + "onap.policies.monitoring.dcae-pm-subscription-handler":{
 + "properties":{
 + "pmsh_policy":{
 + "name":"pmsh_policy",
 + "type":"onap.datatypes.monitoring.subscription",
 + "type_version":"0.0.0",
 + "description":"PMSH Policy JSON",
 + "required":false,
 + "constraints":[
 + 
 + ],
 + "metadata":{
 + 
 + }
 + }
 + },
 + "name":"onap.policies.monitoring.dcae-pm-subscription-handler",
 + "version":"1.0.0",
 + "derived_from":"onap.policies.Monitoring",
 + "metadata":{
 + 
 + }
 + }
 + },
 + "topology_template":{
 + 
 + },
 + "name":"NULL",
 + "version":"0.0.0"
 + },
 + "propertiesMap": {
 + "provider_instance": {
 + "name": "provider_instance",
 + "version": "1.2.3",
 + "type": "org.onap.datatypes.policy.clamp.controlloop.policControlLoopElement.Chart",
 + "typeVersion": "1.0.0",
 + "description": "The helm chart for the microservice",
 + "required": true
 + }
 + },
 + "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
 + },
 + "709c62b3-8918-41b9-a747-d21eb79c6c22": {
 + "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
 + "definition": {
 + "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
 + "version": "1.2.3"
 + },
 + "participantType":{
 + "name":"org.onap.policy.controlloop.PolicyControlLoopParticipant",
 + "version":"2.3.1"
 + },
 + "participantId":{
 + "name":"org.onap.PM_Policy",
 + "version":"1.0.0"
 + },
 + "state":"UNINITIALISED",
 + "orderedState":"UNINITIALISED",
 + "propertiesMap": {
 + "provider_instance": {
 + "name": "provider_instance",
 + "version": "1.2.3",
 + "type": "org.onap.datatypes.policy.clamp.controlloop.policControlLoopElement.Chart",
 + "typeVersion": "1.0.0",
 + "description": "The helm chart for the microservice",
 + "required": true
 + }
 + },
 + "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
 + }
 + }
 + }
 + ]
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation</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="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="ControlLoop Test Flow" 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">${USERS}</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">true</boolProp> + <stringProp name="ThreadGroup.duration">7200</stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check controlloop state" 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">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation</stringProp> + <stringProp name="HTTPSampler.method">GET</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> + <stringProp name="TestPlan.comments">Basic Health Check</stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Change State to PASSIVE" 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">{
 + "orderedState": "PASSIVE",
 + "controlLoopIdentifierList": [
 + {
 + "name": "PMSHInstance0",
 + "version": "1.0.1"
 + }
 + ]
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation/command</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> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> + <stringProp name="ConstantTimer.delay">6000</stringProp> + </ConstantTimer> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49588">202</stringProp> + <stringProp name="51508">400</stringProp> + <stringProp name="51514">406</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">34</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check controlloop state" 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">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation</stringProp> + <stringProp name="HTTPSampler.method">GET</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> + <stringProp name="TestPlan.comments">Basic Health Check</stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Change State to UNINITIALISED" 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">{
 + "orderedState": "UNINITIALISED",
 + "controlLoopIdentifierList": [
 + {
 + "name": "PMSHInstance0",
 + "version": "1.0.1"
 + }
 + ]
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation/command</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> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="51508">400</stringProp> + <stringProp name="51514">406</stringProp> + <stringProp name="49588">202</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">34</intProp> + </ResponseAssertion> + <hashTree/> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> + <stringProp name="ConstantTimer.delay">6000</stringProp> + </ConstantTimer> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check controlloop state" 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">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation</stringProp> + <stringProp name="HTTPSampler.method">GET</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> + <stringProp name="TestPlan.comments">Basic Health Check</stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="false"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + </ConstantTimer> + <hashTree/> + </hashTree> + <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">stoptest</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> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </PostThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete instantiated controlloop" 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">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/instantiation?name=PMSHInstance0&version=1.0.1</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> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <hashTree/> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> + <stringProp name="ConstantTimer.delay">6000</stringProp> + </ConstantTimer> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete ControlLoop Definition" 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">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/onap/controlloop/v2/commission?name=NULL&version=0.0.0</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> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="49586">200</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + </ResponseAssertion> + <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">${LOGS_PATH}testresults.jtl</stringProp> + </ResultCollector> + <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">${LOGS_PATH}resultTree.log</stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" 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">${LOGS_PATH}resultTable.log</stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/testsuites/performance/src/main/resources/testplans/results.sh b/testsuites/performance/src/main/resources/testplans/results.sh new file mode 100644 index 000000000..adb3e03dd --- /dev/null +++ b/testsuites/performance/src/main/resources/testplans/results.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +#============LICENSE_START======================================================= +#Copyright (C) 2021 Nordix Foundation. +#================================================================================ +#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========================================================= + +LOGFILE=$1 +if [[ ! -f $LOGFILE ]]; then + echo "The file '$LOGFILE' in not provided." + echo "Please provide log file to process." + exit 1 +fi + +echo "File being processed: " $LOGFILE +RES=$(awk -F "," 'NR>1 { total += $15 } END { print total/NR }' $LOGFILE) +echo "Average Latency: " $RES +LC=$(awk 'END{print NR}' $LOGFILE) +echo "Total Requests:" $LC +echo "Requests/sec:" $((LC/5)) + |