blob: e4b1c6302e0376f6605addeebf0dbabe8194d8ce [file] [log] [blame]
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -07001# Copyright 2017-present Open Networking Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15*** Settings ***
16Documentation Test various with ATT workflow using multiple ONUs
17Suite Setup Setup Suite
18Suite Teardown Teardown Suite
19Test Setup Setup Test
20Test Teardown Teardown Test
21Library Collections
22Library String
23Library OperatingSystem
24Library XML
25Library RequestsLibrary
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070026Library /home/ubuntu/voltha/tests/atests/common/testCaseUtils.py
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070027Library ../../Framework/utils/utils.py
28Resource ../../Framework/utils/utils.robot
29Library ../../Framework/restApi.py
30Resource ../../Framework/Subscriber.robot
31Resource ../../Framework/ATTWorkFlowDriver.robot
32Resource ../../Framework/Kubernetes.robot
33Resource ../../Framework/ONU.robot
34Resource ../../Framework/OLT.robot
35Resource ../../Framework/DHCP.robot
36Variables ../../Properties/RestApiProperties.py
37
38*** Variables ***
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -070039${POD_NAME} onlab-pod1-qa
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070040${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
41${HELM_CHARTS_DIR} ~/helm-charts
42${WHITELIST_PATHFILE} ${CURDIR}/data/${POD_NAME}/ATTWhiteList.json
43${SUBSCRIBER_PATHFILE} ${CURDIR}/data/${POD_NAME}/ATTSubscriber.json
44${VOLT_DEVICE_PATHFILE} ${CURDIR}/data/${POD_NAME}/RealOLTDevice.json
45${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
46${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
47${VOLTHA_POD_NUM} 8
48
49*** Test Cases ***
50ONU in Correct Location with two ONUs
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -070051 [Documentation] Test with two ONUs(same s-tag) - authenticate/dhcp/ping on both the ONUs
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070052 ... Validates E2E Ping Connectivity and object states for the given scenario:
53 ... Configure whitelist with correct first ONU location
54 ... Validate successful authentication/DHCP/E2E ping
55 ... Configure whitelist with correct details for the second ONU location
56 ... Validate successful authentication/DHCP/E2E ping for the second ONU
57 ... Validates that the first ONU can still ping
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -070058 #[Setup] None
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -070059 [Teardown] None
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070060 [Tags] multipleONU-test1
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070061 Log $[src0['onu']}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070062 Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED ${src0['onu']}
63 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING ${src0['onu']}
64 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src0['onu']}
65 Validate Authentication True ${src0['dp_iface_name']} wpa_supplicant.conf ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
66 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED ${src0['onu']}
67 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled ${src0['onu']}
Suchitra Vemuri7dee24a2019-05-24 11:59:52 -070068 Validate DHCP and Ping True True ${src0['dp_iface_name']} ${src0['s_tag']} ${src0['c_tag']} ${dst0['dp_iface_ip_qinq']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']} ${dst0['dp_iface_name']} ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070069 #Second ONU
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070070 Log $[src1['onu']}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070071 Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED ${src1['onu']}
Suchitra Vemuricb4d5a22019-05-24 11:39:38 -070072 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING ${src1['onu']}
73 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src1['onu']}
74 Validate Authentication True ${src1['dp_iface_name']} wpa_supplicant.conf ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']}
75 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED ${src1['onu']}
76 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled ${src1['onu']}
77 Validate DHCP and Ping True True ${src1['dp_iface_name']} ${src1['s_tag']} ${src1['c_tag']} ${dst1['dp_iface_ip_qinq']} ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']} ${dst1['dp_iface_name']} ${dst1['ip']} ${dst1['user']} ${dst1['pass']} ${dst1['container_type']} ${dst1['container_name']}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070078 # Validate that the first ONU can still ping
Suchitra Vemuri7dee24a2019-05-24 11:59:52 -070079 Validate DHCP and Ping True True ${src0['dp_iface_name']} ${src0['s_tag']} ${src0['c_tag']} ${dst0['dp_iface_ip_qinq']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']} ${dst0['dp_iface_name']} ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070080
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -070081Deletion of one ONU from the whitelist while other ONU exists
82 [Documentation] Test with two ONUs(same s-tag) - delete one ONU from the whitelist
83 ... Validates E2E Ping Connectivity and object states for the given scenario:
84 ... After validating authentication/dhcp/ping from the above tests
85 ... Delete the second ONU from the whitelist
86 ... Validate that pings fail on the second ONU
87 ... Validate that the first ONU can still ping
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070088 [Setup] None
89 [Teardown] None
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -070090 [Tags] multipleONU-test2
91 #Second ONU
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070092 Remove Whitelist ${src1['onu']}
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -070093 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src1['onu']}
Suchitra Vemuria0cc7872019-06-12 16:23:00 -070094 Wait Until Keyword Succeeds 60s 2s Check Ping False ${dst1['dp_iface_ip_qinq']} ${src1['dp_iface_name']} ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']}
95 # Validate that the first ONU can still ping
96 Validate DHCP and Ping True True ${src0['dp_iface_name']} ${src0['s_tag']} ${src0['c_tag']} ${dst0['dp_iface_ip_qinq']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']} ${dst0['dp_iface_name']} ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
97
98Readd the deleted ONU to the whitelist while other ONU exists
99 [Documentation] Test with two ONUs(same s-tag) - readd deleted ONU to the whitelist
100 ... Validates E2E Ping Connectivity and object states for the given scenario:
101 ... After validating authentication/dhcp/ping from the above tests
102 ... Add the second ONU to the whitelist
103 ... Perform authentication/dhcp/ping on the second ONU
104 ... Validate that pings succeed on the second ONU
105 ... Validate that the first ONU can still ping
106 [Setup] None
107 [Teardown] None
108 [Tags] multipleONU-test3
109 #Second ONU
110 Create Whitelist 1
111 Log $[src1['onu']}
112 Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED ${src1['onu']}
113 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING ${src1['onu']}
114 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src1['onu']}
115 Validate Authentication True ${src1['dp_iface_name']} wpa_supplicant.conf ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']}
116 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED ${src1['onu']}
117 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled ${src1['onu']}
118 Validate DHCP and Ping True True ${src1['dp_iface_name']} ${src1['s_tag']} ${src1['c_tag']} ${dst1['dp_iface_ip_qinq']} ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']} ${dst1['dp_iface_name']} ${dst1['ip']} ${dst1['user']} ${dst1['pass']} ${dst1['container_type']} ${dst1['container_name']}
Suchitra Vemuri9ba61b82019-06-05 15:00:21 -0700119 # Validate that the first ONU can still ping
120 Validate DHCP and Ping True True ${src0['dp_iface_name']} ${src0['s_tag']} ${src0['c_tag']} ${dst0['dp_iface_ip_qinq']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']} ${dst0['dp_iface_name']} ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
121
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700122*** Keywords ***
123Setup Suite
124 ${auth} = Create List ${XOS_USER} ${XOS_PASSWD}
125 ${HEADERS} Create Dictionary Content-Type=application/json
126 Create Session ${server_ip} http://${server_ip}:${server_port} auth=${AUTH} headers=${HEADERS}
127 ${att_workflow_service_id}= Get Service Owner Id ${ATT_SERVICE}
128 ${volt_service_id}= Get Service Owner Id ${VOLT_SERVICE}
129 ${AttWhiteListList}= utils.jsonToList ${WHITELIST_PATHFILE} AttWhiteListInfo
130 Set Suite Variable ${AttWhiteListList}
131 ${AttWhiteListDict}= utils.listToDict ${AttWhiteListList} 0
132 ${AttWhiteListDict}= utils.setFieldValueInDict ${AttWhiteListDict} owner_id ${att_workflow_service_id}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700133 Set Suite Variable ${att_workflow_service_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700134 ${onu_location}= Get From Dictionary ${AttWhiteListDict} pon_port_id
135 Set Global Variable ${onu_location}
136 ${SubscriberList}= utils.jsonToList ${SUBSCRIBER_PATHFILE} SubscriberInfo
137 Set Global Variable ${SubscriberList}
138 ${SubscriberDict}= utils.listToDict ${SubscriberList} 0
139 ${s_tag}= utils.getFieldValueFromDict ${SubscriberDict} s_tag
140 ${c_tag}= utils.getFieldValueFromDict ${SubscriberDict} c_tag
141 ${VoltDeviceList}= utils.jsonToList ${VOLT_DEVICE_PATHFILE} VOLTDeviceInfo
142 ${VoltDeviceDict}= utils.setFieldValueInDict ${VoltDeviceList[0]} volt_service_id ${volt_service_id}
143 Set Global Variable ${VoltDeviceList}
144 Set Global Variable ${VoltDeviceDict}
145 Set Suite Variable ${s_tag}
146 Set Suite Variable ${c_tag}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700147 ${olt_ip}= Evaluate ${olts}[0].get("ip")
148 ${olt_user}= Evaluate ${olts}[0].get("user")
149 ${olt_pass}= Evaluate ${olts}[0].get("pass")
150 ${k8s_node_ip}= Evaluate ${nodes}[0].get("ip")
151 ${k8s_node_user}= Evaluate ${nodes}[0].get("user")
152 ${k8s_node_pass}= Evaluate ${nodes}[0].get("pass")
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700153 Set Suite Variable ${olt_ip}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700154 Set Suite Variable ${olt_user}
155 Set Suite Variable ${olt_pass}
156 Set Suite Variable ${k8s_node_ip}
157 Set Suite Variable ${k8s_node_user}
158 Set Suite Variable ${k8s_node_pass}
159 Set Global Variable ${export_kubeconfig} export KUBECONFIG=${KUBERNETES_CONF}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700160 @{container_list}= Create List
161 Append To List ${container_list} att-workflow-att-workflow-driver
162 Append To List ${container_list} seba-services-volt
163 Append To List ${container_list} seba-services-rcord
164 Append To List ${container_list} onos
165 Append To List ${container_list} seba-services-fabric-crossconnect
166 Append To List ${container_list} xos-core
167 Append To List ${container_list} vcore
168 Set Suite Variable ${container_list}
169 Set Deployment Config Variables
170 ${datetime}= Get Current Datetime On Kubernetes Node ${k8s_node_ip} ${k8s_node_user} ${k8s_node_pass}
171 Set Suite Variable ${datetime}
172
173Teardown Suite
174 [Documentation] Performs any additional cleanup required
175 Log Suite Teardown cleanup
176 Delete All Sessions
177
178Setup Test
179 [Documentation] Re-create Subscriber, whitelist, and olt-device models to test
180 Log Re-creating objects
181 ${datetime}= Get Current Datetime On Kubernetes Node ${k8s_node_ip} ${k8s_node_user} ${k8s_node_pass}
182 Set Suite Variable ${datetime}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700183 Create Whitelist 0
184 Create Whitelist 1
185 Create Subscriber 0
186 Create Subscriber 1
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700187 Create VOLT
188 Wait Until Keyword Succeeds 200s 15s Validate OLT States ACTIVE ENABLED ${olt_ip}
189
190Teardown Test
191 [Documentation] Delete xos objects, kills processes and cleans up interfaces on src+dst servers
192 Get VOLTHA Status
193 Get ONOS Status
194 Clean Up Linux
195 Clean Up XOS
196 Log Kubernetes Containers Logs Since Time ${datetime} ${container_list}
197
198Clean Up Linux
199 [Documentation] Kill processes and clean up interfaces on src+dst servers
200 Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
201 Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
202 Run Keyword If '${dst0['ip']}' != '${None}' Run Keyword And Ignore Error Kill Linux Process [d]hcpd ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
203 Delete IP Addresses from Interface on Remote Host ${src0['dp_iface_name']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
204 Run Keyword If '${dst0['ip']}' != '${None}' Delete Interface on Remote Host ${dst0['dp_iface_name']}.${s_tag} ${dst0['ip']} ${dst0['user']} ${dst0['pass']} ${dst0['container_type']} ${dst0['container_name']}
205
206Clean Up XOS
207 [Documentation] Clean up all XOS objects and reinstall voltha after OLT reboots
208 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_SUBSCRIBER}
209 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${ATT_WHITELIST}
210 Sleep 20s
211 Wait Until Keyword Succeeds 30s 2s Validate Subscriber Count 0
212 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_DEVICE}
213 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${ATT_SERVICEINSTANCES}
214 Wait Until Keyword Succeeds 120s 10s Check Remote System Reachability False ${olt_ip}
215 Wait Until Keyword Succeeds 120s 10s Check Remote System Reachability True ${olt_ip}
216 Wait Until Keyword Succeeds 120s 10s Openolt is Up ${olt_ip} ${olt_user} ${olt_pass}
217
218Create Whitelist
219 [Arguments] ${index_id}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700220 ${AttWhiteListDict}= utils.listToDict ${AttWhiteListList} ${index_id}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700221 ${AttWhiteListDict}= utils.setFieldValueInDict ${AttWhiteListDict} owner_id ${att_workflow_service_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700222 CORD Post ${ATT_WHITELIST} ${AttWhiteListDict}
223
224Remove Whitelist
225 [Arguments] ${onu_device}
Suchitra Vemuria0cc7872019-06-12 16:23:00 -0700226 Log ${onu_device}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700227 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700228 CORD Delete ${ATT_WHITELIST} ${whitelist_id}
229
230Update Whitelist with Wrong Location
231 [Arguments] ${onu_device}
232 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
233 CORD Put ${ATT_WHITELIST} {"pon_port_id": 5345 } ${whitelist_id}
234
235Update Whitelist with Correct Location
236 [Arguments] ${onu_device}
237 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
238 CORD Put ${ATT_WHITELIST} {"pon_port_id": ${onu_location} } ${whitelist_id}
239
240Create Subscriber
241 [Arguments] ${index_id}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700242 ${SubscriberDict}= utils.listToDict ${SubscriberList} ${index_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700243 Wait Until Keyword Succeeds 120s 15s CORD Post ${VOLT_SUBSCRIBER} ${SubscriberDict}
244
245Remove Subscriber
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700246 [Arguments] ${c_tag}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700247 ${subscriber_id}= Retrieve Subscriber ${c_tag}
248 CORD Delete ${VOLT_SUBSCRIBER} ${subscriber_id}
249
250Create VOLT
251 CORD Post ${VOLT_DEVICE} ${VoltDeviceDict}
252
253Update ONU AdminState
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700254 [Arguments] ${onu_device} ${new_admin_state}
255 ${onudevice_id}= Retrieve ONU Device ${onu_device}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700256 CORD Put ${VOLT_DEVICE} ${"admin_state": ${new_admin_state} } ${onudevice_id}
257