summaryrefslogtreecommitdiffstats
path: root/robot/resources/stack_validation/policy_check_vfw.robot
diff options
context:
space:
mode:
Diffstat (limited to 'robot/resources/stack_validation/policy_check_vfw.robot')
-rw-r--r--robot/resources/stack_validation/policy_check_vfw.robot95
1 files changed, 95 insertions, 0 deletions
diff --git a/robot/resources/stack_validation/policy_check_vfw.robot b/robot/resources/stack_validation/policy_check_vfw.robot
new file mode 100644
index 00000000..a1ed3fa3
--- /dev/null
+++ b/robot/resources/stack_validation/policy_check_vfw.robot
@@ -0,0 +1,95 @@
+*** Settings ***
+Documentation Testing openstack.
+Library OperatingSystem
+Library Process
+Library SSHLibrary
+Library RequestsLibrary
+Library JSONUtils
+Library OpenstackLibrary
+Library HEATUtils
+Library Collections
+LIbrary String
+Resource ../../resources/openstack/keystone_interface.robot
+Resource ../../resources/openstack/nova_interface.robot
+Resource ../../resources/openstack/heat_interface.robot
+Resource ../../resources/ssh/files.robot
+Resource ../../resources/ssh/processes.robot
+Resource packet_generator_interface.robot
+Resource darkstat_interface.robot
+Resource validate_common.robot
+
+
+*** Variables ***
+${ASSETS} ${EXECDIR}/robot/assets/
+
+*** Keywords ***
+Policy Check Firewall Stack
+ [Documentation] Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION
+ [Arguments] ${stack_name} ${policy_rate}
+ Run Openstack Auth Request auth
+ ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name}
+ ${stack_id}= Get From Dictionary ${stack_info} id
+ ${server_list}= Get Openstack Servers auth
+ Log ${server_list}
+ ${vpg_unprotected_ip}= Get From Dictionary ${stack_info} vpg_private_ip_0
+ ${vsn_protected_ip}= Get From Dictionary ${stack_info} vsn_private_ip_0
+ ${vpg_public_ip}= Get Server Ip ${server_list} ${stack_info} vpg_name_0 network_name=public
+ ${vsn_public_ip}= Get Server Ip ${server_list} ${stack_info} vsn_name_0 network_name=public
+ ${upper_bound}= Evaluate ${policy_rate}*2
+ Wait Until Keyword Succeeds 300s 1s Run VFW Policy Check ${vpg_public_ip} ${policy_rate} ${upper_bound} 1
+
+Run VFW Policy Check
+ [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it,
+ [Arguments] ${vpg_public_ip} ${policy_rate} ${upper_bound} ${lower_bound}
+ # Force traffic above threshold
+ Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${upper_bound}
+ # Force traffic below threshold
+ Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${lower_bound}
+
+
+Check For Policy Enforcement
+ [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it,
+ [Arguments] ${vpg_public_ip} ${policy_rate} ${forced_rate}
+ Enable Streams ${vpg_public_ip} ${forced_rate}
+ Wait Until Keyword Succeeds 20s 5s Test For Expected Rate ${vpg_public_ip} ${forced_rate}
+ Wait Until Keyword Succeeds 280s 5s Test For Expected Rate ${vpg_public_ip} ${policy_rate}
+
+Test For Expected Rate
+ [Documentation] Ge the number of pg-streams from the PGN, and test to see if it is what we expect.
+ [Arguments] ${vpg_public_ip} ${number_of_streams}
+ ${list}= Get List Of Enabled Streams ${vpg_public_ip}
+ ${list}= Evaluate ${list['sample-plugin']}['pg-streams']['pg-stream']
+ Length Should Be ${list} ${number_of_streams}
+
+
+
+Policy Check vLB Stack
+ [Documentation] Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION
+ [Arguments] ${stack_name} ${policy_rate}
+ Run Openstack Auth Request auth
+ ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name}
+ ${stack_id}= Get From Dictionary ${stack_info} id
+ ${server_list}= Get Openstack Servers auth
+ ${vlb_public_ip}= Get Server Ip ${server_list} ${stack_info} vlb_name_0 network_name=public
+ ${upper_bound}= Evaluate ${policy_rate}*2
+ Start DNS Traffic ${vlb_public_ip} ${upper_bound}
+
+ # Now wiat for the dnsscaling stack to be deployed
+ ${prefix}= Get DNSScaling Prefix
+ ${dnsscaling}= Replace String Using Regexp ${stack_name} ^Vfmodule_ ${prefix}
+ ${dnsscaling_info}= Wait for Stack to Be Deployed auth ${dnsscaling}
+ # TO DO: Log into vLB and cehck that traffic is flowing to the new DNS
+ [Return] ${dnsscaling}
+
+Get DNSScaling Prefix
+ ${mapping}= Get From Dictionary ${GLOBAL_SERVICE_TEMPLATE_MAPPING} vLB
+ :for ${dict} in @{mapping}
+ \ Return From Keyword If '${dict['isBase']}' == 'false' ${dict['prefix']}
+ [Return] None
+
+
+Start DNS Traffic
+ [Documentation] Run nslookups at rate per second. Run for 10 minutes or until it is called by the terminate process
+ [Arguments] ${vlb_public_ip} ${rate}
+ ${pid}= Start Process ./dnstraffic.sh ${vlb_public_ip} ${rate} ${GLOBAL_DNS_TRAFFIC_DURATION}
+ [Return] ${pid} \ No newline at end of file