diff options
author | FrancescoFioraEst <francesco.fiora@est.tech> | 2024-03-04 13:59:11 +0000 |
---|---|---|
committer | Francesco Fiora <francesco.fiora@est.tech> | 2024-04-23 14:37:55 +0000 |
commit | a3ac9c950b9b61c9e64d9a161a9c973a144ee190 (patch) | |
tree | c1316f652cadaadcc2b254b2ae1190438d2381c2 | |
parent | 519334f314bd68085148a83dca0f5172276884df (diff) |
Update Performance tests of ACM runtime and participant
Update Performance tests of ACM runtime and participant
with large number of compositions and instances.
Issue-ID: POLICY-4967
Change-Id: Ib1f74bbc2e957c6af90b49ddaef65f480651a426
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
-rw-r--r-- | testsuites/performance/src/main/resources/testplans/performance.jmx | 3004 |
1 files changed, 885 insertions, 2119 deletions
diff --git a/testsuites/performance/src/main/resources/testplans/performance.jmx b/testsuites/performance/src/main/resources/testplans/performance.jmx index 3360d1aae..4a7200b48 100644 --- a/testsuites/performance/src/main/resources/testplans/performance.jmx +++ b/testsuites/performance/src/main/resources/testplans/performance.jmx @@ -38,9 +38,9 @@ <stringProp name="Argument.value">${HOME_PATH}/acm_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> + <elementProp name="INSTANCES" elementType="Argument"> + <stringProp name="Argument.name">INSTANCES</stringProp> + <stringProp name="Argument.value">${__P(INSTANCES,100)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="USERS" elementType="Argument"> @@ -100,1536 +100,6 @@ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> </SetupThreadGroup> <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Commission AutomationComposition 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_3",
 - "data_types": {
 - "onap.datatypes.ToscaConceptIdentifier": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "name": {
 - "type": "string",
 - "required": true
 - },
 - "version": {
 - "type": "string",
 - "required": true
 - }
 - }
 - },
 - "onap.datatypes.native.apex.EngineService": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "name": {
 - "type": "string",
 - "description": "Specifies the engine name",
 - "required": false,
 - "default": "ApexEngineService"
 - },
 - "version": {
 - "type": "string",
 - "description": "Specifies the engine version in double dotted format",
 - "required": false,
 - "default": "1.0.0"
 - },
 - "id": {
 - "type": "integer",
 - "description": "Specifies the engine id",
 - "required": true
 - },
 - "instance_count": {
 - "type": "integer",
 - "description": "Specifies the number of engine threads that should be run",
 - "required": true
 - },
 - "deployment_port": {
 - "type": "integer",
 - "description": "Specifies the port to connect to for engine administration",
 - "required": false,
 - "default": 1
 - },
 - "policy_model_file_name": {
 - "type": "string",
 - "description": "The name of the file from which to read the APEX policy model",
 - "required": false
 - },
 - "policy_type_impl": {
 - "type": "string",
 - "description": "The policy type implementation from which to read the APEX policy model",
 - "required": false
 - },
 - "periodic_event_period": {
 - "type": "string",
 - "description": "The time interval in milliseconds for the periodic scanning event, 0 means don't scan",
 - "required": false
 - },
 - "engine": {
 - "type": "onap.datatypes.native.apex.engineservice.Engine",
 - "description": "The parameters for all engines in the APEX engine service",
 - "required": true
 - }
 - }
 - },
 - "onap.datatypes.native.apex.EventHandler": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "name": {
 - "type": "string",
 - "description": "Specifies the event handler name, if not specified this is set to the key name",
 - "required": false
 - },
 - "carrier_technology": {
 - "type": "onap.datatypes.native.apex.CarrierTechnology",
 - "description": "Specifies the carrier technology of the event handler (such as REST/Web Socket/Kafka)",
 - "required": true
 - },
 - "event_protocol": {
 - "type": "onap.datatypes.native.apex.EventProtocol",
 - "description": "Specifies the event protocol of events for the event handler (such as Yaml/JSON/XML/POJO)",
 - "required": true
 - },
 - "event_name": {
 - "type": "string",
 - "description": "Specifies the event name for events on this event handler, if not specified, the event name is read from or written to the event being received or sent",
 - "required": false
 - },
 - "event_name_filter": {
 - "type": "string",
 - "description": "Specifies a filter as a regular expression, events that do not match the filter are dropped, the default is to let all events through",
 - "required": false
 - },
 - "synchronous_mode": {
 - "type": "boolean",
 - "description": "Specifies the event handler is syncronous (receive event and send response)",
 - "required": false,
 - "default": false
 - },
 - "synchronous_peer": {
 - "type": "string",
 - "description": "The peer event handler (output for input or input for output) of this event handler in synchronous mode, this parameter is mandatory if the event handler is in synchronous mode",
 - "required": false
 - },
 - "synchronous_timeout": {
 - "type": "integer",
 - "description": "The timeout in milliseconds for responses to be issued by APEX torequests, this parameter is mandatory if the event handler is in synchronous mode",
 - "required": false
 - },
 - "requestor_mode": {
 - "type": "boolean",
 - "description": "Specifies the event handler is in requestor mode (send event and wait for response mode)",
 - "required": false,
 - "default": false
 - },
 - "requestor_peer": {
 - "type": "string",
 - "description": "The peer event handler (output for input or input for output) of this event handler in requestor mode, this parameter is mandatory if the event handler is in requestor mode",
 - "required": false
 - },
 - "requestor_timeout": {
 - "type": "integer",
 - "description": "The timeout in milliseconds for wait for responses to requests, this parameter is mandatory if the event handler is in requestor mode",
 - "required": false
 - }
 - }
 - },
 - "onap.datatypes.native.apex.CarrierTechnology": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "label": {
 - "type": "string",
 - "description": "The label (name) of the carrier technology (such as REST, Kafka, WebSocket)",
 - "required": true
 - },
 - "plugin_parameter_class_name": {
 - "type": "string",
 - "description": "The class name of the class that overrides default handling of event input or output for this carrier technology, defaults to the supplied input or output class",
 - "required": false
 - }
 - }
 - },
 - "onap.datatypes.native.apex.EventProtocol": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "label": {
 - "type": "string",
 - "description": "The label (name) of the event protocol (such as Yaml, JSON, XML, or POJO)",
 - "required": true
 - },
 - "event_protocol_plugin_class": {
 - "type": "string",
 - "description": "The class name of the class that overrides default handling of the event protocol for this carrier technology, defaults to the supplied event protocol class",
 - "required": false
 - }
 - }
 - },
 - "onap.datatypes.native.apex.Environment": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "name": {
 - "type": "string",
 - "description": "The name of the environment variable",
 - "required": true
 - },
 - "value": {
 - "type": "string",
 - "description": "The value of the environment variable",
 - "required": true
 - }
 - }
 - },
 - "onap.datatypes.native.apex.engineservice.Engine": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "context": {
 - "type": "onap.datatypes.native.apex.engineservice.engine.Context",
 - "description": "The properties for handling context in APEX engines, defaults to using Java maps for context",
 - "required": false
 - },
 - "executors": {
 - "type": "map",
 - "description": "The plugins for policy executors used in engines such as javascript, MVEL, Jython",
 - "required": true,
 - "entry_schema": {
 - "description": "The plugin class path for this policy executor",
 - "type": "string"
 - }
 - }
 - }
 - },
 - "onap.datatypes.native.apex.engineservice.engine.Context": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "distributor": {
 - "type": "onap.datatypes.native.apex.Plugin",
 - "description": "The plugin to be used for distributing context between APEX PDPs at runtime",
 - "required": false
 - },
 - "schemas": {
 - "type": "map",
 - "description": "The plugins for context schemas available in APEX PDPs such as Java and Avro",
 - "required": false,
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.Plugin"
 - }
 - },
 - "locking": {
 - "type": "onap.datatypes.native.apex.Plugin",
 - "description": "The plugin to be used for locking context in and between APEX PDPs at runtime",
 - "required": false
 - },
 - "persistence": {
 - "type": "onap.datatypes.native.apex.Plugin",
 - "description": "The plugin to be used for persisting context for APEX PDPs at runtime",
 - "required": false
 - }
 - }
 - },
 - "onap.datatypes.native.apex.Plugin": {
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "name": {
 - "type": "string",
 - "description": "The name of the executor such as Javascript, Jython or MVEL",
 - "required": true
 - },
 - "plugin_class_name": {
 - "type": "string",
 - "description": "The class path of the plugin class for this executor"
 - }
 - }
 - },
 - "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": {
 - "version": "1.0.0",
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "restRequestId": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "required": true,
 - "description": "The name and version of a REST request to be sent to a REST endpoint"
 - },
 - "httpMethod": {
 - "type": "string",
 - "required": true,
 - "constraints": [
 - {
 - "valid_values": [
 - "POST",
 - "PUT",
 - "GET",
 - "DELETE"
 - ]
 - }
 - ],
 - "description": "The REST method to use"
 - },
 - "path": {
 - "type": "string",
 - "required": true,
 - "description": "The path of the REST request relative to the base URL"
 - },
 - "body": {
 - "type": "string",
 - "required": false,
 - "description": "The body of the REST request for PUT and POST requests"
 - },
 - "expectedResponse": {
 - "type": "integer",
 - "required": true,
 - "constraints": [],
 - "description": "THe expected HTTP status code for the REST request"
 - }
 - }
 - },
 - "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": {
 - "version": "1.0.0",
 - "derived_from": "tosca.datatypes.Root",
 - "properties": {
 - "configurationEntityId": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "required": true,
 - "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element"
 - },
 - "restSequence": {
 - "type": "list",
 - "entry_schema": {
 - "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
 - "type_version": "1.0.0"
 - },
 - "description": "A sequence of REST commands to send to the REST endpoint"
 - }
 - }
 - }
 - },
 - "policy_types": {
 - "onap.policies.Native": {
 - "derived_from": "tosca.policies.Root",
 - "description": "a base policy type for all native PDP policies",
 - "version": "1.0.0",
 - "name": "onap.policies.Native"
 - },
 - "onap.policies.native.Apex": {
 - "derived_from": "onap.policies.Native",
 - "description": "a policy type for native apex policies",
 - "version": "1.0.0",
 - "name": "onap.policies.native.Apex",
 - "properties": {
 - "engine_service": {
 - "type": "onap.datatypes.native.apex.EngineService",
 - "description": "APEX Engine Service Parameters"
 - },
 - "inputs": {
 - "type": "map",
 - "description": "Inputs for handling events coming into the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.EventHandler"
 - }
 - },
 - "outputs": {
 - "type": "map",
 - "description": "Outputs for handling events going out of the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.EventHandler"
 - }
 - },
 - "environment": {
 - "type": "list",
 - "description": "Envioronmental parameters for the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.Environment"
 - }
 - }
 - }
 - }
 - },
 - "node_types": {
 - "org.onap.policy.clamp.acm.Participant": {
 - "version": "1.0.1",
 - "derived_from": "tosca.nodetypes.Root",
 - "properties": {
 - "provider": {
 - "type": "string",
 - "required": false
 - }
 - }
 - },
 - "org.onap.policy.clamp.acm.AutomationCompositionElement": {
 - "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 automation composition element"
 - },
 - "startPhase": {
 - "type": "integer",
 - "required": false,
 - "constraints": [
 - {
 - "greater_or_equal": 0
 - }
 - ],
 - "metadata": {
 - "common": true
 - },
 - "description": "A value indicating the start phase in which this automation composition element will be started, the first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped in reverse start phase order. Automation Composition 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.acm.AutomationComposition": {
 - "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 automation composition element"
 - },
 - "elements": {
 - "type": "list",
 - "required": true,
 - "metadata": {
 - "common": true
 - },
 - "entry_schema": {
 - "type": "onap.datatypes.ToscaConceptIdentifier"
 - },
 - "description": "Specifies a list of automation composition element definitions that make up this automation composition definition"
 - }
 - }
 - },
 - "org.onap.policy.clamp.acm.PolicyAutomationCompositionElement": {
 - "version": "1.0.0",
 - "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
 - "properties": {
 - "policy_type_id": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "required": true
 - },
 - "policy_id": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "required": false
 - }
 - }
 - },
 - "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement": {
 - "version": "1.0.0",
 - "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
 - "properties": {
 - "chart": {
 - "type": "string",
 - "required": true
 - },
 - "configs": {
 - "type": "list",
 - "required": false
 - },
 - "requirements": {
 - "type": "string",
 - "required": false
 - },
 - "templates": {
 - "type": "list",
 - "required": false,
 - "entry_schema": null
 - },
 - "values": {
 - "type": "string",
 - "required": true
 - }
 - }
 - },
 - "org.onap.policy.clamp.acm.HttpAutomationCompositionElement": {
 - "version": "1.0.0",
 - "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
 - "properties": {
 - "baseUrl": {
 - "type": "string",
 - "required": true,
 - "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints."
 - },
 - "httpHeaders": {
 - "type": "map",
 - "required": false,
 - "entry_schema": {
 - "type": "string"
 - },
 - "description": "HTTP headers to send on REST requests"
 - },
 - "configurationEntities": {
 - "type": "map",
 - "required": true,
 - "entry_schema": {
 - "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity",
 - "type_version": "1.0.0"
 - },
 - "description": "The connfiguration entities the Automation Composition Element is managing and their associated REST requests"
 - }
 - }
 - }
 - },
 - "topology_template": {
 - "inputs": {
 - "acm_element_policy": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "description": "The ID of the operational policy to use",
 - "default": {
 - "name": "onap.policies.native.apex.ac.element",
 - "version": "1.0.0"
 - }
 - }
 - },
 - "node_templates": {
 - "org.onap.policy.clamp.acm.PolicyParticipant": {
 - "version": "2.3.1",
 - "type": "org.onap.policy.clamp.acm.Participant",
 - "type_version": "1.0.1",
 - "description": "Participant for Policy microservices",
 - "properties": {
 - "provider": "ONAP"
 - }
 - },
 - "onap.policy.clamp.ac.element.Policy_AutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.PolicyAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the operational policy for Performance Management Subscription Handling",
 - "properties": {
 - "provider": "Ericsson",
 - "startPhase": 0
 - }
 - },
 - "org.onap.k8s.acm.K8SAutomationCompositionParticipant": {
 - "version": "2.3.4",
 - "type": "org.onap.policy.clamp.acm.Participant",
 - "type_version": "1.0.1",
 - "description": "Participant for K8S",
 - "properties": {
 - "provider": "ONAP"
 - }
 - },
 - "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the K8S microservice for AC Element Starter",
 - "properties": {
 - "provider": "ONAP",
 - "startPhase": 0,
 - "uninitializedToPassiveTimeout": 300,
 - "podStatusCheckInterval": 30
 - }
 - },
 - "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the K8S microservice for AC Element Bridge",
 - "properties": {
 - "provider": "ONAP",
 - "startPhase": 0,
 - "uninitializedToPassiveTimeout": 300,
 - "podStatusCheckInterval": 30
 - }
 - },
 - "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the K8S microservice for AC Element Sink",
 - "properties": {
 - "provider": "ONAP",
 - "startPhase": 0,
 - "uninitializedToPassiveTimeout": 300,
 - "podStatusCheckInterval": 30
 - }
 - },
 - "org.onap.policy.clamp.acm.HttpParticipant": {
 - "version": "2.3.4",
 - "type": "org.onap.policy.clamp.acm.Participant",
 - "type_version": "1.0.1",
 - "description": "Participant for Http requests",
 - "properties": {
 - "provider": "ONAP"
 - }
 - },
 - "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the http requests of AC Element Starter microservice",
 - "properties": {
 - "provider": "ONAP",
 - "uninitializedToPassiveTimeout": 300,
 - "startPhase": 1
 - }
 - },
 - "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the http requests of AC Element Bridge microservice",
 - "properties": {
 - "provider": "ONAP",
 - "uninitializedToPassiveTimeout": 300,
 - "startPhase": 1
 - }
 - },
 - "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement",
 - "type_version": "1.0.0",
 - "description": "Automation composition element for the http requests of AC Element Sink microservice",
 - "properties": {
 - "provider": "ONAP",
 - "uninitializedToPassiveTimeout": 300,
 - "startPhase": 1
 - }
 - },
 - "onap.policy.clamp.ac.element.AutomationCompositionDefinition": {
 - "version": "1.2.3",
 - "type": "org.onap.policy.clamp.acm.AutomationComposition",
 - "type_version": "1.0.1",
 - "description": "Automation composition for Demo",
 - "properties": {
 - "provider": "ONAP",
 - "elements": [
 - {
 - "name": "onap.policy.clamp.ac.element.Policy_AutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - {
 - "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement",
 - "version": "1.2.3"
 - }
 - ]
 - }
 - }
 - },
 - "policies": [
 - {
 - "onap.policies.native.apex.ac.element": {
 - "type": "onap.policies.native.Apex",
 - "type_version": "1.0.0",
 - "properties": {
 - "engineServiceParameters": {
 - "name": "MyApexEngine",
 - "version": "0.0.1",
 - "id": 45,
 - "instanceCount": 2,
 - "deploymentPort": 12561,
 - "engineParameters": {
 - "executorParameters": {
 - "JAVASCRIPT": {
 - "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
 - }
 - },
 - "contextParameters": {
 - "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
 - "schemaParameters": {
 - "Json": {
 - "parameterClassName": "org.onap.policy.apex.plugins.context.schema.json.JsonSchemaHelperParameters"
 - }
 - }
 - }
 - },
 - "policy_type_impl": {
 - "policies": {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "policyMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "value": {
 - "policyKey": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "template": "Freestyle",
 - "state": {
 - "entry": [
 - {
 - "key": "DecideForwardingState",
 - "value": {
 - "stateKey": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DecideForwardingState"
 - },
 - "trigger": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "stateOutputs": {
 - "entry": [
 - {
 - "key": "CreateForwardPayload",
 - "value": {
 - "key": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "CreateForwardPayload"
 - },
 - "outgoingEvent": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "outgoingEventReference": [
 - {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - }
 - ],
 - "nextState": {
 - "parentKeyName": "NULL",
 - "parentKeyVersion": "0.0.0",
 - "parentLocalName": "NULL",
 - "localName": "NULL"
 - }
 - }
 - }
 - ]
 - },
 - "contextAlbumReference": [],
 - "taskSelectionLogic": {
 - "key": {
 - "parentKeyName": "NULL",
 - "parentKeyVersion": "0.0.0",
 - "parentLocalName": "NULL",
 - "localName": "NULL"
 - },
 - "logicFlavour": "UNDEFINED",
 - "logic": ""
 - },
 - "stateFinalizerLogicMap": {
 - "entry": []
 - },
 - "defaultTask": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "taskReferences": {
 - "entry": [
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "ReceiveEventPolicy"
 - },
 - "outputType": "DIRECT",
 - "output": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "CreateForwardPayload"
 - }
 - }
 - }
 - ]
 - }
 - }
 - }
 - ]
 - },
 - "firstState": "DecideForwardingState"
 - }
 - }
 - ]
 - }
 - },
 - "tasks": {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "taskMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "inputEvent": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "Dmaap",
 - "target": "APEX",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "AcElementEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": "ENTRY"
 - },
 - "outputEvents": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "Dmaap",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "DmaapResponseStatusEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseStatusEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - }
 - ]
 - },
 - "taskParameters": {
 - "entry": []
 - },
 - "contextAlbumReference": [
 - {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - }
 - ],
 - "taskLogic": {
 - "key": {
 - "parentKeyName": "ForwardPayloadTask",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "TaskLogic"
 - },
 - "logicFlavour": "JAVASCRIPT",
 - "logic": "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2022 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar msgResponse = executor.inFields.get('DmaapResponseEvent');\nexecutor.logger.info('Task in progress with mesages: ' + msgResponse);\n\nvar elementId = msgResponse.get('elementId').get('name');\n\nif (msgResponse.get('messageType') == 'STATUS' &&\n (elementId == 'onap.policy.clamp.ac.startertobridge'\n || elementId == 'onap.policy.clamp.ac.bridgetosink')) {\n\n var receiverId = '';\n if (elementId == 'onap.policy.clamp.ac.startertobridge') {\n receiverId = 'onap.policy.clamp.ac.bridge';\n } else {\n receiverId = 'onap.policy.clamp.ac.sink';\n }\n\n var elementIdResponse = new java.util.HashMap();\n elementIdResponse.put('name', receiverId);\n elementIdResponse.put('version', msgResponse.get('elementId').get('version'));\n\n var dmaapResponse = new java.util.HashMap();\n dmaapResponse.put('elementId', elementIdResponse);\n\n var message = msgResponse.get('message') + ' trace added from policy';\n dmaapResponse.put('message', message);\n dmaapResponse.put('messageType', 'STATUS');\n dmaapResponse.put('messageId', msgResponse.get('messageId'));\n dmaapResponse.put('timestamp', msgResponse.get('timestamp'));\n\n executor.logger.info('Sending forwarding Event to Ac element: ' + dmaapResponse);\n\n executor.outFields.put('DmaapResponseStatusEvent', dmaapResponse);\n}\n\ntrue;"
 - }
 - }
 - }
 - ]
 - }
 - },
 - "events": {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "eventMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "Dmaap",
 - "target": "APEX",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "AcElementEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": "ENTRY"
 - }
 - },
 - {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "Dmaap",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "DmaapResponseStatusEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseStatusEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - },
 - {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "file",
 - "parameter": {
 - "entry": [
 - {
 - "key": "final_status",
 - "value": {
 - "key": {
 - "parentKeyName": "LogEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "final_status"
 - },
 - "fieldSchemaKey": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - },
 - {
 - "key": "message",
 - "value": {
 - "key": {
 - "parentKeyName": "LogEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "message"
 - },
 - "fieldSchemaKey": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - }
 - ]
 - }
 - },
 - "albums": {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "albums": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "scope": "policy",
 - "isWritable": true,
 - "itemSchema": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - }
 - }
 - }
 - ]
 - }
 - },
 - "schemas": {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "schemas": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Json",
 - "schemaDefinition": "{\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"elementId\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"version\"\n ]\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"messageType\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"elementId\",\n \"message\",\n \"messageType\"\n ]\n}"
 - }
 - },
 - {
 - "key": {
 - "name": "SimpleIntType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "SimpleIntType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Java",
 - "schemaDefinition": "java.lang.Integer"
 - }
 - },
 - {
 - "key": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Java",
 - "schemaDefinition": "java.lang.String"
 - }
 - },
 - {
 - "key": {
 - "name": "UUIDType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "UUIDType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Java",
 - "schemaDefinition": "java.util.UUID"
 - }
 - }
 - ]
 - }
 - },
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "keyInformation": {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "keyInfoMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "UUID": "7cddfab8-6d3f-3f7f-8ac3-e2eb5979c900",
 - "description": "Generated description for concept referred to by key \"ACElementAlbum:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "UUID": "dab78794-b666-3929-a75b-70d634b04fe5",
 - "description": "Generated description for concept referred to by key \"ACEventType:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "UUID": "da478611-7d77-3c46-b4be-be968769ba4e",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "UUID": "fa8dc15e-8c8d-3de3-a0f8-585b76511175",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Albums:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "UUID": "8508cd65-8dd2-342d-a5c6-1570810dbe2b",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Events:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "UUID": "09e6927d-c5ac-3779-919f-9333994eed22",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_KeyInfo:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "UUID": "cade3c9a-1600-3642-a6f4-315612187f46",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Policies:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "UUID": "5bb4a8e9-35fa-37db-9a49-48ef036a7ba9",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Schemas:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "UUID": "2527eeec-0d1f-3094-ad3f-212622b12836",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Tasks:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "32c013e2-2740-3986-a626-cbdf665b63e9",
 - "description": "Generated description for concept referred to by key \"AcElementEvent:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "2715cb6c-2778-3461-8b69-871e79f95935",
 - "description": "Generated description for concept referred to by key \"DmaapResponseStatusEvent:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "UUID": "51defa03-1ecf-3314-bf34-2a652bce57fa",
 - "description": "Generated description for concept referred to by key \"ForwardPayloadTask:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "c540f048-96af-35e3-a36e-e9c29377cba7",
 - "description": "Generated description for concept referred to by key \"LogEvent:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "UUID": "568b7345-9de1-36d3-b6a3-9b857e6809a1",
 - "description": "Generated description for concept referred to by key \"ReceiveEventPolicy:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "SimpleIntType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "SimpleIntType",
 - "version": "0.0.1"
 - },
 - "UUID": "153791fd-ae0a-36a7-88a5-309a7936415d",
 - "description": "Generated description for concept referred to by key \"SimpleIntType:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "UUID": "8a4957cf-9493-3a76-8c22-a208e23259af",
 - "description": "Generated description for concept referred to by key \"SimpleStringType:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "UUIDType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "UUIDType",
 - "version": "0.0.1"
 - },
 - "UUID": "6a8cc68e-dfc8-3403-9c6d-071c886b319c",
 - "description": "Generated description for concept referred to by key \"UUIDType:0.0.1\""
 - }
 - }
 - ]
 - }
 - }
 - }
 - },
 - "eventInputParameters": {
 - "DmaapConsumer": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "RESTCLIENT",
 - "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 - "parameters": {
 - "url": "http://message-router:3904/events/AC_ELEMENT_MSG/APEX/1?timeout=30000"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON",
 - "parameters": {
 - "pojoField": "DmaapResponseEvent"
 - }
 - },
 - "eventName": "AcElementEvent",
 - "eventNameFilter": "AcElementEvent"
 - }
 - },
 - "eventOutputParameters": {
 - "logOutputter": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "FILE",
 - "parameters": {
 - "fileName": "outputevents.log"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON"
 - }
 - },
 - "DmaapReplyProducer": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "RESTCLIENT",
 - "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 - "parameters": {
 - "url": "http://message-router:3904/events/POLICY_UPDATE_MSG"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON",
 - "parameters": {
 - "pojoField": "DmaapResponseStatusEvent"
 - }
 - },
 - "eventNameFilter": "(LogEvent|DmaapResponseStatusEvent)"
 - }
 - }
 - },
 - "name": "onap.policies.native.apex.ac.element",
 - "version": "1.0.0"
 - }
 - }
 - ]
 - }
 -}</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> - <hashTree> - <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> - <collectionProp name="Asserion.test_strings"> - <stringProp name="49587">201</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/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">compositionId</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.compositionId</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> - </JSONPostProcessor> - <hashTree/> - <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> - <stringProp name="filename"></stringProp> - <stringProp name="parameters"></stringProp> - <boolProp name="resetInterpreter">false</boolProp> - <stringProp name="script">props.put("compositionId", vars.get("compositionId"));</stringProp> - </BeanShellPostProcessor> - <hashTree/> - </hashTree> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Register participants" enabled="true"> <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> @@ -1664,60 +134,354 @@ </ResponseAssertion> <hashTree/> </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prime AC definitions" 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">{
 - "primeOrder": "PRIME"
 -}</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> + <boolProp name="resetInterpreter">false</boolProp> + <stringProp name="parameters"></stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="script">int n = 10; +for (int i = 0; i < n; i++) { + props.put("baseCount" + i, "1"); + log.info("baseCount" + i); +} +</stringProp> + </BeanShellPreProcessor> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="AutomationComposition Test Flow" 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"> + <stringProp name="LoopController.loops">1</stringProp> + <boolProp name="LoopController.continue_forever">false</boolProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">${USERS}</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration">50000</stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + <boolProp name="ThreadGroup.delayedStart">false</boolProp> + </ThreadGroup> + <hashTree> + <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Creation and Deploy" enabled="true"> + <stringProp name="LoopController.loops">${INSTANCES}</stringProp> + </LoopController> <hashTree> - <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> - <collectionProp name="Asserion.test_strings"> - <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">false</boolProp> - <intProp name="Assertion.test_type">1</intProp> - <stringProp name="Scope.variable"></stringProp> - </ResponseAssertion> + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <boolProp name="resetInterpreter">false</boolProp> + <stringProp name="script">vars.put("loopCondition", "true"); +vars.put("primeState", ""); +vars.put("deployState", ""); +String elementId = UUID.randomUUID().toString(); +vars.put("elementId", elementId); +</stringProp> + </BeanShellPreProcessor> <hashTree/> - </hashTree> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${primeState}" != "PRIMED")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify Priming" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Commission AutomationComposition 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">{
 - "primeOrder": "PRIME"
 + "tosca_definitions_version": "tosca_simple_yaml_1_3",
 + "name": "${__RandomString(10,abcdefghilmnopqrtsvz)}",
 + "version": "1.0.${__threadNum}",
 + "data_types": {
 + "onap.datatypes.ToscaConceptIdentifier": {
 + "properties": {
 + "name": {
 + "name": "name",
 + "type": "string",
 + "required": true
 + },
 + "version": {
 + "name": "version",
 + "type": "string",
 + "required": true
 + }
 + },
 + "name": "onap.datatypes.ToscaConceptIdentifier",
 + "derived_from": "tosca.datatypes.Root"
 + },
 + "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": {
 + "properties": {
 + "restRequestId": {
 + "name": "restRequestId",
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "description": "The name and version of a REST request to be sent to a REST endpoint",
 + "required": true
 + },
 + "httpMethod": {
 + "name": "httpMethod",
 + "type": "string",
 + "description": "The REST method to use",
 + "required": true,
 + "constraints": [
 + {
 + "valid_values": [
 + "POST",
 + "PUT",
 + "GET",
 + "DELETE"
 + ]
 + }
 + ]
 + },
 + "path": {
 + "name": "path",
 + "type": "string",
 + "description": "The path of the REST request relative to the base URL",
 + "required": true
 + },
 + "body": {
 + "name": "body",
 + "type": "string",
 + "description": "The body of the REST request for PUT and POST requests",
 + "required": false
 + },
 + "expectedResponse": {
 + "name": "expectedResponse",
 + "type": "integer",
 + "description": "THe expected HTTP status code for the REST request",
 + "required": true
 + }
 + },
 + "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
 + "version": "1.0.0",
 + "derived_from": "tosca.datatypes.Root"
 + },
 + "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": {
 + "properties": {
 + "configurationEntityId": {
 + "name": "configurationEntityId",
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element",
 + "required": true
 + },
 + "restSequence": {
 + "name": "restSequence",
 + "type": "list",
 + "description": "A sequence of REST commands to send to the REST endpoint",
 + "required": false,
 + "entry_schema": {
 + "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
 + "type_version": "1.0.0"
 + }
 + }
 + },
 + "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity",
 + "version": "1.0.0",
 + "derived_from": "tosca.datatypes.Root"
 + }
 + },
 + "node_types": {
 + "org.onap.policy.clamp.acm.Participant": {
 + "properties": {
 + "provider": {
 + "name": "provider",
 + "type": "string",
 + "required": false
 + }
 + },
 + "name": "org.onap.policy.clamp.acm.Participant",
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root"
 + },
 + "org.onap.policy.clamp.acm.AutomationCompositionElement": {
 + "properties": {
 + "provider": {
 + "name": "provider",
 + "type": "string",
 + "description": "Specifies the organization that provides the automation composition element",
 + "required": false,
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "startPhase": {
 + "name": "startPhase",
 + "type": "integer",
 + "description": "A value indicating the start phase in which this automation composition element will be started, the first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped in reverse start phase order. Automation Composition Elements with the same start phase are started and stopped simultaneously",
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": "0"
 + }
 + ],
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "uninitializedToPassiveTimeout": {
 + "name": "uninitializedToPassiveTimeout",
 + "type": "integer",
 + "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive",
 + "default": 60,
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": "0"
 + }
 + ],
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "passiveToRunningTimeout": {
 + "name": "passiveToRunningTimeout",
 + "type": "integer",
 + "description": "The maximum time in seconds to wait for a state chage from passive to running",
 + "default": 60,
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": "0"
 + }
 + ],
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "runningToPassiveTimeout": {
 + "name": "runningToPassiveTimeout",
 + "type": "integer",
 + "description": "The maximum time in seconds to wait for a state chage from running to passive",
 + "default": 60,
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": "0"
 + }
 + ],
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "passiveToUninitializedTimeout": {
 + "name": "passiveToUninitializedTimeout",
 + "type": "integer",
 + "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized",
 + "default": 60,
 + "required": false,
 + "constraints": [
 + {
 + "greater_or_equal": "0"
 + }
 + ],
 + "metadata": {
 + "common": "true"
 + }
 + }
 + },
 + "name": "org.onap.policy.clamp.acm.AutomationCompositionElement",
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root"
 + },
 + "org.onap.policy.clamp.acm.AutomationComposition": {
 + "properties": {
 + "provider": {
 + "name": "provider",
 + "type": "string",
 + "description": "Specifies the organization that provides the automation composition element",
 + "required": false,
 + "metadata": {
 + "common": "true"
 + }
 + },
 + "elements": {
 + "name": "elements",
 + "type": "list",
 + "description": "Specifies a list of automation composition element definitions that make up this automation composition definition",
 + "required": true,
 + "entry_schema": {
 + "type": "onap.datatypes.ToscaConceptIdentifier"
 + },
 + "metadata": {
 + "common": "true"
 + }
 + }
 + },
 + "name": "org.onap.policy.clamp.acm.AutomationComposition",
 + "version": "1.0.1",
 + "derived_from": "tosca.nodetypes.Root"
 + },
 + "org.onap.policy.clamp.acm.HttpAutomationCompositionElement": {
 + "properties": {
 + "baseUrl": {
 + "name": "baseUrl",
 + "type": "string",
 + "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints.",
 + "required": true
 + },
 + "httpHeaders": {
 + "name": "httpHeaders",
 + "type": "map",
 + "description": "HTTP headers to send on REST requests",
 + "required": false,
 + "entry_schema": {
 + "type": "string"
 + }
 + },
 + "configurationEntities": {
 + "name": "configurationEntities",
 + "type": "map",
 + "description": "The connfiguration entities the Automation Composition Element is managing and their associated REST requests",
 + "required": true,
 + "entry_schema": {
 + "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity",
 + "type_version": "1.0.0"
 + }
 + }
 + },
 + "name": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement",
 + "version": "1.0.0",
 + "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement"
 + }
 + },
 + "topology_template": {
 + "node_templates": {
 + "org.onap.policy.clamp.acm.HttpParticipant": {
 + "type": "org.onap.policy.clamp.acm.Participant",
 + "type_version": "1.0.1",
 + "properties": {
 + "provider": "ONAP"
 + },
 + "name": "org.onap.policy.clamp.acm.HttpParticipant",
 + "version": "2.3.4",
 + "description": "Participant for Http requests"
 + },
 + "onap.policy.clamp.ac.element.Http_GenericAutomationCompositionElement": {
 + "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement",
 + "type_version": "1.0.0",
 + "properties": {
 + "provider": "ONAP",
 + "uninitializedToPassiveTimeout": 180,
 + "startPhase": 0
 + },
 + "name": "onap.policy.clamp.ac.element.Http_GenericAutomationCompositionElement",
 + "version": "1.2.3",
 + "description": "Automation composition element for the http requests of AC Element Generic microservice"
 + },
 + "onap.policy.clamp.ac.element.AutomationCompositionDefinition": {
 + "type": "org.onap.policy.clamp.acm.AutomationComposition",
 + "type_version": "1.0.1",
 + "properties": {
 + "provider": "ONAP",
 + "elements": [
 + {
 + "name": "onap.policy.clamp.ac.element.Http_GenericAutomationCompositionElement",
 + "version": "1.2.3"
 + }
 + ]
 + },
 + "name": "onap.policy.clamp.ac.element.AutomationCompositionDefinition",
 + "version": "1.2.3",
 + "description": "Automation composition for Demp"
 + }
 + }
 + }
 }</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> @@ -1726,8 +490,8 @@ <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</stringProp> - <stringProp name="HTTPSampler.method">GET</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions</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> @@ -1742,191 +506,184 @@ <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</stringProp> + <stringProp name="49587">201</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> - <stringProp name="Scope.variable"></stringProp> </ResponseAssertion> <hashTree/> <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">primeState</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.state</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">compositionId</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.compositionId</stringProp> <stringProp name="JSONPostProcessor.match_numbers"></stringProp> <stringProp name="Scope.variable">compositionId</stringProp> </JSONPostProcessor> <hashTree/> + <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> + <boolProp name="resetInterpreter">false</boolProp> + <stringProp name="parameters"></stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="script">String compositionId = vars.get("compositionId"); + +String baseCount = "baseCount" + ctx.getThreadNum(); +String count = props.get(baseCount); +vars.put("composition" + count + "Id", compositionId); + +log.info("Create Composition: " + compositionId); + +</stringProp> + </BeanShellPostProcessor> + <hashTree/> </hashTree> - </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Instantiate acm" 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">{
 - "name": "DemoInstance0",
 - "version": "1.0.1",
 - "compositionId": "${compositionId}",
 - "description": "Demo automation composition instance 0",
 - "elements": {
 - "709c62b3-8918-41b9-a747-d21eb79c6c20": {
 - "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
 - "definition": {
 - "name": "onap.policy.clamp.ac.element.Policy_AutomationCompositionElement",
 - "version": "1.2.3"
 + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prime AC definitions" 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">{
 + "primeOrder": "PRIME"
 +}</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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </HTTPSamplerProxy> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <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">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + <stringProp name="Scope.variable"></stringProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> + <stringProp name="WhileController.condition">${__javaScript("${primeState}" != "PRIMED")}</stringProp> + </WhileController> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify Priming" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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> + <stringProp name="Scope.variable"></stringProp> + </ResponseAssertion> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">primeState</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.state</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + <stringProp name="Scope.variable">compositionId</stringProp> + </JSONPostProcessor> + <hashTree/> + </hashTree> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Instantiate acm" 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">{
 + "name": "${__RandomString(10,abcdefghilmnopqrtsvz)}",
 + "version": "1.0.${__threadNum}",
 + "compositionId": "${compositionId}",
 + "description": "Demo automation composition HttpStater",
 + "elements": {
 + "${elementId}": {
 + "id": "${elementId}",
 + "definition": {
 + "name": "onap.policy.clamp.ac.element.Http_GenericAutomationCompositionElement",
 + "version": "1.2.3"
 + },
 + "description": "Starter Automation Composition Element for the Demo",
 + "properties": {
 + "uninitializedToPassiveTimeout": 180,
 + "baseUrl": "http://policy-clamp-ac-pf-ppnt:6969",
 + "httpHeaders": {
 + "Content-Type": "application/json",
 + "Authorization": "Basic cGFydGljaXBhbnRVc2VyOnpiIVh6dEczNA=="
 + },
 + "configurationEntities": [
 + {
 + "configurationEntityId": {
 + "name": "onap.policy.clamp.ac.starter",
 + "version": "1.0.0"
 },
 - "description": "Policy Automation Composition Element for the Demo",
 - "properties": {
 - "policy_type_id": {
 - "name": "onap.policies.native.Apex",
 - "version": "1.0.0"
 + "restSequence": [
 + {
 + "restRequestId": {
 + "name": "request1",
 + "version": "1.0.1"
 },
 - "policy_id": {
 - "get_input": "acm_element_policy"
 - }
 - }
 - }
 + "httpMethod": "GET",
 + "path": "/onap/policyparticipant/health",
 + "body": "",
 + "expectedResponse": 200
 + }
 + ]
 + }
 + ]
 + }
 }
 + }
 }</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> - <hashTree> - <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> - <collectionProp name="Asserion.test_strings"> - <stringProp name="49587">201</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/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">instanceId</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.instanceId</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">instanceId</stringProp> - </JSONPostProcessor> - <hashTree/> - <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> - <boolProp name="resetInterpreter">false</boolProp> - <stringProp name="parameters"></stringProp> - <stringProp name="filename"></stringProp> - <stringProp name="script">props.put("instanceId", vars.get("instanceId"));</stringProp> - </BeanShellPostProcessor> - <hashTree/> - </hashTree> - </hashTree> - <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="AutomationComposition 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"> - <intProp name="LoopController.loops">-1</intProp> - <boolProp name="LoopController.continue_forever">false</boolProp> - </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> - <boolProp name="ThreadGroup.delayedStart">false</boolProp> - </ThreadGroup> - <hashTree> - <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> - <stringProp name="filename"></stringProp> - <stringProp name="parameters"></stringProp> - <boolProp name="resetInterpreter">false</boolProp> - <stringProp name="script">String compositionId = props.get("compositionId"); -String instanceId = props.get("instanceId"); -String deployState = props.get("deployState"); -vars.put("compositionId", compositionId); -vars.put("instanceId", instanceId); -vars.put("deployState", deployState); -</stringProp> - </BeanShellPreProcessor> - <hashTree/> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Deploy AC instance" 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">{
 - "deployOrder": "DEPLOY"
 -}
 -</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </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> - </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">33</intProp> - </ResponseAssertion> - <hashTree/> - </hashTree> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${deployState}" !== "DEPLOYED")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify acm state" enabled="true"> - <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> - <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> - <collectionProp name="Arguments.arguments"/> + <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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</stringProp> - <stringProp name="HTTPSampler.method">GET</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances</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> @@ -1941,7 +698,7 @@ vars.put("deployState", deployState); <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</stringProp> + <stringProp name="49587">201</stringProp> </collectionProp> <stringProp name="Assertion.custom_message"></stringProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> @@ -1950,75 +707,49 @@ vars.put("deployState", deployState); </ResponseAssertion> <hashTree/> <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">deployState</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.deployState</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">instanceId</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.instanceId</stringProp> <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> + <stringProp name="Scope.variable">instanceId</stringProp> </JSONPostProcessor> <hashTree/> + <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> + <boolProp name="resetInterpreter">false</boolProp> + <stringProp name="parameters"></stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="script">String instanceId = vars.get("instanceId"); + +String baseCount = "baseCount" + ctx.getThreadNum(); +String count = props.get(baseCount); + +vars.put("instance" + count + "Id", instanceId); +log.info("Create Instance: " + instanceId); + +int icount = Integer.parseInt(count) + 1; +props.put(baseCount, ("" + icount)); +</stringProp> + </BeanShellPostProcessor> + <hashTree/> </hashTree> - </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Undeploy AC instance" 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">{
 - "deployOrder": "UNDEPLOY"
 + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Deploy AC instance" 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">{
 + "deployOrder": "DEPLOY"
 }
 </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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} </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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> - <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> - </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">33</intProp> - </ResponseAssertion> - <hashTree/> - <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> - <stringProp name="ConstantTimer.delay">6000</stringProp> - </ConstantTimer> - <hashTree/> - </hashTree> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${deployState}" !== "UNDEPLOYED")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify acm state" enabled="true"> - <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> - <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> - <collectionProp name="Arguments.arguments"/> + <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">http</stringProp> <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</stringProp> - <stringProp name="HTTPSampler.method">GET</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> @@ -2031,26 +762,69 @@ vars.put("deployState", deployState); <intProp name="HTTPSampler.ipSourceType">0</intProp> </HTTPSamplerProxy> <hashTree> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + </ConstantTimer> + <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</stringProp> + <stringProp name="49588">202</stringProp> + <stringProp name="51508">400</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> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">33</intProp> </ResponseAssertion> <hashTree/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">deployState</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.deployState</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> - </JSONPostProcessor> - <hashTree/> + </hashTree> + <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> + <stringProp name="WhileController.condition">${__javaScript("${deployState}" !== "DEPLOYED")}</stringProp> + </WhileController> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify acm state DEPLOYED" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">deployState</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.deployState</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + <stringProp name="Scope.variable">compositionId</stringProp> + </JSONPostProcessor> + <hashTree/> + </hashTree> </hashTree> </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Metrics acm" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get participants" enabled="true"> <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> @@ -2058,7 +832,7 @@ vars.put("deployState", deployState); <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/prometheus</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/participants</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> @@ -2078,64 +852,21 @@ vars.put("deployState", deployState); </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">33</intProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + <stringProp name="Scope.variable"></stringProp> </ResponseAssertion> <hashTree/> - <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true"> - <stringProp name="scriptLanguage">groovy</stringProp> - <stringProp name="parameters"></stringProp> - <stringProp name="filename"></stringProp> - <stringProp name="cacheKey">true</stringProp> - <stringProp name="script">def res = []; -if (prev.getResponseCode() == '200') { - res = prev.getResponseDataAsString(); - - assert res.contains("http_server_requests_seconds_sum") - assert res.contains("http_server_requests_seconds_max") - assert res.contains("spring_data_repository_invocations_seconds_count") - assert res.contains("spring_data_repository_invocations_seconds_sum") - assert res.contains("spring_data_repository_invocations_seconds_max") - assert res.contains("jvm_threads_live_threads") - - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"POST\",outcome=\"SUCCESS\",status=\"201\",uri=\"/v2/compositions\",}") - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"PUT\",outcome=\"SUCCESS\",status=\"202\",uri=\"/v2/compositions/{compositionId}\",}") - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"GET\",outcome=\"SUCCESS\",status=\"200\",uri=\"/v2/compositions/{compositionId}\",}") - - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"POST\",outcome=\"SUCCESS\",status=\"201\",uri=\"/v2/compositions/{compositionId}/instances\",}") - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"PUT\",outcome=\"SUCCESS\",status=\"202\",uri=\"/v2/compositions/{compositionId}/instances/{instanceId}\",}") - assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"GET\",outcome=\"SUCCESS\",status=\"200\",uri=\"/v2/compositions/{compositionId}/instances/{instanceId}\",}") - - assert res.contains("publisher_automation_composition_state_change_seconds_count") - assert res.contains("publisher_participant_update_seconds_count") - assert res.contains("publisher_participant_status_req_seconds_count") - assert res.contains("publisher_automation_composition_deploy_seconds_count") - - assert res.contains("listener_participant_prime_ack_seconds_count") - assert res.contains("listener_automation_composition_statechange_ack_seconds_count") - assert res.contains("listener_participant_status_seconds_count") -}</stringProp> - </JSR223Assertion> - <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">text/plain</stringProp> - </elementProp> - </collectionProp> - </HeaderManager> - <hashTree/> </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Metrics participant" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get compositions" enabled="true"> <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> <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">${POLICY_PARTICIPANT_HOST}</stringProp> - <stringProp name="HTTPSampler.port">${POLICY_PARTICIPANT_HOST_PORT}</stringProp> + <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> + <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policyparticipant/prometheus</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> @@ -2155,88 +886,45 @@ if (prev.getResponseCode() == '200') { </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">33</intProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">1</intProp> + <stringProp name="Scope.variable"></stringProp> </ResponseAssertion> <hashTree/> - <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true"> - <stringProp name="scriptLanguage">groovy</stringProp> + </hashTree> + <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Undeploy and Delete" enabled="true"> + <stringProp name="LoopController.loops">${INSTANCES}</stringProp> + </LoopController> + <hashTree> + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> + <boolProp name="resetInterpreter">false</boolProp> <stringProp name="parameters"></stringProp> <stringProp name="filename"></stringProp> - <stringProp name="cacheKey">true</stringProp> - <stringProp name="script">def res = []; -if (prev.getResponseCode() == '200') { - res = prev.getResponseDataAsString(); - - assert res.contains("http_server_requests_seconds_sum") - assert res.contains("http_server_requests_seconds_max") - assert res.contains("jvm_threads_live_threads") - - assert res.contains("publisher_participant_register_seconds_count") - assert res.contains("publisher_participant_prime_ack_seconds_count") - assert res.contains("publisher_participant_status_seconds_count") - assert res.contains("publisher_automation_composition_update_ack_seconds_count") - - assert res.contains("listener_participant_status_req_seconds_count") - assert res.contains("listener_participant_prime_seconds_count") - assert res.contains("listener_automation_composition_state_change_seconds_count") - assert res.contains("listener_automation_composition_update_seconds_count") -}</stringProp> - </JSR223Assertion> - <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">text/plain</stringProp> - </elementProp> - </collectionProp> - </HeaderManager> + <stringProp name="script">vars.put("loopCondition", "true"); +vars.put("primeState", ""); +vars.put("deployState", ""); +</stringProp> + </BeanShellPreProcessor> <hashTree/> - </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"> - <stringProp name="LoopController.loops">1</stringProp> - <boolProp name="LoopController.continue_forever">false</boolProp> - </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> - <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> - <stringProp name="filename"></stringProp> - <stringProp name="parameters"></stringProp> - <boolProp name="resetInterpreter">false</boolProp> - <stringProp name="script">String compositionId = props.get("compositionId"); -String instanceId = props.get("instanceId"); -String deployState = props.get("deployState"); -String loopCondition; -vars.put("compositionId", compositionId); -vars.put("instanceId", instanceId); -vars.put("deployState", deployState); -vars.put("loopCondition", "true");</stringProp> - </BeanShellPreProcessor> - <hashTree/> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${deployState}" !== "UNDEPLOYED")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify acm state before uninstantiation" enabled="true"> - <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> - <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> - <collectionProp name="Arguments.arguments"/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Undeploy AC instance" 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">{
 + "deployOrder": "UNDEPLOY"
 +}
 +</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</stringProp> - <stringProp name="HTTPSampler.method">GET</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} </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> @@ -2249,49 +937,55 @@ vars.put("loopCondition", "true");</stringProp> <intProp name="HTTPSampler.ipSourceType">0</intProp> </HTTPSamplerProxy> <hashTree> + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> + <boolProp name="resetInterpreter">false</boolProp> + <stringProp name="parameters"></stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="script">String baseCount = "baseCount" + ctx.getThreadNum(); +String count = props.get(baseCount); +int icount = Integer.parseInt(count) - 1; +props.put(baseCount, ("" + icount)); + +count = props.get(baseCount); + +String compositionId = vars.get("composition" + count + "Id"); +vars.put("compositionId", compositionId); +log.info("compositionId: " + compositionId); +String instanceId = vars.get("instance" + count + "Id"); +vars.put("instanceId", instanceId); +log.info("instanceId: " + instanceId); +</stringProp> + </BeanShellPreProcessor> + <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</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">false</boolProp> - <intProp name="Assertion.test_type">1</intProp> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">33</intProp> </ResponseAssertion> <hashTree/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">deployState</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.deployState</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> - </JSONPostProcessor> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + </ConstantTimer> <hashTree/> </hashTree> - <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true"> - <boolProp name="IfController.evaluateAll">false</boolProp> - <boolProp name="IfController.useExpression">true</boolProp> - <stringProp name="IfController.condition">${__javaScript("${deployState}" === "DEPLOYED")}</stringProp> - </IfController> + <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> + <stringProp name="WhileController.condition">${__javaScript("${deployState}" !== "UNDEPLOYED")}</stringProp> + </WhileController> <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Undeploy AC instance at Teardown" 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">{
 - "deployOrder": "UNDEPLOY"
 -}
 -</stringProp> - <stringProp name="Argument.metadata">=</stringProp> - </elementProp> - </collectionProp> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify acm state UNDEPLOYED" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} </stringProp> - <stringProp name="HTTPSampler.method">PUT</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</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> @@ -2306,59 +1000,24 @@ vars.put("loopCondition", "true");</stringProp> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49588">202</stringProp> + <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">true</boolProp> - <intProp name="Assertion.test_type">33</intProp> + <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> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">deployState</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.deployState</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + <stringProp name="Scope.variable">compositionId</stringProp> + </JSONPostProcessor> <hashTree/> </hashTree> </hashTree> - </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Uninstantiate AC instance" enabled="true"> - <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> - <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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> - <hashTree> - <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> - <collectionProp name="Asserion.test_strings"> - <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">false</boolProp> - <intProp name="Assertion.test_type">1</intProp> - </ResponseAssertion> - <hashTree/> - </hashTree> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${loopCondition}" === "true")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify No Instances" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Uninstantiate AC instance" enabled="true"> <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> @@ -2366,8 +1025,8 @@ vars.put("loopCondition", "true");</stringProp> <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances</stringProp> - <stringProp name="HTTPSampler.method">GET</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}</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> @@ -2382,25 +1041,139 @@ vars.put("loopCondition", "true");</stringProp> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</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">false</boolProp> <intProp name="Assertion.test_type">1</intProp> - <stringProp name="Scope.variable"></stringProp> </ResponseAssertion> <hashTree/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">automationCompositionList</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.automationCompositionList</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> - </JSONPostProcessor> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Metrics acm" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/prometheus</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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">true</boolProp> + <intProp name="Assertion.test_type">33</intProp> + </ResponseAssertion> + <hashTree/> + <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script">def res = []; +if (prev.getResponseCode() == '200') { + res = prev.getResponseDataAsString(); + + assert res.contains("http_server_requests_seconds_sum") + assert res.contains("http_server_requests_seconds_max") + assert res.contains("spring_data_repository_invocations_seconds_count") + assert res.contains("spring_data_repository_invocations_seconds_sum") + assert res.contains("spring_data_repository_invocations_seconds_max") + assert res.contains("jvm_threads_live_threads") + + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"POST\",outcome=\"SUCCESS\",status=\"201\",uri=\"/v2/compositions\",}") + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"PUT\",outcome=\"SUCCESS\",status=\"202\",uri=\"/v2/compositions/{compositionId}\",}") + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"GET\",outcome=\"SUCCESS\",status=\"200\",uri=\"/v2/compositions/{compositionId}\",}") + + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"POST\",outcome=\"SUCCESS\",status=\"201\",uri=\"/v2/compositions/{compositionId}/instances\",}") + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"PUT\",outcome=\"SUCCESS\",status=\"202\",uri=\"/v2/compositions/{compositionId}/instances/{instanceId}\",}") + assert res.contains("http_server_requests_seconds_count{error=\"none\",exception=\"none\",method=\"GET\",outcome=\"SUCCESS\",status=\"200\",uri=\"/v2/compositions/{compositionId}/instances/{instanceId}\",}") + + assert res.contains("publisher_automation_composition_state_change_seconds_count") + assert res.contains("publisher_participant_update_seconds_count") + assert res.contains("publisher_participant_status_req_seconds_count") + assert res.contains("publisher_automation_composition_deploy_seconds_count") + + assert res.contains("listener_participant_prime_ack_seconds_count") + assert res.contains("listener_automation_composition_statechange_ack_seconds_count") + assert res.contains("listener_participant_status_seconds_count") +}</stringProp> + </JSR223Assertion> + <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">text/plain</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> <hashTree/> </hashTree> - <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true"> - <stringProp name="BeanShellSampler.query">// Extracted JSON array + <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> + <stringProp name="WhileController.condition">${__javaScript("${loopCondition}" === "true")}</stringProp> + </WhileController> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify No Instances" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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> + <stringProp name="Scope.variable"></stringProp> + </ResponseAssertion> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">automationCompositionList</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.automationCompositionList</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + <stringProp name="Scope.variable">compositionId</stringProp> + </JSONPostProcessor> + <hashTree/> + </hashTree> + <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true"> + <stringProp name="BeanShellSampler.query">// Extracted JSON array String jsonArray = vars.get("automationCompositionList"); //String jsonArray = "[]"; @@ -2414,63 +1187,18 @@ if (jsonArray.equals("[]")) { vars.put("loopCondition", "true"); log.info("condition true"); }</stringProp> - <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp> - </BeanShellSampler> - <hashTree/> - </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Deprime AC 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">{
 - "primeOrder": "DEPRIME"
 -}</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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </HTTPSamplerProxy> - <hashTree> - <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> - <collectionProp name="Asserion.test_strings"> - <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">false</boolProp> - <intProp name="Assertion.test_type">1</intProp> - </ResponseAssertion> - <hashTree/> - </hashTree> - <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> - <stringProp name="WhileController.condition">${__javaScript("${primeState}" !== "COMMISSIONED")}</stringProp> - </WhileController> - <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify Deprimed" enabled="true"> + <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp> + </BeanShellSampler> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Deprime AC 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">{
 - "primeOrder": "COMMISSIONED"
 + "primeOrder": "DEPRIME"
 }</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> @@ -2480,7 +1208,7 @@ if (jsonArray.equals("[]")) { <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</stringProp> - <stringProp name="HTTPSampler.method">GET</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> @@ -2495,57 +1223,95 @@ if (jsonArray.equals("[]")) { <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="49586">200</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">false</boolProp> <intProp name="Assertion.test_type">1</intProp> - <stringProp name="Scope.variable"></stringProp> </ResponseAssertion> <hashTree/> - <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> - <stringProp name="JSONPostProcessor.referenceNames">primeState</stringProp> - <stringProp name="JSONPostProcessor.jsonPathExprs">$.state</stringProp> - <stringProp name="JSONPostProcessor.match_numbers"></stringProp> - <stringProp name="Scope.variable">compositionId</stringProp> - </JSONPostProcessor> + </hashTree> + <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> + <stringProp name="WhileController.condition">${__javaScript("${primeState}" !== "COMMISSIONED")}</stringProp> + </WhileController> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Verify Deprimed" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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> + <stringProp name="Scope.variable"></stringProp> + </ResponseAssertion> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">primeState</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.state</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + <stringProp name="Scope.variable">compositionId</stringProp> + </JSONPostProcessor> + <hashTree/> + </hashTree> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete AutomationComposition Definition" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> + <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">http</stringProp> + <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> + <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> + <boolProp name="HTTPSampler.image_parser">false</boolProp> + <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> + <stringProp name="HTTPSampler.concurrentPool">6</stringProp> + <boolProp name="HTTPSampler.md5">false</boolProp> + <intProp name="HTTPSampler.ipSourceType">0</intProp> + </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> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete AutomationComposition Definition" enabled="true"> - <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> - <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">http</stringProp> - <stringProp name="HTTPSampler.path">/onap/policy/clamp/acm/v2/compositions/${compositionId}</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> - <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp> - <boolProp name="HTTPSampler.image_parser">false</boolProp> - <boolProp name="HTTPSampler.concurrentDwn">false</boolProp> - <stringProp name="HTTPSampler.concurrentPool">6</stringProp> - <boolProp name="HTTPSampler.md5">false</boolProp> - <intProp name="HTTPSampler.ipSourceType">0</intProp> - </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> @@ -2581,7 +1347,7 @@ if (jsonArray.equals("[]")) { <connectTime>true</connectTime> </value> </objProp> - <stringProp name="filename">/home/ramesh/run-test/testresults.jtl</stringProp> + <stringProp name="filename">/tmp/testresults.jtl</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> |