blob: a73622052ebe924bec0b60f5f3619f4bf0bf5d3f [file] [log] [blame]
TorstenThiemed4f48962020-12-08 12:17:19 +00001# Copyright 2020 - present Open Networking Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
TorstenThieme1619db22020-04-03 12:01:15 +000015*** Settings ***
TorstenThieme109683b2020-09-24 12:35:41 +000016Documentation Test states of ONU Go adapter with ATT workflows only (not for DT/TT workflow!)
TorstenThieme1619db22020-04-03 12:01:15 +000017Suite Setup Setup Suite
18Suite Teardown Teardown Suite
19Test Setup Setup
20Test Teardown Teardown
21Library Collections
22Library String
23Library OperatingSystem
24Library XML
25Library RequestsLibrary
26Library ../../libraries/DependencyLibrary.py
27Resource ../../libraries/onos.robot
28Resource ../../libraries/voltctl.robot
29Resource ../../libraries/voltha.robot
30Resource ../../libraries/utils.robot
31Resource ../../libraries/k8s.robot
32Resource ../../variables/variables.robot
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000033Resource Voltha_ONUUtilities.robot
TorstenThieme1619db22020-04-03 12:01:15 +000034
35*** Variables ***
TorstenThiemed4f48962020-12-08 12:17:19 +000036${timeout} 60s
TorstenThieme1619db22020-04-03 12:01:15 +000037${of_id} 0
38${logical_id} 0
39${has_dataplane} True
40${external_libs} True
41${teardown_device} True
42${scripts} ../../scripts
43# Per-test logging on failure is turned off by default; set this variable to enable
44${container_log_dir} ${None}
TorstenThiemee0e5bba2020-08-05 11:20:13 +000045# state to test variable, can be passed via the command line too, valid values: 1-6
46# 1 -> activating-onu
47# 2 -> starting-openomci
48# 3 -> discovery-mibsync-complete
49# 4 -> initial-mib-downloaded
50# 5 -> tech-profile-config-download-success
51# 6 -> omci-flows-pushed
TorstenThieme87cd6202020-09-09 10:01:28 +000052# example: -v state2test:5
TorstenThieme66c91a82020-10-19 13:37:53 +000053# example: -v state2test:omci-flows-pushed
TorstenThieme1619db22020-04-03 12:01:15 +000054${state2test} 6
TorstenThiemee0e5bba2020-08-05 11:20:13 +000055# test mode variable, can be passed via the command line too, valid values: SingleState, Up2State, SingleStateTime
TorstenThieme87cd6202020-09-09 10:01:28 +000056# example: -v testmode:SingleStateTime
TorstenThieme1619db22020-04-03 12:01:15 +000057${testmode} SingleState
TorstenThieme87cd6202020-09-09 10:01:28 +000058# used tech profile, can be passed via the command line too, valid values: default (=1T1GEM), 1T4GEM, 1T8GEM
59# example: -v techprofile:1T4GEM
TorstenThiemee0e5bba2020-08-05 11:20:13 +000060${techprofile} default
TorstenThiemee0e5bba2020-08-05 11:20:13 +000061# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000062# example: -v debugmode:True
TorstenThieme401af432020-06-11 15:53:53 +000063${debugmode} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000064# logging flag to enable Collect Logs, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000065# example: -v logging:True
TorstenThieme5e324e42020-07-27 09:36:16 +000066${logging} False
TorstenThieme66c91a82020-10-19 13:37:53 +000067# if True execution will be paused before clean up, only use in case of manual testing, do not use in ci pipeline!
TorstenThieme87cd6202020-09-09 10:01:28 +000068# example: -v pausebeforecleanup:True
TorstenThiemeb41007d2020-06-22 12:14:12 +000069${pausebeforecleanup} False
TorstenThiemed4f48962020-12-08 12:17:19 +000070# if True some outputs to console are done during running tests e.g. long duration flow test
71# example: -v print2console:True
72${print2console} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000073${data_dir} ../data
74
TorstenThieme1619db22020-04-03 12:01:15 +000075
76*** Test Cases ***
77ONU State Test
78 [Documentation] Validates the ONU Go adapter states
TorstenThieme66c91a82020-10-19 13:37:53 +000079 [Tags] sanityOnuGo StateTestOnuGo
TorstenThieme1619db22020-04-03 12:01:15 +000080 [Setup] Run Keywords Start Logging ONUStateTest
81 ... AND Setup Test
82 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000083 FOR ${I} IN RANGE 0 ${num_olts}
84 #get olt serial number
85 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
86 #validate olt states
87 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
88 Enable Device ${olt_device_id}
89 END
TorstenThieme94e4ae42020-05-18 13:01:42 +000090 ${timeStart} = Get Current Date
91 Set Global Variable ${timeStart}
TorstenThieme1619db22020-04-03 12:01:15 +000092 Run Keyword If "${testmode}"=="SingleState" Do ONU Single State Test
93 ... ELSE IF "${testmode}"=="Up2State" Do ONU Up To State Test
TorstenThieme94e4ae42020-05-18 13:01:42 +000094 ... ELSE IF "${testmode}"=="SingleStateTime" Do ONU Single State Test Time
TorstenThieme1619db22020-04-03 12:01:15 +000095 ... ELSE Fail The testmode (${testmode}) is not valid!
TorstenThieme5e324e42020-07-27 09:36:16 +000096 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme1619db22020-04-03 12:01:15 +000097 ... AND Stop Logging ONUStateTest
98
TorstenThiemee0e5bba2020-08-05 11:20:13 +000099Check Loaded Tech Profile
100 [Documentation] Validates the loaded Tech Profile
101 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
102 ... Check will be executed only the reached ONU state is 5 (tech-profile-config-download-success) or higher
TorstenThieme66c91a82020-10-19 13:37:53 +0000103 [Tags] functionalOnuGo CheckTechProfileOnuGo
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000104 [Setup] Start Logging ONUCheckTechProfile
TorstenThieme66c91a82020-10-19 13:37:53 +0000105 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
106 ... Do Check Tech Profile
TorstenThieme5a205ba2020-09-29 08:08:29 +0000107 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000108 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
109 ... AND Stop Logging ONUCheckTechProfile
110
TorstenThieme401af432020-06-11 15:53:53 +0000111Onu Port Check
TorstenThieme87cd6202020-09-09 10:01:28 +0000112 [Documentation] Validates that all the UNI ports show up in ONOS
TorstenThieme00958682020-06-19 11:29:31 +0000113 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000114 [Tags] functionalOnuGo PortTestOnuGo
TorstenThieme401af432020-06-11 15:53:53 +0000115 [Setup] Start Logging ONUPortTest
TorstenThiemed4f48962020-12-08 12:17:19 +0000116 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
117 ... Do Onu Port Check
118 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme5e324e42020-07-27 09:36:16 +0000119 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme401af432020-06-11 15:53:53 +0000120 ... AND Stop Logging ONUPortTest
121
TorstenThieme17756ea2020-11-11 14:09:47 +0000122Onu Etcd Data Check
123 [Documentation] Validates ONU data stored in ETCD
124 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
125 [Tags] functionalOnuGo EtcdDataOnuGo
126 [Setup] Start Logging ONUEtcdDataTest
127 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
128 ... Do Onu Etcd Data Check
129 ... ELSE Pass Execution ${skip_message} skipped
130 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
131 ... AND Stop Logging ONUEtcdDataTest
132
TorstenThieme109683b2020-09-24 12:35:41 +0000133Onu Flow Check
134 [Documentation] Validates the onu flows in ONOS and Voltha
135 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
mpagenkoc2e7ba52020-11-12 13:50:57 +0000136 [Tags] functionalOnuGo FlowTestOnuGo
TorstenThieme109683b2020-09-24 12:35:41 +0000137 [Setup] Start Logging ONUFlowTest
TorstenThieme66c91a82020-10-19 13:37:53 +0000138 Run Keyword If '${onu_state}'=='omci-flows-pushed' Do Onu Flow Check
TorstenThieme5a205ba2020-09-29 08:08:29 +0000139 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme109683b2020-09-24 12:35:41 +0000140 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
141 ... AND Stop Logging ONUFlowTest
142
TorstenThiemee3841a02020-09-23 08:20:43 +0000143Disable Enable Onu Device
144 [Documentation] Disables/enables ONU Device and check states
145 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000146 [Tags] functionalOnuGo DisableEnableOnuGo
TorstenThiemee3841a02020-09-23 08:20:43 +0000147 [Setup] Start Logging DisableEnableONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000148 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
149 ... Do Disable Enable Onu Test
TorstenThieme5a205ba2020-09-29 08:08:29 +0000150 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee3841a02020-09-23 08:20:43 +0000151 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
152 ... AND Stop Logging DisableEnableONUDevice
153
TorstenThieme015d5c02020-09-11 09:53:34 +0000154Reconcile Onu Device
155 [Documentation] Reconciles ONU Device and check state
156 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000157 [Tags] functionalOnuGo ReconcileOnuGo
TorstenThieme015d5c02020-09-11 09:53:34 +0000158 [Setup] Start Logging ReconcileONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000159 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
160 ... Do Reconcile Onu Device
TorstenThieme5a205ba2020-09-29 08:08:29 +0000161 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme015d5c02020-09-11 09:53:34 +0000162 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
163 ... AND Stop Logging ReconcileONUDevice
164
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000165Power Off Power On Onu Device
166 [Documentation] Power off and Power on of all ONU Devices and check state
167 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000168 [Tags] functionalOnuGo PowerOffPowerOnOnuGo
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000169 [Setup] Start Logging PowerOffPowerOnONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000170 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
171 ... Do Power Off Power On Onu Device
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000172 ... ELSE Pass Execution ${skip_message} skipped
173 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
174 ... AND Stop Logging PowerOffPowerOnONUDevice
175
TorstenThieme1fbe8082020-10-21 13:27:59 +0000176Soft Reboot Onu Device
177 [Documentation] Reboots softly all ONU Devices and check state
178 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
179 [Tags] functionalOnuGo SoftRebootOnuGo
180 [Setup] Start Logging SoftRebootONUDevice
181 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
182 ... Do Soft Reboot Onu Device
183 ... ELSE Pass Execution ${skip_message} skipped
184 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
185 ... AND Stop Logging SoftRebootONUDevice
186
TorstenThieme1619db22020-04-03 12:01:15 +0000187*** Keywords ***
188Setup Suite
189 [Documentation] Set up the test suite
TorstenThieme87cd6202020-09-09 10:01:28 +0000190 ${LogInfo}= Catenate
191 ... \r\nPassed arguments:
TorstenThieme66c91a82020-10-19 13:37:53 +0000192 ... state2test:${state2test}, testmode:${testmode}, techprofile:${techprofile},
TorstenThieme015d5c02020-09-11 09:53:34 +0000193 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThiemed4f48962020-12-08 12:17:19 +0000194 ... print2console:${print2console}
TorstenThieme87cd6202020-09-09 10:01:28 +0000195 Log ${LogInfo} console=yes
TorstenThieme1619db22020-04-03 12:01:15 +0000196 Common Test Suite Setup
TorstenThieme5a205ba2020-09-29 08:08:29 +0000197 # prepare skip message in yellow for console log
198 ${skip}= Evaluate "\\033[33mSKIP\\033[0m"
199 ${skipped}= Evaluate "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
200 ${skip_message} Catenate ${skipped} | ${skip} |
201 Set Suite Variable ${skip_message}
TorstenThiemed4f48962020-12-08 12:17:19 +0000202 Set Suite Variable ${all_onu_timeout} ${timeout}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000203 Run Keyword If ${num_all_onus}>4 Calculate Timeout
TorstenThieme1488d772020-09-28 10:52:43 +0000204 ${techprofile}= Set Variable If "${techprofile}"=="1T1GEM" default ${techprofile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000205 Run Keyword If "${techprofile}"=="default" Log To Console \nTechProfile:default (1T1GEM)
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000206 ... ELSE IF "${techprofile}"=="1T4GEM" Set Tech Profile 1T4GEM
207 ... ELSE IF "${techprofile}"=="1T8GEM" Set Tech Profile 1T8GEM
208 ... ELSE Fail The TechProfile (${techprofile}) is not valid!
209 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
210 Set Suite Variable ${onos_ssh_connection}
TorstenThieme66c91a82020-10-19 13:37:53 +0000211 # map the passed onu state to reached and make it visible for test suite
212 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}=
213 ... Map State ${state2test}
214 Set Suite Variable ${admin_state}
215 Set Suite Variable ${oper_status}
216 Set Suite Variable ${connect_status}
217 Set Suite Variable ${onu_state_nb}
218 Set Suite Variable ${onu_state}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000219 # delete etcd MIB Template Data
220 Delete MIB Template Data
TorstenThieme1619db22020-04-03 12:01:15 +0000221
TorstenThiemeb41007d2020-06-22 12:14:12 +0000222Teardown Suite
223 [Documentation] Replaces the Suite Teardown in utils.robot.
224 ... Cleans up and checks all ONU ports disabled in ONOS.
225 ... Furthermore gives the possibility to pause the execution.
226 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
227 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
TorstenThieme87cd6202020-09-09 10:01:28 +0000228 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
TorstenThiemeb41007d2020-06-22 12:14:12 +0000229 Run Keyword If ${teardown_device} Delete All Devices and Verify
TorstenThiemefcafba02020-11-11 16:18:50 +0000230 Validate Onu Data In Etcd 0
TorstenThiemed4f48962020-12-08 12:17:19 +0000231 # Re-open ssh connection to onos since no keep alive is implemented in SSH library
232 Close ONOS SSH Connection ${onos_ssh_connection}
233 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
234 Set Suite Variable ${onos_ssh_connection}
235 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM ${timeout}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000236 Close ONOS SSH Connection ${onos_ssh_connection}
TorstenThieme87cd6202020-09-09 10:01:28 +0000237 Remove Tech Profile
TorstenThiemeb41007d2020-06-22 12:14:12 +0000238
TorstenThieme1619db22020-04-03 12:01:15 +0000239Setup Test
240 [Documentation] Pre-test Setup
241 #test for empty device list
242 Test Empty Device List
243 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
Suchitra Vemurib7253a52020-07-14 22:35:17 -0700244 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
TorstenThieme1619db22020-04-03 12:01:15 +0000245 Run Keyword If ${has_dataplane} Sleep 60s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000246 # Create a list of olt ids (logical and device_id)
247 ${olt_ids} Create List
248 FOR ${I} IN RANGE 0 ${num_olts}
249 #create/preprovision device
Andrea Campanellab2d09f12021-01-15 16:04:47 +0100250 ${olt_device_id}= Run Keyword If "${list_olts}[${I}][type]" == "${None}"
251 ... Create Device ${list_olts}[${I}][ip] ${OLT_PORT}
252 ... ELSE Create Device ${list_olts}[${I}][ip] ${OLT_PORT} ${list_olts}[${I}][type]
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000253 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
254 #validate olt states
255 Wait Until Keyword Succeeds ${timeout} 5s
256 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id}
257 Sleep 5s
258 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
259 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
260 ... of_id ${of_id} sn ${olt_serial_number}
261 Append To List ${olt_ids} ${olt}
262 END
263 Set Global Variable ${olt_ids}
TorstenThieme1619db22020-04-03 12:01:15 +0000264
265Calculate Timeout
266 [Documentation] Calculates the timeout regarding num-onus in case of more than 4 onus
TorstenThiemed4f48962020-12-08 12:17:19 +0000267 ${all_onu_timeout} Fetch From Left ${all_onu_timeout} s
268 ${all_onu_timeout}= evaluate ${all_onu_timeout}+((${num_all_onus}-4)*10)
269 ${all_onu_timeout}= Set Variable If (not ${debugmode}) and (${all_onu_timeout}>300)
270 ... 300 ${all_onu_timeout}
271 ${all_onu_timeout}= Catenate SEPARATOR= ${all_onu_timeout} s
272 Set Suite Variable ${all_onu_timeout}
TorstenThieme1619db22020-04-03 12:01:15 +0000273
274Do ONU Up To State Test
275 [Documentation] This keyword performs Up2State Test
276 ... All states up to the passed have to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000277 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000278 ${src}= Set Variable ${hosts.src[${I}]}
279 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThieme66c91a82020-10-19 13:37:53 +0000280 Run Keyword If ${onu_state_nb}>=1
TorstenThiemed4f48962020-12-08 12:17:19 +0000281 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000282 ... Validate Device ENABLED ACTIVATING REACHABLE
283 ... ${src['onu']} onu=True onu_reason=activating-onu
TorstenThieme66c91a82020-10-19 13:37:53 +0000284 Run Keyword If ${onu_state_nb}>=2
TorstenThiemed4f48962020-12-08 12:17:19 +0000285 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000286 ... Validate Device ENABLED ACTIVATING REACHABLE
287 ... ${src['onu']} onu=True onu_reason=starting-openomci
TorstenThieme66c91a82020-10-19 13:37:53 +0000288 Run Keyword If ${onu_state_nb}>=3
TorstenThiemed4f48962020-12-08 12:17:19 +0000289 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000290 ... Validate Device ENABLED ACTIVATING REACHABLE
291 ... ${src['onu']} onu=True onu_reason=discovery-mibsync-complete
TorstenThieme66c91a82020-10-19 13:37:53 +0000292 Run Keyword If ${onu_state_nb}>=4
TorstenThiemed4f48962020-12-08 12:17:19 +0000293 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000294 ... Validate Device ENABLED ACTIVE REACHABLE
295 ... ${src['onu']} onu=True onu_reason=initial-mib-downloaded
TorstenThieme66c91a82020-10-19 13:37:53 +0000296 Run Keyword If ${onu_state_nb}>=5
TorstenThiemed4f48962020-12-08 12:17:19 +0000297 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000298 ... Validate Device ENABLED ACTIVE REACHABLE
299 ... ${src['onu']} onu=True onu_reason=tech-profile-config-download-success
TorstenThieme66c91a82020-10-19 13:37:53 +0000300 Run Keyword If ${onu_state_nb}>=6
TorstenThiemed4f48962020-12-08 12:17:19 +0000301 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000302 ... Validate Device ENABLED ACTIVE REACHABLE
303 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
304 END
305
306Do ONU Single State Test
307 [Documentation] This keyword performs SingleState Test
308 ... Only the passed state has to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000309 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000310 ${src}= Set Variable ${hosts.src[${I}]}
311 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThiemed4f48962020-12-08 12:17:19 +0000312 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme015d5c02020-09-11 09:53:34 +0000313 ... Validate Device ${admin_state} ${oper_status} ${connect_status}
314 ... ${src['onu']} onu=True onu_reason=${onu_state}
TorstenThieme1619db22020-04-03 12:01:15 +0000315 END
316
TorstenThieme94e4ae42020-05-18 13:01:42 +0000317Do ONU Single State Test Time
318 [Documentation] This keyword performs SingleState Test with calculate running time
319 ... Only the passed state has to be checked and the duration each single onu adapter needed
320 ... will be calculated and printed out
TorstenThieme17becfc2020-10-08 09:46:27 +0000321 #${ListfinishedONUs} Create List
322 #Set Global Variable ${ListfinishedONUs}
TorstenThieme94e4ae42020-05-18 13:01:42 +0000323 Create File ONU_Startup_Time.txt This file contains the startup times of all ONUs.
324 ${list_onus} Create List
TorstenThieme401af432020-06-11 15:53:53 +0000325 Build ONU SN List ${list_onus}
TorstenThiemed4f48962020-12-08 12:17:19 +0000326 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme9949b172020-06-16 10:00:15 +0000327 ... Validate ONU Devices MIB State With Duration
TorstenThiemed4f48962020-12-08 12:17:19 +0000328 ... ${onu_state} ${list_onus} ${timeStart} print2console=${print2console}
TorstenThieme401af432020-06-11 15:53:53 +0000329 ... output_file=ONU_Startup_Time.txt
TorstenThieme94e4ae42020-05-18 13:01:42 +0000330
TorstenThieme1619db22020-04-03 12:01:15 +0000331Do Onu Port Check
TorstenThieme00958682020-06-19 11:29:31 +0000332 [Documentation] Check that all the UNI ports show up in ONOS
TorstenThiemed4f48962020-12-08 12:17:19 +0000333 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} ${num_all_onus} BBSM
TorstenThieme9949b172020-06-16 10:00:15 +0000334
TorstenThieme17756ea2020-11-11 14:09:47 +0000335Do Onu Etcd Data Check
336 [Documentation] Check Onu data stored in etcd
337 Validate Onu Data In Etcd
338
TorstenThieme109683b2020-09-24 12:35:41 +0000339Do Onu Flow Check
TorstenThieme52ef8392020-11-10 13:42:26 +0000340 [Documentation] This keyword iterate all OLTs and performs Do Onu Flow Checks Per OLT
341 # Check and store vlan rules
342 ${firstvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000343 FOR ${J} IN RANGE 0 ${num_olts}
344 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
345 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
346 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
347 ... ${olt_serial_number}
348 Set Global Variable ${of_id}
TorstenThiemed4f48962020-12-08 12:17:19 +0000349 # Verify Default Meter in ONOS (valid only for ATT)
350 Do Onu Subscriber Add Per OLT ${of_id} ${olt_serial_number} ${onu_count}
351 END
352 FOR ${J} IN RANGE 0 ${num_olts}
353 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
354 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
355 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
356 ... ${olt_serial_number}
357 Set Global Variable ${of_id}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000358 ${nni_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
359 ... Get NNI Port in ONOS ${of_id}
360 Set Global Variable ${nni_port}
361 # Verify Default Meter in ONOS (valid only for ATT)
TorstenThiemed4f48962020-12-08 12:17:19 +0000362 Do Onu Flow Check Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000363 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000364 #log flows for verification
365 ${flowsresult}= Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s
366 log ${flowsresult}
367 #check for previous state is kept (normally omci-flows-pushed)
368 Sleep 10s
369 Run Keyword And Continue On Failure Do Current State Test All Onus ${state2test}
370 ${secondvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd nbofcookieslice=3
371 ... prevvlanrules=${firstvlanrules}
372 FOR ${J} IN RANGE 0 ${num_olts}
373 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
374 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
375 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
376 ... ${olt_serial_number}
377 Set Global Variable ${of_id}
378 ${nni_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
379 ... Get NNI Port in ONOS ${of_id}
380 Set Global Variable ${nni_port}
381 # Verify Default Meter in ONOS (valid only for ATT)
382 Do Onu Subscriber Remove Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
383 END
384 #check for previous state is kept (normally omci-flows-pushed)
385 Sleep 10s
TorstenThiemed4f48962020-12-08 12:17:19 +0000386 Run Keyword If ${print2console} Log \r\nStart State Test All Onus. console=yes
TorstenThieme52ef8392020-11-10 13:42:26 +0000387 Run Keyword And Continue On Failure Do Current State Test All Onus ${state2test}
TorstenThiemed4f48962020-12-08 12:17:19 +0000388 Run Keyword If ${print2console} Log \r\nFinished State Test All Onus. console=yes
TorstenThieme52ef8392020-11-10 13:42:26 +0000389 Run Keyword And Continue On Failure Validate Vlan Rules In Etcd prevvlanrules=${firstvlanrules}
390 ... setvidequal=True
TorstenThiemed4f48962020-12-08 12:17:19 +0000391 # Re-open ssh connection to onos since no keep alive is implemented in SSH library
392 Close ONOS SSH Connection ${onos_ssh_connection}
393 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
394 Set Suite Variable ${onos_ssh_connection}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000395
TorstenThiemed4f48962020-12-08 12:17:19 +0000396Do Onu Subscriber Add Per OLT
397 [Documentation] Add Subscriber per OLT
398 [Arguments] ${of_id} ${olt_serial_number} ${num_onus}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000399 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme109683b2020-09-24 12:35:41 +0000400 ${src}= Set Variable ${hosts.src[${I}]}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000401 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
TorstenThieme109683b2020-09-24 12:35:41 +0000402 ${onu_device_id}= Get Device ID From SN ${src['onu']}
403 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
404 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
405 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
406 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
407 ... volt-add-subscriber-access ${of_id} ${onu_port}
TorstenThiemed4f48962020-12-08 12:17:19 +0000408 Run Keyword If ${print2console} Log \r\n[${I}] volt-add-subscriber-access ${of_id} ${onu_port}.
409 ... console=yes
410 END
411
412Do Onu Flow Check Per OLT
413 [Documentation] Checks all ONU flows show up in ONOS and Voltha
414 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
415 FOR ${I} IN RANGE 0 ${num_all_onus}
416 ${src}= Set Variable ${hosts.src[${I}]}
417 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
418 ${onu_device_id}= Get Device ID From SN ${src['onu']}
419 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
420 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
TorstenThieme109683b2020-09-24 12:35:41 +0000421 # Verify subscriber access flows are added for the ONU port
422 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
423 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
424 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
TorstenThiemed4f48962020-12-08 12:17:19 +0000425 ${logoutput} Catenate \r\n[${I}] Verify Subscriber Access Flows Added For
426 ... ONU ${of_id} ${onu_port} ${src['c_tag']} ${src['s_tag']}.
427 Run Keyword If ${print2console} Log ${logoutput} console=yes
TorstenThieme109683b2020-09-24 12:35:41 +0000428 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000429
430Do Onu Subscriber Remove Per OLT
431 [Documentation] Removes per OLT subscribers in ONOS and Voltha
432 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
433 FOR ${I} IN RANGE 0 ${num_all_onus}
434 ${src}= Set Variable ${hosts.src[${I}]}
435 ${dst}= Set Variable ${hosts.dst[${I}]}
436 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
437 ${onu_device_id}= Get Device ID From SN ${src['onu']}
438 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
439 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
440 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
441 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
442 ... volt-remove-subscriber-access ${of_id} ${onu_port}
TorstenThiemed4f48962020-12-08 12:17:19 +0000443 Run Keyword If ${print2console} Log \r\n[${I}] volt-remove-subscriber-access ${of_id} ${onu_port}.
444 ... console=yes
TorstenThieme52ef8392020-11-10 13:42:26 +0000445 END
TorstenThieme109683b2020-09-24 12:35:41 +0000446
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000447Set Tech Profile
448 [Documentation] This keyword set the passed TechProfile for the test
449 [Arguments] ${TechProfile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000450 Log To Console \nTechProfile:${TechProfile}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000451 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200452 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000453 ${src}= Set Variable ${data_dir}/TechProfile-${TechProfile}.json
454 ${dest}= Set Variable /tmp/flexpod.json
455 ${command} Catenate
TorstenThiemea0221942020-12-09 11:35:03 +0000456 ... /bin/sh -c 'cat ${dest} | ETCDCTL_API=3 etcdctl put service/voltha/technology_profiles/XGS-PON/64'
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000457 Copy File To Pod ${namespace} ${podname} ${src} ${dest}
Holger Hildebrandt23147742020-11-16 10:13:21 +0000458 Exec Pod In Kube ${namespace} ${podname} ${command}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000459 ${commandget} Catenate
TorstenThiemea0221942020-12-09 11:35:03 +0000460 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000461 Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000462
463Remove Tech Profile
464 [Documentation] This keyword removes TechProfile
TorstenThieme015d5c02020-09-11 09:53:34 +0000465 Log To Console \nTechProfile:${TechProfile}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000466 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200467 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000468 ${command} Catenate
TorstenThiemea0221942020-12-09 11:35:03 +0000469 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl del --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000470 Exec Pod In Kube ${namespace} ${podname} ${command}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000471 ${commandget} Catenate
TorstenThiemea0221942020-12-09 11:35:03 +0000472 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000473 Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000474
475Do Check Tech Profile
476 [Documentation] This keyword checks the loaded TechProfile
477 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200478 ${podname}= Set Variable etcd
TorstenThiemed4f48962020-12-08 12:17:19 +0000479 ${stackname}= Get Stack Name
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000480 ${commandget} Catenate
TorstenThiemed4f48962020-12-08 12:17:19 +0000481 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/${stackname}/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000482 ${result}= Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000483 ${num_gem_ports}= Set Variable 1
484 ${num_gem_ports}= Set Variable If
485 ... "${techprofile}"=="default" 1
486 ... "${techprofile}"=="1T4GEM" 4
487 ... "${techprofile}"=="1T8GEM" 8
488 @{resultList} Split String ${result} separator=,
489 ${num_of_count_matches}= Get Match Count ${resultList} "num_gem_ports": ${num_gem_ports}
490 ... whitespace_insensitive=True
TorstenThiemea0221942020-12-09 11:35:03 +0000491 ${num_of_expected_matches}= Evaluate ${num_all_onus}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000492 Run Keyword If ${num_of_expected_matches}!=${num_of_count_matches} Log To Console
493 ... \nTechProfile (${TechProfile}) not loaded correctly:${num_of_count_matches} of ${num_of_expected_matches}
TorstenThiemea0221942020-12-09 11:35:03 +0000494 Should Be Equal As Integers ${num_of_expected_matches} ${num_of_count_matches}
495 ... TechProfile (${TechProfile}) not loaded correctly:${num_of_count_matches} of ${num_of_expected_matches}
TorstenThieme015d5c02020-09-11 09:53:34 +0000496
497Do Disable Enable Onu Test
498 [Documentation] This keyword disables/enables all onus and checks the states.
TorstenThieme1fbe8082020-10-21 13:27:59 +0000499 [Arguments] ${state2check}=${state2test} ${checkstatebeforedisable}=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000500 ... ${state2checkafterdisable}=tech-profile-config-delete-success
TorstenThieme1fbe8082020-10-21 13:27:59 +0000501 Run Keyword If ${checkstatebeforedisable} Do Current State Test All Onus ${state2check}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000502 Do Disable Onu Device
TorstenThiemed4f48962020-12-08 12:17:19 +0000503 ${alternative_onu_reason}= Set Variable If
504 ... '${state2checkafterdisable}'=='tech-profile-config-delete-success' omci-flows-deleted
505 ... '${state2checkafterdisable}'=='omci-admin-lock' tech-profile-config-delete-success ${EMPTY}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000506 Do Current State Test All Onus ${state2checkafterdisable} alternativeonustate=${alternative_onu_reason}
TorstenThieme17becfc2020-10-08 09:46:27 +0000507 Log Ports
508 #check no port is enabled in ONOS
TorstenThiemed4f48962020-12-08 12:17:19 +0000509 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000510 Do Enable Onu Device
TorstenThieme17becfc2020-10-08 09:46:27 +0000511 Do Current State Test All Onus ${state2check}
512 Log Ports onlyenabled=True
513 #check that all the UNI ports show up in ONOS again
TorstenThiemed4f48962020-12-08 12:17:19 +0000514 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} ${num_all_onus} BBSM
TorstenThieme015d5c02020-09-11 09:53:34 +0000515
516Do Reconcile Onu Device
517 [Documentation] This keyword reconciles ONU device and check the state afterwards.
518 ... Following steps will be executed:
519 ... - restart openonu adaptor
520 ... - check openonu adaptor is ready again
521 ... - check previous state is kept
522 ... - ONU-Disable
523 ... - wait some seconds
524 ... - check for state omci-admin-lock
525 ... - ONU-Enable
526 ... - wait some seconds
527 ... - check for state onu-reenabled
528 ... - port check
TorstenThieme015d5c02020-09-11 09:53:34 +0000529 ${list_openonu_apps} Create List adapter-open-onu
530 ${namespace}= Set Variable voltha
531 ${adaptorname}= Set Variable open-onu
TorstenThieme015d5c02020-09-11 09:53:34 +0000532 Kill Adaptor ${namespace} ${adaptorname}
533 Sleep 5s
534 Wait For Pods Ready ${namespace} ${list_openonu_apps}
535 Do Disable Enable Onu Test
TorstenThiemed4f48962020-12-08 12:17:19 +0000536 Do Onu Port Check
TorstenThieme015d5c02020-09-11 09:53:34 +0000537
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000538Do Power Off Power On Onu Device
539 [Documentation] This keyword power off/on all onus and checks the states.
540 Do Power Off ONU Device
541 Sleep 5s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000542 #Do Current State Test All Onus stopping-openomci
543 Do Current State Test All Onus tech-profile-config-delete-success
544 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=omci-flows-deleted
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000545 Do Power On ONU Device
546 Do Current State Test All Onus ${state2test}
547
TorstenThieme1fbe8082020-10-21 13:27:59 +0000548Do Soft Reboot Onu Device
549 [Documentation] This keyword reboots softly all onus and checks the states.
550 ${namespace}= Set Variable voltha
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000551 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1fbe8082020-10-21 13:27:59 +0000552 ${src}= Set Variable ${hosts.src[${I}]}
553 ${onu_device_id}= Get Device ID From SN ${src['onu']}
TorstenThiemea0b11602020-10-30 08:39:24 +0000554 Reboot ONU ${onu_device_id} False
TorstenThieme1fbe8082020-10-21 13:27:59 +0000555 END
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000556 Run Keyword Unless ${has_dataplane} Do Current State Test All Onus tech-profile-config-delete-success
557 ... ENABLED DISCOVERED REACHABLE alternativeonustate=omci-flows-deleted
TorstenThiemea0b11602020-10-30 08:39:24 +0000558 Run Keyword Unless ${has_dataplane} Do Disable Enable Onu Test checkstatebeforedisable=False
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000559 ... state2checkafterdisable=omci-admin-lock
TorstenThiemea0b11602020-10-30 08:39:24 +0000560 Run Keyword If ${has_dataplane} Do Current State Test All Onus omci-flows-pushed
TorstenThiemed4f48962020-12-08 12:17:19 +0000561 Do Onu Port Check
TorstenThieme1fbe8082020-10-21 13:27:59 +0000562
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000563Do Disable Onu Device
564 [Documentation] This keyword disables all onus.
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000565 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme17becfc2020-10-08 09:46:27 +0000566 ${src}= Set Variable ${hosts.src[${I}]}
567 ${onu_device_id}= Get Device ID From SN ${src['onu']}
568 Disable Device ${onu_device_id}
569 Wait Until Keyword Succeeds 20s 2s Test Devices Disabled in VOLTHA Id=${onu_device_id}
570 END
571
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000572Do Enable Onu Device
573 [Documentation] This keyword enables all onus.
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000574 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme17becfc2020-10-08 09:46:27 +0000575 ${src}= Set Variable ${hosts.src[${I}]}
576 ${onu_device_id}= Get Device ID From SN ${src['onu']}
577 Enable Device ${onu_device_id}
578 END
579
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000580Do Power Off ONU Device
581 [Documentation] This keyword power off all onus.
582 ${namespace}= Set Variable voltha
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000583 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000584 ${src}= Set Variable ${hosts.src[${I}]}
Holger Hildebrandt23147742020-11-16 10:13:21 +0000585 ${result}= Exec Pod In Kube ${namespace} bbsim bbsimctl onu shutdown ${src['onu']}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000586 Should Contain ${result} successfully msg=Can not shutdown ${src['onu']} values=False
587 END