blob: 904919ace267420bcc7829c04c9733d5c127d963 [file] [log] [blame]
Gayathri.Selvan283a63c2020-01-23 04:09:18 +00001# 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.
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000014
15*** Settings ***
HungWei Chiu87edb1f2020-01-28 00:10:58 +000016Documentation Test various failure scenarios
HungWei Chiu1408fb92020-03-03 19:43:30 -050017Suite Setup Setup Suite
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000018Test Setup Setup
19Test Teardown Teardown
20#Suite Teardown Teardown Suite
21Library Collections
22Library String
23Library OperatingSystem
24Library XML
25Library RequestsLibrary
26Library ../../libraries/DependencyLibrary.py
27Resource ../../libraries/onos.robot
28Resource ../../libraries/voltctl.robot
29Resource ../../libraries/voltha.robot
30Resource ../../libraries/utils.robot
31Resource ../../libraries/k8s.robot
32Resource ../../variables/variables.robot
HungWei Chiu87edb1f2020-01-28 00:10:58 +000033Resource ../../libraries/power_switch.robot
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000034
35*** Variables ***
36${POD_NAME} flex-ocp-cord
37${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
38${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
39#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
40${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
41${HELM_CHARTS_DIR} ~/helm-charts
42${VOLTHA_POD_NUM} 8
43${NAMESPACE} voltha
44# For below variable value, using deployment name as using grep for
45# parsing radius pod name, we can also use full radius pod name
46${RESTART_POD_NAME} radius
47${timeout} 60s
48${of_id} 0
49${logical_id} 0
Suchitra Vemuri109feb12020-01-23 16:25:02 -080050${has_dataplane} True
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000051${teardown_device} False
52${scripts} ../../scripts
53
Andy Bavierabeba262020-02-07 16:22:16 -070054# Per-test logging on failure is turned off by default; set this variable to enable
55${container_log_dir} ${None}
56
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000057*** Test Cases ***
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080058Verify ONU after rebooting physically
59 [Documentation] Test the ONU functionality by physically turning on/off ONU.
60 ... Prerequisite : Subscriber are authenticated/DHCP/pingable state
61 ... Test case runs only on the PODs that are configured with PowerSwitch that
62 ... controls the power off/on ONUs/OLT remotely (simulating a physical reboot)
63 ... VOL-2634
64 [Tags] functional PowerSwitch
Suchitra Vemuri9a6dd6d2020-02-28 17:46:26 -080065 [Setup] Run Keywords Announce Message START TEST ONUreboot_PowerSwitch
66 ... AND Start Logging ONUreboot_PowerSwitch
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080067 [Teardown] Run Keywords Collect Logs
Suchitra Vemuri9a6dd6d2020-02-28 17:46:26 -080068 ... AND Stop Logging ONUreboot_PowerSwitch
69 ... AND Announce Message END TEST ONUreboot_PowerSwitch
Suchitra Vemuri0656bc22020-03-21 19:07:49 -070070 ... AND Delete Device and Verify
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080071 # Add OLT device
72 setup
73 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
74 Run Keyword If ${has_dataplane} Clean Up Linux
75 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
76 Power Switch Connection Suite ${web_power_switch.ip} ${web_power_switch.user} ${web_power_switch.password}
77 FOR ${I} IN RANGE 0 ${num_onus}
78 ${src}= Set Variable ${hosts.src[${I}]}
79 ${dst}= Set Variable ${hosts.dst[${I}]}
80 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
81 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
82 Disable Switch Outlet ${src['power_switch_port']}
83 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
84 ... Wait Until Keyword Succeeds 60s 2s
85 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
86 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
87
88 Enable Switch Outlet ${src['power_switch_port']}
89 # Check ONU port is Enabled in ONOS
90 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
ubuntu6b6e7d42020-03-02 12:35:42 -080091 ... Verify ONU Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080092 # Verify EAPOL flows are added for the ONU port
93 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -080094 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080095 # Verify ONU state in voltha
96 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Validate Device
97 ... ENABLED ACTIVE REACHABLE
98 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
Suchitra Vemuri60be98b2020-02-19 16:41:21 -080099 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
100 ... Wait Until Keyword Succeeds 60s 2s
101 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
102 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
103 Run Keyword And Ignore Error Collect Logs
104 END
Suchitra Vemurid7096132020-02-21 14:50:47 -0800105 # Deleting OLT after tests completes independently (as this test doesn't not run on each POD)
Suchitra Vemuri0656bc22020-03-21 19:07:49 -0700106 #Run Keyword If ${has_dataplane} Delete Device and Verify
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800107
Suchitra Vemuri784e1ae2020-03-16 18:40:25 -0700108Verify OLT after rebooting physically
109 [Documentation] Test the physical reboot of the OLT
110 ... Prerequisite : Subscriber are authenticated/DHCP/pingable state
111 ... Test performs a physical reboot, performs "reboot" from the OLT CLI
112 ... VOL-1956
113 [Tags] functional PhysicalOLTReboot
114 [Setup] Run Keywords Announce Message START TEST PhysicalOLTReboot
115 ... AND Start Logging PhysicalOLTReboot
116 [Teardown] Run Keywords Collect Logs
117 ... AND Stop Logging PhysicalOLTReboot
118 ... AND Announce Message END TEST PhysicalOLTReboot
Suchitra Vemurib3a92e42020-03-21 16:49:57 -0700119 ... AND Delete Device and Verify
Suchitra Vemuri784e1ae2020-03-16 18:40:25 -0700120 # Add OLT device
121 setup
122 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
123 Run Keyword If ${has_dataplane} Clean Up Linux
124 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
125 # Reboot the OLT from the OLT CLI
126 Run Keyword If ${has_dataplane} Login And Run Command On Remote System
127 ... sudo reboot ${olt_ip} ${olt_user} ${olt_pass} prompt=#
128 Run Keyword And Ignore Error Collect Logs
129 FOR ${I} IN RANGE 0 ${num_onus}
130 ${src}= Set Variable ${hosts.src[${I}]}
131 ${dst}= Set Variable ${hosts.dst[${I}]}
132 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
133 ... Wait Until Keyword Succeeds 60s 2s
134 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
135 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
136 END
137 # Wait for the OLT to come back up
138 Wait Until Keyword Succeeds 120s 10s Check Remote System Reachability True ${olt_ip}
Suchitra Vemuri64db9652020-03-22 21:11:13 -0700139 # Waiting extra time for the ONUs to come up
140 Sleep 60s
Suchitra Vemuri784e1ae2020-03-16 18:40:25 -0700141 Run Keyword And Ignore Error Collect Logs
142 Run Keyword If ${has_dataplane} Clean Up Linux
143 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
144 # Deleting OLT after test completes
Suchitra Vemurib3a92e42020-03-21 16:49:57 -0700145 #Run Keyword If ${has_dataplane} Delete Device and Verify
Suchitra Vemuri784e1ae2020-03-16 18:40:25 -0700146
Suchitra Vemuri05180cb2020-03-26 13:13:27 -0700147Verify restart openolt-adapter container after subscriber provisioning
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800148 [Documentation] Restart openolt-adapter container after VOLTHA is operational.
149 ... Prerequisite : ONUs are authenticated and pingable.
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800150 [Tags] functional VOL-1958 Restart-OpenOlt released
151 [Setup] Run Keywords Announce Message START TEST Restart-OpenOlt
152 ... AND Start Logging Restart-OpenOlt
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800153 [Teardown] Run Keywords Collect Logs
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800154 ... AND Stop Logging Restart-OpenOlt
155 ... AND Announce Message END TEST Restart-OpenOlt
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800156 # Add OLT device
157 setup
158 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
159 Run Keyword If ${has_dataplane} Clean Up Linux
160 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
161 ${waitforRestart} Set Variable 120s
162 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
163 Log ${podStatusOutput}
164 ${countBforRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
165 ${podName} Set Variable adapter-open-olt
166 Restart Pod ${NAMESPACE} ${podName}
167 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ${podName} ${NAMESPACE}
168 ... Running
Suchitra Vemuri312bfe02020-03-16 16:11:34 -0700169 # Wait for 1min after openolt adapter is restarted
170 Sleep 60s
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800171 Repeat Sanity Test
Suchitra Vemurid7096132020-02-21 14:50:47 -0800172 Run Keyword and Ignore Error Collect Logs
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800173 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
174 Log ${podStatusOutput}
175 ${countAfterRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
176 Should Be Equal As Strings ${countAfterRestart} ${countBforRestart}
177 Log to console Pod ${podName} restarted and sanity checks passed successfully
Suchitra Vemuri60be98b2020-02-19 16:41:21 -0800178
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800179Check OLT/ONU Authentication After Radius Pod Restart
180 [Documentation] After radius restart, triggers reassociation, checks status and
181 ... authentication, validates dhcp and ping. Note : wpa reassociate works only when
182 ... wpa supplicant is running in background hence it is recommended to remove
183 ... teardown from previous test or uncomment 'Teardown None'.
184 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
185 [Tags] functional RadiusRestart released
186 [Setup] Run Keywords Announce Message START TEST RadiusRestart
187 ... AND Start Logging RadiusRestart
188 [Teardown] Run Keywords Collect Logs
189 ... AND Stop Logging RadiusRestart
190 ... AND Announce Message END TEST RadiusRestart
191 ${waitforRestart} Set Variable 120s
192 Wait Until Keyword Succeeds ${timeout} 15s Restart Pod ${NAMESPACE} ${RESTART_POD_NAME}
193 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ${RESTART_POD_NAME} ${NAMESPACE}
194 ... Running
195 FOR ${I} IN RANGE 0 ${num_onus}
196 ${src}= Set Variable ${hosts.src[${I}]}
197 ${dst}= Set Variable ${hosts.dst[${I}]}
198 ${onu_device_id}= Get Device ID From SN ${src['onu']}
199 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s
200 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
201 Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800202 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800203 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
204 ... Validate Authentication After Reassociate True ${src['dp_iface_name']}
205 ... ${src['ip']} ${src['user']} ${src['pass']}
206 ... ${src['container_type']} ${src['container_name']}
ubuntu6b6e7d42020-03-02 12:35:42 -0800207 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${ONOS_SSH_IP}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800208 ... ${ONOS_SSH_PORT} ${onu_port}
209 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
210 ... Validate DHCP and Ping True True ${src['dp_iface_name']}
211 ... ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
212 ... ${src['ip']} ${src['user']} ${src['pass']}
213 ... ${src['container_type']} ${src['container_name']}
214 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']}
215 ... ${dst['pass']} ${dst['container_type']} ${dst['container_name']}
216 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
ubuntu6b6e7d42020-03-02 12:35:42 -0800217 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800218 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
219 Run Keyword and Ignore Error Collect Logs
220 END
221
Suchitra Vemuri05180cb2020-03-26 13:13:27 -0700222Verify openolt adapter restart before subscriber provisioning
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800223 [Documentation] Deploys an device instance and waits for it to authenticate. After
224 ... authentication is successful the rw-core deployment is scaled to 0 instances to
225 ... simulate a POD crash. The test then scales the rw-core back to a single instance
226 ... and configures ONOS for access. The test succeeds if the device is able to
227 ... complete the DHCP sequence.
Hung-Wei Chiud3576762020-03-25 18:06:26 -0700228 [Tags] functional olt-adapter-restart
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800229 [Setup] Run Keywords Announce Message START TEST OltAdapterRestart
230 ... AND Start Logging OltAdapterRestart
Suchitra Vemuria0c086f2020-03-29 19:14:13 -0700231 #... AND Clear All Devices Then Create New Device
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800232 [Teardown] Run Keywords Collect Logs
233 ... AND Stop Logging OltAdapterRestart
234 ... AND Announce Message END TEST OltAdapterRestart
Hung-Wei Chiud3576762020-03-25 18:06:26 -0700235 # Add OLT and perform sanity test
Suchitra Vemuri59ad2772020-03-26 22:27:27 -0700236 #setup
Suchitra Vemuri91537c82020-03-29 15:03:26 -0700237 Run Keyword If ${has_dataplane} Clean Up Linux
Suchitra Vemuri59ad2772020-03-26 22:27:27 -0700238 #Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800239 Set Global Variable ${of_id}
240
241 FOR ${I} IN RANGE 0 ${num_onus}
242 ${src}= Set Variable ${hosts.src[${I}]}
243 ${dst}= Set Variable ${hosts.dst[${I}]}
244 ${onu_device_id}= Get Device ID From SN ${src['onu']}
245 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
246 ... ${of_id}
247
248 # Bring up the device and verify it authenticates
249 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE REACHABLE
250 ... ${onu_device_id} onu=True onu_reason=omci-flows-pushed
ubuntu6b6e7d42020-03-02 12:35:42 -0800251 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${ONOS_SSH_IP}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800252 ... ${ONOS_SSH_PORT} ${onu_port}
Andy Bavier84834d42020-02-25 13:49:50 -0700253 ${wpa_log}= Run Keyword If ${has_dataplane} Catenate SEPARATOR=.
254 ... /tmp/wpa ${src['dp_iface_name']} log
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800255 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
256 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
Andy Bavier84834d42020-02-25 13:49:50 -0700257 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
ubuntu6b6e7d42020-03-02 12:35:42 -0800258 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${ONOS_SSH_IP}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800259 ... ${ONOS_SSH_PORT} ${onu_port}
260 END
261 # Scale down the open OLT adapter deployment to 0 PODs and once confirmed, scale it back to 1
262 Scale K8s Deployment voltha adapter-open-olt 0
263 Wait Until Keyword Succeeds ${timeout} 2s Pod Does Not Exist voltha adapter-open-olt
264 # Scale up the open OLT adapter deployment and make sure both it and the ofagent deployment are back
265 Scale K8s Deployment voltha adapter-open-olt 1
266 Wait Until Keyword Succeeds ${timeout} 2s
267 ... Check Expected Available Deployment Replicas voltha adapter-open-olt 1
268
269 # Ensure the device is available in ONOS, this represents system connectivity being restored
270 Wait Until Keyword Succeeds ${timeout} 2s Device Is Available In ONOS
ubuntu6b6e7d42020-03-02 12:35:42 -0800271 ... http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT} ${of_id}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800272
273 FOR ${I} IN RANGE 0 ${num_onus}
274 # Add subscriber access and verify that DHCP completes to ensure system is still functioning properly
ubuntu6b6e7d42020-03-02 12:35:42 -0800275 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${ONOS_SSH_IP}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800276 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
277 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
278 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
279 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
280 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
281 ... ${dst['container_name']}
282 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
ubuntu6b6e7d42020-03-02 12:35:42 -0800283 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800284 END
285
hwchiu14c05102020-03-27 00:44:30 +0000286Verify restart ofagent container after subscriber is provisioned
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000287 [Documentation] Restart ofagent container after VOLTHA is operational.
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000288 ... Prerequisite : ONUs are authenticated and pingable.
Hardik Windlass8f2aadc2020-03-16 20:16:39 +0530289 #TODO: remove "notready" tag once olt reboot and ofagent restart work items are done
Hardik Windlass7a846662020-03-19 20:42:59 +0530290 [Tags] functional VOL-2409 ofagentRestart
Andy Bavierabeba262020-02-07 16:22:16 -0700291 [Setup] Run Keywords Announce Message START TEST ofagentRestart
292 ... AND Start Logging ofagentRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700293 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700294 ... AND Stop Logging ofagentRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700295 ... AND Announce Message END TEST ofagentRestart
Hardik Windlass8f2aadc2020-03-16 20:16:39 +0530296 ... AND Scale K8s Deployment ${NAMESPACE} voltha-ofagent 1
Suchitra Vemuriceb002a2020-03-25 13:36:21 -0700297 # set timeout value
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000298 ${waitforRestart} Set Variable 120s
Andy Bavier4a8450e2020-02-04 08:58:37 -0700299 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000300 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -0700301 ${countBforRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Hardik Windlass8f2aadc2020-03-16 20:16:39 +0530302 ${podName} Set Variable ofagent
303 Restart Pod ${NAMESPACE} ${podName}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000304 Sleep 60s
305 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ofagent ${NAMESPACE}
306 ... Running
Hardik Windlass8f2aadc2020-03-16 20:16:39 +0530307 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
308 Run Keyword If ${has_dataplane} Clean Up Linux
309 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Andy Bavier4a8450e2020-02-04 08:58:37 -0700310 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000311 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -0700312 ${countAfterRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000313 Should Be Equal As Strings ${countAfterRestart} ${countBforRestart}
Hardik Windlass8f2aadc2020-03-16 20:16:39 +0530314 # Scale Down the Of-Agent Deployment
315 Scale K8s Deployment ${NAMESPACE} voltha-ofagent 0
316 Sleep 30s
317 FOR ${I} IN RANGE 0 ${num_onus}
318 ${src}= Set Variable ${hosts.src[${I}]}
319 ${dst}= Set Variable ${hosts.dst[${I}]}
320 Run Keyword and Ignore Error Collect Logs
321 ${onu_device_id}= Get Device ID From SN ${src['onu']}
322 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
323 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
324 # Verify ONU state in voltha
325 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Validate Device
326 ... ENABLED ACTIVE REACHABLE
327 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
328 # Check ONU port is Disabled in ONOS
329 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
330 ... Verify ONU Port Is Disabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
331 # Verify EAPOL flows are present for the ONU port
332 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
333 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
334 # Verify ONU in AAA-Users
335 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
336 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
337 # Verify DHCP-Allocations
338 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
339 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
340 # Verify Ping
341 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Check Ping True
342 ... ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']} ${src['ip']}
343 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
344 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
345 Run Keyword and Ignore Error Collect Logs
346 END
347 # Scale Up the Of-Agent Deployment
348 Scale K8s Deployment ${NAMESPACE} voltha-ofagent 1
349 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ofagent ${NAMESPACE}
350 ... Running
351 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
352 Run Keyword If ${has_dataplane} Clean Up Linux
353 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
354 Log to console Pod ${podName} restarted and sanity checks passed successfully
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000355
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000356Check ONU adapter crash not forcing authentication again
357 [Documentation] After ONU adapter restart, checks wpa log for 'authentication started'
358 ... message count to make sure auth not started again and validates EAP status and ping.
359 ... Assuming that test1 or sanity was executed where all the ONUs are authenticated/DHCP/pingable
hwchiu14c05102020-03-27 00:44:30 +0000360 [Tags] functional ONUAdaptCrash
Andy Bavierabeba262020-02-07 16:22:16 -0700361 [Setup] Run Keywords Announce Message START TEST ONUAdaptCrash
362 ... AND Start Logging ONUAdaptCrash
363 [Teardown] Run Keywords Collect Logs
364 ... AND Stop Logging ONUAdaptCrash
365 ... AND Announce Message END TEST ONUAdaptCrash
hwchiu14c05102020-03-27 00:44:30 +0000366 # Wait for adapter to resync
367 Sleep 60s
368 # Restart the onu
369 ${podName} Set Variable adapter-open-onu
370 Wait Until Keyword Succeeds ${timeout} 15s Restart Pod ${NAMESPACE} ${podName}
371 # Validate ONU Ports
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000372 FOR ${I} IN RANGE 0 ${num_onus}
373 ${src}= Set Variable ${hosts.src[${I}]}
374 ${dst}= Set Variable ${hosts.dst[${I}]}
375 ${onu_device_id}= Get Device ID From SN ${src['onu']}
376 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
377 ... ${of_id}
hwchiu14c05102020-03-27 00:44:30 +0000378 Run Keyword And Continue On Failure Verify ONU Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
379 ... ${onu_port}
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000380 ${output}= Run Keyword If ${has_dataplane} Login And Run Command On Remote System
381 ... wpa_cli status | grep SUCCESS ${src['ip']} ${src['user']} ${src['pass']}
382 ... ${src['container_type']} ${src['container_name']}
383 Run Keyword If ${has_dataplane} Should Contain ${output} SUCCESS
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000384 END
hwchiu14c05102020-03-27 00:44:30 +0000385 Wait Until Keyword Succeeds ${timeout} 2s Validate Pod Status ${podName} ${NAMESPACE}
386 ... Running
387 # Wait for adapter to resync
388 Sleep 60s
389 Clean Up Linux
390 # Perform all steps in Sanity Test except the subscriber addition
391 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${olt_serial_number}
392 Set Global Variable ${of_id}
393 FOR ${I} IN RANGE 0 ${num_onus}
394 ${src}= Set Variable ${hosts.src[${I}]}
395 ${dst}= Set Variable ${hosts.dst[${I}]}
396 Run Keyword and Ignore Error Collect Logs
397 ${onu_device_id}= Get Device ID From SN ${src['onu']}
398 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
399 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
400 # Check ONU port is Enabled in ONOS
401 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
402 ... Verify ONU Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
403 # Verify EAPOL flows are added for the ONU port
404 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
405 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
406 # Verify ONU state in voltha
407 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Validate Device
408 ... ENABLED ACTIVE REACHABLE
409 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
410 # Perform Authentication
411 ${wpa_log}= Run Keyword If ${has_dataplane} Catenate SEPARATOR=.
412 ... /tmp/wpa ${src['dp_iface_name']} log
413 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
414 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
415 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
416 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
417 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
418 # Verify that no pending flows exist for the ONU port
419 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
420 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
421 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
422 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
423 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
424 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
425 ... ${dst['container_name']}
426 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
427 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
428 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
429 Run Keyword and Ignore Error Collect Logs
430 END
431
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000432 Run Keyword and Ignore Error Collect Logs
433
Suchitra Vemuriebf65322020-04-03 10:09:41 -0700434Sanity E2E Test for OLT/ONU on POD With Core Fail and Restart
435 [Documentation] Deploys an device instance and waits for it to authenticate. After
436 ... authentication is successful the rw-core deployment is scaled to 0 instances to
437 ... simulate a POD crash. The test then scales the rw-core back to a single instance
438 ... and configures ONOS for access. The test succeeds if the device is able to
439 ... complete the DHCP sequence.
440 [Tags] functional rwcore-restart
441 [Setup] Run Keywords Announce Message START TEST RwCoreFailAndRestart
442 ... AND Start Logging RwCoreFailAndRestart
443 ... AND Clear All Devices Then Create New Device
444 [Teardown] Run Keywords Collect Logs
445 ... AND Stop Logging RwCoreFailAndRestart
446 ... AND Announce Message END TEST RwCoreFailAndRestart
447 ... AND Delete Device and Verify
448 Run Keyword and Ignore Error Collect Logs
449 Run Keyword If ${has_dataplane} Clean Up Linux
450 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${olt_serial_number}
451 Set Global Variable ${of_id}
452 FOR ${I} IN RANGE 0 ${num_onus}
453 ${src}= Set Variable ${hosts.src[${I}]}
454 ${dst}= Set Variable ${hosts.dst[${I}]}
455 ${onu_device_id}= Get Device ID From SN ${src['onu']}
456 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
457 ... ${of_id}
458 # Bring up the device and verify it authenticates
459 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE REACHABLE
460 ... ${onu_device_id} onu=True onu_reason=omci-flows-pushed
461 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${ONOS_SSH_IP}
462 ... ${ONOS_SSH_PORT} ${onu_port}
463 ${wpa_log}= Run Keyword If ${has_dataplane} Catenate SEPARATOR=.
464 ... /tmp/wpa ${src['dp_iface_name']} log
465 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
466 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
467 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
468 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${ONOS_SSH_IP}
469 ... ${ONOS_SSH_PORT} ${onu_port}
470 END
471
472 # Scale down the rw-core deployment to 0 PODs and once confirmed, scale it back to 1
473 Scale K8s Deployment voltha voltha-rw-core 0
474 Wait Until Keyword Succeeds ${timeout} 2s Pod Does Not Exist voltha voltha-rw-core
475 # Ensure the ofagent POD goes "not-ready" as expected
476 Wait Until keyword Succeeds ${timeout} 2s
477 ... Check Expected Available Deployment Replicas voltha voltha-ofagent 0
478 # Scale up the core deployment and make sure both it and the ofagent deployment are back
479 Scale K8s Deployment voltha voltha-rw-core 1
480 Wait Until Keyword Succeeds ${timeout} 2s
481 ... Check Expected Available Deployment Replicas voltha voltha-rw-core 1
482 Wait Until Keyword Succeeds ${timeout} 2s
483 ... Check Expected Available Deployment Replicas voltha voltha-ofagent 1
484 # For some reason scaling down and up the POD behind a service causes the port forward to stop working,
485 # so restart the port forwarding for the API service
486 Restart VOLTHA Port Foward voltha-api-minimal
487 # Ensure that the ofagent pod is up and ready and the device is available in ONOS, this
488 # represents system connectivity being restored
489 Wait Until Keyword Succeeds ${timeout} 2s Device Is Available In ONOS
490 ... http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT} ${of_id}
491
492 FOR ${I} IN RANGE 0 ${num_onus}
493 # Add subscriber access and verify that DHCP completes to ensure system is still functioning properly
494 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${ONOS_SSH_IP}
495 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
496 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
497 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
498 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
499 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
500 ... ${dst['container_name']}
501 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
502 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
503 END
504
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000505ONU Reboot
506 [Documentation] Reboot ONU and verify that ONU comes up properly
507 [Tags] VOL-1957 RebootONU notready
Andy Bavierabeba262020-02-07 16:22:16 -0700508 [Setup] Run Keywords Announce Message START TEST RebootONU
509 ... AND Start Logging RebootONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700510 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700511 ... AND Stop Logging RebootONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700512 ... AND Announce Message END TEST RebootONU
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000513 FOR ${I} IN RANGE 0 ${num_onus}
514 ${src}= Set Variable ${hosts.src[${I}]}
515 ${dst}= Set Variable ${hosts.dst[${I}]}
516 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Suchitra Vemuricd2f64f2020-02-18 18:30:27 -0800517 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
518 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000519 Reboot ONU ${onu_device_id} ${src} ${dst}
520 Verify ping is succesful except for given device ${num_onus} ${onu_device_id}
Suchitra Vemuricd2f64f2020-02-18 18:30:27 -0800521 # Check ONU port is Enabled in ONOS
522 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800523 ... Verify ONU Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuricd2f64f2020-02-18 18:30:27 -0800524 # Verify EAPOL flows are added for the ONU port
525 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800526 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuricd2f64f2020-02-18 18:30:27 -0800527 # Verify ONU state in voltha
528 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Validate Device
529 ... ENABLED ACTIVE REACHABLE
530 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
531 # Verify pings are successful after reboot on the current ONU
532 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
533 ... Wait Until Keyword Succeeds 60s 2s
534 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
535 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000536 END
Suchitra Vemuricd2f64f2020-02-18 18:30:27 -0800537 #Run Keyword If ${has_dataplane} Clean Up Linux
538 #Check after reboot that ONUs are active, authenticated/DHCP/pingable
539 #Perform Sanity Test
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800540
541*** Keywords ***
542Setup Suite
543 [Documentation] Set up the test suite
544 Common Test Suite Setup
HungWei Chiu1408fb92020-03-03 19:43:30 -0500545 #power_switch.robot needs it to support different vendor's power switch
Hung-Wei Chiufcc6d8e2020-03-10 12:05:11 -0700546 ${switch_type}= Get Variable Value ${web_power_switch.type}
547 Run Keyword If "${switch_type}"!="" Set Global Variable ${powerswitch_type} ${switch_type}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800548
549Clear All Devices Then Create New Device
550 [Documentation] Remove any devices from VOLTHA and ONOS
551 # Remove all devices from voltha and nos
552 Delete All Devices and Verify
553 # Execute normal test Setup Keyword
554 Setup