<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">
<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">
</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>
<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>
<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"
- },
- "description": "Policy Automation Composition Element for the Demo",
- "properties": {
- "policy_type_id": {
- "name": "onap.policies.native.Apex",
- "version": "1.0.0"
- },
- "policy_id": {
- "get_input": "acm_element_policy"
- }
- }
- }
- }
+ <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}/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>
+ <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>
- </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="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"
+ },
+ "restSequence": [
+ {
+ "restRequestId": {
+ "name": "request1",
+ "version": "1.0.1"
+ },
+ "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/${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>
<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>
</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>
<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"/>
<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>
</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>
</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")
+ <stringProp name="script">vars.put("loopCondition", "true");
+vars.put("primeState", "");
+vars.put("deployState", "");
+</stringProp>
+ </BeanShellPreProcessor>
+ <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"
+}
+</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>
+ <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));
- 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")
+count = props.get(baseCount);
- 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>
- <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;
+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);
-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">
+log.info("instanceId: " + instanceId);
+</stringProp>
+ </BeanShellPreProcessor>
+ <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">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">1000</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 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">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>
+ <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>
+ <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"/>
<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.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>
</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>
+ <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>
- <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("${loopCondition}" === "true")}</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 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/${instanceId} </stringProp>
- <stringProp name="HTTPSampler.method">PUT</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>
<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>
+ <stringProp name="Scope.variable"></stringProp>
</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">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 = "[]";
+
+
+log.info("instanceArray: " + jsonArray);
+// Check if the JSON array is empty
+if (jsonArray.equals("[]")) {
+ vars.put("loopCondition", "false");
+ log.info("condition false");
+} else {
+ vars.put("loopCondition", "true");
+ log.info("condition true");
+}</stringProp>
+ <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+ </BeanShellSampler>
+ <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">
- <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="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}/instances</stringProp>
- <stringProp name="HTTPSampler.method">GET</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>
<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/>
</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 = "[]";
-
-
-log.info("instanceArray: " + jsonArray);
-// Check if the JSON array is empty
-if (jsonArray.equals("[]")) {
- vars.put("loopCondition", "false");
- log.info("condition false");
-} else {
- 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>
+ <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>
- </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="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"
-}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
+ <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">GET</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>
<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>
<ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<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">