2 Documentation Policy Closed Loop Test cases
4 Resource ../policy_interface.robot
5 Resource ../stack_validation/policy_check_vfw.robot
6 Resource ../stack_validation/packet_generator_interface.robot
7 Resource vnf_orchestration_test_template.robot
10 Library HttpLibrary.HTTP
14 ${RESOURCE_PATH_CREATE} /pdp/createPolicy
15 ${RESOURCE_PATH_CREATE_PUSH} /pdp/pushPolicy
16 ${RESOURCE_PATH_CREATE_DELETE} /pdp/deletePolicy
17 ${RESOURCE_PATH_GET_CONFIG} /pdp/getConfig
18 ${CREATE_CONFIG_TEMPLATE} robot/assets/templates/policy/closedloop_configpolicy.template
19 ${CREATE_OPS_TEMPLATE} robot/assets/templates/policy/closedloop_opspolicy.template
20 ${PUSH_POLICY_TEMPLATE} robot/assets/templates/policy/closedloop_pushpolicy.template
21 ${DEL_POLICY_TEMPLATE} robot/assets/templates/policy/closedloop_deletepolicy.template
22 ${GECONFIG_VFW_TEMPLATE} robot/assets/templates/policy/closedloop_getconfigpolicy.template
24 # 'Normal' number of pg streams that will be set when policy is triggered
27 # Max nslookup requests per second before triggering event.
30 ${CONFIG_POLICY_NAME} vFirewall
31 ${CONFIG_POLICY_TYPE} Unknown
33 ${OPS_POLICY_TYPE} BRMS_PARAM
36 ${Expected_Severity_1} MAJOR
37 ${Expected_Threshold_1} 300
38 ${Expected_Direction_1} LESS_OR_EQUAL
41 ${Expected_Severity_2} CRITICAL
42 ${Expected_Threshold_2} 700
43 ${Expected_Direction_2} GREATER_OR_EQUAL
46 ${Expected_Severity_3} MAJOR
47 ${Expected_Threshold_3} 200
48 ${Expected_Direction_3} GREATER_OR_EQUAL
50 #********** Test Case Variables ************
55 Log Suite name ${SUITE NAME} ${TEST NAME} ${PREV TEST NAME}
57 ${stackname}= Orchestrate VNF vFW closedloop
58 Policy Check Firewall Stack ${stackname} ${VFWPOLICYRATE}
62 Initialize VDNS Policy
63 ${stackname}= Orchestrate VNF vDNS closedloop
64 ${dnsscaling}= Policy Check vLB Stack ${stackname} ${VLBPOLICYRATE}
65 Set Test Variable ${DNSSCALINGSTACK} ${dnsscaling}
69 # Create Config Policy
70 # Push Config Policy ${CONFIG_POLICY_NAME} ${CONFIG_POLICY_TYPE}
72 # Push Ops Policy ${OPS_POLICY_NAME} ${OPS_POLICY_TYPE}
73 Get Configs VFW Policy
75 Initialize VDNS Policy
76 Get Configs VDNS Policy
78 Get Configs VFW Policy
79 [Documentation] Get Config Policy for VFW
80 ${getconfigpolicy}= Catenate .*${CONFIG_POLICY_NAME}*
81 ${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
82 ${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
83 ${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
84 Should Be Equal As Strings ${get_resp.status_code} 200
86 ${json}= Parse Json ${get_resp.content}
87 ${config}= Parse Json ${json[0]["config"]}
89 # Extract object1 from Array
90 ${severity}= Get Variable Value ${config["content"]["thresholds"][0]["severity"]}
91 Should Be Equal ${severity} ${Expected_Severity_1}
92 ${Thresold_Value}= Get Variable Value ${config["content"]["thresholds"][0]["thresholdValue"]}
93 Should Be Equal As Integers ${Thresold_Value} ${Expected_Threshold_1}
94 ${direction}= Get Variable Value ${config["content"]["thresholds"][0]["direction"]}
95 Should Be Equal ${direction} ${Expected_Direction_1}
97 # Extract object2 from Array
98 ${severity_1}= Get Variable Value ${config["content"]["thresholds"][1]["severity"]}
99 Should Be Equal ${severity_1} ${Expected_Severity_2}
100 ${Thresold_Value_1}= Get Variable Value ${config["content"]["thresholds"][1]["thresholdValue"]}
101 Should Be Equal As Integers ${Thresold_Value_1} ${Expected_Threshold_2}
102 ${direction_1}= Get Variable Value ${config["content"]["thresholds"][1]["direction"]}
103 Should Be Equal ${direction_1} ${Expected_Direction_2}
105 Get Configs VDNS Policy
106 [Documentation] Get Config Policy for VDNS
107 ${getconfigpolicy}= Catenate .*MicroServicevDNS*
108 ${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
109 ${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
110 ${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
111 Should Be Equal As Strings ${get_resp.status_code} 200
112 ${json}= Parse Json ${get_resp.content}
113 ${config}= Parse Json ${json[0]["config"]}
115 # Extract object1 from Array
116 ${severity}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"][0]["severity"]}
117 Should Be Equal ${severity} ${Expected_Severity_2}
118 ${Thresold_Value}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"][0]["thresholdValue"]}
119 Should Be Equal As Integers ${Thresold_Value} ${Expected_Threshold_1}
120 ${direction}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"][0]["direction"]}
121 Should Be Equal ${direction} ${Expected_Direction_3}
124 [Documentation] Tear down a closed loop test case
125 Terminate All Processes
127 Log Teardown complete
130 [Documentation] Create Config Policy
131 ${randompolicyname} = Create Policy Name
132 ${policyname1}= Catenate com.${randompolicyname}
133 ${CONFIG_POLICY_NAME}= Set Test Variable ${policyname1}
134 ${configpolicy}= Create Dictionary policy_name=${CONFIG_POLICY_NAME}
135 ${output} = Fill JSON Template File ${CREATE_CONFIG_TEMPLATE} ${configpolicy}
136 ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output}
137 Should Be Equal As Strings ${put_resp.status_code} 200
140 [Documentation] Generate Policy Name
141 [Arguments] ${prefix}=ETE_
142 ${random}= Generate Random String 15 [LOWER][NUMBERS]
143 ${policyname}= Catenate ${prefix}${random}
144 [Return] ${policyname}
147 [Documentation] Create Opertional Policy
148 ${randompolicyname} = Create Policy Name
149 ${policyname1}= Catenate com.${randompolicyname}
150 ${OPS_POLICY_NAME}= Set Test Variable ${policyname1}
151 ${dict}= Create Dictionary policy_name=${OPS_POLICY_NAME}
152 #${NEWPOLICY1}= Create Dictionary policy_name=com.${OPS_POLICY_NAME}
153 ${output} = Fill JSON Template File ${CREATE_OPS_TEMPLATE} ${dict}
154 ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output}
156 Should Be Equal As Strings ${put_resp.status_code} 200
159 [Documentation] Push Ops Policy
160 [Arguments] ${policyname} ${policytype}
161 ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
162 ${output} = Fill JSON Template ${PUSH_POLICY_TEMPLATE} ${dict}
163 ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output}
164 Should Be Equal As Strings ${put_resp.status_code} 200
167 [Documentation] Push Config Policy
168 [Arguments] ${policyname} ${policytype}
169 ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype}
170 ${output} = Fill JSON Template ${PUSH_POLICY_TEMPLATE} ${dict}
171 ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output}
172 Should Be Equal As Strings ${put_resp.status_code} 200
176 [Documentation] Delete Config Policy
177 [Arguments] ${policy_name}
178 ${policyname3}= Catenate com.Config_BRMS_Param_${policyname}.1.xml
179 ${dict}= Create Dictionary policy_name=${policyname3}
180 ${output} = Fill JSON Template ${DEL_POLICY_TEMPLATE} ${dict}
181 ${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
182 Should Be Equal As Strings ${put_resp.status_code} 200
185 [Documentation] Delete Ops Policy
186 [Arguments] ${policy_name}
187 ${policyname3}= Catenate com.Config_MS_com.vFirewall.1.xml
188 ${dict}= Create Dictionary policy_name=${policyname3}
189 ${output} = Fill JSON Template ${DEL_POLICY_TEMPLATE} ${dict}
190 ${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
191 Should Be Equal As Strings ${put_resp.status_code} 200
193 Orchestrate VNF vFW closedloop
194 [Documentation] VNF Orchestration for vFW
195 Log VNF Orchestration flow TEST NAME=${TEST NAME}
196 Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone
197 ${stack_name} ${service}= Orchestrate VNF ETE_CLP vFWCL vFWCL ${TENANT_NAME}
198 [Return] ${stack_name}
200 Orchestrate VNF vDNS closedloop
201 [Documentation] VNF Orchestration for vLB
202 Log VNF Orchestration flow TEST NAME=${TEST NAME}
203 Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone
204 ${stack_name} ${service}= Orchestrate VNF ETE_CLP vLB vLB ${TENANT_NAME}
205 [Return] ${stack_name}
208 [Documentation] Test Control Loop for High Traffic
209 [Arguments] ${pkg_host}
210 Enable Streams ${pkg_host} 10
213 \ ${resp}= Get List Of Enabled Streams ${pkg_host}
214 \ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
215 \ Log To Console Number of steam: ${stream_count}
216 \ Exit For Loop If '${stream_count}'=='5'
217 Should Be Equal As Integers ${stream_count} 5
220 [Documentation] Test Control Loop for Low Traffic
221 [Arguments] ${pkg_host}
222 Enable Streams ${pkg_host} 1
223 Get List Of Enabled Streams ${pkg_host}
226 \ ${resp}= Get List Of Enabled Streams ${pkg_host}
227 \ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
228 \ Log To Console Number of steam: ${stream_count}
229 \ Exit For Loop If '${stream_count}'=='5'
230 Should Be Equal As Integers ${stream_count} 5