*** Settings ***
Documentation Policy Closed Loop Test cases
-Resource ../policy_interface.robot
Resource ../stack_validation/policy_check_vfw.robot
-Resource vnf_orchestration_test_template.robot
+
Library String
-Library HttpLibrary.HTTP
-LIbrary Process
+Library Process
+Library ONAPLibrary.Templating WITH NAME Templating
+Library ONAPLibrary.Utilities
*** Variables ***
-${RESOURCE_PATH_CREATE} /PyPDPServer/createPolicy
-${RESOURCE_PATH_CREATE_PUSH} /PyPDPServer/pushPolicy
-${RESOURCE_PATH_CREATE_DELETE} /PyPDPServer/deletePolicy
-${RESOURCE_PATH_GET_CONFIG} /PyPDPServer/getConfig
-${CREATE_CONFIG_TEMPLATE} robot/assets/templates/policy/closedloop_configpolicy.template
-${CREATE_OPS_TEMPLATE} robot/assets/templates/policy/closedloop_opspolicy.template
-${PUSH_POLICY_TEMPLATE} robot/assets/templates/policy/closedloop_pushpolicy.template
-${DEL_POLICY_TEMPLATE} robot/assets/templates/policy/closedloop_deletepolicy.template
-${GECONFIG_VFW_TEMPLATE} robot/assets/templates/policy/closedloop_getconfigpolicy.template
+${RESOURCE_PATH_CREATE} /pdp/createPolicy
+${RESOURCE_PATH_CREATE_PUSH} /pdp/pushPolicy
+${RESOURCE_PATH_CREATE_DELETE} /pdp/deletePolicy
+${RESOURCE_PATH_GET_CONFIG} /pdp/getConfig
+${CREATE_CONFIG_TEMPLATE} policy/closedloop_configpolicy.jinja
+${CREATE_OPS_TEMPLATE} policy/closedloop_opspolicy.jinja
+${PUSH_POLICY_TEMPLATE} policy/closedloop_pushpolicy.jinja
+${DEL_POLICY_TEMPLATE} policy/closedloop_deletepolicy.jinja
+${GECONFIG_VFW_TEMPLATE} policy/closedloop_getconfigpolicy.jinja
# 'Normal' number of pg streams that will be set when policy is triggered
${VFWPOLICYRATE} 5
# Max nslookup requests per second before triggering event.
${VLBPOLICYRATE} 20
-${CONFIG_POLICY_NAME} vFirewall
-${CONFIG_POLICY_TYPE} Unknown
-${OPS_POLICY_NAME}
+${CONFIG_POLICY_NAME} vFirewall
+${CONFIG_POLICY_TYPE} Unknown
${OPS_POLICY_TYPE} BRMS_PARAM
# VFW low threshold
${Expected_Threshold_3} 200
${Expected_Direction_3} GREATER_OR_EQUAL
-${DNSSCALINGSTACK}
-
*** Keywords ***
VFW Policy
Log Suite name ${SUITE NAME} ${TEST NAME} ${PREV TEST NAME}
Initialize VFW Policy
- ${stackname}= Orchestrate VNF vFW closedloop
- Policy Check Firewall Stack ${stackname} ${VFWPOLICYRATE}
-
+ ${stackname} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}= Orchestrate VNF vFW closedloop
+ Policy Check FirewallCL Stack ${stackname} ${VFWPOLICYRATE}
+ Delete VNF ${None} ${server_id} ${customer_name} ${service_instance_id} ${stackname} ${uris_to_delete}
VDNS Policy
Initialize VDNS Policy
- ${stackname}= Orchestrate VNF vDNS closedloop
+ ${stackname} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}= Orchestrate VNF vDNS closedloop
${dnsscaling}= Policy Check vLB Stack ${stackname} ${VLBPOLICYRATE}
- Set Test Variable ${DNSSCALINGSTACK} ${dnsscaling}
-
+ Delete VNF ${None} ${server_id} ${customer_name} ${service_instance_id} ${stackname} ${uris_to_delete}
+
Initialize VFW Policy
-# Create Config Policy
-# Push Config Policy ${CONFIG_POLICY_NAME} ${CONFIG_POLICY_TYPE}
-# Create Ops Policy
-# Push Ops Policy ${OPS_POLICY_NAME} ${OPS_POLICY_TYPE}
Get Configs VFW Policy
-
+
Initialize VDNS Policy
Get Configs VDNS Policy
-
+
Get Configs VFW Policy
[Documentation] Get Config Policy for VFW
${getconfigpolicy}= Catenate .*${CONFIG_POLICY_NAME}*
${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
- ${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
- Should Be Equal As Strings ${get_resp.status_code} 200
-
- ${json}= Parse Json ${get_resp.content}
- ${config}= Parse Json ${json[0]["config"]}
-
- # Extract object1 from Array
- ${severity}= Get Variable Value ${config["content"]["thresholds"][0]["severity"]}
- Should Be Equal ${severity} ${Expected_Severity_1}
- ${Thresold_Value}= Get Variable Value ${config["content"]["thresholds"][0]["thresholdValue"]}
- Should Be Equal ${Thresold_Value} ${Expected_Threshold_1}
- ${direction}= Get Variable Value ${config["content"]["thresholds"][0]["direction"]}
- Should Be Equal ${direction} ${Expected_Direction_1}
-
+ Should Be Equal As Strings ${get_resp.status_code} 200
+ ${config}= Catenate ${get_resp.json()[0]["config"]}
+ ${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
+
+ # Extract object1 from Array
+ Should Be Equal ${thresholds[0]["severity"]} ${Expected_Severity_1}
+ Should Be Equal As Integers ${thresholds[0]["thresholdValue"]} ${Expected_Threshold_1}
+ Should Be Equal ${thresholds[0]["direction"]} ${Expected_Direction_1}
+
# Extract object2 from Array
- ${severity_1}= Get Variable Value ${config["content"]["thresholds"][1]["severity"]}
- Should Be Equal ${severity_1} ${Expected_Severity_2}
- ${Thresold_Value_1}= Get Variable Value ${config["content"]["thresholds"][1]["thresholdValue"]}
- Should Be Equal ${Thresold_Value_1} ${Expected_Threshold_2}
- ${direction_1}= Get Variable Value ${config["content"]["thresholds"][1]["direction"]}
- Should Be Equal ${direction_1} ${Expected_Direction_2}
-
+ Should Be Equal ${thresholds[1]["severity"]} ${Expected_Severity_2}
+ Should Be Equal As Integers ${thresholds[1]["thresholdValue"]} ${Expected_Threshold_2}
+ Should Be Equal ${thresholds[1]["direction"]} ${Expected_Direction_2}
+
Get Configs VDNS Policy
[Documentation] Get Config Policy for VDNS
- ${getconfigpolicy}= Catenate .*vLoadBalancer*
+ ${getconfigpolicy}= Catenate .*MicroServicevDNS*
${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
- ${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
- Should Be Equal As Strings ${get_resp.status_code} 200
- ${json}= Parse Json ${get_resp.content}
- ${config}= Parse Json ${json[0]["config"]}
-
- # Extract object1 from Array
- ${severity}= Get Variable Value ${config["content"]["thresholds"][0]["severity"]}
- Should Be Equal ${severity} ${Expected_Severity_3}
- ${Thresold_Value}= Get Variable Value ${config["content"]["thresholds"][0]["thresholdValue"]}
- Should Be Equal ${Thresold_Value} ${Expected_Threshold_3}
- ${direction}= Get Variable Value ${config["content"]["thresholds"][0]["direction"]}
- Should Be Equal ${direction} ${Expected_Direction_3}
+ Should Be Equal As Strings ${get_resp.status_code} 200
+ ${config}= Catenate ${get_resp.json()[0]["config"]}
+ ${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
+
+ # Extract object1 from Array
+ Should Be Equal ${thresholds[0]["severity"]} ${Expected_Severity_2}
+ Should Be Equal As Integers ${thresholds[0]["thresholdValue"]} ${Expected_Threshold_1}
+ Should Be Equal ${thresholds[0]["direction"]} ${Expected_Direction_3}
Teardown Closed Loop
[Documentation] Tear down a closed loop test case
- Terminate All Processes
- Teardown VNF
- Log Teardown complete
+ [Arguments] ${customer_name} ${catalog_service_id} ${catalog_resource_ids}
+ Terminate All Processes
+ Teardown VNF ${customer_name} ${catalog_service_id} ${catalog_resource_ids}
+ Log Teardown complete
Create Config Policy
- [Documentation] Create Config Policy
- ${randompolicyname} = Create Policy Name
+ [Documentation] Create Config Policy
+ ${randompolicyname} = Create Policy Name
${policyname1}= Catenate com.${randompolicyname}
- ${CONFIG_POLICY_NAME}= Set Test Variable ${policyname1}
+ ${CONFIG_POLICY_NAME}= Catenate ${policyname1}
${configpolicy}= Create Dictionary policy_name=${CONFIG_POLICY_NAME}
- ${output} = Fill JSON Template File ${CREATE_CONFIG_TEMPLATE} ${configpolicy}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${CREATE_CONFIG_TEMPLATE} ${configpolicy}
${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output}
Should Be Equal As Strings ${put_resp.status_code} 200
- Create Policy Name
+Create Policy Name
[Documentation] Generate Policy Name
- [Arguments] ${prefix}=ETE_
+ [Arguments] ${prefix}=ETE_
${random}= Generate Random String 15 [LOWER][NUMBERS]
${policyname}= Catenate ${prefix}${random}
[Return] ${policyname}
-
+
Create Ops Policy
- [Documentation] Create Opertional Policy
- ${randompolicyname} = Create Policy Name
+ [Documentation] Create Opertional Policy
+ ${randompolicyname} = Create Policy Name
${policyname1}= Catenate com.${randompolicyname}
- ${OPS_POLICY_NAME}= Set Test Variable ${policyname1}
- ${dict}= Create Dictionary policy_name=${OPS_POLICY_NAME}
- #${NEWPOLICY1}= Create Dictionary policy_name=com.${OPS_POLICY_NAME}
- ${output} = Fill JSON Template File ${CREATE_OPS_TEMPLATE} ${dict}
+ ${dict}= Create Dictionary policy_name=${policyname1}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${CREATE_OPS_TEMPLATE} ${dict}
${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output}
Log ${put_resp}
Should Be Equal As Strings ${put_resp.status_code} 200
-
+
Push Ops Policy
[Documentation] Push Ops Policy
[Arguments] ${policyname} ${policytype}
- ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
- ${output} = Fill JSON Template ${PUSH_POLICY_TEMPLATE} ${dict}
+ ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${PUSH_POLICY_TEMPLATE} ${dict}
${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output}
Should Be Equal As Strings ${put_resp.status_code} 200
Push Config Policy
[Documentation] Push Config Policy
[Arguments] ${policyname} ${policytype}
- ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
- ${output} = Fill JSON Template ${PUSH_POLICY_TEMPLATE} ${dict}
+ ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${PUSH_POLICY_TEMPLATE} ${dict}
${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output}
Should Be Equal As Strings ${put_resp.status_code} 200
-
-
+
+
Delete Config Policy
[Documentation] Delete Config Policy
[Arguments] ${policy_name}
${policyname3}= Catenate com.Config_BRMS_Param_${policyname}.1.xml
- ${dict}= Create Dictionary policy_name=${policyname3}
- ${output} = Fill JSON Template ${DEL_POLICY_TEMPLATE} ${dict}
+ ${dict}= Create Dictionary policy_name=${policyname3}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${DEL_POLICY_TEMPLATE} ${dict}
${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
- Should Be Equal As Strings ${put_resp.status_code} 200
-
+ Should Be Equal As Strings ${put_resp.status_code} 200
+
Delete Ops Policy
[Documentation] Delete Ops Policy
[Arguments] ${policy_name}
${policyname3}= Catenate com.Config_MS_com.vFirewall.1.xml
- ${dict}= Create Dictionary policy_name=${policyname3}
- ${output} = Fill JSON Template ${DEL_POLICY_TEMPLATE} ${dict}
+ ${dict}= Create Dictionary policy_name=${policyname3}
+ Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER}
+ ${output}= Templating.Apply Template cl ${DEL_POLICY_TEMPLATE} ${dict}
${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
- Should Be Equal As Strings ${put_resp.status_code} 200
-
+ Should Be Equal As Strings ${put_resp.status_code} 200
+
Orchestrate VNF vFW closedloop
[Documentation] VNF Orchestration for vFW
- Log VNF Orchestration flow TEST NAME=${TEST NAME}
- Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} ${GLOBAL_OPENSTACK_SERVICE_REGION} SharedNode OwnerType v1 CloudZone
- ${stack_name} ${service}= Orchestrate VNF ETE_CLP vFW vFW ${GLOBAL_OPENSTACK_SERVICE_REGION} ${TENANT_NAME}
- [Return] ${stack_name}
-
- Orchestrate VNF vDNS closedloop
+ Log VNF Orchestration flow TEST NAME=${TEST NAME}
+ ${tenant_id} ${tenant_name}= Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone
+ ${uuid}= Generate UUID4
+ ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${catalog_resource_ids} ${catalog_service_id} ${uris_to_delete}= Orchestrate VNF ETE_CLP_${uuid} vFWCL vFWCL ${tenant_id} ${tenant_name}
+ ${customer_name}= Catenate ETE_CLP_${uuid}
+ [Return] ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}
+
+Orchestrate VNF vDNS closedloop
[Documentation] VNF Orchestration for vLB
- Log VNF Orchestration flow TEST NAME=${TEST NAME}
- Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} ${GLOBAL_OPENSTACK_SERVICE_REGION} SharedNode OwnerType v1 CloudZone
- ${stack_name} ${service}= Orchestrate VNF ETE_CLP vLB vLB ${GLOBAL_OPENSTACK_SERVICE_REGION} ${TENANT_NAME}
- [Return] ${stack_name}
+ Log VNF Orchestration flow TEST NAME=${TEST NAME}
+ ${tenant_id} ${tenant_name}= Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone
+ ${uuid}= Generate UUID4
+ ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${catalog_resource_ids} ${catalog_service_id} ${uris_to_delete}= Orchestrate VNF ETE_CLP_${uuid} vLB vLB ${tenant_id} ${tenant_name}
+ ${customer_name}= Catenate ETE_CLP_${uuid}
+ [Return] ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}
+
+VFWCL High Test
+ [Documentation] Test Control Loop for High Traffic
+ [Arguments] ${pkg_host}
+ Enable Streams V2 ${pkg_host} 10
+ Log Set number of streams to 10
+ :FOR ${i} IN RANGE 12
+ \ Sleep 15s
+ \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host}
+ \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']}
+ \ Log Number of streams: ${stream_count}
+ \ Exit For Loop If '${stream_count}'=='5'
+ Should Be Equal As Integers ${stream_count} 5
+
+VFWCL Low Test
+ [Documentation] Test Control Loop for Low Traffic
+ [Arguments] ${pkg_host}
+ Enable Streams V2 ${pkg_host} 1
+ Log Set number of streams to 1
+ :FOR ${i} IN RANGE 12
+ \ Sleep 15s
+ \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host}
+ \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']}
+ \ Log Number of streams: ${stream_count}
+ \ Exit For Loop If '${stream_count}'=='5'
+ Should Be Equal As Integers ${stream_count} 5
+
+VFWCL Set To Medium
+ [Documentation] Set flows to Medium to turn off control loop
+ [Arguments] ${pkg_host}
+ Enable Streams V2 ${pkg_host} 5