blob: 12601a070136c446a3ef8c3a6cc96a6316070eee [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
26Library /home/cord/voltha/tests/atests/common/testCaseUtils.py
27Library ../../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
51 [Documentation] Test with two ONUs
52 ... 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 Vemuri58eeaa32019-05-23 22:55:30 -070059 [Tags] multipleONU-test1
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070060 Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED ${src0['onu']}
61 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING ${src0['onu']}
62 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src0['onu']}
63 Validate Authentication True ${src0['dp_iface_name']} wpa_supplicant.conf ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
64 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED ${src0['onu']}
65 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled ${src0['onu']}
Suchitra Vemuri7dee24a2019-05-24 11:59:52 -070066 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 -070067 #Second ONU
68 Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED ${src1['onu']}
Suchitra Vemuricb4d5a22019-05-24 11:39:38 -070069 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING ${src1['onu']}
70 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth ${src1['onu']}
71 Validate Authentication True ${src1['dp_iface_name']} wpa_supplicant.conf ${src1['ip']} ${src1['user']} ${src1['pass']} ${src1['container_type']} ${src1['container_name']}
72 Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED ${src1['onu']}
73 Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled ${src1['onu']}
74 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 -070075 # Validate that the first ONU can still ping
Suchitra Vemuri7dee24a2019-05-24 11:59:52 -070076 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 -070077
78*** Keywords ***
79Setup Suite
80 ${auth} = Create List ${XOS_USER} ${XOS_PASSWD}
81 ${HEADERS} Create Dictionary Content-Type=application/json
82 Create Session ${server_ip} http://${server_ip}:${server_port} auth=${AUTH} headers=${HEADERS}
83 ${att_workflow_service_id}= Get Service Owner Id ${ATT_SERVICE}
84 ${volt_service_id}= Get Service Owner Id ${VOLT_SERVICE}
85 ${AttWhiteListList}= utils.jsonToList ${WHITELIST_PATHFILE} AttWhiteListInfo
86 Set Suite Variable ${AttWhiteListList}
87 ${AttWhiteListDict}= utils.listToDict ${AttWhiteListList} 0
88 ${AttWhiteListDict}= utils.setFieldValueInDict ${AttWhiteListDict} owner_id ${att_workflow_service_id}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -070089 Set Suite Variable ${att_workflow_service_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -070090 ${onu_location}= Get From Dictionary ${AttWhiteListDict} pon_port_id
91 Set Global Variable ${onu_location}
92 ${SubscriberList}= utils.jsonToList ${SUBSCRIBER_PATHFILE} SubscriberInfo
93 Set Global Variable ${SubscriberList}
94 ${SubscriberDict}= utils.listToDict ${SubscriberList} 0
95 ${s_tag}= utils.getFieldValueFromDict ${SubscriberDict} s_tag
96 ${c_tag}= utils.getFieldValueFromDict ${SubscriberDict} c_tag
97 ${VoltDeviceList}= utils.jsonToList ${VOLT_DEVICE_PATHFILE} VOLTDeviceInfo
98 ${VoltDeviceDict}= utils.setFieldValueInDict ${VoltDeviceList[0]} volt_service_id ${volt_service_id}
99 Set Global Variable ${VoltDeviceList}
100 Set Global Variable ${VoltDeviceDict}
101 Set Suite Variable ${s_tag}
102 Set Suite Variable ${c_tag}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700103 ${olt_ip}= Evaluate ${olts}[0].get("ip")
104 ${olt_user}= Evaluate ${olts}[0].get("user")
105 ${olt_pass}= Evaluate ${olts}[0].get("pass")
106 ${k8s_node_ip}= Evaluate ${nodes}[0].get("ip")
107 ${k8s_node_user}= Evaluate ${nodes}[0].get("user")
108 ${k8s_node_pass}= Evaluate ${nodes}[0].get("pass")
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700109 Set Suite Variable ${olt_ip}
110 Set Suite Variable ${olt_ip}
111 Set Suite Variable ${olt_user}
112 Set Suite Variable ${olt_pass}
113 Set Suite Variable ${k8s_node_ip}
114 Set Suite Variable ${k8s_node_user}
115 Set Suite Variable ${k8s_node_pass}
116 Set Global Variable ${export_kubeconfig} export KUBECONFIG=${KUBERNETES_CONF}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700117 @{container_list}= Create List
118 Append To List ${container_list} att-workflow-att-workflow-driver
119 Append To List ${container_list} seba-services-volt
120 Append To List ${container_list} seba-services-rcord
121 Append To List ${container_list} onos
122 Append To List ${container_list} seba-services-fabric-crossconnect
123 Append To List ${container_list} xos-core
124 Append To List ${container_list} vcore
125 Set Suite Variable ${container_list}
126 Set Deployment Config Variables
127 ${datetime}= Get Current Datetime On Kubernetes Node ${k8s_node_ip} ${k8s_node_user} ${k8s_node_pass}
128 Set Suite Variable ${datetime}
129
130Teardown Suite
131 [Documentation] Performs any additional cleanup required
132 Log Suite Teardown cleanup
133 Delete All Sessions
134
135Setup Test
136 [Documentation] Re-create Subscriber, whitelist, and olt-device models to test
137 Log Re-creating objects
138 ${datetime}= Get Current Datetime On Kubernetes Node ${k8s_node_ip} ${k8s_node_user} ${k8s_node_pass}
139 Set Suite Variable ${datetime}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700140 Create Whitelist 0
141 Create Whitelist 1
142 Create Subscriber 0
143 Create Subscriber 1
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700144 Create VOLT
145 Wait Until Keyword Succeeds 200s 15s Validate OLT States ACTIVE ENABLED ${olt_ip}
146
147Teardown Test
148 [Documentation] Delete xos objects, kills processes and cleans up interfaces on src+dst servers
149 Get VOLTHA Status
150 Get ONOS Status
151 Clean Up Linux
152 Clean Up XOS
153 Log Kubernetes Containers Logs Since Time ${datetime} ${container_list}
154
155Clean Up Linux
156 [Documentation] Kill processes and clean up interfaces on src+dst servers
157 Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
158 Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
159 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']}
160 Delete IP Addresses from Interface on Remote Host ${src0['dp_iface_name']} ${src0['ip']} ${src0['user']} ${src0['pass']} ${src0['container_type']} ${src0['container_name']}
161 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']}
162
163Clean Up XOS
164 [Documentation] Clean up all XOS objects and reinstall voltha after OLT reboots
165 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_SUBSCRIBER}
166 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${ATT_WHITELIST}
167 Sleep 20s
168 Wait Until Keyword Succeeds 30s 2s Validate Subscriber Count 0
169 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_DEVICE}
170 Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${ATT_SERVICEINSTANCES}
171 Wait Until Keyword Succeeds 120s 10s Check Remote System Reachability False ${olt_ip}
172 Wait Until Keyword Succeeds 120s 10s Check Remote System Reachability True ${olt_ip}
173 Wait Until Keyword Succeeds 120s 10s Openolt is Up ${olt_ip} ${olt_user} ${olt_pass}
174
175Create Whitelist
176 [Arguments] ${index_id}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700177 ${AttWhiteListDict}= utils.listToDict ${AttWhiteListList} ${index_id}
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700178 ${AttWhiteListDict}= utils.setFieldValueInDict ${AttWhiteListDict} owner_id ${att_workflow_service_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700179 CORD Post ${ATT_WHITELIST} ${AttWhiteListDict}
180
181Remove Whitelist
182 [Arguments] ${onu_device}
183 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700184 CORD Delete ${ATT_WHITELIST} ${whitelist_id}
185
186Update Whitelist with Wrong Location
187 [Arguments] ${onu_device}
188 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
189 CORD Put ${ATT_WHITELIST} {"pon_port_id": 5345 } ${whitelist_id}
190
191Update Whitelist with Correct Location
192 [Arguments] ${onu_device}
193 ${whitelist_id}= Retrieve Whitelist Entry ${onu_device}
194 CORD Put ${ATT_WHITELIST} {"pon_port_id": ${onu_location} } ${whitelist_id}
195
196Create Subscriber
197 [Arguments] ${index_id}
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700198 ${SubscriberDict}= utils.listToDict ${SubscriberList} ${index_id}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700199 Wait Until Keyword Succeeds 120s 15s CORD Post ${VOLT_SUBSCRIBER} ${SubscriberDict}
200
201Remove Subscriber
Suchitra Vemuri94ea16b2019-06-04 17:16:12 -0700202 [Arguments] ${c_tag}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700203 ${subscriber_id}= Retrieve Subscriber ${c_tag}
204 CORD Delete ${VOLT_SUBSCRIBER} ${subscriber_id}
205
206Create VOLT
207 CORD Post ${VOLT_DEVICE} ${VoltDeviceDict}
208
209Update ONU AdminState
Suchitra Vemurid1488e52019-05-31 12:38:47 -0700210 [Arguments] ${onu_device} ${new_admin_state}
211 ${onudevice_id}= Retrieve ONU Device ${onu_device}
Suchitra Vemuri58eeaa32019-05-23 22:55:30 -0700212 CORD Put ${VOLT_DEVICE} ${"admin_state": ${new_admin_state} } ${onudevice_id}
213