cleaning up some warnings
[testsuite.git] / robot / resources / test_templates / closedloop_test_template.robot
1 *** Settings ***
2 Documentation     Policy Closed Loop Test cases
3
4 Resource        ../stack_validation/policy_check_vfw.robot
5
6 Library    String
7 Library    Process
8 Library    ONAPLibrary.Templating    WITH NAME    Templating
9 Library    ONAPLibrary.Utilities
10
11 *** Variables ***
12 ${RESOURCE_PATH_CREATE}        /pdp/createPolicy
13 ${RESOURCE_PATH_CREATE_PUSH}        /pdp/pushPolicy
14 ${RESOURCE_PATH_CREATE_DELETE}        /pdp/deletePolicy
15 ${RESOURCE_PATH_GET_CONFIG}    /pdp/getConfig
16 ${CREATE_CONFIG_TEMPLATE}    policy/closedloop_configpolicy.jinja
17 ${CREATE_OPS_TEMPLATE}    policy/closedloop_opspolicy.jinja
18 ${PUSH_POLICY_TEMPLATE}   policy/closedloop_pushpolicy.jinja
19 ${DEL_POLICY_TEMPLATE}   policy/closedloop_deletepolicy.jinja
20 ${GECONFIG_VFW_TEMPLATE}    policy/closedloop_getconfigpolicy.jinja
21
22 # 'Normal' number of pg streams that will be set when policy is triggered
23 ${VFWPOLICYRATE}    5
24
25 # Max nslookup requests per second before triggering event.
26 ${VLBPOLICYRATE}    20
27
28 ${CONFIG_POLICY_NAME}    vFirewall
29 ${CONFIG_POLICY_TYPE}    Unknown
30 ${OPS_POLICY_NAME}
31 ${OPS_POLICY_TYPE}    BRMS_PARAM
32
33 # VFW low threshold
34 ${Expected_Severity_1}    MAJOR
35 ${Expected_Threshold_1}    300
36 ${Expected_Direction_1}    LESS_OR_EQUAL
37
38 # VFW high threshold
39 ${Expected_Severity_2}    CRITICAL
40 ${Expected_Threshold_2}    700
41 ${Expected_Direction_2}    GREATER_OR_EQUAL
42
43 # VDNS High threshold
44 ${Expected_Severity_3}    MAJOR
45 ${Expected_Threshold_3}    200
46 ${Expected_Direction_3}    GREATER_OR_EQUAL
47
48 *** Keywords ***
49 VFW Policy
50     Log    Suite name ${SUITE NAME} ${TEST NAME} ${PREV TEST NAME}
51     Initialize VFW Policy
52     ${stackname}   ${generic_vnfs}    ${server_id}    ${service_instance_id}    ${customer_name}    ${uris_to_delete}=   Orchestrate VNF vFW closedloop
53     Policy Check FirewallCL Stack    ${stackname}    ${VFWPOLICYRATE}
54     Delete VNF    ${None}     ${server_id}    ${customer_name}    ${service_instance_id}    ${stackname}    ${uris_to_delete}
55
56 VDNS Policy
57     Initialize VDNS Policy
58     ${stackname}   ${generic_vnfs}    ${server_id}    ${service_instance_id}    ${customer_name}    ${uris_to_delete}=   Orchestrate VNF vDNS closedloop
59     ${dnsscaling}=   Policy Check vLB Stack    ${stackname}    ${VLBPOLICYRATE}
60     Delete VNF    ${None}     ${server_id}    ${customer_name}    ${service_instance_id}    ${stackname}    ${uris_to_delete}
61
62 Initialize VFW Policy
63      Get Configs VFW Policy
64
65 Initialize VDNS Policy
66     Get Configs VDNS Policy
67
68 Get Configs VFW Policy
69     [Documentation]    Get Config Policy for VFW
70     ${getconfigpolicy}=    Catenate    .*${CONFIG_POLICY_NAME}*
71     ${configpolicy_name}=    Create Dictionary    config_policy_name=${getconfigpolicy}
72     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
73     ${output}=   Templating.Apply Template    cl    ${GECONFIG_VFW_TEMPLATE}    ${configpolicy_name}
74     ${get_resp} =    Run Policy Get Configs Request    ${RESOURCE_PATH_GET_CONFIG}   ${output}
75     Should Be Equal As Strings   ${get_resp.status_code}  200
76     ${config}=    Catenate    ${get_resp.json()[0]["config"]}
77     ${thresholds}=    Get Variable Value      ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
78
79     # Extract object1 from Array
80     Should Be Equal    ${thresholds[0]["severity"]}    ${Expected_Severity_1}
81     Should Be Equal As Integers   ${thresholds[0]["thresholdValue"]}    ${Expected_Threshold_1}
82     Should Be Equal   ${thresholds[0]["direction"]}    ${Expected_Direction_1}
83
84     # Extract object2 from Array
85     Should Be Equal    ${thresholds[1]["severity"]}    ${Expected_Severity_2}
86     Should Be Equal As Integers   ${thresholds[1]["thresholdValue"]}    ${Expected_Threshold_2}
87     Should Be Equal   ${thresholds[1]["direction"]}    ${Expected_Direction_2}
88
89 Get Configs VDNS Policy
90     [Documentation]    Get Config Policy for VDNS
91     ${getconfigpolicy}=    Catenate    .*MicroServicevDNS*
92     ${configpolicy_name}=    Create Dictionary    config_policy_name=${getconfigpolicy}
93     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
94     ${output}=   Templating.Apply Template    cl    ${GECONFIG_VFW_TEMPLATE}    ${configpolicy_name}
95     ${get_resp} =    Run Policy Get Configs Request    ${RESOURCE_PATH_GET_CONFIG}   ${output}
96     Should Be Equal As Strings  ${get_resp.status_code}  200
97     ${config}=    Catenate    ${get_resp.json()[0]["config"]}
98     ${thresholds}=    Get Variable Value      ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
99
100     # Extract object1 from Array
101     Should Be Equal    ${thresholds[0]["severity"]}    ${Expected_Severity_2}
102     Should Be Equal As Integers   ${thresholds[0]["thresholdValue"]}    ${Expected_Threshold_1}
103     Should Be Equal   ${thresholds[0]["direction"]}    ${Expected_Direction_3}
104
105 Teardown Closed Loop
106     [Documentation]   Tear down a closed loop test case
107     [Arguments]    ${customer_name}    ${catalog_service_id}    ${catalog_resource_ids}
108     Terminate All Processes
109     Teardown VNF    ${customer_name}    ${catalog_service_id}    ${catalog_resource_ids}
110     Log     Teardown complete
111
112 Create Config Policy
113     [Documentation]    Create Config Policy
114     ${randompolicyname} =     Create Policy Name
115     ${policyname1}=    Catenate   com.${randompolicyname}
116     ${CONFIG_POLICY_NAME}=    Catenate    ${policyname1}
117     ${configpolicy}=    Create Dictionary    policy_name=${CONFIG_POLICY_NAME}
118     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
119     ${output}=   Templating.Apply Template    cl    ${CREATE_CONFIG_TEMPLATE}    ${configpolicy}
120     ${put_resp} =    Run Policy Put Request    ${RESOURCE_PATH_CREATE}  ${output}
121         Should Be Equal As Strings      ${put_resp.status_code}         200
122
123 Create Policy Name
124      [Documentation]    Generate Policy Name
125      [Arguments]    ${prefix}=ETE_
126      ${random}=    Generate Random String    15    [LOWER][NUMBERS]
127      ${policyname}=    Catenate    ${prefix}${random}
128      [Return]    ${policyname}
129
130 Create Ops Policy
131         [Documentation]    Create Opertional Policy
132         ${randompolicyname} =     Create Policy Name
133         ${policyname1}=    Catenate   com.${randompolicyname}
134         ${OPS_POLICY_NAME}=    Catenate    ${policyname1}
135         ${dict}=     Create Dictionary    policy_name=${OPS_POLICY_NAME}
136     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
137     ${output}=   Templating.Apply Template    cl    ${CREATE_OPS_TEMPLATE}    ${dict}
138     ${put_resp} =    Run Policy Put Request    ${RESOURCE_PATH_CREATE}  ${output}
139     Log    ${put_resp}
140     Should Be Equal As Strings  ${put_resp.status_code}         200
141
142 Push Ops Policy
143     [Documentation]    Push Ops Policy
144     [Arguments]    ${policyname}    ${policytype}
145     ${dict}=     Create Dictionary     policy_name=${policyname}    policy_type=${policytype}
146     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
147     ${output}=   Templating.Apply Template    cl    ${PUSH_POLICY_TEMPLATE}     ${dict}
148     ${put_resp} =    Run Policy Put Request    ${RESOURCE_PATH_CREATE_PUSH}  ${output}
149     Should Be Equal As Strings  ${put_resp.status_code}         200
150
151 Push Config Policy
152     [Documentation]    Push Config Policy
153     [Arguments]    ${policyname}    ${policytype}
154     ${dict}=     Create Dictionary     policy_name=${policyname}    policy_type=${policytype}
155     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
156     ${output}=   Templating.Apply Template    cl    ${PUSH_POLICY_TEMPLATE}     ${dict}
157     ${put_resp} =    Run Policy Put Request    ${RESOURCE_PATH_CREATE_PUSH}  ${output}
158     Should Be Equal As Strings  ${put_resp.status_code}         200
159
160
161 Delete Config Policy
162     [Documentation]    Delete Config Policy
163     [Arguments]    ${policy_name}
164     ${policyname3}=    Catenate   com.Config_BRMS_Param_${policyname}.1.xml
165     ${dict}=     Create Dictionary     policy_name=${policyname3}
166     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
167     ${output}=   Templating.Apply Template    cl    ${DEL_POLICY_TEMPLATE}     ${dict}
168     ${put_resp} =    Run Policy Delete Request    ${RESOURCE_PATH_CREATE_DELETE}  ${output}
169     Should Be Equal As Strings  ${put_resp.status_code}         200
170
171 Delete Ops Policy
172     [Documentation]    Delete Ops Policy
173     [Arguments]    ${policy_name}
174     ${policyname3}=    Catenate   com.Config_MS_com.vFirewall.1.xml
175     ${dict}=     Create Dictionary     policy_name=${policyname3}
176     Templating.Create Environment    cl    ${GLOBAL_TEMPLATE_FOLDER}
177     ${output}=   Templating.Apply Template    cl    ${DEL_POLICY_TEMPLATE}     ${dict}
178     ${put_resp} =    Run Policy Delete Request    ${RESOURCE_PATH_CREATE_DELETE}  ${output}
179     Should Be Equal As Strings  ${put_resp.status_code}         200
180
181 Orchestrate VNF vFW closedloop
182         [Documentation]    VNF Orchestration for vFW
183         Log    VNF Orchestration flow TEST NAME=${TEST NAME}
184         ${tenant_id}    ${tenant_name}=    Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
185     ${uuid}=    Generate UUID4
186         ${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}
187         ${customer_name}=    Catenate    ETE_CLP_${uuid}
188         [Return]  ${vf_module_name_list}   ${generic_vnfs}    ${server_id}    ${service_instance_id}    ${customer_name}    ${uris_to_delete}
189
190 Orchestrate VNF vDNS closedloop
191         [Documentation]    VNF Orchestration for vLB
192         Log    VNF Orchestration flow TEST NAME=${TEST NAME}
193         ${tenant_id}    ${tenant_name}=    Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}   SharedNode    OwnerType    v1    CloudZone
194     ${uuid}=    Generate UUID4
195         ${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}
196         ${customer_name}=    Catenate    ETE_CLP_${uuid}
197         [Return]  ${vf_module_name_list}   ${generic_vnfs}    ${server_id}    ${service_instance_id}    ${customer_name}    ${uris_to_delete}
198
199 VFWCL High Test
200         [Documentation]    Test Control Loop for High Traffic
201         [Arguments]    ${pkg_host}
202         Enable Streams V2    ${pkg_host}   10
203         Log   Set number of streams to 10
204         :FOR    ${i}    IN RANGE    12
205         \   Sleep  15s
206         \   ${resp}=   Get List Of Enabled Streams V2   ${pkg_host}
207         \   ${stream_count}=   Set Variable   ${resp['stream-count']['streams']['active-streams']}
208         \   Log   Number of streams: ${stream_count}
209         \   Exit For Loop If   '${stream_count}'=='5'
210         Should Be Equal As Integers  ${stream_count}   5
211
212 VFWCL Low Test
213         [Documentation]    Test Control Loop for Low Traffic
214         [Arguments]    ${pkg_host}
215         Enable Streams V2     ${pkg_host}   1
216         Log   Set number of streams to 1
217         :FOR    ${i}    IN RANGE    12
218         \   Sleep  15s
219         \   ${resp}=   Get List Of Enabled Streams V2   ${pkg_host}
220         \   ${stream_count}=   Set Variable   ${resp['stream-count']['streams']['active-streams']}
221         \   Log   Number of streams: ${stream_count}
222         \   Exit For Loop If   '${stream_count}'=='5'
223         Should Be Equal As Integers  ${stream_count}   5
224
225 VFWCL Set To Medium
226         [Documentation]    Set flows to Medium to turn off control loop
227         [Arguments]    ${pkg_host}
228         Enable Streams V2    ${pkg_host}   5