Policy PAP Stability Tests false true false PAP_HOST localhost = PAP_PORT 30003 = API_HOST localhost = API_PORT 30002 = USERS 10 = http://${PAP_HOST}:${PAP_PORT}/policy/pap/v1 policyadmin zb!XztG34 http://${API_HOST}:${API_PORT}/policy/api/v1 policyadmin zb!XztG34 http://${PAP_HOST}:${PAP_PORT}/metrics policyadmin zb!XztG34 true false Content-Type application/json continue false 1 ${USERS} 1 false true 1 1 threadCount false true false { "tosca_definitions_version": "tosca_simple_yaml_1_1_0", "topology_template": { "policies": [ { "operational.modifyconfig${threadCount}": { "type": "onap.policies.controlloop.operational.common.Drools", "type_version": "1.0.0", "version": "1.0.0", "metadata": { "policy-id": "operational.modifyconfig${threadCount}" }, "properties": { "id": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", "timeout": 1200, "abatement": false, "trigger": "unique-policy-id-1-modifyConfig", "operations": [ { "id": "unique-policy-id-1-modifyConfig", "description": "Modify the packet generator", "operation": { "actor": "CDS", "operation": "modify-config", "target": { "targetType": "VNF", "entityIds": { "resourceID": "37b008b9-b367-4359-93fd-74d3ce0ee1a0" } }, "payload":{ "artifact_name": "vFW-CDS", "artifact_version": "1.0.0", "data": "{\"active-streams\": \"7\"}" } }, "timeout": 300, "retries": 0, "success": "final_success", "failure": "final_failure", "failure_timeout": "final_failure_timeout", "failure_retries": "final_failure_retries", "failure_exception": "final_failure_exception", "failure_guard": "final_failure_guard" } ], "controllerName": "usecases" } } } ] } } = ${API_HOST} ${API_PORT} http /policy/api/v1/policies POST true false true false 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http policy/pap/v1/pdps/groups/defaultGroup?state=ACTIVE PUT true false true false 200 Assertion.response_code false 1 continue false -1 ${USERS} 0 true 7200 true 1 ${USERS} 1 threadCount false ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/healthcheck GET true false true false Basic Health Check 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res instanceof Map; assert res.code == 200; assert res.name == "Policy PAP"; assert res.healthy==true; assert res.message=="alive"; } ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/metrics GET true false true false PAP Metrics 200 Assertion.response_code false 1 true if (prev.getResponseCode() == '200') { def res = prev.getResponseDataAsString(); def simpleDeployAPICount = '0'; if (res.contains('http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="202",uri="/policy/pap/v1/pdps/policies",} ')) { simpleDeployAPICount = (res =~ /http_server_requests_seconds_count\{exception="None",method="POST",outcome="SUCCESS",status="202",uri="\/policy\/pap\/v1\/pdps\/policies",\} ([0-9]+)?([.]*[0-9]*)?/)[0][1] } def batchDeploymentAPICount = '0'; if (res.contains('http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="202",uri="/policy/pap/v1/pdps/deployments/batch",} ')) { batchDeploymentAPICount = (res =~ /http_server_requests_seconds_count\{exception="None",method="POST",outcome="SUCCESS",status="202",uri="\/policy\/pap\/v1\/pdps\/deployments\/batch",\} ([0-9]+)?([.]*[0-9]*)?/)[0][1] } vars.put("simpleDeployAPICount", simpleDeployAPICount); vars.put("batchDeploymentAPICount", batchDeploymentAPICount); } groovy true false { "groups": [ { "name": "sampleGroup${threadCount}", "pdpGroupState": "ACTIVE", "properties": {}, "pdpSubgroups": [ { "pdpType": "apex", "desiredInstanceCount": 1, "properties": {}, "supportedPolicyTypes": [ { "name": "onap.policies.native.Apex", "version": "1.0.0" } ], "policies": [] } ] } ] } = ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps/groups/batch POST true false true false create SampleGroup 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps GET true false true false Check PdpGroup Query 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res instanceof Map; assert res.groups.size >= 2; assert res.groups[0].pdpGroupState== 'ACTIVE'; assert res.groups[1].pdpGroupState== 'ACTIVE'; } true false { "policies" : [ { "policy-id": "operational.modifyconfig${threadCount}", "policy-version": "1.0.0" } ] } = ${PAP_HOST} ${PAP_PORT} http policy/pap/v1/pdps/policies POST true false true false 202 Assertion.response_code false 1 5000 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/policies/status/defaultGroup/operational.modifyconfig${threadCount}/1.0.0 GET true false true false Query policies status for defaultGroup 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/policies/status GET true false true false Query policies status 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/policies/audit/defaultGroup GET true false true false Check PdpGroup Audit 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/policies/audit/defaultGroup/operational.modifyconfig${threadCount}/1.0.0 GET true false true false Check PdpGroup Audit 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps GET true false true false Check PdpGroup Query 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res instanceof Map; assert res.groups.size >= 2; for(int groupSize=0;groupSize<res.groups.size;groupSize++){ for(int subGrpSize=0;subGrpSize<res.groups[groupSize].pdpSubgroups.size;subGrpSize++){ def pdpSubGrp=res.groups[groupSize].pdpSubgroups[subGrpSize]; if(pdpSubGrp.pdpType =='drools'){ assert pdpSubGrp.pdpInstances.size == 1; if (res.groups[groupSize].name == 'defaultGroup') { assert pdpSubGrp.policies.size >= 1; } else if(res.groups[groupSize].name == 'sampleGroup' ){ assert pdpSubGrp.policies.size == 0; //assert pdpSubGrp.policies[0].name == 'operational.apex.stabilityTestDefaultDomain'; } } } } } ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/components/healthcheck GET true false true false Consolidated Health Check 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res instanceof Map; //assert res.pdps.xacml!=null; //assert res.pdps.drools!=null; assert res.pdps.apex!=null; } ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/policies/deployed GET true false true false Query Deployed policies 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res.size >1 ; } true false { "groups": [ { "name": "defaultGroup", "deploymentSubgroups": [ { "pdpType": "drools", "action": "DELETE", "policies": [ { "name": "operational.modifyconfig${threadCount}", "version": "1.0.0" } ] } ] } ] } = ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps/deployments/batch POST true false true false 202 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http policy/pap/v1/pdps/groups/sampleGroup${threadCount}?state=PASSIVE PUT true false true false 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps/groups/sampleGroup${threadCount} DELETE true false true false Delete PdpGroup 200 Assertion.response_code false 1 ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/pdps GET true false true false Check PdpGroup Query 0 30000 200 Assertion.response_code false 1 groovy true import groovy.json.JsonSlurper; def res = []; if (prev.getResponseCode() == '200') { def jsonSlurper = new JsonSlurper(); res = jsonSlurper.parseText(prev.getResponseDataAsString()); assert res instanceof Map; assert res.groups.size == 1; for(int subGrpSize=0;subGrpSize<res.groups[0].pdpSubgroups.size;subGrpSize++){ def pdpSubGrp=res.groups[0].pdpSubgroups[subGrpSize]; if(pdpSubGrp.pdpType =='drools'){ assert pdpSubGrp.pdpInstances.size == 1; assert pdpSubGrp.policies.size == 0; } } } ${PAP_HOST} ${PAP_PORT} http /policy/pap/v1/metrics GET true false true false PAP Metrics after deployments 200 Assertion.response_code false 1 groovy true if (prev.getResponseCode() == '200') { def res = prev.getResponseDataAsString(); assert res.contains('http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/healthcheck",}'); def newSimpleDeployAPICount = '0'; if (res.contains('http_server_requests_seconds_count{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/policies",} ')) { newSimpleDeployAPICount = (res =~ /http_server_requests_seconds_count\{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="\/pdps\/policies",\} ([0-9]+)?([.]*[0-9]*)?/)[0][1] } def newBatchDeploymentAPICount = '0'; if (res.contains('http_server_requests_seconds_count{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/deployments/batch",} ')) { newBatchDeploymentAPICount = (res =~ /http_server_requests_seconds_count\{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="\/pdps\/deployments\/batch",\} ([0-9]+)?([.]*[0-9]*)?/)[0][1] } assert Long.valueOf(vars.get("simpleDeployAPICount")) < Long.valueOf(newSimpleDeployAPICount); assert Long.valueOf(vars.get("batchDeploymentAPICount")) < Long.valueOf(newBatchDeploymentAPICount); } stoptest false 1 ${USERS} 1 false true 1 1 threadCount false ${PAP_HOST} ${PAP_PORT} http policy/pap/v1/pdps/groups/defaultGroup?state=PASSIVE PUT true false true false 200 Assertion.response_code false 1 ${API_HOST} ${API_PORT} http /policy/api/v1/policies/operational.modifyconfig${threadCount}/versions/1.0.0 DELETE true false true false 200 Assertion.response_code false 1 false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true /home/ramesh/s3pTestResults.jtl false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true /home/ramesh/s3pTestResults.jtl false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true /home/ramesh/s3pTestResults.jtl