2 Documentation Testing openstack.
3 Library OperatingSystem
6 Library RequestsLibrary
7 Library ONAPLibrary.JSON
8 Library ONAPLibrary.Openstack
11 Library ONAPLibrary.ServiceMapping
13 Resource ../openstack/keystone_interface.robot
14 Resource ../openstack/nova_interface.robot
15 Resource ../openstack/heat_interface.robot
16 Resource ../ssh/files.robot
17 Resource ../demo_preload.robot
18 Resource packet_generator_interface.robot
19 Resource validate_common.robot
20 Resource ../test_templates/vnf_orchestration_test_template.robot
26 Policy Check FirewallCL Stack
27 [Documentation] Executes the vFW policy closed loop test.
28 [Arguments] ${stacknamemap} ${policy_rate}
29 Run Openstack Auth Request auth
30 ${vsnk_stack_name}= Get From Dictionary ${stacknamemap} vFWSNK
31 ${vpkg_stack_name}= Get From Dictionary ${stacknamemap} vPKG
32 ${vsnk_stack_info}= Wait for Stack to Be Deployed auth ${vsnk_stack_name}
33 ${vpkg_stack_info}= Wait for Stack to Be Deployed auth ${vpkg_stack_name}
34 ${server_list}= Get Openstack Servers auth
36 ${vpkg_id}= Get From Dictionary ${vpkg_stack_info} vnf_id
37 ${status} ${generic_vnf}= Run Keyword And Ignore Error Get Generic VNF By ID ${vpkg_id}
38 Run Keyword If '${status}' == 'FAIL' FAIL VNF ID: ${vpkg_id} is not found.
39 ${invariantUUID} Get From Dictionary ${generic_vnf} persona-model-id
40 Update vVFWCL Policy ${invariantUUID}
42 ${vpg_unprotected_ip}= Get From Dictionary ${vpkg_stack_info} vpg_int_unprotected_private_ip_0
43 ${vsn_protected_ip}= Get From Dictionary ${vsnk_stack_info} vsn_int_protected_private_ip_0
44 ${vpg_public_ip}= Get Server Ip ${server_list} ${vpkg_stack_info} vpg_name_0 network_name=public
45 ${vsn_public_ip}= Get Server Ip ${server_list} ${vsnk_stack_info} vsn_name_0 network_name=public
46 ${upper_bound}= Evaluate ${policy_rate}*2
47 Wait Until Keyword Succeeds 30m 2s Run VFW Policy Check ${vpg_public_ip} ${policy_rate} ${upper_bound} 1
50 [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it,
51 [Arguments] ${vpg_public_ip} ${policy_rate} ${upper_bound} ${lower_bound}
52 # Force traffic above threshold
53 Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${upper_bound}
54 # Force traffic below threshold
55 Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${lower_bound}
58 Check For Policy Enforcement
59 [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it,
60 [Arguments] ${vpg_public_ip} ${policy_rate} ${forced_rate}
61 Enable Streams ${vpg_public_ip} ${forced_rate}
62 Wait Until Keyword Succeeds 20s 2s Test For Expected Rate ${vpg_public_ip} ${forced_rate}
63 Wait Until Keyword Succeeds 10m 2s Test For Expected Rate ${vpg_public_ip} ${policy_rate}
65 Test For Expected Rate
66 [Documentation] Ge the number of pg-streams from the PGN, and test to see if it is what we expect.
67 [Arguments] ${vpg_public_ip} ${number_of_streams}
68 ${list}= Get List Of Enabled Streams ${vpg_public_ip}
69 ${list}= Evaluate ${list['sample-plugin']}['pg-streams']['pg-stream']
70 Length Should Be ${list} ${number_of_streams}
74 Policy Check vLB Stack
75 [Documentation] Executes the vLB policy closed loop test
76 [Arguments] ${stack_name} ${policy_rate}
77 Run Openstack Auth Request auth
78 ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name}
79 ${stack_id}= Get From Dictionary ${stack_info} id
80 ${server_list}= Get Openstack Servers auth
81 ${vlb_public_ip}= Get Server Ip ${server_list} ${stack_info} vlb_name_0 network_name=public
82 ${upper_bound}= Evaluate ${policy_rate}*2
83 Start DNS Traffic ${vlb_public_ip} ${upper_bound}
85 # Now wiat for the dnsscaling stack to be deployed
86 ${prefix}= Get DNSScaling Prefix
87 ${dnsscaling}= Replace String Using Regexp ${stack_name} ^Vfmodule_ ${prefix}
88 ${dnsscaling_info}= Wait for Stack to Be Deployed auth ${dnsscaling}
89 VLB Closed Loop Hack Update ${dnsscaling}
90 # TO DO: Log into vLB and cehck that traffic is flowing to the new DNS
91 [Return] ${dnsscaling}
94 Set Directory default ./demo/service_mapping
95 ${mapping}= Get Service Template Mapping default vLB vLB
96 :FOR ${dict} IN @{mapping}
97 \ Return From Keyword If '${dict['isBase']}' == 'false' ${dict['prefix']}
102 [Documentation] Run nslookups at rate per second. Run for 10 minutes or until it is called by the terminate process
103 [Arguments] ${vlb_public_ip} ${rate}
104 ${pid}= Start Process ./dnstraffic.sh ${vlb_public_ip} ${rate} ${GLOBAL_DNS_TRAFFIC_DURATION}