blob: ddc687eef188330d3559e9cb6dae5e585a4c5df3 [file] [log] [blame]
Joey Armstrongb87031c2022-12-17 22:03:24 -05001# Copyright 2017-2022 Open Networking Foundation (ONF) and the ONF Contributors
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 Vemuri1d8e8172020-06-17 17:43:56 -070034Resource ../../libraries/power_switch.robot
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070035
36*** Variables ***
Zack Williamsec53a1b2019-09-16 15:50:52 -070037${POD_NAME} flex-ocp-cord
38${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
39${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
40#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
41${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
42${HELM_CHARTS_DIR} ~/helm-charts
43${VOLTHA_POD_NUM} 8
Zack Williamsa8fe75a2020-01-10 14:25:27 -070044${NAMESPACE} voltha
Hardik Windlass4288c6a2021-09-28 07:22:06 +000045${INFRA_NAMESPACE} default
suraj gourd64356b2019-11-07 13:26:20 +000046# For below variable value, using deployment name as using grep for
47# parsing radius pod name, we can also use full radius pod name
Zack Williamsa8fe75a2020-01-10 14:25:27 -070048${RESTART_POD_NAME} radius
Andy Bavierba9866b2019-10-11 07:11:53 -070049${timeout} 60s
Zack Williamsec53a1b2019-09-16 15:50:52 -070050${of_id} 0
51${logical_id} 0
Andrea Campanella86e24062020-08-05 19:09:18 +020052${uprate} 0
53${dnrate} 0
Andy Bavierba9866b2019-10-11 07:11:53 -070054${has_dataplane} True
Andy Bavierba9866b2019-10-11 07:11:53 -070055${teardown_device} False
Zack Williamsa8fe75a2020-01-10 14:25:27 -070056${scripts} ../../scripts
Hardik Windlassc4d1fd62022-04-12 13:12:28 +000057# flag to reboot OLT through Power Switch
58${power_cycle_olt} False
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070059
Gayathri.Selvan92d16862020-03-19 14:47:58 +000060# For dataplane bandwidth testing
61${upper_margin_pct} 105 # Allow 5% over the limit
Suchitra Vemuria6879aa2020-11-03 11:03:11 -080062${lower_margin_pct} 90 # Allow 8% under the limit
Gayathri.Selvan92d16862020-03-19 14:47:58 +000063${udp_rate_multiplier} 1.10 # Send UDP at bw profile limit * rate_multiplier
Andy Bavierc80a2742020-08-28 10:59:05 -070064${udp_packet_bytes} 1470 # UDP payload in bytes
Gayathri.Selvan92d16862020-03-19 14:47:58 +000065
Andy Bavierabeba262020-02-07 16:22:16 -070066# Per-test logging on failure is turned off by default; set this variable to enable
67${container_log_dir} ${None}
68
Matteo Scandoloda1c64b2021-07-20 10:14:49 -070069# logging flag to enable Collect Logs, can be passed via the command line too
70# example: -v logging:False
71${logging} True
72
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070073*** Test Cases ***
Hardik Windlassc4d1fd62022-04-12 13:12:28 +000074Reboot ONUs and OLTs Physically
75 [Documentation] This test reboots ONUs and OLTs physically before execution all the tests
Suchitra Vemuri1d8e8172020-06-17 17:43:56 -070076 ... Test case runs only on the PODs that are configured with PowerSwitch that
77 ... controls the power off/on ONUs/OLT remotely (simulating a physical reboot)
Hardik Windlassc4d1fd62022-04-12 13:12:28 +000078 [Tags] functional PowerSwitch RebootAllONUsOLTs
79 [Setup] Start Logging RebootAllONUsOLTs
Suchitra Vemuri1d8e8172020-06-17 17:43:56 -070080 [Teardown] Run Keywords Collect Logs
Hardik Windlassc4d1fd62022-04-12 13:12:28 +000081 ... AND Stop Logging RebootAllONUsOLTs
82 Perform Reboot ONUs and OLTs Physically ${power_cycle_olt}
Suchitra Vemuri1d8e8172020-06-17 17:43:56 -070083
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070084Sanity E2E Test for OLT/ONU on POD
85 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
86 ... Validate successful authentication/DHCP/E2E ping for the tech profile that is used
Andy Bavierba9866b2019-10-11 07:11:53 -070087 [Tags] sanity test1
Andy Baviere187eda2020-04-20 15:00:02 -070088 [Setup] Run Keywords Start Logging SanityTest
Andy Bavier4a8450e2020-02-04 08:58:37 -070089 ... AND Setup
90 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -070091 ... AND Stop Logging SanityTest
Suchitra Vemuric5295a32019-12-15 20:32:04 -080092 Run Keyword If ${has_dataplane} Clean Up Linux
Hardik Windlass58b23a32022-05-10 11:06:48 +053093 Perform Sanity Test
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -070094
Suchitra Vemuri6db89412019-11-14 14:52:54 -080095Test Disable and Enable ONU
96 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
97 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
98 ... Perform disable on the ONUs and validate that the pings do not succeed
99 ... Perform enable on the ONUs and validate that the pings are successful
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000100 [Tags] functional DisableEnableONU released multi-uni
Girish Gowdra8fd96962021-12-14 16:20:04 +0530101 [Setup] Run Keywords Start Logging DisableEnableONU
102 ... AND Run Keyword If ${has_dataplane} Set Non-Critical Tag for XGSPON Tech
Andy Bavier4a8450e2020-02-04 08:58:37 -0700103 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700104 ... AND Stop Logging DisableEnableONU
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800105 FOR ${I} IN RANGE 0 ${num_all_onus}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800106 ${src}= Set Variable ${hosts.src[${I}]}
107 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800108 ${of_id}= Get ofID From OLT List ${src['olt']}
TorstenThiemedda37652021-11-11 16:22:05 +0000109 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800110 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000111 ... ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530112 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800113 Disable Device ${onu_device_id}
Andy Bavier46c8be32020-01-21 10:06:27 -0700114 Wait Until Keyword Succeeds 20s 2s Test Devices Disabled in VOLTHA Id=${onu_device_id}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700115 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
Hardik Windlass58b23a32022-05-10 11:06:48 +0530116 ... Wait Until Keyword Succeeds ${timeout} 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700117 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
118 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800119 Enable Device ${onu_device_id}
Girish Gowdrafc0bdf22021-12-06 16:57:50 +0530120 Wait Until Keyword Succeeds ${timeout} 5s
121 ... Validate Device ENABLED ACTIVE
122 ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
123 # Workaround for issue seen in VOL-4489. Keep this workaround until VOL-4489 is fixed.
124 Run Keyword If ${has_dataplane} Reboot XGSPON ONU ${src['olt']} ${src['onu']} omci-flows-pushed
125 # Workaround ends here for issue seen in VOL-4489.
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800126 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800127 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Hardik Windlass21807632020-04-14 16:24:55 +0530128 # Verify subscriber access flows are added for the ONU port
Hardik Windlass58b23a32022-05-10 11:06:48 +0530129 Wait Until Keyword Succeeds ${timeout} 5s
Hardik Windlass21807632020-04-14 16:24:55 +0530130 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
131 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700132 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
Hardik Windlass58b23a32022-05-10 11:06:48 +0530133 ... Wait Until Keyword Succeeds ${timeout} 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700134 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
135 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri6db89412019-11-14 14:52:54 -0800136 END
137
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800138Test Subscriber Delete and Add
139 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
140 ... Assuming that all the ONUs are authenticated/DHCP/pingable
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700141 ... Delete a subscriber and validate that the pings do not succeed
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800142 ... Re-add the subscriber and validate that the pings are successful
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000143 [Tags] functional SubAddDelete released multi-uni
Girish Gowdrafbdddc12021-12-17 15:39:55 +0530144 [Setup] Run Keywords Start Logging SubAddDelete
145 ... AND Run Keyword If ${has_dataplane} Set Non-Critical Tag for XGSPON Tech
Andy Bavier4a8450e2020-02-04 08:58:37 -0700146 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700147 ... AND Stop Logging SubAddDelete
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800148 FOR ${I} IN RANGE 0 ${num_all_onus}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800149 ${src}= Set Variable ${hosts.src[${I}]}
150 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800151 ${of_id}= Get ofID From OLT List ${src['olt']}
TorstenThiemedda37652021-11-11 16:22:05 +0000152 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800153 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000154 ... ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530155 ${onu_device_id}= Get Device ID From SN ${src['onu']}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000156 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800157 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530158 Wait Until Keyword Succeeds ${timeout} 2s
Suchitra Vemuri9da44302020-03-04 14:24:49 -0800159 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700160 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
Hardik Windlass58b23a32022-05-10 11:06:48 +0530161 ... Wait Until Keyword Succeeds ${timeout} 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700162 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
163 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000164 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800165 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800166 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
Suchitra Vemuri9da44302020-03-04 14:24:49 -0800167 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
168 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800169 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Hardik Windlass21807632020-04-14 16:24:55 +0530170 # Verify subscriber access flows are added for the ONU port
Hardik Windlass58b23a32022-05-10 11:06:48 +0530171 Wait Until Keyword Succeeds ${timeout} 5s
Hardik Windlass21807632020-04-14 16:24:55 +0530172 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
173 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
Andy Bavier33e6dd32020-01-16 13:35:20 -0700174 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
Hardik Windlass58b23a32022-05-10 11:06:48 +0530175 ... Wait Until Keyword Succeeds ${timeout} 2s
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700176 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
177 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800178 END
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800179
suraj gourd5cfdbb2019-12-13 12:44:55 +0000180Check DHCP attempt fails when subscriber is not added
181 [Documentation] Validates when removed subscriber access, DHCP attempt, ping fails and
182 ... when again added subscriber access, DHCP attempt, ping succeeds
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700183 ... Assuming that test1 or sanity test was executed where all the ONUs are authenticated/DHCP/pingable
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000184 [Tags] functional SubsRemoveDHCP released multi-uni
Andy Baviere187eda2020-04-20 15:00:02 -0700185 [Setup] Start Logging SubsRemoveDHCP
Andy Bavier4a8450e2020-02-04 08:58:37 -0700186 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700187 ... AND Stop Logging SubsRemoveDHCP
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800188 FOR ${I} IN RANGE 0 ${num_all_onus}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000189 ${src}= Set Variable ${hosts.src[${I}]}
190 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800191 ${of_id}= Get ofID From OLT List ${src['olt']}
TorstenThiemedda37652021-11-11 16:22:05 +0000192 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000193 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000194 ... ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530195 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800196 Run Keyword And Ignore Error Login And Run Command On Remote System killall dhclient ${src['ip']}
197 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
198 Run Keyword And Ignore Error Login And Run Command On Remote System ps -ef | grep dhclient ${src['ip']}
199 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000200 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000201 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Suchitra Vemuri8f1d3062020-02-28 11:57:37 -0800202 Sleep 15s
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800203 Run Keyword And Ignore Error Login And Run Command On Remote System ps -ef | grep dhclient ${src['ip']}
204 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700205 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds ${timeout} 2s
206 ... Delete IP Addresses from Interface on Remote Host ${src['dp_iface_name']} ${src['ip']}
207 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
208 Run Keyword And Ignore Error Login And Run Command On Remote System
209 ... ifconfig | grep -A 10 ens ${src['ip']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800210 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000211 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping False
212 ... False ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
213 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
214 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
215 ... ${dst['container_name']}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000216 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000217 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
Suchitra Vemuri9da44302020-03-04 14:24:49 -0800218 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
219 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
Hardik Windlass21807632020-04-14 16:24:55 +0530220 # Verify subscriber access flows are added for the ONU port
Hardik Windlass58b23a32022-05-10 11:06:48 +0530221 Wait Until Keyword Succeeds ${timeout} 5s
Hardik Windlass21807632020-04-14 16:24:55 +0530222 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
223 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000224 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
225 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
226 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
227 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
228 ... ${dst['container_name']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800229 END
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800230
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800231Test Disable and Enable ONU scenario for ATT workflow
232 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
233 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
234 ... Perform disable on the ONUs, call volt-remove-subscriber and validate that the pings do not succeed
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700235 ... Perform enable on the ONUs, authentication check, volt-add-subscriber-access and
236 ... validate that the pings are successful
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800237 ... VOL-2284
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000238 [Tags] functional ATT_DisableEnableONU released multi-uni
Girish Gowdra8fd96962021-12-14 16:20:04 +0530239 [Setup] Run Keywords Start Logging ATT_DisableEnableONU
240 ... AND Run Keyword If ${has_dataplane} Set Non-Critical Tag for XGSPON Tech
Andy Bavier4a8450e2020-02-04 08:58:37 -0700241 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700242 ... AND Stop Logging ATT_DisableEnableONU
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800243 FOR ${I} IN RANGE 0 ${num_all_onus}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800244 ${src}= Set Variable ${hosts.src[${I}]}
245 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800246 ${of_id}= Get ofID From OLT List ${src['olt']}
TorstenThiemedda37652021-11-11 16:22:05 +0000247 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800248 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000249 ... ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530250 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530251 Wait Until Keyword Succeeds 120s 2s
Hardik Windlass39015672021-07-05 05:48:08 +0000252 ... Verify UNI Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${src['onu']} ${src['uni_id']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800253 Disable Device ${onu_device_id}
Hardik Windlass5e214b22021-02-26 10:37:14 +0000254 Wait Until Keyword Succeeds ${timeout} 2s Test Devices Disabled in VOLTHA Id=${onu_device_id}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000255 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800256 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700257 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
Hardik Windlass58b23a32022-05-10 11:06:48 +0530258 ... Wait Until Keyword Succeeds ${timeout} 2s Check Ping
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700259 ... False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
260 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Hardik Windlass5e214b22021-02-26 10:37:14 +0000261 ... ELSE Sleep 10s
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800262 Enable Device ${onu_device_id}
ubuntu6b6e7d42020-03-02 12:35:42 -0800263 Wait Until Keyword Succeeds ${timeout} 2s Verify Eapol Flows Added For ONU ${ONOS_SSH_IP}
Matteo Scandolo7e519fb2021-08-13 11:35:16 -0700264 ... ${ONOS_SSH_PORT} ${of_id} ${onu_port}
Girish Gowdrafc0bdf22021-12-06 16:57:50 +0530265 # Workaround for issue seen in VOL-4489. Keep this workaround until VOL-4489 is fixed.
266 Run Keyword If ${has_dataplane} Reboot XGSPON ONU ${src['olt']} ${src['onu']} omci-flows-pushed
267 # Workaround ends here for issue seen in VOL-4489.
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700268 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
269 ... Validate Authentication After Reassociate True
270 ... ${src['dp_iface_name']} ${src['ip']} ${src['user']} ${src['pass']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800271 ... ${src['container_type']} ${src['container_name']}
ubuntu6b6e7d42020-03-02 12:35:42 -0800272 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU in AAA-Users ${ONOS_SSH_IP}
Zack Williamsa8fe75a2020-01-10 14:25:27 -0700273 ... ${ONOS_SSH_PORT} ${onu_port}
TorstenThieme4e2168e2021-06-22 14:01:47 +0000274 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800275 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
Hardik Windlass21807632020-04-14 16:24:55 +0530276 # Verify subscriber access flows are added for the ONU port
Hardik Windlass58b23a32022-05-10 11:06:48 +0530277 Wait Until Keyword Succeeds ${timeout} 5s
Hardik Windlass21807632020-04-14 16:24:55 +0530278 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
279 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800280 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
Andy Bavier08ae5852019-12-19 09:12:42 -0700281 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
Suchitra Vemuri5994cd12019-12-17 22:20:55 -0800282 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
283 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
284 ... ${dst['container_name']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530285 Wait Until Keyword Succeeds ${timeout} 2s
ubuntu6b6e7d42020-03-02 12:35:42 -0800286 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
suraj gourd5cfdbb2019-12-13 12:44:55 +0000287 END
suraj gourd5cfdbb2019-12-13 12:44:55 +0000288
Hardik Windlass2b37e712020-06-12 02:13:17 +0530289Test Disable and Enable OLT
290 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
291 ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
292 ... Perform disable on the OLT and validate that the pings do not succeed
293 ... Perform enable on the OLT and validate that the pings are successful
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000294 [Tags] functional VOL-2410 DisableEnableOLT multi-uni
Hardik Windlass2b37e712020-06-12 02:13:17 +0530295 [Setup] Start Logging DisableEnableOLT
296 [Teardown] Run Keywords Collect Logs
297 ... AND Stop Logging DisableEnableOLT
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800298 #Disable the OLTs and verify the OLT/ONUs are disabled properly
299 FOR ${I} IN RANGE 0 ${olt_count}
300 ${olt_serial_number}= Get From Dictionary ${olt_ids}[${I}] sn
301 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
302 ${rc} ${output}= Run and Return Rc and Output
Matteo Scandolo5899be12020-11-11 15:38:07 -0800303 ... voltctl -c ${VOLTCTL_CONFIG} device disable ${olt_device_id}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800304 Should Be Equal As Integers ${rc} 0
305 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
306 ... ${olt_serial_number}
307 END
308 # Validate the ONUs
309 FOR ${I} IN RANGE 0 ${num_all_onus}
Hardik Windlass2b37e712020-06-12 02:13:17 +0530310 ${src}= Set Variable ${hosts.src[${I}]}
311 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800312 ${of_id}= Get ofID From OLT List ${src['olt']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530313 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000314 ... Get ONU Port in ONOS ${src['onu']} ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530315 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlass2b37e712020-06-12 02:13:17 +0530316 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED DISCOVERED
317 ... UNREACHABLE ${src['onu']} onu=false
318 #Verify that ping fails
319 Run Keyword If ${has_dataplane}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530320 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
Hardik Windlass2b37e712020-06-12 02:13:17 +0530321 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
322 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
323 # Remove Subscriber Access (To replicate ATT workflow)
TorstenThieme4e2168e2021-06-22 14:01:47 +0000324 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
Hardik Windlass2b37e712020-06-12 02:13:17 +0530325 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
Hardik Windlass2b37e712020-06-12 02:13:17 +0530326 END
327 #Enable the OLT back and check ONU, OLT status are back to "ACTIVE"
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800328 FOR ${I} IN RANGE 0 ${olt_count}
329 ${olt_serial_number}= Get From Dictionary ${olt_ids}[${I}] sn
330 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
331 Enable Device ${olt_device_id}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800332 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE
333 ... ${olt_serial_number}
334 #TODO: Update for PON_OLT ETHERNET_NNI
335 #Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Port Types
336 #... PON_OLT ETHERNET_NNI
337 END
Hardik Windlass2b37e712020-06-12 02:13:17 +0530338 Run Keyword If ${has_dataplane} Clean Up Linux
Hardik Windlass58b23a32022-05-10 11:06:48 +0530339 Perform Sanity Test
Hardik Windlass2b37e712020-06-12 02:13:17 +0530340
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800341Delete OLT, ReAdd OLT and Perform Sanity Test
342 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
343 ... Disable and Delete the OLT
344 ... Create/Enable the same OLT again
345 ... Validate authentication/DHCP/E2E pings succeed for all the ONUs connected to the OLT
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800346 [Tags] functional DeleteOLT released notready
Andy Baviere187eda2020-04-20 15:00:02 -0700347 [Setup] Start Logging DeleteOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700348 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700349 ... AND Stop Logging DeleteOLT
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800350 #TODO: Update test with new framework changes
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800351 Run Keyword If ${has_dataplane} Clean Up Linux
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800352 FOR ${I} IN RANGE 0 ${olt_count}
353 ${olt_serial_number}= Get From Dictionary ${olt_ids}[${I}] sn
354 ${of_id}= Get ofID From OLT List ${olt_serial_number}
355 Delete Device and Verify ${olt_serial_number}
356 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
357 ... Verify Device Flows Removed ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
358 END
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800359 Run Keyword If ${has_dataplane} Clean Up Linux
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800360 # Recreate the OLT
Hardik Windlass480f3e22020-04-02 20:14:14 +0530361 Setup
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800362 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Suchitra Vemuri937cd392020-01-12 17:10:42 -0800363
Hema567f3012020-03-25 00:51:53 +0530364Check Mib State on OLT recreation after ONU, OLT deletion
365 [Documentation] Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable,
366 ... Disable and Delete the ONU, Disable and Delete the OLT
367 ... Create/Enable the OLT again and Check for the Mib State of the ONUs
368 [Tags] functional CheckMibState notready
Andy Baviere187eda2020-04-20 15:00:02 -0700369 [Setup] Start Logging CheckMibState
Hema567f3012020-03-25 00:51:53 +0530370 [Teardown] Run Keywords Collect Logs
371 ... AND Stop Logging CheckMibState
Hema567f3012020-03-25 00:51:53 +0530372 #Disable and Delete the ONU
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800373 FOR ${I} IN RANGE 0 ${num_all_onus}
Hema567f3012020-03-25 00:51:53 +0530374 ${src}= Set Variable ${hosts.src[${I}]}
375 ${dst}= Set Variable ${hosts.dst[${I}]}
Hema567f3012020-03-25 00:51:53 +0530376 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000377 ... ${of_id} ${src['uni_id']}
Hema567f3012020-03-25 00:51:53 +0530378 Disable Device ${onu_device_id}
379 Wait Until Keyword Succeeds 20s 2s Test Devices Disabled in VOLTHA Id=${onu_device_id}
380 Delete Device ${onu_device_id}
381 END
382 #Disable and Delete the OLT
Hardik Windlass480f3e22020-04-02 20:14:14 +0530383 Delete Device and Verify
384 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
385 ... Verify Device Flows Removed ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
386 # Recreate the OLT
Hema567f3012020-03-25 00:51:53 +0530387 Run Keyword If ${has_dataplane} Sleep 180s
Andrea Campanella3dcce272021-01-15 16:04:47 +0100388 # This dneeds to be done in for loop, test is not ready
389 ${olt_device_id}= Run Keyword If "${list_olts}[${I}][type]" == "${None}"
Suchitra Vemuri09f878d2021-02-10 18:19:04 -0800390 ... Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport]
391 ... ELSE Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport] ${list_olts}[${I}][type]
Hema567f3012020-03-25 00:51:53 +0530392 Set Suite Variable ${olt_device_id}
393 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device PREPROVISIONED
Hardik Windlass8b446492021-06-10 06:25:23 +0000394 ... UNKNOWN UNKNOWN ${olt_device_id} by_dev_id=True
Hema567f3012020-03-25 00:51:53 +0530395 Enable Device ${olt_device_id}
396 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE
397 ... ${olt_serial_number}
398 #Check for the ONU status and ONU Mib State should be "omci-flows-pushed"
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800399 FOR ${I} IN RANGE 0 ${num_all_onus}
Hema567f3012020-03-25 00:51:53 +0530400 ${src}= Set Variable ${hosts.src[${I}]}
401 ${dst}= Set Variable ${hosts.dst[${I}]}
402 ${onu_device_id}= Get Device ID From SN ${src['onu']}
403 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000404 ... ${of_id} ${src['uni_id']}
Suchitra Vemuricdc32d82020-07-17 12:24:46 -0700405 Wait Until Keyword Succeeds 180s 5s Validate Device ENABLED ACTIVE
Hema567f3012020-03-25 00:51:53 +0530406 ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
407 END
408
Hema783279b2020-01-22 15:37:37 +0530409Test disable ONUs and OLT then delete ONUs and OLT
410 [Documentation] On deployed POD, disable the ONU, disable the OLT and then delete ONU and OLT.
411 ... This TC is to confirm that ONU removal is not impacting OLT
412 ... Devices will be removed during the execution of this TC
413 ... so calling setup at the end to add the devices back to avoid the confusion.
Suchitra Vemuria7dae322020-02-19 22:38:18 -0800414 [Tags] functional VOL-2354 DisableDeleteONUandOLT released
Andy Baviere187eda2020-04-20 15:00:02 -0700415 [Setup] Start Logging DisableDeleteONUandOLT
Andy Bavier4a8450e2020-02-04 08:58:37 -0700416 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700417 ... AND Stop Logging DisableDeleteONUandOLT
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800418 #${olt_device_id}= Get Device ID From SN ${olt_serial_number}
Suchitra Vemuri02170552021-03-23 16:40:50 -0700419 @{onu_reason}= Create List tech-profile-config-downloaded-success omci-flows-pushed
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800420 FOR ${I} IN RANGE 0 ${num_all_onus}
Hema783279b2020-01-22 15:37:37 +0530421 ${src}= Set Variable ${hosts.src[${I}]}
422 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800423 ${of_id}= Get ofID From OLT List ${src['olt']}
Hema783279b2020-01-22 15:37:37 +0530424 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530425 Wait Until Keyword Succeeds 360s 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800426 ... Validate Device ENABLED ACTIVE
Suchitra Vemuri02170552021-03-23 16:40:50 -0700427 ... REACHABLE ${src['onu']} onu=True onu_reason=${onu_reason}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530428 Wait Until Keyword Succeeds ${timeout} 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800429 ... Validate OLT Device ENABLED ACTIVE
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800430 ... REACHABLE ${src['olt']}
Hema783279b2020-01-22 15:37:37 +0530431 ${rc} ${output}= Run and Return Rc and Output
Matteo Scandolo5899be12020-11-11 15:38:07 -0800432 ... voltctl -c ${VOLTCTL_CONFIG} device disable ${onu_device_id}
Hema783279b2020-01-22 15:37:37 +0530433 Should Be Equal As Integers ${rc} 0
Hardik Windlass58b23a32022-05-10 11:06:48 +0530434 Wait Until Keyword Succeeds ${timeout} 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800435 ... Validate Device DISABLED UNKNOWN
Hema783279b2020-01-22 15:37:37 +0530436 ... REACHABLE ${src['onu']} onu=false
Hardik Windlass58b23a32022-05-10 11:06:48 +0530437 Wait Until Keyword Succeeds 360s 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800438 ... Validate OLT Device ENABLED ACTIVE
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800439 ... REACHABLE ${src['olt']}
Hema783279b2020-01-22 15:37:37 +0530440 END
Matteo Scandolo5899be12020-11-11 15:38:07 -0800441
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800442 # Disable all OLTs
443 FOR ${I} IN RANGE 0 ${olt_count}
444 ${olt_serial_number}= Get From Dictionary ${olt_ids}[${I}] sn
445 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
446 ${rc} ${output}= Run and Return Rc and Output
Matteo Scandolo5899be12020-11-11 15:38:07 -0800447 ... voltctl -c ${VOLTCTL_CONFIG} device disable ${olt_device_id}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800448 Should Be Equal As Integers ${rc} 0
449 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
450 ... ${olt_serial_number}
451 END
452 # Validate ONUs after OLT disable
453 FOR ${I} IN RANGE 0 ${num_all_onus}
Hema783279b2020-01-22 15:37:37 +0530454 ${src}= Set Variable ${hosts.src[${I}]}
455 ${dst}= Set Variable ${hosts.dst[${I}]}
456 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530457 Wait Until Keyword Succeeds ${timeout} 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800458 ... Validate Device DISABLED DISCOVERED
459 ... UNREACHABLE ${src['onu']} onu=false
Hardik Windlass7da42ca2020-03-13 14:25:44 +0530460 Delete Device ${onu_device_id}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530461 Wait Until Keyword Succeeds ${timeout} 5s
Suchitra Vemuri014b6032020-02-14 18:13:13 -0800462 ... Validate OLT Device DISABLED UNKNOWN
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800463 ... REACHABLE ${src['olt']}
Hema783279b2020-01-22 15:37:37 +0530464 END
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800465 # Delete all OLTs
466 Delete All Devices and Verify
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000467 # Re-create the Devices and Perform Sanity
468 Setup
469 Run Keyword If ${has_dataplane} Clean Up Linux
Hardik Windlass58b23a32022-05-10 11:06:48 +0530470 Perform Sanity Test
David Bainbridgef81cd642019-11-20 00:14:47 +0000471
Suchitra Vemuri9a6dd6d2020-02-28 17:46:26 -0800472Validate authentication on a disabled ONU
suraj gour472da1c2020-02-25 05:44:51 +0000473 [Documentation] Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
474 ... Perform disable on the ONUs and validate that the authentication do not succeed
475 ... Perform enable on the ONUs and validate that authentication successful
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000476 [Tags] functional DisableONU_AuthCheck multi-uni
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800477 # Creates Devices in the Setup
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000478 [Setup] Start Logging DisableONU_AuthCheck
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800479 [Teardown] Run Keywords Collect Logs
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800480 ... AND Delete All Devices and Verify
Girish Gowdraf244d5b2021-09-01 17:16:16 -0700481 ... AND Run Keyword If ${logging} Collect Logs
482 ... AND Stop Logging DisableONU_AuthCheck
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800483 Clean WPA Process
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800484 FOR ${I} IN RANGE 0 ${num_all_onus}
suraj gour472da1c2020-02-25 05:44:51 +0000485 ${src}= Set Variable ${hosts.src[${I}]}
486 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800487 ${of_id}= Get ofID From OLT List ${src['olt']}
suraj gour472da1c2020-02-25 05:44:51 +0000488 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000489 ... ${of_id} ${src['uni_id']}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530490 ${onu_device_id}= Get Device ID From SN ${src['onu']}
suraj gour472da1c2020-02-25 05:44:51 +0000491 Disable Device ${onu_device_id}
492 Wait Until Keyword Succeeds ${timeout} 5s Validate Device DISABLED UNKNOWN
493 ... REACHABLE ${src['onu']} onu=false
Andy Bavier84834d42020-02-25 13:49:50 -0700494 ${wpa_log}= Run Keyword If ${has_dataplane} Catenate SEPARATOR=.
495 ... /tmp/wpa ${src['dp_iface_name']} log
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800496 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication False
497 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
Andy Bavier84834d42020-02-25 13:49:50 -0700498 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800499 Enable Device ${onu_device_id}
500 Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src['ip']}
501 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530502 Wait Until Keyword Succeeds ${timeout} 5s Validate Device
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800503 ... ENABLED ACTIVE REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
504 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate Authentication True
505 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
Andy Bavier84834d42020-02-25 13:49:50 -0700506 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
suraj gour472da1c2020-02-25 05:44:51 +0000507 Run Keyword and Ignore Error Get Device Output from Voltha ${onu_device_id}
508 END
suraj gour472da1c2020-02-25 05:44:51 +0000509
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000510Data plane verification using TCP
511 [Documentation] Test bandwidth profile is met and not exceeded for each subscriber.
512 ... Assumes iperf3 and jq installed on client and iperf -s running on DHCP server
Matteo Scandoloab48f9e2021-06-11 17:08:00 +0200513 [Tags] non-critical dataplane BandwidthProfileTCP VOL-2052
Andy Bavierdfbcaef2020-05-27 15:34:18 -0700514 [Setup] Start Logging BandwidthProfileTCP
515 [Teardown] Run Keywords Collect Logs
516 ... AND Stop Logging BandwidthProfileTCP
Andy Baviereff938d2020-06-29 18:27:49 -0700517 Pass Execution If '${has_dataplane}'=='False'
518 ... Bandwidth profile validation can be done only in physical pod. Skipping this test in BBSIM.
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800519 Delete All Devices And Verify
520 Run Keyword If ${has_dataplane} Clean Up Linux
521 setup
Hardik Windlass58b23a32022-05-10 11:06:48 +0530522 Perform Sanity Test
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800523
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800524 FOR ${I} IN RANGE 0 ${num_all_onus}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000525 ${src}= Set Variable ${hosts.src[${I}]}
526 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800527 ${of_id}= Get ofID From OLT List ${src['olt']}
Andy Bavierf6ab19c2020-05-14 10:34:47 -0700528
529 # Check for iperf3 and jq tools
530 ${stdout} ${stderr} ${rc}= Execute Remote Command which iperf3 jq
531 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
532 Pass Execution If ${rc} != 0 Skipping test: iperf3 / jq not found on the RG
533
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000534 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000535 ... ${of_id} ${src['uni_id']}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000536 ${subscriber_id}= Set Variable ${of_id}/${onu_port}
537 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
538 ... upstreamBandwidthProfile
Girish Gowdrad769b412021-05-16 11:09:46 -0700539 ${limiting_bw_value_upstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000540 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
541 ... downstreamBandwidthProfile
Girish Gowdrad769b412021-05-16 11:09:46 -0700542 ${limiting_bw_value_dnstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000543
544 # Stream TCP packets from RG to server
545 ${updict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
546 ... args=-t 30
547 ${actual_upstream_bw_used}= Evaluate ${updict['end']['sum_received']['bits_per_second']}/1000
548
549 # Stream TCP packets from server to RG
550 ${dndict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
551 ... args=-R -t 30
552 ${actual_dnstream_bw_used}= Evaluate ${dndict['end']['sum_received']['bits_per_second']}/1000
553
554 ${pct_limit_up}= Evaluate 100*${actual_upstream_bw_used}/${limiting_bw_value_upstream}
555 ${pct_limit_dn}= Evaluate 100*${actual_dnstream_bw_used}/${limiting_bw_value_dnstream}
556 Log Up: bwprof ${limiting_bw_value_upstream}Kbps, got ${actual_upstream_bw_used}Kbps (${pct_limit_up}%)
557 Log Down: bwprof ${limiting_bw_value_dnstream}Kbps, got ${actual_dnstream_bw_used}Kbps (${pct_limit_dn}%)
558
559 Should Be True ${pct_limit_up} <= ${upper_margin_pct}
560 ... The upstream bandwidth exceeded the limit (${pct_limit_up}% of limit)
Andy Baviereff938d2020-06-29 18:27:49 -0700561 # VOL-3125: downstream bw limit not enforced. Uncomment when fixed.
562 #Should Be True ${pct_limit_dn} <= ${upper_margin_pct}
563 #... The downstream bandwidth exceeded the limit (${pct_limit_dn}% of limit)
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000564 Should Be True ${pct_limit_up} >= ${lower_margin_pct}
565 ... The upstream bandwidth guarantee was not met (${pct_limit_up}% of resv)
566 Should Be True ${pct_limit_dn} >= ${lower_margin_pct}
567 ... The downstream bandwidth guarantee was not met (${pct_limit_dn}% of resv)
568 END
569
570Data plane verification using UDP
571 [Documentation] Test bandwidth profile is met and not exceeded for each subscriber.
572 ... Assumes iperf3 and jq installed on client and iperf -s running on DHCP server
Matteo Scandoloab48f9e2021-06-11 17:08:00 +0200573 [Tags] non-critical dataplane BandwidthProfileUDP VOL-2052
Andy Bavierdfbcaef2020-05-27 15:34:18 -0700574 [Setup] Start Logging BandwidthProfileUDP
575 [Teardown] Run Keywords Collect Logs
576 ... AND Stop Logging BandwidthProfileUDP
Andy Baviereff938d2020-06-29 18:27:49 -0700577 Pass Execution If '${has_dataplane}'=='False'
578 ... Bandwidth profile validation can be done only in physical pod. Skipping this test in BBSIM.
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800579 FOR ${I} IN RANGE 0 ${num_all_onus}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000580 ${src}= Set Variable ${hosts.src[${I}]}
581 ${dst}= Set Variable ${hosts.dst[${I}]}
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800582 ${of_id}= Get ofID From OLT List ${src['olt']}
Andy Bavierd59f9772020-07-01 12:00:42 -0700583
584 # Check for iperf3 and jq tools
585 ${stdout} ${stderr} ${rc}= Execute Remote Command which iperf3 jq
586 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
587 Pass Execution If ${rc} != 0 Skipping test: iperf3 / jq not found on the RG
588
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000589 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000590 ... ${of_id} ${src['uni_id']}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000591 ${subscriber_id}= Set Variable ${of_id}/${onu_port}
592 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
593 ... upstreamBandwidthProfile
Girish Gowdrad769b412021-05-16 11:09:46 -0700594 ${limiting_bw_value_upstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000595 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
596 ... downstreamBandwidthProfile
Girish Gowdrad769b412021-05-16 11:09:46 -0700597 ${limiting_bw_value_dnstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000598
599 # Stream UDP packets from RG to server
Andrea Campanella1d34bfc2020-08-06 09:58:49 +0200600 ${uprate}= Run Keyword If ${limiting_bw_value_upstream} != 1000000
601 ... Evaluate ${limiting_bw_value_upstream}*${udp_rate_multiplier}
Andrea Campanella29341a32020-08-03 22:06:26 +0200602 ... ELSE
Andrea Campanella1d34bfc2020-08-06 09:58:49 +0200603 ... Set Variable ${limiting_bw_value_upstream}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000604 ${updict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
Andy Bavier7dc50622020-05-28 14:34:12 -0700605 ... args=-u -b ${uprate}K -t 30 -l ${udp_packet_bytes} --pacing-timer 0
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000606 # With UDP test, bits per second is the sending rate. Multiply by the loss rate to get the throughput.
607 ${actual_upstream_bw_used}= Evaluate
608 ... (100 - ${updict['end']['sum']['lost_percent']})*${updict['end']['sum']['bits_per_second']}/100000
609
610 # Stream UDP packets from server to RG
Andrea Campanella1d34bfc2020-08-06 09:58:49 +0200611 ${dnrate}= Run Keyword If ${limiting_bw_value_dnstream} != 1000000
612 ... Evaluate ${limiting_bw_value_dnstream}*${udp_rate_multiplier}
Andrea Campanella29341a32020-08-03 22:06:26 +0200613 ... ELSE
Andrea Campanella1d34bfc2020-08-06 09:58:49 +0200614 ... Set Variable ${limiting_bw_value_dnstream}
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000615 ${dndict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
Andy Bavier7dc50622020-05-28 14:34:12 -0700616 ... args=-u -b ${dnrate}K -R -t 30 -l ${udp_packet_bytes} --pacing-timer 0
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000617 # With UDP test, bits per second is the sending rate. Multiply by the loss rate to get the throughput.
618 ${actual_dnstream_bw_used}= Evaluate
619 ... (100 - ${dndict['end']['sum']['lost_percent']})*${dndict['end']['sum']['bits_per_second']}/100000
620
621 ${pct_limit_up}= Evaluate 100*${actual_upstream_bw_used}/${limiting_bw_value_upstream}
622 ${pct_limit_dn}= Evaluate 100*${actual_dnstream_bw_used}/${limiting_bw_value_dnstream}
623 Log Up: bwprof ${limiting_bw_value_upstream}Kbps, got ${actual_upstream_bw_used}Kbps (${pct_limit_up}%)
624 Log Down: bwprof ${limiting_bw_value_dnstream}Kbps, got ${actual_dnstream_bw_used}Kbps (${pct_limit_dn}%)
625
626 Should Be True ${pct_limit_up} <= ${upper_margin_pct}
627 ... The upstream bandwidth exceeded the limit (${pct_limit_up}% of limit)
Andy Baviereff938d2020-06-29 18:27:49 -0700628 # VOL-3125: downstream bw limit not enforced. Uncomment when fixed.
629 #Should Be True ${pct_limit_dn} <= ${upper_margin_pct}
630 #... The downstream bandwidth exceeded the limit (${pct_limit_dn}% of limit)
Gayathri.Selvan92d16862020-03-19 14:47:58 +0000631 Should Be True ${pct_limit_up} >= ${lower_margin_pct}
632 ... The upstream bandwidth guarantee was not met (${pct_limit_up}% of resv)
633 Should Be True ${pct_limit_dn} >= ${lower_margin_pct}
634 ... The downstream bandwidth guarantee was not met (${pct_limit_dn}% of resv)
635 END
Suchitra Vemurif7a033c2020-02-26 17:22:41 -0800636
Suraj Gour33651272020-05-04 10:10:16 +0530637Validate parsing of data traffic through voltha using tech profile
638 [Documentation] Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
639 ... Prerequisite tools : Tcpdump and Mausezahn traffic generator on both RG and DHCP/BNG VMs
640 ... Install jq tool to read json file, where test suite is being running
Girish Gowdrabbfbbc32021-05-17 14:36:58 -0700641 ... This test sends TCP packets with pbits between 0 and 7 and validates that
Suraj Gour33651272020-05-04 10:10:16 +0530642 ... the pbits are preserved by the PON.
Hardik Windlass04d791e2021-07-12 16:23:13 +0000643 [Tags] dataplane TechProfile VOL-2054 notready
Suraj Gour33651272020-05-04 10:10:16 +0530644 [Setup] Start Logging TechProfile
645 [Teardown] Run Keywords Collect Logs
646 ... AND Stop Logging TechProfile
647 Pass Execution If '${has_dataplane}'=='False'
648 ... Skipping test: Technology profile validation can be done only in physical pod
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800649 FOR ${I} IN RANGE 0 ${num_all_onus}
Suraj Gour33651272020-05-04 10:10:16 +0530650 ${src}= Set Variable ${hosts.src[${I}]}
651 ${dst}= Set Variable ${hosts.dst[${I}]}
652
653 ${bng_ip}= Get Variable Value ${dst['noroot_ip']}
654 ${bng_user}= Get Variable Value ${dst['noroot_user']}
655 ${bng_pass}= Get Variable Value ${dst['noroot_pass']}
Andy Bavierf4b7d1d2020-06-30 11:14:04 -0700656 Pass Execution If "${bng_ip}" == "${NONE}" or "${bng_user}" == "${NONE}" or "${bng_pass}" == "${NONE}"
Suraj Gour33651272020-05-04 10:10:16 +0530657 ... Skipping test: credentials for BNG login required in deployment config
658
659 ${stdout} ${stderr} ${rc}= Execute Remote Command which mausezahn tcpdump
660 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
661 Pass Execution If ${rc} != 0 Skipping test: mausezahn / tcpdump not found on the RG
662 ${stdout} ${stderr} ${rc}= Execute Remote Command which mausezahn tcpdump
663 ... ${bng_ip} ${bng_user} ${bng_pass} ${dst['container_type']} ${dst['container_name']}
664 Pass Execution If ${rc} != 0 Skipping test: mausezahn / tcpdump not found on the BNG
665 Log Upstream test
Andy Baviereff938d2020-06-29 18:27:49 -0700666 Run Keyword If ${has_dataplane} Create traffic with each pbit and capture at other end
Suraj Gour33651272020-05-04 10:10:16 +0530667 ... ${dst['dp_iface_ip_qinq']} ${dst['dp_iface_name']} ${src['dp_iface_name']}
Girish Gowdra66cd95d2021-07-08 10:31:54 -0700668 ... 0 tcp 0 ${src['s_tag']} upstream vlan
Suraj Gour33651272020-05-04 10:10:16 +0530669 ... ${bng_ip} ${bng_user} ${bng_pass} ${dst['container_type']} ${dst['container_name']}
670 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
671 Log Downstream test
672 ${rg_ip} ${stderr} ${rc}= Execute Remote Command
673 ... ifconfig ${src['dp_iface_name']} | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }'
674 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
675 Should Be Equal As Integers ${rc} 0 Could not get RG's IP address
Andy Baviereff938d2020-06-29 18:27:49 -0700676 Run Keyword If ${has_dataplane} Create traffic with each pbit and capture at other end
Girish Gowdra66cd95d2021-07-08 10:31:54 -0700677 ... ${rg_ip} ${src['dp_iface_name']} ${dst['dp_iface_name']}
678 ... 0 tcp ${src['c_tag']} ${src['s_tag']} downstream tcp
Suraj Gour33651272020-05-04 10:10:16 +0530679 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
680 ... ${bng_ip} ${bng_user} ${bng_pass} ${dst['container_type']} ${dst['container_name']}
681 END
682
Hardik Windlass16cdf962020-04-29 15:26:50 +0530683Test Disable and Enable OLT PON Port
684 [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
685 ... Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
686 ... Perform disable on the OLT PON Port and validate that the pings do not succeed
687 ... Perform enable on the OLT PON Port and validate that the pings are successful
Hardik Windlass1ed2eee2021-06-25 09:51:03 +0000688 [Tags] functional DisableEnableOltPonPort VOL-2577 multi-uni
Hardik Windlass16cdf962020-04-29 15:26:50 +0530689 [Setup] Run Keywords Start Logging DisableEnableOltPonPort
Girish Gowdra8fd96962021-12-14 16:20:04 +0530690 ... AND Run Keyword If ${has_dataplane} Set Non-Critical Tag for XGSPON Tech
Hardik Windlass16cdf962020-04-29 15:26:50 +0530691 ... AND Setup
692 [Teardown] Run Keywords Collect Logs
Hardik Windlass41701e82021-01-12 17:44:44 +0000693 ... AND Delete All Devices and Verify
Girish Gowdraf244d5b2021-09-01 17:16:16 -0700694 ... AND Run Keyword If ${logging} Collect Logs
695 ... AND Stop Logging DisableEnableOltPonPort
Hardik Windlass16cdf962020-04-29 15:26:50 +0530696 Run Keyword If ${has_dataplane} Clean Up Linux
Hardik Windlass58b23a32022-05-10 11:06:48 +0530697 Perform Sanity Test
Hardik Windlass41701e82021-01-12 17:44:44 +0000698 # Multi-OLTs
699 FOR ${I} IN RANGE 0 ${olt_count}
700 ${olt_serial_number}= Get From Dictionary ${olt_ids}[${I}] sn
701 Disable Enable PON Port Per OLT ${olt_serial_number}
Hardik Windlass16cdf962020-04-29 15:26:50 +0530702 END
703
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530704Data plane Bandwidth profile update verification
705 [Documentation] Test bandwidth profile is updated for one subscriber and not changed for other subscribers.
706 ... Assumes iperf3 and jq installed on client and iperf -s running on DHCP server
707 ... Assumes Default and User_Bandwidth2 profiles are configured as bandwidth profiles
708 [Tags] non-critical dataplane BandwidthProfileUpdateTCP VOL-2053
709 [Setup] Start Logging BandwidthProfileUpdateTCP
710 [Teardown] Run Keywords Collect Logs
711 ... AND Stop Logging BandwidthProfileUpdateTCP
712 ... AND Send File To Onos ${CURDIR}/../../tests/data/${POD_NAME}-sadis.json
713 Pass Execution If '${has_dataplane}'=='False'
714 ... Bandwidth profile validation can be done only in physical pod. Skipping this test in BBSIM.
715 Delete All Devices And Verify
716 Run Keyword If ${has_dataplane} Clean Up Linux
717 Setup
Hardik Windlass58b23a32022-05-10 11:06:48 +0530718 Perform Sanity Test
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530719 # Update the Bandwidth Profile for the First Subscriber under test
720 ${src}= Set Variable ${hosts.src[${0}]}
721 ${dst}= Set Variable ${hosts.dst[${0}]}
722 ${of_id}= Get ofID From OLT List ${src['olt']}
TorstenThiemedda37652021-11-11 16:22:05 +0000723 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530724 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
725 ... ${of_id} ${src['uni_id']}
726 ${subscriber_id}= Set Variable ${of_id}/${onu_port}
727 ${oldBwName} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id} upstreamBandwidthProfile
728 # Delete the existing subscriber
729 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
730 ... ${ONOS_SSH_PORT} volt-remove-subscriber-access ${of_id} ${onu_port}
731 # Change the bandwidth profile and load the configuration
Hardik Windlassaa41bb42021-07-23 15:32:43 +0000732 ${newBwName} Set Variable If ${oldBwName} == 'Default' 'User_Bandwidth2' 'Default'
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530733 ${cmd} Catenate
734 ... sed 's/upstreamBandwidthProfile": "${oldBwName}"/upstreamBandwidthProfile": "${newBwName}"/g'
735 ... ${CURDIR}/../../tests/data/${POD_NAME}-sadis.json > ${CURDIR}/../../tests/data/${POD_NAME}-sadis-new.json
736 ${rc} Run and Return RC ${cmd}
737 Send File To Onos ${CURDIR}/../../tests/data/${POD_NAME}-sadis-new.json
738 # Re-add the subscriber with new bandwidth profile
739 Wait Until Keyword Succeeds ${timeout} 2s Execute ONOS CLI Command use single connection ${ONOS_SSH_IP}
740 ... ${ONOS_SSH_PORT} volt-add-subscriber-access ${of_id} ${onu_port}
741 # Verify that no pending flows exist for the ONU port
742 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
743 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
744 # Verify subscriber access flows are added for the ONU port
745 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
746 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
747 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
748 # Verify Meters in ONOS
Hardik Windlass58b23a32022-05-10 11:06:48 +0530749 Wait Until Keyword Succeeds ${timeout} 5s
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530750 ... Verify Meters in ONOS ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port}
751 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure Validate DHCP and Ping True
752 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
753 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
754 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
755 ... ${dst['container_name']}
Hardik Windlass58b23a32022-05-10 11:06:48 +0530756 Wait Until Keyword Succeeds ${timeout} 2s
Gayathri.Selvan5d23e522020-09-15 17:26:25 +0530757 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
758 # Verify new bandwidth profile is applied and other subscribers are working fine
759 ${checkBwName} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id} upstreamBandwidthProfile
760 Should Be Equal ${checkBwName} ${newBwName} The bandwidth profile is not updated properly
761 FOR ${I} IN RANGE 0 ${num_all_onus}
762 ${src}= Set Variable ${hosts.src[${I}]}
763 ${dst}= Set Variable ${hosts.dst[${I}]}
764 ${of_id}= Get ofID From OLT List ${src['olt']}
765
766 # Check for iperf3 and jq tools
767 ${stdout} ${stderr} ${rc}= Execute Remote Command which iperf3 jq
768 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
769 Pass Execution If ${rc} != 0 Skipping test: iperf3 / jq not found on the RG
770
771 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
772 ... ${of_id} ${src['uni_id']}
773 ${subscriber_id}= Set Variable ${of_id}/${onu_port}
774 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
775 ... upstreamBandwidthProfile
776 ${limiting_bw_value_upstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
777 ${bandwidth_profile_name} Get Bandwidth Profile Name For Given Subscriber ${subscriber_id}
778 ... downstreamBandwidthProfile
779 ${limiting_bw_value_dnstream} Get Limiting Bandwidth Details ${bandwidth_profile_name}
780
781 # Stream TCP packets from RG to server
782 ${updict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
783 ... args=-t 30
784 ${actual_upstream_bw_used}= Evaluate ${updict['end']['sum_received']['bits_per_second']}/1000
785
786 # Stream TCP packets from server to RG
787 ${dndict}= Run Iperf3 Test Client ${src} server=${dst['dp_iface_ip_qinq']}
788 ... args=-R -t 30
789 ${actual_dnstream_bw_used}= Evaluate ${dndict['end']['sum_received']['bits_per_second']}/1000
790
791 ${pct_limit_up}= Evaluate 100*${actual_upstream_bw_used}/${limiting_bw_value_upstream}
792 ${pct_limit_dn}= Evaluate 100*${actual_dnstream_bw_used}/${limiting_bw_value_dnstream}
793 Log Up: bwprof ${limiting_bw_value_upstream}Kbps, got ${actual_upstream_bw_used}Kbps (${pct_limit_up}%)
794 Log Down: bwprof ${limiting_bw_value_dnstream}Kbps, got ${actual_dnstream_bw_used}Kbps (${pct_limit_dn}%)
795
796 Should Be True ${pct_limit_up} <= ${upper_margin_pct}
797 ... The upstream bandwidth exceeded the limit (${pct_limit_up}% of limit)
798 # VOL-3125: downstream bw limit not enforced. Uncomment when fixed.
799 #Should Be True ${pct_limit_dn} <= ${upper_margin_pct}
800 #... The downstream bandwidth exceeded the limit (${pct_limit_dn}% of limit)
801 Should Be True ${pct_limit_up} >= ${lower_margin_pct}
802 ... The upstream bandwidth guarantee was not met (${pct_limit_up}% of resv)
803 Should Be True ${pct_limit_dn} >= ${lower_margin_pct}
804 ... The downstream bandwidth guarantee was not met (${pct_limit_dn}% of resv)
805 END
806
Hardik Windlassb75cf1b2021-01-18 06:59:09 +0000807Test ONU Delete and Auto-Discovery
808 [Documentation] Tests the voltctl delete and Auto-Discovery of the ONU
Andrea Campanella92e21b02022-01-04 15:32:04 +0100809 [Tags] functional VOL-3098 ONUAutoDiscovery
Hardik Windlassb75cf1b2021-01-18 06:59:09 +0000810 [Setup] Run Keywords Start Logging ONUAutoDiscovery
811 ... AND Setup
812 [Teardown] Run Keywords Collect Logs
813 ... AND Delete All Devices and Verify
814 ... AND Run Keyword If ${logging} Collect Logs
815 ... AND Stop Logging ONUAutoDiscovery
816 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
817 Run Keyword If ${has_dataplane} Clean Up Linux
818 Perform Sanity Test
819 FOR ${I} IN RANGE 0 ${num_all_onus}
820 ${src}= Set Variable ${hosts.src[${I}]}
821 ${dst}= Set Variable ${hosts.dst[${I}]}
Hardik Windlassb75cf1b2021-01-18 06:59:09 +0000822 ${of_id}= Get ofID From OLT List ${src['olt']}
823 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
824 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s
825 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
Hardik Windlass78bb0fd2022-06-21 15:11:54 +0530826 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlassb75cf1b2021-01-18 06:59:09 +0000827 # Remove Subscriber Access (To replicate ATT workflow)
828 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
829 ... volt-remove-subscriber-access ${of_id} ${onu_port}
830 # Additional sleep to let subscriber delete process
831 Sleep 10s
832 # Delete ONU and Verify Ping Fails
833 Delete Device ${onu_device_id}
834 Run Keyword If ${has_dataplane} Verify ping is successful except for given device
835 ... ${num_all_onus} ${src['onu']}
836 # Verify that no pending flows exist for the ONU port
837 Wait Until Keyword Succeeds ${timeout} 2s
838 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
839 # ONU Auto-Discovery
840 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s
841 ... Get ONU Port in ONOS ${src['onu']} ${of_id} ${src['uni_id']}
842 # Check ONU port is Enabled in ONOS
843 Wait Until Keyword Succeeds ${timeout} 2s
844 ... Verify UNI Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${src['onu']} ${src['uni_id']}
845 ${onu_device_id}= Get Device ID From SN ${src['onu']}
846 Run Keyword If ${has_dataplane} Clean Up Linux ${onu_device_id}
847 # Verify default EAPOL flows are added for the ONU port
848 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
849 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port}
850 # Verify ONU state in voltha
851 Wait Until Keyword Succeeds ${timeout} 5s Validate Device ENABLED ACTIVE REACHABLE
852 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
853 # Perform Authentication
854 ${wpa_log}= Run Keyword If ${has_dataplane} Catenate SEPARATOR=.
855 ... /tmp/wpa ${src['dp_iface_name']} log
856 Run Keyword If ${has_dataplane} Validate Authentication True
857 ... ${src['dp_iface_name']} wpa_supplicant.conf ${src['ip']} ${src['user']} ${src['pass']}
858 ... ${src['container_type']} ${src['container_name']} ${wpa_log}
859 Wait Until Keyword Succeeds ${timeout} 2
860 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
861 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
862 ... volt-add-subscriber-access ${of_id} ${onu_port}
863 # Verify that no pending flows exist for the ONU port
864 Wait Until Keyword Succeeds ${timeout} 2s
865 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
866 # Verify subscriber access flows are added for the ONU port
867 Wait Until Keyword Succeeds ${timeout} 5s
868 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
869 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
870 # Verify subscriber EAPOL flow is installed
871 Wait Until Keyword Succeeds ${timeout} 5s
872 ... Verify Eapol Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
873 ... ${onu_port} ${src['c_tag']}
874 # Verify Meters in ONOS
875 Wait Until Keyword Succeeds ${timeout} 5s
876 ... Verify Meters in ONOS ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port}
877 Run Keyword If ${has_dataplane} Validate DHCP and Ping True
878 ... True ${src['dp_iface_name']} ${src['s_tag']} ${src['c_tag']} ${dst['dp_iface_ip_qinq']}
879 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
880 ... ${dst['dp_iface_name']} ${dst['ip']} ${dst['user']} ${dst['pass']} ${dst['container_type']}
881 ... ${dst['container_name']}
882 Wait Until Keyword Succeeds ${timeout} 2s
883 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
884 END
885
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -0700886*** Keywords ***
887Setup Suite
Andy Bavier88cd9f62019-11-26 16:22:33 -0700888 [Documentation] Set up the test suite
889 Common Test Suite Setup
Hung-Wei Chiucc6e6552020-06-04 12:57:38 -0700890 #Restore all ONUs
Suchitra Vemuria6879aa2020-11-03 11:03:11 -0800891 #Run Keyword If ${has_dataplane} RestoreONUs ${num_all_onus}
Suchitra Vemuri1d8e8172020-06-17 17:43:56 -0700892 #power_switch.robot needs it to support different vendor's power switch
893 ${switch_type}= Get Variable Value ${web_power_switch.type}
894 Run Keyword If "${switch_type}"!="" Set Global Variable ${powerswitch_type} ${switch_type}
Suchitra Vemuri65cd65f2019-08-30 14:39:22 -0700895
David Bainbridgef81cd642019-11-20 00:14:47 +0000896Clear All Devices Then Create New Device
897 [Documentation] Remove any devices from VOLTHA and ONOS
David Bainbridgef81cd642019-11-20 00:14:47 +0000898 # Remove all devices from voltha and nos
899 Delete All Devices and Verify
David Bainbridgef81cd642019-11-20 00:14:47 +0000900 # Execute normal test Setup Keyword
901 Setup