blob: 2b93cd0af4762324d16f23aa629dbae239f2451b [file] [log] [blame]
David Bainbridgef81cd642019-11-20 00:14:47 +00001# Copyright 2017 - present Open Networking Foundation
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -07002#
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.
Matteo Scandolo1294aeb2019-09-24 16:20:32 -070014# FIXME Can we use the same test against BBSim and Hardware?
15
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070016*** Settings ***
Zack Williamsec53a1b2019-09-16 15:50:52 -070017Documentation Test various end-to-end scenarios
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070018Suite Setup Setup Suite
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070019Test Setup Setup
20Test Teardown Teardown
Andy Bavierba9866b2019-10-11 07:11:53 -070021Suite Teardown Teardown Suite
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070022Library Collections
23Library String
24Library OperatingSystem
25Library XML
26Library RequestsLibrary
Andy Bavierba9866b2019-10-11 07:11:53 -070027Library ../../libraries/DependencyLibrary.py
Suchitra Vemurib8ed2d52019-09-30 13:22:51 -070028Resource ../../libraries/onos.robot
29Resource ../../libraries/voltctl.robot
David Bainbridgef81cd642019-11-20 00:14:47 +000030Resource ../../libraries/voltha.robot
Suchitra Vemurib8ed2d52019-09-30 13:22:51 -070031Resource ../../libraries/utils.robot
Andy Bavierba9866b2019-10-11 07:11:53 -070032Resource ../../libraries/k8s.robot
Suchitra Vemurib8ed2d52019-09-30 13:22:51 -070033Resource ../../variables/variables.robot
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070034
35*** Variables ***
Zack Williamsec53a1b2019-09-16 15:50:52 -070036${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
Zack Williamsa8fe75a2020-01-10 14:25:27 -070043${NAMESPACE} voltha
suraj gourd64356b2019-11-07 13:26:20 +000044# For below variable value, using deployment name as using grep for
45# parsing radius pod name, we can also use full radius pod name
Zack Williamsa8fe75a2020-01-10 14:25:27 -070046${RESTART_POD_NAME} radius
Andy Bavierba9866b2019-10-11 07:11:53 -070047${timeout} 60s
Zack Williamsec53a1b2019-09-16 15:50:52 -070048${of_id} 0
49${logical_id} 0
Andy Bavierba9866b2019-10-11 07:11:53 -070050${has_dataplane} True
51${external_libs} True
52${teardown_device} False
Zack Williamsa8fe75a2020-01-10 14:25:27 -070053${scripts} ../../scripts
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070054
Andy Bavierabeba262020-02-07 16:22:16 -070055# Per-test logging on failure is turned off by default; set this variable to enable
56${container_log_dir} ${None}
57
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070058*** Test Cases ***
59Sanity E2E Test for OLT/ONU on POD
60 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
61 ... Validate successful authentication/DHCP/E2E ping for the tech profile that is used
Andy Bavierba9866b2019-10-11 07:11:53 -070062 [Tags] sanity test1
Andy Bavier4a8450e2020-02-04 08:58:37 -070063 [Setup] Run Keywords Announce Message START TEST SanityTest
Andy Bavierabeba262020-02-07 16:22:16 -070064 ... AND Start Logging SanityTest
Andy Bavier4a8450e2020-02-04 08:58:37 -070065 ... AND Setup
66 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -070067 ... AND Stop Logging SanityTest
Andy Bavier4a8450e2020-02-04 08:58:37 -070068 ... AND Announce Message END TEST SanityTest
Suchitra Vemuric5295a32019-12-15 20:32:04 -080069 Run Keyword If ${has_dataplane} Clean Up Linux
Zack Williamsa8fe75a2020-01-10 14:25:27 -070070 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070071
Hema93762cf2020-01-29 19:59:28 +053072Test Disable and Enable OLT
73 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
74 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
75 ... Perform disable on the OLT and validate that the pings do not succeed
76 ... Perform enable on the OLT and validate that the pings are successful
77 [Tags] VOL-2410 DisableEnableOLT notready
Andy Bavierabeba262020-02-07 16:22:16 -070078 [Setup] Run Keywords Announce Message START TEST DisableEnableOLT
79 ... AND Start Logging DisableEnableOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -070080 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -070081 ... AND Stop Logging DisableEnableOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -070082 ... AND Announce Message END TEST DisableEnableOLT
Hema93762cf2020-01-29 19:59:28 +053083 #Disable the OLT and verify the OLT/ONUs are disabled properly
84 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
85 Should Be Equal As Integers ${rc} 0
86 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
87 ... ${olt_serial_number}
88 FOR ${I} IN RANGE 0 ${num_onus}
89 ${src}= Set Variable ${hosts.src[${I}]}
90 ${dst}= Set Variable ${hosts.dst[${I}]}
91 ${onu_device_id}= Get Device ID From SN ${src['onu']}
92 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED DISCOVERED
93 ... UNREACHABLE ${src['onu']} onu=false
94 #Verify that ping fails
95 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 60s 2s
96 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
97 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}}
98 END
99 #Enable the OLT back and check ONU, OLT status are back to "ACTIVE"
100 Enable Device ${olt_device_id}
101 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE
102 ... ${olt_serial_number}
103 FOR ${I} IN RANGE 0 ${num_onus}
104 ${src}= Set Variable ${hosts.src[${I}]}
105 ${dst}= Set Variable ${hosts.dst[${I}]}
106 ${onu_device_id}= Get Device ID From SN ${src['onu']}
107 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
108 ... ${of_id}
109 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE
110 ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
111 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
112 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
113 #Verify that ping workss fine again
114 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 60s 2s
115 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
116 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}}
117 Run Keyword and Ignore Error Collect Logs
118 END
119
120
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800121Test Disable and Enable ONU
122 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
123 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
124 ... Perform disable on the ONUs and validate that the pings do not succeed
125 ... Perform enable on the ONUs and validate that the pings are successful
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800126 [Tags] functional DisableEnableONU released
Andy Bavierabeba262020-02-07 16:22:16 -0700127 [Setup] Run Keywords Announce Message START TEST DisableEnableONU
128 ... AND Start Logging DisableEnableONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700129 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700130 ... AND Stop Logging DisableEnableONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700131 ... AND Announce Message END TEST DisableEnableONU
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800132 FOR ${I} IN RANGE 0 ${num_onus}
133 ${src}= Set Variable ${hosts.src[${I}]}
134 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800135 ${onu_device_id}= Get Device ID From SN ${src['onu']}
136 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
137 ... ${of_id}
138 Disable Device ${onu_device_id}
Suchitra Vemuri15e15252020-01-20 17:38:49 -0800139 #Test Devices Disabled in VOLTHA Id=${onu_device_id}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700140 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
141 ... Wait Until Keyword Succeeds 60s 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700142 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
143 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800144 Enable Device ${onu_device_id}
145 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
146 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700147 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
148 ... Wait Until Keyword Succeeds 60s 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700149 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
150 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
151 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
152 Run Keyword and Ignore Error Collect Logs
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800153 END
154
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800155Test Subscriber Delete and Add
156 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
157 ... Assuming that all the ONUs are authenticated/DHCP/pingable
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700158 ... Delete a subscriber and validate that the pings do not succeed
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800159 ... Re-add the subscriber and validate that the pings are successful
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800160 [Tags] functional SubAddDelete released
Andy Bavierabeba262020-02-07 16:22:16 -0700161 [Setup] Run Keywords Announce Message START TEST SubAddDelete
162 ... AND Start Logging SubAddDelete
Andy Bavier4a8450e2020-02-04 08:58:37 -0700163 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700164 ... AND Stop Logging SubAddDelete
Andy Bavier4a8450e2020-02-04 08:58:37 -0700165 ... AND Announce Message END TEST SubAddDelete
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800166 FOR ${I} IN RANGE 0 ${num_onus}
167 ${src}= Set Variable ${hosts.src[${I}]}
168 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800169 ${onu_device_id}= Get Device ID From SN ${src['onu']}
170 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
171 ... ${of_id}
172 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
173 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
174 Sleep 10s
Andy Bavier33e6dd32020-01-16 13:35:20 -0700175 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
176 ... Wait Until Keyword Succeeds 60s 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700177 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
178 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800179 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
180 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
181 Sleep 10s
182 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
183 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700184 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
185 ... Wait Until Keyword Succeeds 60s 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700186 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
187 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
188 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
189 Run Keyword and Ignore Error Collect Logs
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800190 END
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800191
suraj gourd64356b2019-11-07 13:26:20 +0000192Check OLT/ONU Authentication After Radius Pod Restart
suraj gour7f6d5fe2019-11-29 10:56:35 +0000193 [Documentation] After radius restart, triggers reassociation, checks status and
194 ... authentication, validates dhcp and ping. Note : wpa reassociate works only when
195 ... wpa supplicant is running in background hence it is recommended to remove
196 ... teardown from previous test or uncomment 'Teardown None'.
197 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800198 [Tags] functional RadiusRestart released
Andy Bavierabeba262020-02-07 16:22:16 -0700199 [Setup] Run Keywords Announce Message START TEST RadiusRestart
200 ... AND Start Logging RadiusRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700201 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700202 ... AND Stop Logging RadiusRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700203 ... AND Announce Message END TEST RadiusRestart
suraj gourd64356b2019-11-07 13:26:20 +0000204 Wait Until Keyword Succeeds ${timeout} 15s Restart Pod ${NAMESPACE} ${RESTART_POD_NAME}
suraj gourd64356b2019-11-07 13:26:20 +0000205 FOR ${I} IN RANGE 0 ${num_onus}
206 ${src}= Set Variable ${hosts.src[${I}]}
207 ${dst}= Set Variable ${hosts.dst[${I}]}
suraj gourd64356b2019-11-07 13:26:20 +0000208 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700209 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s
210 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
211 Wait Until Keyword Succeeds ${timeout} 2s
212 ... Verify Eapol Flows Added For ONU ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
213 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
214 ... Validate Authentication After Reassociate True ${src['dp_iface_name']}
215 ... ${src['ip']} ${src['user']} ${src['pass']}
suraj gourd64356b2019-11-07 13:26:20 +0000216 ... ${src['container_type']} ${src['container_name']}
217 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${k8s_node_ip}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700218 ... ${ONOS_SSH_PORT} ${onu_port}
219 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
220 ... Validate DHCP and Ping True True ${src['dp_iface_name']}
221 ... ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
222 ... ${src['ip']} ${src['user']} ${src['pass']}
223 ... ${src['container_type']} ${src['container_name']}
224 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']}
225 ... ${dst['pass']} ${dst['container_type']} ${dst['container_name']}
suraj gourd64356b2019-11-07 13:26:20 +0000226 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
227 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700228 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
229 Run Keyword and Ignore Error Collect Logs
suraj gourd64356b2019-11-07 13:26:20 +0000230 END
231
suraj gourd5cfdbb2019-12-13 12:44:55 +0000232Check DHCP attempt fails when subscriber is not added
233 [Documentation] Validates when removed subscriber access, DHCP attempt, ping fails and
234 ... when again added subscriber access, DHCP attempt, ping succeeds
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700235 ... Assuming that test1 or sanity test was executed where all the ONUs are authenticated/DHCP/pingable
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800236 [Tags] functional SubsRemoveDHCP released
Andy Bavierabeba262020-02-07 16:22:16 -0700237 [Setup] Run Keywords Announce Message START TEST SubsRemoveDHCP
238 ... AND Start Logging SubsRemoveDHCP
Andy Bavier4a8450e2020-02-04 08:58:37 -0700239 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700240 ... AND Stop Logging SubsRemoveDHCP
Andy Bavier4a8450e2020-02-04 08:58:37 -0700241 ... AND Announce Message END TEST SubsRemoveDHCP
suraj gourd5cfdbb2019-12-13 12:44:55 +0000242 FOR ${I} IN RANGE 0 ${num_onus}
243 ${src}= Set Variable ${hosts.src[${I}]}
244 ${dst}= Set Variable ${hosts.dst[${I}]}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700245 ${onu_device_id}= Get Device ID From SN ${src['onu']}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000246 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
247 ... ${of_id}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800248 Run Keyword And Ignore Error Login And Run Command On Remote System killall dhclient ${src['ip']}
249 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
250 Run Keyword And Ignore Error Login And Run Command On Remote System ps -ef | grep dhclient ${src['ip']}
251 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000252 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
253 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700254 Sleep 5s
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800255 Run Keyword And Ignore Error Login And Run Command On Remote System ps -ef | grep dhclient ${src['ip']}
256 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700257 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds ${timeout} 2s
258 ... Delete IP Addresses from Interface on Remote Host ${src['dp_iface_name']} ${src['ip']}
259 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
260 Run Keyword And Ignore Error Login And Run Command On Remote System
261 ... ifconfig | grep -A 10 ens ${src['ip']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800262 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000263 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping False
264 ... False ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
265 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
266 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
267 ... ${dst['container_name']}
268 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
269 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
270 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
271 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
272 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
273 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
274 ... ${dst['container_name']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800275 Run Keyword and Ignore Error Collect Logs
276 END
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800277
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800278Test Disable and Enable ONU scenario for ATT workflow
279 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
280 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
281 ... Perform disable on the ONUs, call volt-remove-subscriber and validate that the pings do not succeed
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700282 ... Perform enable on the ONUs, authentication check, volt-add-subscriber-access and
283 ... validate that the pings are successful
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800284 ... VOL-2284
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800285 [Tags] functional ATT_DisableEnableONU
Andy Bavierabeba262020-02-07 16:22:16 -0700286 [Setup] Run Keywords Announce Message START TEST ATT_DisableEnableONU
287 ... AND Start Logging ATT_DisableEnableONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700288 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700289 ... AND Stop Logging ATT_DisableEnableONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700290 ... AND Announce Message END TEST ATT_DisableEnableONU
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800291 FOR ${I} IN RANGE 0 ${num_onus}
292 ${src}= Set Variable ${hosts.src[${I}]}
293 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800294 ${onu_device_id}= Get Device ID From SN ${src['onu']}
295 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
296 ... ${of_id}
297 Disable Device ${onu_device_id}
Suchitra Vemuri04245f72020-01-08 16:43:24 -0800298 Sleep 5s
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800299 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
300 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700301 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
302 ... Wait Until Keyword Succeeds 60s 2s Check Ping
303 ... False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
304 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800305 ... ELSE sleep 60s
306 Enable Device ${onu_device_id}
307 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${k8s_node_ip}
308 ... ${ONOS_SSH_PORT} ${onu_port}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700309 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
310 ... Validate Authentication After Reassociate True
311 ... ${src['dp_iface_name']} ${src['ip']} ${src['user']} ${src['pass']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800312 ... ${src['container_type']} ${src['container_name']}
313 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${k8s_node_ip}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700314 ... ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800315 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
316 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
317 Sleep 10s
318 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
Andy Bavier08ae5852019-12-19 09:12:42 -0700319 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800320 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
321 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
322 ... ${dst['container_name']}
323 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
324 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800325 Run Keyword and Ignore Error Collect Logs
suraj gourd5cfdbb2019-12-13 12:44:55 +0000326 END
suraj gourd5cfdbb2019-12-13 12:44:55 +0000327
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800328Delete OLT, ReAdd OLT and Perform Sanity Test
329 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
330 ... Disable and Delete the OLT
331 ... Create/Enable the same OLT again
332 ... Validate authentication/DHCP/E2E pings succeed for all the ONUs connected to the OLT
Suchitra Vemuri2fa9bba2020-01-22 17:38:48 -0800333 [Tags] functional DeleteOLT
Andy Bavierabeba262020-02-07 16:22:16 -0700334 [Setup] Run Keywords Announce Message START TEST DeleteOLT
335 ... AND Start Logging DeleteOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700336 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700337 ... AND Stop Logging DeleteOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700338 ... AND Announce Message END TEST DeleteOLT
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800339 Run Keyword If ${has_dataplane} Clean Up Linux
340 Run Keyword If ${has_dataplane} Delete Device and Verify
341 Run Keyword and Ignore Error Collect Logs
342 # Recreate the OLT
343 Run Keyword If ${has_dataplane} Setup
344 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800345
Hema783279b2020-01-22 15:37:37 +0530346Test disable ONUs and OLT then delete ONUs and OLT
347 [Documentation] On deployed POD, disable the ONU, disable the OLT and then delete ONU and OLT.
348 ... This TC is to confirm that ONU removal is not impacting OLT
349 ... Devices will be removed during the execution of this TC
350 ... so calling setup at the end to add the devices back to avoid the confusion.
Suchitra Vemuriba4f3712020-01-24 16:18:26 -0800351 [Tags] functional VOL-2354 DisableDeleteONUandOLT
Andy Bavierabeba262020-02-07 16:22:16 -0700352 [Setup] Run Keywords Announce Message START TEST DisableDeleteONUandOLT
353 ... AND Start Logging DisableDeleteONUandOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700354 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700355 ... AND Stop Logging DisableDeleteONUandOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700356 ... AND Announce Message END TEST DisableDeleteONUandOLT
Suchitra Vemuriba4f3712020-01-24 16:18:26 -0800357 ${olt_device_id}= Get Device ID From SN ${olt_serial_number}
Hema783279b2020-01-22 15:37:37 +0530358 FOR ${I} IN RANGE 0 ${num_onus}
359 ${src}= Set Variable ${hosts.src[${I}]}
360 ${dst}= Set Variable ${hosts.dst[${I}]}
361 ${onu_device_id}= Get Device ID From SN ${src['onu']}
362 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE
363 ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
364 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE
365 ... REACHABLE ${olt_serial_number}
366 ${rc} ${output}= Run and Return Rc and Output
367 ... ${VOLTCTL_CONFIG}; voltctl device disable ${onu_device_id}
368 Should Be Equal As Integers ${rc} 0
369 Wait Until Keyword Succeeds ${timeout} 5s Validate Device DISABLED UNKNOWN
370 ... REACHABLE ${src['onu']} onu=false
371 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE
372 ... REACHABLE ${olt_serial_number}
373 END
374 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
375 Should Be Equal As Integers ${rc} 0
376 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
377 ... ${olt_serial_number}
378 FOR ${I} IN RANGE 0 ${num_onus}
379 ${src}= Set Variable ${hosts.src[${I}]}
380 ${dst}= Set Variable ${hosts.dst[${I}]}
381 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Suchitra Vemuriba4f3712020-01-24 16:18:26 -0800382 Wait Until Keyword Succeeds ${timeout} 5s Validate Device DISABLED UNKNOWN
383 ... REACHABLE ${src['onu']} onu=false
Hema783279b2020-01-22 15:37:37 +0530384 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device delete ${onu_device_id}
385 Should Be Equal As Integers ${rc} 0
386 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN
387 ... REACHABLE ${olt_serial_number}
388 END
389 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device delete ${olt_device_id}
390 Should Be Equal As Integers ${rc} 0
391 Wait Until Keyword Succeeds ${timeout} 5s Test Empty Device List
392 #Adding setup here to add the devices back since this TC removes the devices
393 Run Keyword If ${has_dataplane} sleep 180s
394 setup
395
David Bainbridgef81cd642019-11-20 00:14:47 +0000396Sanity E2E Test for OLT/ONU on POD With Core Fail and Restart
397 [Documentation] Deploys an device instance and waits for it to authenticate. After
398 ... authentication is successful the rw-core deployment is scaled to 0 instances to
399 ... simulate a POD crash. The test then scales the rw-core back to a single instance
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700400 ... and configures ONOS for access. The test succeeds if the device is able to
David Bainbridgef81cd642019-11-20 00:14:47 +0000401 ... complete the DHCP sequence.
402 [Tags] bbsim rwcore-restart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700403 [Setup] Run Keywords Announce Message START TEST RwCoreFailAndRestart
Andy Bavierabeba262020-02-07 16:22:16 -0700404 ... AND Start Logging RwCoreFailAndRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700405 ... AND Clear All Devices Then Create New Device
406 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700407 ... AND Stop Logging RwCoreFailAndRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -0700408 ... AND Announce Message END TEST RwCoreFailAndRestart
David Bainbridgef81cd642019-11-20 00:14:47 +0000409 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${olt_serial_number}
410 Set Global Variable ${of_id}
David Bainbridgef81cd642019-11-20 00:14:47 +0000411 FOR ${I} IN RANGE 0 ${num_onus}
412 ${src}= Set Variable ${hosts.src[${I}]}
413 ${dst}= Set Variable ${hosts.dst[${I}]}
414 ${onu_device_id}= Get Device ID From SN ${src['onu']}
415 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
416 ... ${of_id}
David Bainbridgef81cd642019-11-20 00:14:47 +0000417 # Bring up the device and verify it authenticates
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700418 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE REACHABLE
David Bainbridgef81cd642019-11-20 00:14:47 +0000419 ... ${onu_device_id} onu=True onu_reason=omci-flows-pushed
420 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${k8s_node_ip}
421 ... ${ONOS_SSH_PORT} ${onu_port}
422 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
423 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
424 ... ${src['container_type']} ${src['container_name']}
425 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${k8s_node_ip}
David Bainbridge3d6d5d32019-12-17 19:05:35 +0000426 ... ${ONOS_SSH_PORT} ${onu_port}
427 END
428
429 # Scale down the rw-core deployment to 0 PODs and once confirmed, scale it back to 1
430 Scale K8s Deployment voltha voltha-rw-core 0
431 Wait Until Keyword Succeeds ${timeout} 2s Pod Does Not Exist voltha voltha-rw-core
432 # Ensure the ofagent POD goes "not-ready" as expected
433 Wait Until keyword Succeeds ${timeout} 2s
434 ... Check Expected Available Deployment Replicas voltha voltha-ofagent 0
435 # Scale up the core deployment and make sure both it and the ofagent deployment are back
436 Scale K8s Deployment voltha voltha-rw-core 1
437 Wait Until Keyword Succeeds ${timeout} 2s
438 ... Check Expected Available Deployment Replicas voltha voltha-rw-core 1
439 Wait Until Keyword Succeeds ${timeout} 2s
440 ... Check Expected Available Deployment Replicas voltha voltha-ofagent 1
441 # For some reason scaling down and up the POD behind a service causes the port forward to stop working,
442 # so restart the port forwarding for the API service
443 Restart VOLTHA Port Foward voltha-api-minimal
444 # Ensure that the ofagent pod is up and ready and the device is available in ONOS, this
445 # represents system connectivity being restored
446 Wait Until Keyword Succeeds ${timeout} 2s Device Is Available In ONOS
447 ... http://karaf:karaf@${k8s_node_ip}:${ONOS_REST_PORT} ${of_id}
448
449 FOR ${I} IN RANGE 0 ${num_onus}
450 # Add subscriber access and verify that DHCP completes to ensure system is still functioning properly
451 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
452 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
453 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
454 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
455 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
456 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
457 ... ${dst['container_name']}
458 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
459 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
460 END
461
462Sanity E2E Test for OLT/ONU on POD With OLT Adapters Fail and Restart
463 [Documentation] Deploys an device instance and waits for it to authenticate. After
464 ... authentication is successful the rw-core deployment is scaled to 0 instances to
465 ... simulate a POD crash. The test then scales the rw-core back to a single instance
466 ... and configures ONOS for access. The test succeeds if the device is able to
467 ... complete the DHCP sequence.
468 [Tags] bbsim olt-adapter-restart
Andy Bavierabeba262020-02-07 16:22:16 -0700469 [Setup] Run Keywords Announce Message START TEST OltAdapterRestart
470 ... AND Start Logging OltAdapterRestart
471 ... AND Clear All Devices Then Create New Device
472 [Teardown] Run Keywords Collect Logs
473 ... AND Stop Logging OltAdapterRestart
474 ... AND Announce Message END TEST OltAdapterRestart
David Bainbridge3d6d5d32019-12-17 19:05:35 +0000475 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${olt_serial_number}
476 Set Global Variable ${of_id}
477
478 FOR ${I} IN RANGE 0 ${num_onus}
479 ${src}= Set Variable ${hosts.src[${I}]}
480 ${dst}= Set Variable ${hosts.dst[${I}]}
481 ${onu_device_id}= Get Device ID From SN ${src['onu']}
482 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
483 ... ${of_id}
484
485 # Bring up the device and verify it authenticates
486 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE REACHABLE
487 ... ${onu_device_id} onu=True onu_reason=omci-flows-pushed
488 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${k8s_node_ip}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700489 ... ${ONOS_SSH_PORT} ${onu_port}
David Bainbridge3d6d5d32019-12-17 19:05:35 +0000490 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
491 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
492 ... ${src['container_type']} ${src['container_name']}
493 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${k8s_node_ip}
494 ... ${ONOS_SSH_PORT} ${onu_port}
495 END
496
497 # Scale down the open OLT adapter deployment to 0 PODs and once confirmed, scale it back to 1
498 Scale K8s Deployment voltha adapter-open-olt 0
499 Wait Until Keyword Succeeds ${timeout} 2s Pod Does Not Exist voltha adapter-open-olt
500 # Scale up the open OLT adapter deployment and make sure both it and the ofagent deployment are back
501 Scale K8s Deployment voltha adapter-open-olt 1
502 Wait Until Keyword Succeeds ${timeout} 2s
503 ... Check Expected Available Deployment Replicas voltha adapter-open-olt 1
504
505 # Ensure the device is available in ONOS, this represents system connectivity being restored
506 Wait Until Keyword Succeeds ${timeout} 2s Device Is Available In ONOS
507 ... http://karaf:karaf@${k8s_node_ip}:${ONOS_REST_PORT} ${of_id}
508
509 FOR ${I} IN RANGE 0 ${num_onus}
David Bainbridgef81cd642019-11-20 00:14:47 +0000510 # Add subscriber access and verify that DHCP completes to ensure system is still functioning properly
511 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command ${k8s_node_ip}
512 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
513 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
514 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
515 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
516 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
517 ... ${dst['container_name']}
518 Wait Until Keyword Succeeds ${timeout} 2s Run Keyword And Continue On Failure
519 ... Validate Subscriber DHCP Allocation ${k8s_node_ip} ${ONOS_SSH_PORT} ${onu_port}
520 END
521
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -0700522*** Keywords ***
523Setup Suite
Andy Bavier88cd9f62019-11-26 16:22:33 -0700524 [Documentation] Set up the test suite
525 Common Test Suite Setup
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -0700526
David Bainbridgef81cd642019-11-20 00:14:47 +0000527Clear All Devices Then Create New Device
528 [Documentation] Remove any devices from VOLTHA and ONOS
David Bainbridgef81cd642019-11-20 00:14:47 +0000529 # Remove all devices from voltha and nos
530 Delete All Devices and Verify
David Bainbridgef81cd642019-11-20 00:14:47 +0000531 # Execute normal test Setup Keyword
532 Setup
533