blob: dcbb7e65df8ccc0bd17548891d283ce780fa326a [file] [log] [blame]
*** Settings ***
Documentation Policy Closed Loop Test cases
Resource ../policy_interface.robot
Resource ../stack_validation/policy_check_vfw.robot
Resource ../stack_validation/packet_generator_interface.robot
Resource vnf_orchestration_test_template.robot
Library String
LIbrary Process
*** Variables ***
${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} 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
# '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}
${OPS_POLICY_TYPE} BRMS_PARAM
# VFW low threshold
${Expected_Severity_1} MAJOR
${Expected_Threshold_1} 300
${Expected_Direction_1} LESS_OR_EQUAL
# VFW high threshold
${Expected_Severity_2} CRITICAL
${Expected_Threshold_2} 700
${Expected_Direction_2} GREATER_OR_EQUAL
# VDNS High threshold
${Expected_Severity_3} MAJOR
${Expected_Threshold_3} 200
${Expected_Direction_3} GREATER_OR_EQUAL
#********** Test Case Variables ************
${DNSSCALINGSTACK}
*** Keywords ***
VFW Policy
Log Suite name ${SUITE NAME} ${TEST NAME} ${PREV TEST NAME}
Initialize VFW Policy
${stackname}= Orchestrate VNF vFW closedloop
Policy Check FirewallCL Stack ${stackname} ${VFWPOLICYRATE}
Delete VNF
VDNS Policy
Initialize VDNS Policy
${stackname}= Orchestrate VNF vDNS closedloop
${dnsscaling}= Policy Check vLB Stack ${stackname} ${VLBPOLICYRATE}
Set Test Variable ${DNSSCALINGSTACK} ${dnsscaling}
Delete VNF
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}
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
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
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 .*MicroServicevDNS*
${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
${output} = Fill JSON Template File ${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
${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
Create Config Policy
[Documentation] Create Config Policy
${randompolicyname} = Create Policy Name
${policyname1}= Catenate com.${randompolicyname}
${CONFIG_POLICY_NAME}= Set Test Variable ${policyname1}
${configpolicy}= Create Dictionary policy_name=${CONFIG_POLICY_NAME}
${output} = Fill JSON Template File ${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
[Documentation] Generate Policy Name
[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
${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}
${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}
${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}
${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}
${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
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}
${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
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} SharedNode OwnerType v1 CloudZone
${stack_name} ${service}= Orchestrate VNF ETE_CLP vFWCL vFWCL ${TENANT_NAME}
[Return] ${stack_name}
Orchestrate VNF vDNS closedloop
[Documentation] VNF Orchestration for vLB
Log VNF Orchestration flow TEST NAME=${TEST NAME}
Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone
${stack_name} ${service}= Orchestrate VNF ETE_CLP vLB vLB ${TENANT_NAME}
[Return] ${stack_name}
VFWCL High Test
[Documentation] Test Control Loop for High Traffic
[Arguments] ${pkg_host}
Enable Streams ${pkg_host} 10
Log To Console Set number of streams to 10
:FOR ${i} IN RANGE 12
\ Sleep 15s
\ ${resp}= Get List Of Enabled Streams ${pkg_host}
\ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
\ Log To Console 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 ${pkg_host} 1
Log To Console Set number of streams to 1
Get List Of Enabled Streams ${pkg_host}
:FOR ${i} IN RANGE 12
\ Sleep 15s
\ ${resp}= Get List Of Enabled Streams ${pkg_host}
\ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
\ Log To Console Number of streams: ${stream_count}
\ Exit For Loop If '${stream_count}'=='5'
Should Be Equal As Integers ${stream_count} 5