blob: e3593b58462c7e9c43bab5744a5cc7a3714da38d [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
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 ***
TorstenThieme440b7c02020-12-18 15:42:57 +000037${namespace} voltha
TorstenThiemed4f48962020-12-08 12:17:19 +000038${timeout} 60s
TorstenThieme1619db22020-04-03 12:01:15 +000039${of_id} 0
40${logical_id} 0
41${has_dataplane} True
42${external_libs} True
43${teardown_device} True
44${scripts} ../../scripts
45# Per-test logging on failure is turned off by default; set this variable to enable
46${container_log_dir} ${None}
TorstenThiemee0e5bba2020-08-05 11:20:13 +000047# state to test variable, can be passed via the command line too, valid values: 1-6
48# 1 -> activating-onu
49# 2 -> starting-openomci
50# 3 -> discovery-mibsync-complete
51# 4 -> initial-mib-downloaded
52# 5 -> tech-profile-config-download-success
53# 6 -> omci-flows-pushed
TorstenThieme87cd6202020-09-09 10:01:28 +000054# example: -v state2test:5
TorstenThieme66c91a82020-10-19 13:37:53 +000055# example: -v state2test:omci-flows-pushed
TorstenThieme1619db22020-04-03 12:01:15 +000056${state2test} 6
TorstenThiemee0e5bba2020-08-05 11:20:13 +000057# test mode variable, can be passed via the command line too, valid values: SingleState, Up2State, SingleStateTime
TorstenThieme87cd6202020-09-09 10:01:28 +000058# example: -v testmode:SingleStateTime
TorstenThieme1619db22020-04-03 12:01:15 +000059${testmode} SingleState
TorstenThieme87cd6202020-09-09 10:01:28 +000060# used tech profile, can be passed via the command line too, valid values: default (=1T1GEM), 1T4GEM, 1T8GEM
61# example: -v techprofile:1T4GEM
TorstenThiemee0e5bba2020-08-05 11:20:13 +000062${techprofile} default
TorstenThiemee0e5bba2020-08-05 11:20:13 +000063# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000064# example: -v debugmode:True
TorstenThieme401af432020-06-11 15:53:53 +000065${debugmode} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000066# logging flag to enable Collect Logs, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000067# example: -v logging:True
TorstenThieme5e324e42020-07-27 09:36:16 +000068${logging} False
TorstenThieme66c91a82020-10-19 13:37:53 +000069# 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 +000070# example: -v pausebeforecleanup:True
TorstenThiemeb41007d2020-06-22 12:14:12 +000071${pausebeforecleanup} False
TorstenThiemed4f48962020-12-08 12:17:19 +000072# if True some outputs to console are done during running tests e.g. long duration flow test
73# example: -v print2console:True
74${print2console} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000075${data_dir} ../data
76
TorstenThieme1619db22020-04-03 12:01:15 +000077
78*** Test Cases ***
79ONU State Test
80 [Documentation] Validates the ONU Go adapter states
TorstenThieme66c91a82020-10-19 13:37:53 +000081 [Tags] sanityOnuGo StateTestOnuGo
TorstenThieme1619db22020-04-03 12:01:15 +000082 [Setup] Run Keywords Start Logging ONUStateTest
83 ... AND Setup Test
84 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000085 FOR ${I} IN RANGE 0 ${num_olts}
86 #get olt serial number
87 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
88 #validate olt states
89 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
90 Enable Device ${olt_device_id}
91 END
TorstenThieme94e4ae42020-05-18 13:01:42 +000092 ${timeStart} = Get Current Date
93 Set Global Variable ${timeStart}
TorstenThieme1619db22020-04-03 12:01:15 +000094 Run Keyword If "${testmode}"=="SingleState" Do ONU Single State Test
95 ... ELSE IF "${testmode}"=="Up2State" Do ONU Up To State Test
TorstenThieme94e4ae42020-05-18 13:01:42 +000096 ... ELSE IF "${testmode}"=="SingleStateTime" Do ONU Single State Test Time
TorstenThieme1619db22020-04-03 12:01:15 +000097 ... ELSE Fail The testmode (${testmode}) is not valid!
TorstenThieme5e324e42020-07-27 09:36:16 +000098 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme1619db22020-04-03 12:01:15 +000099 ... AND Stop Logging ONUStateTest
100
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000101Check Loaded Tech Profile
102 [Documentation] Validates the loaded Tech Profile
103 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
104 ... Check will be executed only the reached ONU state is 5 (tech-profile-config-download-success) or higher
TorstenThieme66c91a82020-10-19 13:37:53 +0000105 [Tags] functionalOnuGo CheckTechProfileOnuGo
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000106 [Setup] Start Logging ONUCheckTechProfile
TorstenThieme66c91a82020-10-19 13:37:53 +0000107 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
108 ... Do Check Tech Profile
TorstenThieme5a205ba2020-09-29 08:08:29 +0000109 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000110 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
111 ... AND Stop Logging ONUCheckTechProfile
112
TorstenThieme401af432020-06-11 15:53:53 +0000113Onu Port Check
TorstenThieme87cd6202020-09-09 10:01:28 +0000114 [Documentation] Validates that all the UNI ports show up in ONOS
TorstenThieme00958682020-06-19 11:29:31 +0000115 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000116 [Tags] functionalOnuGo PortTestOnuGo
TorstenThieme401af432020-06-11 15:53:53 +0000117 [Setup] Start Logging ONUPortTest
TorstenThiemed4f48962020-12-08 12:17:19 +0000118 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
119 ... Do Onu Port Check
120 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme5e324e42020-07-27 09:36:16 +0000121 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme401af432020-06-11 15:53:53 +0000122 ... AND Stop Logging ONUPortTest
123
TorstenThieme17756ea2020-11-11 14:09:47 +0000124Onu Etcd Data Check
125 [Documentation] Validates ONU data stored in ETCD
126 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
127 [Tags] functionalOnuGo EtcdDataOnuGo
128 [Setup] Start Logging ONUEtcdDataTest
129 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
130 ... Do Onu Etcd Data Check
131 ... ELSE Pass Execution ${skip_message} skipped
132 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
133 ... AND Stop Logging ONUEtcdDataTest
134
TorstenThieme109683b2020-09-24 12:35:41 +0000135Onu Flow Check
136 [Documentation] Validates the onu flows in ONOS and Voltha
137 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
mpagenkoc2e7ba52020-11-12 13:50:57 +0000138 [Tags] functionalOnuGo FlowTestOnuGo
TorstenThieme109683b2020-09-24 12:35:41 +0000139 [Setup] Start Logging ONUFlowTest
TorstenThieme66c91a82020-10-19 13:37:53 +0000140 Run Keyword If '${onu_state}'=='omci-flows-pushed' Do Onu Flow Check
TorstenThieme5a205ba2020-09-29 08:08:29 +0000141 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme109683b2020-09-24 12:35:41 +0000142 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
143 ... AND Stop Logging ONUFlowTest
144
TorstenThiemee3841a02020-09-23 08:20:43 +0000145Disable Enable Onu Device
146 [Documentation] Disables/enables ONU Device and check states
147 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000148 [Tags] functionalOnuGo DisableEnableOnuGo
TorstenThiemee3841a02020-09-23 08:20:43 +0000149 [Setup] Start Logging DisableEnableONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000150 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
151 ... Do Disable Enable Onu Test
TorstenThieme5a205ba2020-09-29 08:08:29 +0000152 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee3841a02020-09-23 08:20:43 +0000153 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
154 ... AND Stop Logging DisableEnableONUDevice
155
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000156Power Off Power On Onu Device
157 [Documentation] Power off and Power on of all ONU Devices and check state
158 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000159 [Tags] functionalOnuGo PowerOffPowerOnOnuGo
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000160 [Setup] Start Logging PowerOffPowerOnONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000161 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
162 ... Do Power Off Power On Onu Device
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000163 ... ELSE Pass Execution ${skip_message} skipped
164 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
165 ... AND Stop Logging PowerOffPowerOnONUDevice
166
TorstenThieme1fbe8082020-10-21 13:27:59 +0000167Soft Reboot Onu Device
168 [Documentation] Reboots softly all ONU Devices and check state
169 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
170 [Tags] functionalOnuGo SoftRebootOnuGo
171 [Setup] Start Logging SoftRebootONUDevice
172 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
173 ... Do Soft Reboot Onu Device
174 ... ELSE Pass Execution ${skip_message} skipped
175 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
176 ... AND Stop Logging SoftRebootONUDevice
177
TorstenThieme1619db22020-04-03 12:01:15 +0000178*** Keywords ***
179Setup Suite
180 [Documentation] Set up the test suite
TorstenThieme87cd6202020-09-09 10:01:28 +0000181 ${LogInfo}= Catenate
182 ... \r\nPassed arguments:
TorstenThieme66c91a82020-10-19 13:37:53 +0000183 ... state2test:${state2test}, testmode:${testmode}, techprofile:${techprofile},
TorstenThieme015d5c02020-09-11 09:53:34 +0000184 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThiemed4f48962020-12-08 12:17:19 +0000185 ... print2console:${print2console}
TorstenThieme87cd6202020-09-09 10:01:28 +0000186 Log ${LogInfo} console=yes
TorstenThieme1619db22020-04-03 12:01:15 +0000187 Common Test Suite Setup
TorstenThieme5a205ba2020-09-29 08:08:29 +0000188 # prepare skip message in yellow for console log
189 ${skip}= Evaluate "\\033[33mSKIP\\033[0m"
190 ${skipped}= Evaluate "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
191 ${skip_message} Catenate ${skipped} | ${skip} |
192 Set Suite Variable ${skip_message}
TorstenThieme440b7c02020-12-18 15:42:57 +0000193 ${all_onu_timeout}= Run Keyword If ${num_all_onus}>4 Calculate Timeout ${timeout}
194 ... ELSE Set Variable ${timeout}
195 Set Suite Variable ${all_onu_timeout}
TorstenThieme1488d772020-09-28 10:52:43 +0000196 ${techprofile}= Set Variable If "${techprofile}"=="1T1GEM" default ${techprofile}
TorstenThieme73850052020-12-10 12:43:28 +0000197 Set Suite Variable ${techprofile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000198 Run Keyword If "${techprofile}"=="default" Log To Console \nTechProfile:default (1T1GEM)
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000199 ... ELSE IF "${techprofile}"=="1T4GEM" Set Tech Profile 1T4GEM
200 ... ELSE IF "${techprofile}"=="1T8GEM" Set Tech Profile 1T8GEM
201 ... ELSE Fail The TechProfile (${techprofile}) is not valid!
202 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
203 Set Suite Variable ${onos_ssh_connection}
TorstenThieme66c91a82020-10-19 13:37:53 +0000204 # map the passed onu state to reached and make it visible for test suite
205 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}=
206 ... Map State ${state2test}
207 Set Suite Variable ${admin_state}
208 Set Suite Variable ${oper_status}
209 Set Suite Variable ${connect_status}
210 Set Suite Variable ${onu_state_nb}
211 Set Suite Variable ${onu_state}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000212 # delete etcd MIB Template Data
213 Delete MIB Template Data
TorstenThieme1619db22020-04-03 12:01:15 +0000214
TorstenThiemeb41007d2020-06-22 12:14:12 +0000215Teardown Suite
216 [Documentation] Replaces the Suite Teardown in utils.robot.
217 ... Cleans up and checks all ONU ports disabled in ONOS.
218 ... Furthermore gives the possibility to pause the execution.
219 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
220 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
TorstenThieme87cd6202020-09-09 10:01:28 +0000221 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
TorstenThiemeb41007d2020-06-22 12:14:12 +0000222 Run Keyword If ${teardown_device} Delete All Devices and Verify
TorstenThiemefcafba02020-11-11 16:18:50 +0000223 Validate Onu Data In Etcd 0
TorstenThiemed4f48962020-12-08 12:17:19 +0000224 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM ${timeout}
TorstenThieme440b7c02020-12-18 15:42:57 +0000225 Close All ONOS SSH Connections
TorstenThieme87cd6202020-09-09 10:01:28 +0000226 Remove Tech Profile
TorstenThiemeb41007d2020-06-22 12:14:12 +0000227
TorstenThieme1619db22020-04-03 12:01:15 +0000228Setup Test
229 [Documentation] Pre-test Setup
230 #test for empty device list
231 Test Empty Device List
232 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
Suchitra Vemurib7253a52020-07-14 22:35:17 -0700233 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
TorstenThieme1619db22020-04-03 12:01:15 +0000234 Run Keyword If ${has_dataplane} Sleep 60s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000235 # Create a list of olt ids (logical and device_id)
236 ${olt_ids} Create List
237 FOR ${I} IN RANGE 0 ${num_olts}
238 #create/preprovision device
Andrea Campanella3dcce272021-01-15 16:04:47 +0100239 ${olt_device_id}= Run Keyword If "${list_olts}[${I}][type]" == "${None}"
240 ... Create Device ${list_olts}[${I}][ip] ${OLT_PORT}
241 ... ELSE Create Device ${list_olts}[${I}][ip] ${OLT_PORT} ${list_olts}[${I}][type]
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000242 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
243 #validate olt states
244 Wait Until Keyword Succeeds ${timeout} 5s
245 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id}
246 Sleep 5s
247 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
248 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
249 ... of_id ${of_id} sn ${olt_serial_number}
250 Append To List ${olt_ids} ${olt}
251 END
252 Set Global Variable ${olt_ids}
TorstenThieme1619db22020-04-03 12:01:15 +0000253
TorstenThieme1619db22020-04-03 12:01:15 +0000254Do ONU Up To State Test
255 [Documentation] This keyword performs Up2State Test
256 ... All states up to the passed have to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000257 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000258 ${src}= Set Variable ${hosts.src[${I}]}
259 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThieme66c91a82020-10-19 13:37:53 +0000260 Run Keyword If ${onu_state_nb}>=1
TorstenThiemed4f48962020-12-08 12:17:19 +0000261 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000262 ... Validate Device ENABLED ACTIVATING REACHABLE
263 ... ${src['onu']} onu=True onu_reason=activating-onu
TorstenThieme66c91a82020-10-19 13:37:53 +0000264 Run Keyword If ${onu_state_nb}>=2
TorstenThiemed4f48962020-12-08 12:17:19 +0000265 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000266 ... Validate Device ENABLED ACTIVATING REACHABLE
267 ... ${src['onu']} onu=True onu_reason=starting-openomci
TorstenThieme66c91a82020-10-19 13:37:53 +0000268 Run Keyword If ${onu_state_nb}>=3
TorstenThiemed4f48962020-12-08 12:17:19 +0000269 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000270 ... Validate Device ENABLED ACTIVATING REACHABLE
271 ... ${src['onu']} onu=True onu_reason=discovery-mibsync-complete
TorstenThieme66c91a82020-10-19 13:37:53 +0000272 Run Keyword If ${onu_state_nb}>=4
TorstenThiemed4f48962020-12-08 12:17:19 +0000273 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000274 ... Validate Device ENABLED ACTIVE REACHABLE
275 ... ${src['onu']} onu=True onu_reason=initial-mib-downloaded
TorstenThieme66c91a82020-10-19 13:37:53 +0000276 Run Keyword If ${onu_state_nb}>=5
TorstenThiemed4f48962020-12-08 12:17:19 +0000277 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme1619db22020-04-03 12:01:15 +0000278 ... Validate Device ENABLED ACTIVE REACHABLE
279 ... ${src['onu']} onu=True onu_reason=tech-profile-config-download-success
TorstenThieme66c91a82020-10-19 13:37:53 +0000280 Run Keyword If ${onu_state_nb}>=6
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 ACTIVE REACHABLE
283 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
284 END
285
286Do ONU Single State Test
287 [Documentation] This keyword performs SingleState Test
288 ... Only the passed state has to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000289 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000290 ${src}= Set Variable ${hosts.src[${I}]}
291 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThiemed4f48962020-12-08 12:17:19 +0000292 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme015d5c02020-09-11 09:53:34 +0000293 ... Validate Device ${admin_state} ${oper_status} ${connect_status}
294 ... ${src['onu']} onu=True onu_reason=${onu_state}
TorstenThieme1619db22020-04-03 12:01:15 +0000295 END
296
TorstenThieme94e4ae42020-05-18 13:01:42 +0000297Do ONU Single State Test Time
298 [Documentation] This keyword performs SingleState Test with calculate running time
299 ... Only the passed state has to be checked and the duration each single onu adapter needed
300 ... will be calculated and printed out
TorstenThieme17becfc2020-10-08 09:46:27 +0000301 #${ListfinishedONUs} Create List
302 #Set Global Variable ${ListfinishedONUs}
TorstenThieme94e4ae42020-05-18 13:01:42 +0000303 Create File ONU_Startup_Time.txt This file contains the startup times of all ONUs.
304 ${list_onus} Create List
TorstenThieme401af432020-06-11 15:53:53 +0000305 Build ONU SN List ${list_onus}
TorstenThiemed4f48962020-12-08 12:17:19 +0000306 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${all_onu_timeout} 50ms
TorstenThieme9949b172020-06-16 10:00:15 +0000307 ... Validate ONU Devices MIB State With Duration
TorstenThiemed4f48962020-12-08 12:17:19 +0000308 ... ${onu_state} ${list_onus} ${timeStart} print2console=${print2console}
TorstenThieme401af432020-06-11 15:53:53 +0000309 ... output_file=ONU_Startup_Time.txt
TorstenThieme94e4ae42020-05-18 13:01:42 +0000310
TorstenThieme1619db22020-04-03 12:01:15 +0000311Do Onu Port Check
TorstenThieme00958682020-06-19 11:29:31 +0000312 [Documentation] Check that all the UNI ports show up in ONOS
TorstenThiemefe7099e2021-01-29 08:41:04 +0000313 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} ${num_all_onus} BBSM ${timeout}
TorstenThieme9949b172020-06-16 10:00:15 +0000314
TorstenThieme17756ea2020-11-11 14:09:47 +0000315Do Onu Etcd Data Check
316 [Documentation] Check Onu data stored in etcd
317 Validate Onu Data In Etcd
318
TorstenThieme109683b2020-09-24 12:35:41 +0000319Do Onu Flow Check
TorstenThieme52ef8392020-11-10 13:42:26 +0000320 [Documentation] This keyword iterate all OLTs and performs Do Onu Flow Checks Per OLT
321 # Check and store vlan rules
322 ${firstvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000323 FOR ${J} IN RANGE 0 ${num_olts}
324 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
325 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
326 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
327 ... ${olt_serial_number}
328 Set Global Variable ${of_id}
TorstenThiemed4f48962020-12-08 12:17:19 +0000329 # Verify Default Meter in ONOS (valid only for ATT)
330 Do Onu Subscriber Add Per OLT ${of_id} ${olt_serial_number} ${onu_count}
331 END
332 FOR ${J} IN RANGE 0 ${num_olts}
333 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
334 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
335 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
336 ... ${olt_serial_number}
337 Set Global Variable ${of_id}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000338 ${nni_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
339 ... Get NNI Port in ONOS ${of_id}
340 Set Global Variable ${nni_port}
341 # Verify Default Meter in ONOS (valid only for ATT)
TorstenThiemed4f48962020-12-08 12:17:19 +0000342 Do Onu Flow Check Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000343 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000344 #log flows for verification
345 ${flowsresult}= Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s
346 log ${flowsresult}
347 #check for previous state is kept (normally omci-flows-pushed)
348 Sleep 10s
TorstenThieme440b7c02020-12-18 15:42:57 +0000349 Run Keyword And Continue On Failure Current State Test All Onus ${state2test}
TorstenThieme52ef8392020-11-10 13:42:26 +0000350 ${secondvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd nbofcookieslice=3
351 ... prevvlanrules=${firstvlanrules}
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}
358 ${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)
362 Do Onu Subscriber Remove Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
363 END
364 #check for previous state is kept (normally omci-flows-pushed)
365 Sleep 10s
TorstenThiemed4f48962020-12-08 12:17:19 +0000366 Run Keyword If ${print2console} Log \r\nStart State Test All Onus. console=yes
TorstenThieme440b7c02020-12-18 15:42:57 +0000367 Run Keyword And Continue On Failure Current State Test All Onus ${state2test}
TorstenThiemed4f48962020-12-08 12:17:19 +0000368 Run Keyword If ${print2console} Log \r\nFinished State Test All Onus. console=yes
TorstenThieme52ef8392020-11-10 13:42:26 +0000369 Run Keyword And Continue On Failure Validate Vlan Rules In Etcd prevvlanrules=${firstvlanrules}
370 ... setvidequal=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000371
TorstenThiemed4f48962020-12-08 12:17:19 +0000372Do Onu Subscriber Add Per OLT
373 [Documentation] Add Subscriber per OLT
374 [Arguments] ${of_id} ${olt_serial_number} ${num_onus}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000375 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme109683b2020-09-24 12:35:41 +0000376 ${src}= Set Variable ${hosts.src[${I}]}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000377 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
TorstenThieme109683b2020-09-24 12:35:41 +0000378 ${onu_device_id}= Get Device ID From SN ${src['onu']}
379 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
380 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
381 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
382 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
383 ... volt-add-subscriber-access ${of_id} ${onu_port}
TorstenThiemed4f48962020-12-08 12:17:19 +0000384 Run Keyword If ${print2console} Log \r\n[${I}] volt-add-subscriber-access ${of_id} ${onu_port}.
385 ... console=yes
386 END
387
388Do Onu Flow Check Per OLT
389 [Documentation] Checks all ONU flows show up in ONOS and Voltha
390 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
391 FOR ${I} IN RANGE 0 ${num_all_onus}
392 ${src}= Set Variable ${hosts.src[${I}]}
393 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
394 ${onu_device_id}= Get Device ID From SN ${src['onu']}
395 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
396 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
TorstenThieme109683b2020-09-24 12:35:41 +0000397 # Verify subscriber access flows are added for the ONU port
398 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
399 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
400 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
TorstenThiemed4f48962020-12-08 12:17:19 +0000401 ${logoutput} Catenate \r\n[${I}] Verify Subscriber Access Flows Added For
402 ... ONU ${of_id} ${onu_port} ${src['c_tag']} ${src['s_tag']}.
403 Run Keyword If ${print2console} Log ${logoutput} console=yes
TorstenThieme109683b2020-09-24 12:35:41 +0000404 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000405
406Do Onu Subscriber Remove Per OLT
407 [Documentation] Removes per OLT subscribers in ONOS and Voltha
408 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
409 FOR ${I} IN RANGE 0 ${num_all_onus}
410 ${src}= Set Variable ${hosts.src[${I}]}
411 ${dst}= Set Variable ${hosts.dst[${I}]}
412 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
413 ${onu_device_id}= Get Device ID From SN ${src['onu']}
414 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
415 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
416 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
417 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
418 ... volt-remove-subscriber-access ${of_id} ${onu_port}
TorstenThiemed4f48962020-12-08 12:17:19 +0000419 Run Keyword If ${print2console} Log \r\n[${I}] volt-remove-subscriber-access ${of_id} ${onu_port}.
420 ... console=yes
TorstenThieme52ef8392020-11-10 13:42:26 +0000421 END
TorstenThieme109683b2020-09-24 12:35:41 +0000422
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000423Do Check Tech Profile
424 [Documentation] This keyword checks the loaded TechProfile
425 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200426 ${podname}= Set Variable etcd
TorstenThiemed4f48962020-12-08 12:17:19 +0000427 ${stackname}= Get Stack Name
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000428 ${commandget} Catenate
TorstenThiemed4f48962020-12-08 12:17:19 +0000429 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/${stackname}/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000430 ${result}= Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000431 ${num_gem_ports}= Set Variable 1
432 ${num_gem_ports}= Set Variable If
433 ... "${techprofile}"=="default" 1
434 ... "${techprofile}"=="1T4GEM" 4
435 ... "${techprofile}"=="1T8GEM" 8
436 @{resultList} Split String ${result} separator=,
437 ${num_of_count_matches}= Get Match Count ${resultList} "num_gem_ports": ${num_gem_ports}
438 ... whitespace_insensitive=True
TorstenThiemea0221942020-12-09 11:35:03 +0000439 ${num_of_expected_matches}= Evaluate ${num_all_onus}
TorstenThiemea0221942020-12-09 11:35:03 +0000440 Should Be Equal As Integers ${num_of_expected_matches} ${num_of_count_matches}
441 ... TechProfile (${TechProfile}) not loaded correctly:${num_of_count_matches} of ${num_of_expected_matches}
TorstenThieme015d5c02020-09-11 09:53:34 +0000442
443Do Disable Enable Onu Test
444 [Documentation] This keyword disables/enables all onus and checks the states.
TorstenThieme1fbe8082020-10-21 13:27:59 +0000445 [Arguments] ${state2check}=${state2test} ${checkstatebeforedisable}=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000446 ... ${state2checkafterdisable}=tech-profile-config-delete-success
TorstenThieme440b7c02020-12-18 15:42:57 +0000447 Run Keyword If ${checkstatebeforedisable} Current State Test All Onus ${state2check}
448 Disable Onu Device
TorstenThiemed4f48962020-12-08 12:17:19 +0000449 ${alternative_onu_reason}= Set Variable If
450 ... '${state2checkafterdisable}'=='tech-profile-config-delete-success' omci-flows-deleted
451 ... '${state2checkafterdisable}'=='omci-admin-lock' tech-profile-config-delete-success ${EMPTY}
TorstenThiemec3c23232021-01-13 13:06:31 +0000452 ${alternativeonustates}= Create List ${alternative_onu_reason}
453 Current State Test All Onus ${state2checkafterdisable} alternativeonustate=${alternativeonustates}
TorstenThieme17becfc2020-10-08 09:46:27 +0000454 Log Ports
455 #check no port is enabled in ONOS
TorstenThiemed4f48962020-12-08 12:17:19 +0000456 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM
TorstenThieme440b7c02020-12-18 15:42:57 +0000457 Enable Onu Device
458 Current State Test All Onus ${state2check}
TorstenThieme17becfc2020-10-08 09:46:27 +0000459 Log Ports onlyenabled=True
460 #check that all the UNI ports show up in ONOS again
TorstenThiemed4f48962020-12-08 12:17:19 +0000461 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} ${num_all_onus} BBSM
TorstenThieme015d5c02020-09-11 09:53:34 +0000462
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000463Do Power Off Power On Onu Device
464 [Documentation] This keyword power off/on all onus and checks the states.
TorstenThieme440b7c02020-12-18 15:42:57 +0000465 Power Off ONU Device ${namespace}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000466 Sleep 5s
TorstenThiemec3c23232021-01-13 13:06:31 +0000467 ${alternativeonustates}= Create List omci-flows-deleted
TorstenThieme440b7c02020-12-18 15:42:57 +0000468 Current State Test All Onus tech-profile-config-delete-success
TorstenThiemec3c23232021-01-13 13:06:31 +0000469 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000470 Power On ONU Device ${namespace}
471 Current State Test All Onus ${state2test}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000472
TorstenThieme1fbe8082020-10-21 13:27:59 +0000473Do Soft Reboot Onu Device
474 [Documentation] This keyword reboots softly all onus and checks the states.
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000475 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1fbe8082020-10-21 13:27:59 +0000476 ${src}= Set Variable ${hosts.src[${I}]}
477 ${onu_device_id}= Get Device ID From SN ${src['onu']}
TorstenThiemea0b11602020-10-30 08:39:24 +0000478 Reboot ONU ${onu_device_id} False
TorstenThieme1fbe8082020-10-21 13:27:59 +0000479 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000480 ${alternativeonustates}= Create List omci-flows-deleted
Matteo Scandoloc14525a2021-02-02 08:34:43 -0800481 Current State Test All Onus tech-profile-config-delete-success
482 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=${alternativeonustates}
TorstenThieme73850052020-12-10 12:43:28 +0000483 Sleep 5s
TorstenThieme440b7c02020-12-18 15:42:57 +0000484 Run Keyword If ${has_dataplane} Current State Test All Onus omci-flows-pushed
TorstenThiemed4f48962020-12-08 12:17:19 +0000485 Do Onu Port Check