blob: 1116aeda7f0accfe67563123443dbbd368c71044 [file] [log] [blame]
Joey Armstrong9fadcbe2024-01-17 19:00:37 -05001# Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
TorstenThiemed4f48962020-12-08 12:17:19 +00002#
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
TorstenThieme440b7c02020-12-18 15:42:57 +000032Resource ../../libraries/onu_utilities.robot
TorstenThiemefe7099e2021-01-29 08:41:04 +000033Resource ../../libraries/bbsim.robot
TorstenThieme1619db22020-04-03 12:01:15 +000034Resource ../../variables/variables.robot
35
36*** Variables ***
Hardik Windlass4288c6a2021-09-28 07:22:06 +000037${NAMESPACE} voltha
38${INFRA_NAMESPACE} default
TorstenThiemed4f48962020-12-08 12:17:19 +000039${timeout} 60s
TorstenThieme1619db22020-04-03 12:01:15 +000040${of_id} 0
41${logical_id} 0
42${has_dataplane} True
43${external_libs} True
44${teardown_device} True
45${scripts} ../../scripts
46# Per-test logging on failure is turned off by default; set this variable to enable
47${container_log_dir} ${None}
TorstenThieme3385cdc2021-02-04 13:50:50 +000048# KV Store Prefix
Andrea Campanella388cd872022-02-10 09:11:39 +010049# example: -v kvstoreprefix:voltha/voltha_voltha
50${kvstoreprefix} voltha/voltha_voltha
TorstenThiemee0e5bba2020-08-05 11:20:13 +000051# state to test variable, can be passed via the command line too, valid values: 1-6
52# 1 -> activating-onu
53# 2 -> starting-openomci
54# 3 -> discovery-mibsync-complete
55# 4 -> initial-mib-downloaded
56# 5 -> tech-profile-config-download-success
57# 6 -> omci-flows-pushed
TorstenThieme87cd6202020-09-09 10:01:28 +000058# example: -v state2test:5
TorstenThieme66c91a82020-10-19 13:37:53 +000059# example: -v state2test:omci-flows-pushed
TorstenThieme1619db22020-04-03 12:01:15 +000060${state2test} 6
TorstenThiemee0e5bba2020-08-05 11:20:13 +000061# test mode variable, can be passed via the command line too, valid values: SingleState, Up2State, SingleStateTime
TorstenThieme87cd6202020-09-09 10:01:28 +000062# example: -v testmode:SingleStateTime
TorstenThieme1619db22020-04-03 12:01:15 +000063${testmode} SingleState
TorstenThieme87cd6202020-09-09 10:01:28 +000064# used tech profile, can be passed via the command line too, valid values: default (=1T1GEM), 1T4GEM, 1T8GEM
65# example: -v techprofile:1T4GEM
TorstenThiemee0e5bba2020-08-05 11:20:13 +000066${techprofile} default
TorstenThiemee0e5bba2020-08-05 11:20:13 +000067# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000068# example: -v debugmode:True
TorstenThieme401af432020-06-11 15:53:53 +000069${debugmode} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000070# logging flag to enable Collect Logs, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000071# example: -v logging:True
TorstenThieme5e324e42020-07-27 09:36:16 +000072${logging} False
TorstenThieme66c91a82020-10-19 13:37:53 +000073# 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 +000074# example: -v pausebeforecleanup:True
TorstenThiemeb41007d2020-06-22 12:14:12 +000075${pausebeforecleanup} False
TorstenThiemed4f48962020-12-08 12:17:19 +000076# if True some outputs to console are done during running tests e.g. long duration flow test
77# example: -v print2console:True
78${print2console} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000079${data_dir} ../data
80
Hardik Windlassb1bda362021-11-24 11:54:36 +000081# flag to choose the subscriber provisioning command type in ONOS
82# TT often provision a single services for a subscriber (eg: hsia, voip, ...) one after the other.
83# if set to True, command used is "volt-add-subscriber-unitag"
84# if set to False, comand used is "volt-add-subscriber-access"
85${unitag_sub} False
TorstenThieme1619db22020-04-03 12:01:15 +000086
87*** Test Cases ***
88ONU State Test
89 [Documentation] Validates the ONU Go adapter states
TorstenThieme66c91a82020-10-19 13:37:53 +000090 [Tags] sanityOnuGo StateTestOnuGo
TorstenThieme1619db22020-04-03 12:01:15 +000091 [Setup] Run Keywords Start Logging ONUStateTest
92 ... AND Setup Test
93 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000094 FOR ${I} IN RANGE 0 ${num_olts}
95 #get olt serial number
96 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
97 #validate olt states
98 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
99 Enable Device ${olt_device_id}
100 END
TorstenThieme94e4ae42020-05-18 13:01:42 +0000101 ${timeStart} = Get Current Date
102 Set Global Variable ${timeStart}
TorstenThieme1619db22020-04-03 12:01:15 +0000103 Run Keyword If "${testmode}"=="SingleState" Do ONU Single State Test
104 ... ELSE IF "${testmode}"=="Up2State" Do ONU Up To State Test
TorstenThieme94e4ae42020-05-18 13:01:42 +0000105 ... ELSE IF "${testmode}"=="SingleStateTime" Do ONU Single State Test Time
TorstenThieme1619db22020-04-03 12:01:15 +0000106 ... ELSE Fail The testmode (${testmode}) is not valid!
TorstenThieme373adfe2021-12-16 13:03:04 +0000107 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
108 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme3494ceb2021-07-19 09:47:24 +0000109 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme1619db22020-04-03 12:01:15 +0000110 ... AND Stop Logging ONUStateTest
111
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000112Check Loaded Tech Profile
113 [Documentation] Validates the loaded Tech Profile
114 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
115 ... Check will be executed only the reached ONU state is 5 (tech-profile-config-download-success) or higher
TorstenThieme66c91a82020-10-19 13:37:53 +0000116 [Tags] functionalOnuGo CheckTechProfileOnuGo
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000117 [Setup] Start Logging ONUCheckTechProfile
TorstenThieme66c91a82020-10-19 13:37:53 +0000118 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000119 ... Do Check Tech Profile ${INFRA_NAMESPACE}
TorstenThieme5a205ba2020-09-29 08:08:29 +0000120 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000121 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
122 ... AND Run Keyword If ${logging} Collect Logs
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000123 ... AND Stop Logging ONUCheckTechProfile
124
TorstenThieme401af432020-06-11 15:53:53 +0000125Onu Port Check
TorstenThieme87cd6202020-09-09 10:01:28 +0000126 [Documentation] Validates that all the UNI ports show up in ONOS
TorstenThieme00958682020-06-19 11:29:31 +0000127 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000128 [Tags] functionalOnuGo PortTestOnuGo
TorstenThieme401af432020-06-11 15:53:53 +0000129 [Setup] Start Logging ONUPortTest
TorstenThiemed4f48962020-12-08 12:17:19 +0000130 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
131 ... Do Onu Port Check
132 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000133 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
134 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme401af432020-06-11 15:53:53 +0000135 ... AND Stop Logging ONUPortTest
136
TorstenThieme17756ea2020-11-11 14:09:47 +0000137Onu Etcd Data Check
138 [Documentation] Validates ONU data stored in ETCD
139 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
140 [Tags] functionalOnuGo EtcdDataOnuGo
141 [Setup] Start Logging ONUEtcdDataTest
142 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
143 ... Do Onu Etcd Data Check
144 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000145 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
146 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme17756ea2020-11-11 14:09:47 +0000147 ... AND Stop Logging ONUEtcdDataTest
148
TorstenThieme109683b2020-09-24 12:35:41 +0000149Onu Flow Check
150 [Documentation] Validates the onu flows in ONOS and Voltha
151 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
mpagenkoc2e7ba52020-11-12 13:50:57 +0000152 [Tags] functionalOnuGo FlowTestOnuGo
TorstenThieme109683b2020-09-24 12:35:41 +0000153 [Setup] Start Logging ONUFlowTest
TorstenThieme66c91a82020-10-19 13:37:53 +0000154 Run Keyword If '${onu_state}'=='omci-flows-pushed' Do Onu Flow Check
TorstenThieme5a205ba2020-09-29 08:08:29 +0000155 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000156 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
157 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme109683b2020-09-24 12:35:41 +0000158 ... AND Stop Logging ONUFlowTest
159
TorstenThiemee3841a02020-09-23 08:20:43 +0000160Disable Enable Onu Device
161 [Documentation] Disables/enables ONU Device and check states
162 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000163 [Tags] functionalOnuGo DisableEnableOnuGo
TorstenThiemee3841a02020-09-23 08:20:43 +0000164 [Setup] Start Logging DisableEnableONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000165 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
166 ... Do Disable Enable Onu Test
TorstenThieme5a205ba2020-09-29 08:08:29 +0000167 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000168 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
169 ... AND Run Keyword If ${logging} Collect Logs
TorstenThiemee3841a02020-09-23 08:20:43 +0000170 ... AND Stop Logging DisableEnableONUDevice
171
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000172Power Off Power On Onu Device
173 [Documentation] Power off and Power on of all ONU Devices and check state
174 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000175 [Tags] functionalOnuGo PowerOffPowerOnOnuGo
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000176 [Setup] Start Logging PowerOffPowerOnONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000177 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000178 ... Do Power Off Power On Onu Device ${NAMESPACE}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000179 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000180 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
181 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000182 ... AND Stop Logging PowerOffPowerOnONUDevice
183
TorstenThieme1fbe8082020-10-21 13:27:59 +0000184Soft Reboot Onu Device
185 [Documentation] Reboots softly all ONU Devices and check state
186 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
187 [Tags] functionalOnuGo SoftRebootOnuGo
188 [Setup] Start Logging SoftRebootONUDevice
189 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
190 ... Do Soft Reboot Onu Device
191 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme373adfe2021-12-16 13:03:04 +0000192 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
193 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme1fbe8082020-10-21 13:27:59 +0000194 ... AND Stop Logging SoftRebootONUDevice
195
TorstenThiemea8bcec72022-06-13 12:01:30 +0000196Check Onu Model
197 [Documentation] Checks onu model of all ONU Devices
198 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
199 [Tags] functionalOnuGo CheckModelOnuGo
200 [Setup] Start Logging CheckModelOnuGo
201 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
202 ... Do Check Onu Model
203 ... ELSE Pass Execution ${skip_message} skipped
204 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
205 ... AND Run Keyword If ${logging} Collect Logs
206 ... AND Stop Logging CheckModelOnuGo
207
TorstenThieme1619db22020-04-03 12:01:15 +0000208*** Keywords ***
209Setup Suite
210 [Documentation] Set up the test suite
Andrea Campanella82add372021-11-05 12:01:15 +0100211 Start Logging Setup or Teardown Setup-${SUITE NAME}
TorstenThieme87cd6202020-09-09 10:01:28 +0000212 ${LogInfo}= Catenate
213 ... \r\nPassed arguments:
TorstenThieme66c91a82020-10-19 13:37:53 +0000214 ... state2test:${state2test}, testmode:${testmode}, techprofile:${techprofile},
TorstenThieme015d5c02020-09-11 09:53:34 +0000215 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThieme47983692021-06-17 10:43:35 +0000216 ... print2console:${print2console}, kvstoreprefix:${kvstoreprefix}
TorstenThieme87cd6202020-09-09 10:01:28 +0000217 Log ${LogInfo} console=yes
TorstenThieme1619db22020-04-03 12:01:15 +0000218 Common Test Suite Setup
TorstenThieme5a205ba2020-09-29 08:08:29 +0000219 # prepare skip message in yellow for console log
220 ${skip}= Evaluate "\\033[33mSKIP\\033[0m"
221 ${skipped}= Evaluate "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
222 ${skip_message} Catenate ${skipped} | ${skip} |
223 Set Suite Variable ${skip_message}
TorstenThieme440b7c02020-12-18 15:42:57 +0000224 ${all_onu_timeout}= Run Keyword If ${num_all_onus}>4 Calculate Timeout ${timeout}
225 ... ELSE Set Variable ${timeout}
226 Set Suite Variable ${all_onu_timeout}
TorstenThieme1488d772020-09-28 10:52:43 +0000227 ${techprofile}= Set Variable If "${techprofile}"=="1T1GEM" default ${techprofile}
TorstenThieme73850052020-12-10 12:43:28 +0000228 Set Suite Variable ${techprofile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000229 Run Keyword If "${techprofile}"=="default" Log To Console \nTechProfile:default (1T1GEM)
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000230 ... ELSE IF "${techprofile}"=="1T4GEM" Set Tech Profile 1T4GEM ${INFRA_NAMESPACE}
231 ... ELSE IF "${techprofile}"=="1T8GEM" Set Tech Profile 1T8GEM ${INFRA_NAMESPACE}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000232 ... ELSE Fail The TechProfile (${techprofile}) is not valid!
TorstenThieme66c91a82020-10-19 13:37:53 +0000233 # map the passed onu state to reached and make it visible for test suite
234 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}=
235 ... Map State ${state2test}
236 Set Suite Variable ${admin_state}
237 Set Suite Variable ${oper_status}
238 Set Suite Variable ${connect_status}
239 Set Suite Variable ${onu_state_nb}
240 Set Suite Variable ${onu_state}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000241 # delete etcd MIB Template Data
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000242 Delete MIB Template Data ${INFRA_NAMESPACE}
TorstenThieme45071602021-03-16 12:14:37 +0000243 # delete etcd onu data
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000244 Delete ONU Go Adapter ETCD Data namespace=${INFRA_NAMESPACE} validate=True
Andrea Campanella82add372021-11-05 12:01:15 +0100245 Run Keyword If ${logging} Collect Logs
246 Stop Logging Setup or Teardown Setup-${SUITE NAME}
TorstenThieme1619db22020-04-03 12:01:15 +0000247
TorstenThiemeb41007d2020-06-22 12:14:12 +0000248Teardown Suite
249 [Documentation] Replaces the Suite Teardown in utils.robot.
250 ... Cleans up and checks all ONU ports disabled in ONOS.
251 ... Furthermore gives the possibility to pause the execution.
Andrea Campanella82add372021-11-05 12:01:15 +0100252 Start Logging Setup or Teardown Teardown-${SUITE NAME}
TorstenThiemeb41007d2020-06-22 12:14:12 +0000253 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
254 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
TorstenThieme87cd6202020-09-09 10:01:28 +0000255 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
TorstenThiemeb41007d2020-06-22 12:14:12 +0000256 Run Keyword If ${teardown_device} Delete All Devices and Verify
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000257 Wait Until Keyword Succeeds ${timeout} 1s Validate Onu Data In Etcd ${INFRA_NAMESPACE} 0 ${kvstoreprefix}
258 ... without_pm_data=False
TorstenThieme731a7592021-07-01 14:26:54 +0000259 Wait for Ports in ONOS for all OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT} 0 BBSM ${timeout}
Andrea Campanella82add372021-11-05 12:01:15 +0100260 Run Keyword If ${logging} Collect Logs
261 Stop Logging Setup or Teardown Teardown-${SUITE NAME}
TorstenThieme440b7c02020-12-18 15:42:57 +0000262 Close All ONOS SSH Connections
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000263 Remove Tech Profile ${INFRA_NAMESPACE}
TorstenThiemeb41007d2020-06-22 12:14:12 +0000264
TorstenThieme1619db22020-04-03 12:01:15 +0000265Setup Test
266 [Documentation] Pre-test Setup
267 #test for empty device list
268 Test Empty Device List
269 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
Suchitra Vemurib7253a52020-07-14 22:35:17 -0700270 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
TorstenThieme1619db22020-04-03 12:01:15 +0000271 Run Keyword If ${has_dataplane} Sleep 60s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000272 # Create a list of olt ids (logical and device_id)
273 ${olt_ids} Create List
274 FOR ${I} IN RANGE 0 ${num_olts}
275 #create/preprovision device
Andrea Campanella3dcce272021-01-15 16:04:47 +0100276 ${olt_device_id}= Run Keyword If "${list_olts}[${I}][type]" == "${None}"
TorstenThieme44136642021-02-12 13:41:17 +0000277 ... Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport]
278 ... ELSE Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport] ${list_olts}[${I}][type]
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000279 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
280 #validate olt states
281 Wait Until Keyword Succeeds ${timeout} 5s
Hardik Windlass8b446492021-06-10 06:25:23 +0000282 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id} by_dev_id=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000283 Sleep 5s
284 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
285 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
286 ... of_id ${of_id} sn ${olt_serial_number}
287 Append To List ${olt_ids} ${olt}
288 END
289 Set Global Variable ${olt_ids}
TorstenThieme1619db22020-04-03 12:01:15 +0000290
TorstenThieme1619db22020-04-03 12:01:15 +0000291Do ONU Up To State Test
292 [Documentation] This keyword performs Up2State Test
293 ... All states up to the passed have to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000294 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000295 ${src}= Set Variable ${hosts.src[${I}]}
296 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThieme66c91a82020-10-19 13:37:53 +0000297 Run Keyword If ${onu_state_nb}>=1
TorstenThiemed4f48962020-12-08 12:17:19 +0000298 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000299 ... Validate Device ENABLED ACTIVATING REACHABLE
300 ... ${src['onu']} onu=True onu_reason=activating-onu
TorstenThieme66c91a82020-10-19 13:37:53 +0000301 Run Keyword If ${onu_state_nb}>=2
TorstenThiemed4f48962020-12-08 12:17:19 +0000302 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000303 ... Validate Device ENABLED ACTIVATING REACHABLE
304 ... ${src['onu']} onu=True onu_reason=starting-openomci
TorstenThieme66c91a82020-10-19 13:37:53 +0000305 Run Keyword If ${onu_state_nb}>=3
TorstenThiemed4f48962020-12-08 12:17:19 +0000306 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000307 ... Validate Device ENABLED ACTIVATING REACHABLE
308 ... ${src['onu']} onu=True onu_reason=discovery-mibsync-complete
TorstenThieme66c91a82020-10-19 13:37:53 +0000309 Run Keyword If ${onu_state_nb}>=4
TorstenThiemed4f48962020-12-08 12:17:19 +0000310 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000311 ... Validate Device ENABLED ACTIVE REACHABLE
312 ... ${src['onu']} onu=True onu_reason=initial-mib-downloaded
TorstenThieme66c91a82020-10-19 13:37:53 +0000313 Run Keyword If ${onu_state_nb}>=5
TorstenThiemed4f48962020-12-08 12:17:19 +0000314 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000315 ... Validate Device ENABLED ACTIVE REACHABLE
316 ... ${src['onu']} onu=True onu_reason=tech-profile-config-download-success
TorstenThieme66c91a82020-10-19 13:37:53 +0000317 Run Keyword If ${onu_state_nb}>=6
TorstenThiemed4f48962020-12-08 12:17:19 +0000318 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000319 ... Validate Device ENABLED ACTIVE REACHABLE
320 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
321 END
322
323Do ONU Single State Test
324 [Documentation] This keyword performs SingleState Test
325 ... Only the passed state has to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000326 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000327 ${src}= Set Variable ${hosts.src[${I}]}
328 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThiemed4f48962020-12-08 12:17:19 +0000329 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme015d5c02020-09-11 09:53:34 +0000330 ... Validate Device ${admin_state} ${oper_status} ${connect_status}
331 ... ${src['onu']} onu=True onu_reason=${onu_state}
TorstenThieme1619db22020-04-03 12:01:15 +0000332 END
333
TorstenThieme94e4ae42020-05-18 13:01:42 +0000334Do ONU Single State Test Time
335 [Documentation] This keyword performs SingleState Test with calculate running time
336 ... Only the passed state has to be checked and the duration each single onu adapter needed
337 ... will be calculated and printed out
TorstenThieme17becfc2020-10-08 09:46:27 +0000338 #${ListfinishedONUs} Create List
339 #Set Global Variable ${ListfinishedONUs}
TorstenThieme94e4ae42020-05-18 13:01:42 +0000340 Create File ONU_Startup_Time.txt This file contains the startup times of all ONUs.
341 ${list_onus} Create List
TorstenThieme401af432020-06-11 15:53:53 +0000342 Build ONU SN List ${list_onus}
TorstenThiemed4f48962020-12-08 12:17:19 +0000343 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme9949b172020-06-16 10:00:15 +0000344 ... Validate ONU Devices MIB State With Duration
TorstenThiemed4f48962020-12-08 12:17:19 +0000345 ... ${onu_state} ${list_onus} ${timeStart} print2console=${print2console}
TorstenThieme401af432020-06-11 15:53:53 +0000346 ... output_file=ONU_Startup_Time.txt
TorstenThieme94e4ae42020-05-18 13:01:42 +0000347
TorstenThieme1619db22020-04-03 12:01:15 +0000348Do Onu Port Check
TorstenThieme00958682020-06-19 11:29:31 +0000349 [Documentation] Check that all the UNI ports show up in ONOS
TorstenThieme731a7592021-07-01 14:26:54 +0000350 Wait for Ports in ONOS for all OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${num_all_onus} BBSM ${timeout}
TorstenThieme9949b172020-06-16 10:00:15 +0000351
TorstenThieme17756ea2020-11-11 14:09:47 +0000352Do Onu Etcd Data Check
353 [Documentation] Check Onu data stored in etcd
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000354 Validate Onu Data In Etcd namespace=${INFRA_NAMESPACE} defaultkvstoreprefix=${kvstoreprefix}
TorstenThieme17756ea2020-11-11 14:09:47 +0000355
TorstenThieme109683b2020-09-24 12:35:41 +0000356Do Onu Flow Check
TorstenThieme52ef8392020-11-10 13:42:26 +0000357 [Documentation] This keyword iterate all OLTs and performs Do Onu Flow Checks Per OLT
358 # Check and store vlan rules
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000359 ${firstvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd ${INFRA_NAMESPACE}
TorstenThieme3385cdc2021-02-04 13:50:50 +0000360 ... defaultkvstoreprefix=${kvstoreprefix}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000361 FOR ${J} IN RANGE 0 ${num_olts}
362 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000363 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
364 ... ${olt_serial_number}
TorstenThiemea7315f12021-07-23 11:56:34 +0000365 Do Onu Subscriber Add Per OLT ${of_id} ${olt_serial_number} ${print2console}
TorstenThiemed4f48962020-12-08 12:17:19 +0000366 END
367 FOR ${J} IN RANGE 0 ${num_olts}
368 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
TorstenThiemed4f48962020-12-08 12:17:19 +0000369 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
370 ... ${olt_serial_number}
371 Set Global Variable ${of_id}
TorstenThiemedda37652021-11-11 16:22:05 +0000372 ${nni_port}= Wait Until Keyword Succeeds ${timeout} 2s Get NNI Port in ONOS ${of_id}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000373 # Verify Default Meter in ONOS (valid only for ATT)
TorstenThiemea7315f12021-07-23 11:56:34 +0000374 Do Onu Flow Check Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${print2console}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000375 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000376 #log flows for verification
TorstenThieme4e2168e2021-06-22 14:01:47 +0000377 ${flowsresult}= Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s
TorstenThieme52ef8392020-11-10 13:42:26 +0000378 log ${flowsresult}
379 #check for previous state is kept (normally omci-flows-pushed)
380 Sleep 10s
TorstenThieme440b7c02020-12-18 15:42:57 +0000381 Run Keyword And Continue On Failure Current State Test All Onus ${state2test}
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000382 ${secondvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd namespace=${INFRA_NAMESPACE}
383 ... nbofcookieslice=3 prevvlanrules=${firstvlanrules} defaultkvstoreprefix=${kvstoreprefix}
TorstenThieme52ef8392020-11-10 13:42:26 +0000384 FOR ${J} IN RANGE 0 ${num_olts}
385 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
TorstenThieme52ef8392020-11-10 13:42:26 +0000386 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
387 ... ${olt_serial_number}
TorstenThiemea7315f12021-07-23 11:56:34 +0000388 Do Onu Subscriber Remove Per OLT ${of_id} ${olt_serial_number} ${print2console}
TorstenThieme52ef8392020-11-10 13:42:26 +0000389 END
390 #check for previous state is kept (normally omci-flows-pushed)
391 Sleep 10s
TorstenThiemed4f48962020-12-08 12:17:19 +0000392 Run Keyword If ${print2console} Log \r\nStart State Test All Onus. console=yes
TorstenThieme440b7c02020-12-18 15:42:57 +0000393 Run Keyword And Continue On Failure Current State Test All Onus ${state2test}
TorstenThiemed4f48962020-12-08 12:17:19 +0000394 Run Keyword If ${print2console} Log \r\nFinished State Test All Onus. console=yes
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000395 Run Keyword And Continue On Failure Validate Vlan Rules In Etcd namespace=${INFRA_NAMESPACE}
396 ... prevvlanrules=${firstvlanrules}
TorstenThieme3385cdc2021-02-04 13:50:50 +0000397 ... setvidequal=True defaultkvstoreprefix=${kvstoreprefix}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000398
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000399Do Check Tech Profile
400 [Documentation] This keyword checks the loaded TechProfile
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000401 [Arguments] ${namespace}=default
Andrea Campanella60dde302020-09-09 18:42:56 +0200402 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000403 ${commandget} Catenate
TorstenThieme2980d8c2021-06-24 10:11:48 +0000404 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000405 ${result}= Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000406 ${num_gem_ports}= Set Variable 1
407 ${num_gem_ports}= Set Variable If
408 ... "${techprofile}"=="default" 1
409 ... "${techprofile}"=="1T4GEM" 4
410 ... "${techprofile}"=="1T8GEM" 8
TorstenThieme9362c732021-06-25 08:25:51 +0000411 ${length}= Get Length ${result}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000412 @{resultList} Split String ${result} separator=,
413 ${num_of_count_matches}= Get Match Count ${resultList} "num_gem_ports": ${num_gem_ports}
414 ... whitespace_insensitive=True
TorstenThieme9362c732021-06-25 08:25:51 +0000415 # In case of default tech profile (1T1GEM) no file have to exist, so no entry will be found, but in case of a file is
416 # available corresponding entry has to be found!
417 ${num_of_expected_matches}= Set Variable If "${techprofile}"!="default" or ${length}>0 1 0
TorstenThiemea0221942020-12-09 11:35:03 +0000418 Should Be Equal As Integers ${num_of_expected_matches} ${num_of_count_matches}
TorstenThieme2980d8c2021-06-24 10:11:48 +0000419 ... TechProfile (${TechProfile}) not loaded correctly: found(${num_of_count_matches}) expected(${num_of_expected_matches})
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000420 Validate Resource Instances Used Gem Ports ${num_gem_ports} namespace=${namespace}
421 ... defaultkvstoreprefix=${kvstoreprefix}
TorstenThieme015d5c02020-09-11 09:53:34 +0000422
423Do Disable Enable Onu Test
424 [Documentation] This keyword disables/enables all onus and checks the states.
TorstenThieme1fbe8082020-10-21 13:27:59 +0000425 [Arguments] ${state2check}=${state2test} ${checkstatebeforedisable}=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000426 ... ${state2checkafterdisable}=tech-profile-config-delete-success
TorstenThieme440b7c02020-12-18 15:42:57 +0000427 Run Keyword If ${checkstatebeforedisable} Current State Test All Onus ${state2check}
428 Disable Onu Device
TorstenThiemed4f48962020-12-08 12:17:19 +0000429 ${alternative_onu_reason}= Set Variable If
430 ... '${state2checkafterdisable}'=='tech-profile-config-delete-success' omci-flows-deleted
431 ... '${state2checkafterdisable}'=='omci-admin-lock' tech-profile-config-delete-success ${EMPTY}
TorstenThiemec3c23232021-01-13 13:06:31 +0000432 ${alternativeonustates}= Create List ${alternative_onu_reason}
433 Current State Test All Onus ${state2checkafterdisable} alternativeonustate=${alternativeonustates}
TorstenThieme17becfc2020-10-08 09:46:27 +0000434 Log Ports
435 #check no port is enabled in ONOS
TorstenThieme731a7592021-07-01 14:26:54 +0000436 Wait for Ports in ONOS for all OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT} 0 BBSM
TorstenThieme440b7c02020-12-18 15:42:57 +0000437 Enable Onu Device
438 Current State Test All Onus ${state2check}
TorstenThieme17becfc2020-10-08 09:46:27 +0000439 Log Ports onlyenabled=True
440 #check that all the UNI ports show up in ONOS again
TorstenThieme731a7592021-07-01 14:26:54 +0000441 Wait for Ports in ONOS for all OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${num_all_onus} BBSM
TorstenThieme015d5c02020-09-11 09:53:34 +0000442
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000443Do Power Off Power On Onu Device
444 [Documentation] This keyword power off/on all onus and checks the states.
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000445 [Arguments] ${namespace}=voltha
TorstenThieme440b7c02020-12-18 15:42:57 +0000446 Power Off ONU Device ${namespace}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000447 Sleep 5s
Andrea Campanellaa9b59b42021-09-21 16:13:17 +0000448 ${alternativeonustates}= Create List omci-flows-deleted
449 Current State Test All Onus tech-profile-config-delete-success
TorstenThiemec3c23232021-01-13 13:06:31 +0000450 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000451 Power On ONU Device ${namespace}
452 Current State Test All Onus ${state2test}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000453
TorstenThieme1fbe8082020-10-21 13:27:59 +0000454Do Soft Reboot Onu Device
455 [Documentation] This keyword reboots softly all onus and checks the states.
TorstenThiemef78a9d82021-03-05 13:42:09 +0000456 ${device_list}= Set Variable ${EMPTY}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000457 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1fbe8082020-10-21 13:27:59 +0000458 ${src}= Set Variable ${hosts.src[${I}]}
459 ${onu_device_id}= Get Device ID From SN ${src['onu']}
TorstenThiemef78a9d82021-03-05 13:42:09 +0000460 ${device_list}= Catenate ${device_list} ${onu_device_id}
TorstenThieme1fbe8082020-10-21 13:27:59 +0000461 END
TorstenThiemef78a9d82021-03-05 13:42:09 +0000462 Reboot ONU ${device_list} False
TorstenThieme3d8dd392021-07-29 11:17:50 +0000463 ${alternativeonustates}= Create List stopping-openomci rebooting
TorstenThieme6cc43762021-03-03 10:20:16 +0000464 Current State Test All Onus omci-flows-deleted
Matteo Scandoloc14525a2021-02-02 08:34:43 -0800465 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=${alternativeonustates}
TorstenThieme73850052020-12-10 12:43:28 +0000466 Sleep 5s
TorstenThieme6cc43762021-03-03 10:20:16 +0000467 Current State Test All Onus omci-flows-pushed
TorstenThiemed4f48962020-12-08 12:17:19 +0000468 Do Onu Port Check
TorstenThiemea8bcec72022-06-13 12:01:30 +0000469
470Do Check Onu Model
471 [Documentation] This keyword checks onu model of all onus.
472 ${list_onus} Create List
473 Build ONU SN List ${list_onus}
474 ${onu_model}= Set Variable v0.0.1
475 ${onu_vendor}= Set Variable BBSM
476 ${onu_vendor_id}= Set Variable BBSM
477 Validate ONU Model ${list_onus} ${onu_model} ${onu_vendor} ${onu_vendor_id}