blob: ee470822fe31803cca3f535aa07a29534d7a736a [file] [log] [blame]
TorstenThieme440b7c02020-12-18 15:42:57 +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
15*** Settings ***
TorstenThiemec3c23232021-01-13 13:06:31 +000016Documentation Test different Reconcile scenarios of ONU Go adapter with all three workflows ATT, DT and TT.
TorstenThieme440b7c02020-12-18 15:42:57 +000017... Test suite is dedicated for only one ONU! Run robot with bbsim-kind.yaml only!
18... Not for DT/TT workflow!
19... Hint: default timeout in BBSim to mimic OLT reboot is 60 seconds!
20... This behaviour of BBSim can be modified by 'oltRebootDelay: 60' in BBSim section of helm chart or
21... used values.yaml during 'voltha up'.
22Suite Setup Setup Suite
23Suite Teardown Teardown Suite
24Test Setup Setup
25Test Teardown Teardown
26Library Collections
27Library String
28Library OperatingSystem
29Library XML
30Library RequestsLibrary
31Library ../../libraries/DependencyLibrary.py
32Resource ../../libraries/onos.robot
33Resource ../../libraries/voltctl.robot
34Resource ../../libraries/voltha.robot
35Resource ../../libraries/utils.robot
36Resource ../../libraries/k8s.robot
37Resource ../../libraries/onu_utilities.robot
38Resource ../../variables/variables.robot
39
40*** Variables ***
Hardik Windlass4288c6a2021-09-28 07:22:06 +000041${NAMESPACE} voltha
42${INFRA_NAMESPACE} default
TorstenThieme440b7c02020-12-18 15:42:57 +000043${timeout} 60s
44${of_id} 0
45${logical_id} 0
46${has_dataplane} True
47${external_libs} True
48${teardown_device} True
49${scripts} ../../scripts
50# Per-test logging on failure is turned off by default; set this variable to enable
51${container_log_dir} ${None}
52# flag for first test, needed due default timeout in BBSim to mimic OLT reboot of 60 seconds
53${firsttest} True
TorstenThiemec3c23232021-01-13 13:06:31 +000054# determines the environment workflow: DT, TT or ATT (default)
55# example: -v workflow:DT
56${workflow} ATT
TorstenThieme47983692021-06-17 10:43:35 +000057# KV Store Prefix
58# example: -v kvstoreprefix:voltha_voltha
59${kvstoreprefix} voltha_voltha
TorstenThieme440b7c02020-12-18 15:42:57 +000060# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
61# example: -v debugmode:True
62${debugmode} False
63# logging flag to enable Collect Logs, can be passed via the command line too
64# example: -v logging:True
65${logging} False
66# if True execution will be paused before clean up, only use in case of manual testing, do not use in ci pipeline!
67# example: -v pausebeforecleanup:True
68${pausebeforecleanup} False
69# if True some outputs to console are done during running tests e.g. long duration flow test
70# example: -v print2console:True
71${print2console} False
72# if True (hard) kill will be used to restart onu adapter, else (soft) restart mechanism of k8s will be used
73# example: -v usekill2restart:True
74${usekill2restart} False
TorstenThieme45071602021-03-16 12:14:37 +000075# if True etcd check will be executed in test case teardown, if False etcd check will be executed in suite teardown
76# example: -v etcdcheckintestteardown:False
77${etcdcheckintestteardown} True
TorstenThieme440b7c02020-12-18 15:42:57 +000078${data_dir} ../data
TorstenThieme70bc5262021-01-19 12:12:55 +000079${suppressaddsubscriber} True
TorstenThieme440b7c02020-12-18 15:42:57 +000080
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
TorstenThieme440b7c02020-12-18 15:42:57 +000086
87*** Test Cases ***
88Reconcile In Starting-OpenOmci
89 [Documentation] Validates the Reconcile in Starting-OpenOmci
90 ... Reconcile test during starting-openomci in AT&T-workflow:
91 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +000092 ... - wait for device reason starting-openomci
TorstenThieme440b7c02020-12-18 15:42:57 +000093 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +000094 ... - wait for open-onu-adapter-go to restart
95 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +000096 ... - delete ONU and MIB-template in KV-store
97 [Tags] functionalOnuGo ReconcileStartingOpenOmciOnuGo
98 [Setup] Run Keywords Start Logging ReconcileStartingOpenOmciOnuGo
99 ... AND Setup Test
100 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000101 Do Reconcile In Determined State starting-openomci
TorstenThieme373adfe2021-12-16 13:03:04 +0000102 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
103 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme3494ceb2021-07-19 09:47:24 +0000104 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme440b7c02020-12-18 15:42:57 +0000105 ... AND Teardown Test
106 ... AND Stop Logging ReconcileStartingOpenOmciOnuGo
107
108Reconcile In Initial-Mib-Downloaded
109 [Documentation] Validates the Reconcile in initial-mib-downloaded
110 ... Reconcile test during initial-mib-downloaded in AT&T-workflow:
111 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000112 ... - wait for device reason initial-mib-downloaded
TorstenThieme440b7c02020-12-18 15:42:57 +0000113 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000114 ... - wait for open-onu-adapter-go to restart
115 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000116 ... - delete ONU and MIB-template in KV-store
117 [Tags] functionalOnuGo ReconcileInitialMibDownloadedOnuGo
118 [Setup] Run Keywords Start Logging ReconcileInitialMibDownloadedOnuGo
119 ... AND Setup Test
120 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000121 Do Reconcile In Determined State initial-mib-downloaded
TorstenThieme373adfe2021-12-16 13:03:04 +0000122 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
123 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme3494ceb2021-07-19 09:47:24 +0000124 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme440b7c02020-12-18 15:42:57 +0000125 ... AND Teardown Test
126 ... AND Stop Logging ReconcileInitialMibDownloadedOnuGo
127
128Reconcile In Omci-Flows-Pushed
129 [Documentation] Validates the Reconcile in omci-flows-pushed
130 ... Former testcase: Reconcile Onu Device in Testsuite Voltha_ONUStateTest.robot
131 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
132 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000133 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000134 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000135 ... - wait for open-onu-adapter-go to restart
136 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000137 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000138 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
139 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000140 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000141 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000142 ... - delete ONU and MIB-template in KV-store
143 [Tags] functionalOnuGo ReconcileOmciFlowsPushedOnuGo
144 [Setup] Run Keywords Start Logging ReconcileOmciFlowsPushedOnuGo
145 ... AND Setup Test
146 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000147 Do Reconcile In Omci-Flows-Pushed
TorstenThieme373adfe2021-12-16 13:03:04 +0000148 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
149 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme3494ceb2021-07-19 09:47:24 +0000150 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme440b7c02020-12-18 15:42:57 +0000151 ... AND Teardown Test
152 ... AND Stop Logging ReconcileOmciFlowsPushedOnuGo
153
154Reconcile For Disabled Onu Device
155 [Documentation] Validates the Reconcile for disabled Onu device
156 ... Reconcile test for disabled Onu device in AT&T-workflow:
157 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000158 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000159 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000160 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
161 ... - check UNI-ports disabled in ONOS
162 ... - kill the open-onu-adapter-go
163 ... - wait for open-onu-adapter-go to restart
164 ... - check device reason is still the same before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000165 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000166 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000167 ... - delete ONU and MIB-template in KV-store
168 [Tags] functionalOnuGo ReconcileDisabledOnuDeviceOnuGo
169 [Setup] Run Keywords Start Logging ReconcileDisabledOnuDeviceOnuGo
170 ... AND Setup Test
171 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000172 Do Reconcile For Disabled Onu Device
TorstenThieme373adfe2021-12-16 13:03:04 +0000173 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
174 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme3494ceb2021-07-19 09:47:24 +0000175 ... AND Run Keyword If ${logging} Collect Logs
TorstenThieme440b7c02020-12-18 15:42:57 +0000176 ... AND Teardown Test
177 ... AND Stop Logging ReconcileDisabledOnuDeviceOnuGo
178
TorstenThieme712b2962021-11-17 14:16:15 +0000179Olt Deletion After Adapter Restart
180 [Documentation] Validates the OLT deletion after adapter restart
181 ... - prefered environment is two ONUs are active on each of two OLTs, but test works also with single ONU/OLT
182 ... - restart the ONU adapter preferred via "kubectl delete pod"
183 ... - delete one OLT immediately after the restart has been initiated
184 ... - wait until the restart of the ONU adapter and the reconcile processing are finished
185 ... - check whether the ONUs on the remaining OLT have been properly reconciled (if avaialable)
186 ... - check whether the ONUs at the deleted OLT have disappeared from the device list
187 ... - KV store data of these ONUs are deleted under:
188 ... - <kvStorePrefix>/openonu/<deviceId>
189 ... - <kvStorePrefix>/openonu/pm-data/<deviceId>
190 ... - check for not deleted device(s) reason is still the same before restart (if available)
191 ... - delete ONU and MIB-template in KV-store
192 ... Check [VOL-4443] for more details
193 [Tags] functionalOnuGo OltDeletionAfterAdapterRestartOnuGo
194 [Setup] Run Keywords Start Logging OltDeletionAfterAdapterRestartOnuGo
195 ... AND Setup Test
196 Run Keyword If ${has_dataplane} Clean Up Linux
197 Do Olt Deletion After Adapter Restart
TorstenThieme373adfe2021-12-16 13:03:04 +0000198 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
199 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThieme712b2962021-11-17 14:16:15 +0000200 ... AND Run Keyword If ${logging} Collect Logs
201 ... AND Teardown Test
202 ... AND Stop Logging OltDeletionAfterAdapterRestartOnuGo
203
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000204Flow Deletion After Adapter Restart
205 [Documentation] Validates the flow(s) deletion after adapter restart
206 ... - perform sanity test include add subscriber
207 ... - restart the ONU adapter preferred via "kubectl delete pod"
208 ... - remove flow(s) from one ONU immediately after the restart has been initiated
209 ... - wait until the restart of the ONU adapter and the reconcile processing are finished
210 ... - check removed flow(s) from ONU
211 ... - check for not removed flows still the same before restart (if available)
212 [Tags] functionalOnuGo FlowDeletionAfterAdapterRestartOnuGo
213 [Setup] Run Keywords Start Logging FlowDeletionAfterAdapterRestartOnuGo
214 ... AND Setup Test
215 Run Keyword If ${has_dataplane} Clean Up Linux
216 Do Flow Deletion After Adapter Restart
TorstenThieme373adfe2021-12-16 13:03:04 +0000217 [Teardown] Run Keywords Printout ONU Serial Number and Device Id print2console=${print2console}
218 ... AND Run Keyword If ${logging} Get Logical Id of OLT
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000219 ... AND Run Keyword If ${logging} Collect Logs
220 ... AND Teardown Test
221 ... AND Stop Logging FlowDeletionAfterAdapterRestartOnuGo
222
TorstenThieme440b7c02020-12-18 15:42:57 +0000223*** Keywords ***
224Setup Suite
225 [Documentation] Set up the test suite
Andrea Campanella82add372021-11-05 12:01:15 +0100226 Start Logging Setup or Teardown Setup-${SUITE NAME}
TorstenThieme440b7c02020-12-18 15:42:57 +0000227 ${LogInfo}= Catenate
228 ... \r\nPassed arguments:
229 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThieme47983692021-06-17 10:43:35 +0000230 ... print2console:${print2console}, usekill2restart:${usekill2restart}, workflow:${workflow},
231 ... kvstoreprefix:${kvstoreprefix}
TorstenThieme440b7c02020-12-18 15:42:57 +0000232 Log ${LogInfo} console=yes
233 Common Test Suite Setup
TorstenThieme440b7c02020-12-18 15:42:57 +0000234 # delete etcd MIB Template Data
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000235 Delete MIB Template Data ${INFRA_NAMESPACE}
TorstenThieme45071602021-03-16 12:14:37 +0000236 # delete etcd onu data
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000237 Delete ONU Go Adapter ETCD Data namespace=${INFRA_NAMESPACE} validate=True
Andrea Campanella82add372021-11-05 12:01:15 +0100238 Run Keyword If ${logging} Collect Logs
239 Stop Logging Setup or Teardown Setup-${SUITE NAME}
TorstenThieme440b7c02020-12-18 15:42:57 +0000240
TorstenThieme70bc5262021-01-19 12:12:55 +0000241
TorstenThieme440b7c02020-12-18 15:42:57 +0000242Teardown Suite
243 [Documentation] Replaces the Suite Teardown in utils.robot.
244 ... Cleans up and checks all ONU ports disabled in ONOS.
245 ... Furthermore gives the possibility to pause the execution.
Andrea Campanella82add372021-11-05 12:01:15 +0100246 Start Logging Setup or Teardown Teardown-${SUITE NAME}
TorstenThieme440b7c02020-12-18 15:42:57 +0000247 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
248 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
249 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
250 Run Keyword If ${teardown_device} Delete All Devices and Verify
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000251 Run Keyword If ${usekill2restart} Restart Pod By Label ${NAMESPACE} app adapter-open-onu
TorstenThieme45071602021-03-16 12:14:37 +0000252 Run Keyword Unless ${etcdcheckintestteardown} Wait Until Keyword Succeeds ${timeout} 1s
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000253 ... Validate Onu Data In Etcd ${INFRA_NAMESPACE} 0 ${kvstoreprefix} without_pm_data=False
TorstenThieme731a7592021-07-01 14:26:54 +0000254 Wait for Ports in ONOS for all OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT} 0 BBSM ${timeout}
Andrea Campanella82add372021-11-05 12:01:15 +0100255 Run Keyword If ${logging} Collect Logs
256 Stop Logging Setup or Teardown Teardown-${SUITE NAME}
TorstenThieme440b7c02020-12-18 15:42:57 +0000257 Close All ONOS SSH Connections
258
259Setup Test
260 [Documentation] Pre-test Setup
261 #test for empty device list
262 Test Empty Device List
263 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
264 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
265 Run Keyword If ${has_dataplane} Sleep 60s
266 #restart open-onu pod to reset crash loop back off mechansim of kubenetes
TorstenThieme37165402021-09-03 11:39:40 +0000267 Run Keyword If "${firsttest}"=="False" and "${usekill2restart}"=="True"
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000268 ... Restart Pod By Label ${NAMESPACE} app adapter-open-onu
TorstenThieme440b7c02020-12-18 15:42:57 +0000269 Run Keyword If "${firsttest}"=="False" Sleep 35s
270 ${firsttest} Set Variable False
271 Set Suite Variable ${firsttest}
272 # 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]
TorstenThieme440b7c02020-12-18 15:42: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
TorstenThieme440b7c02020-12-18 15:42: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}
290
291Teardown Test
292 [Documentation] Post-test Teardown
TorstenThieme45071602021-03-16 12:14:37 +0000293 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
294 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
295 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
TorstenThiemee9017be2021-03-05 16:59:31 +0000296 Run Keyword If ${teardown_device} Delete All Devices and Verify
TorstenThieme440b7c02020-12-18 15:42:57 +0000297 # delete etcd MIB Template Data
Matteo Scandolo6b524122021-10-22 14:34:29 -0700298 Delete MIB Template Data ${INFRA_NAMESPACE}
TorstenThiemeb355eb62021-03-09 14:04:55 +0000299 # check etcd data are empty
TorstenThieme45071602021-03-16 12:14:37 +0000300 Run Keyword If ${etcdcheckintestteardown} Wait Until Keyword Succeeds ${timeout} 1s
Hardik Windlass4288c6a2021-09-28 07:22:06 +0000301 ... Validate Onu Data In Etcd ${INFRA_NAMESPACE} 0 ${kvstoreprefix} without_pm_data=False
TorstenThieme440b7c02020-12-18 15:42:57 +0000302 Sleep 5s
303
304Do Reconcile In Determined State
305 [Documentation] This keyword reconciles ONU device when passed reason is reached and
306 ... check the state afterwards.
307 ... Following steps will be executed:
308 ... - enable OLT device
309 ... - wait for passed openonu reason
310 ... - restart openonu adaptor
TorstenThiemec3c23232021-01-13 13:06:31 +0000311 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000312 [Arguments] ${expected_onu_reason}
TorstenThiemec3c23232021-01-13 13:06:31 +0000313 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}= Map State
314 ... ${expected_onu_reason}
315 Should Be True ${onu_state_nb}<=5
316 ... Wrong expected onu reason ${expected_onu_reason}, must be lower than 'omci-flows-pushed'!
TorstenThieme440b7c02020-12-18 15:42:57 +0000317 FOR ${I} IN RANGE 0 ${num_olts}
318 #get olt serial number
319 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
320 #validate olt states
321 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
322 Enable Device ${olt_device_id}
323 END
324 Current State Test All Onus ${expected_onu_reason}
TorstenThieme96fe9ee2021-10-21 10:24:08 +0000325 Reconcile Onu Adapter ${NAMESPACE} ${usekill2restart} ACTIVE
TorstenThiemec3c23232021-01-13 13:06:31 +0000326 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000327 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000328 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000329
330Do Reconcile For Disabled Onu Device
331 [Documentation] This keyword reconciles ONU device for a disabled onu device and
332 ... check the state afterwards.
333 ... Following steps will be executed:
334 ... - enable OLT device
TorstenThiemec3c23232021-01-13 13:06:31 +0000335 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000336 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000337 ... - wait for corresponding openonu reason
TorstenThieme440b7c02020-12-18 15:42:57 +0000338 ... - check UNI-ports disabled in ONOS
339 ... - restart openonu adaptor
340 ... - check openonu adaptor is ready again
TorstenThiemec3c23232021-01-13 13:06:31 +0000341 ... - check device reason is still before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000342 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000343 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000344 FOR ${I} IN RANGE 0 ${num_olts}
345 #get olt serial number
346 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
347 #validate olt states
348 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
349 Enable Device ${olt_device_id}
350 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000351 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000352 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000353 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000354 Disable Onu Device
TorstenThieme0ec95eb2021-11-23 14:56:26 +0000355 Current State Test All Onus tech-profile-config-delete-success
TorstenThieme96fe9ee2021-10-21 10:24:08 +0000356 Reconcile Onu Adapter ${NAMESPACE} ${usekill2restart} UNKNOWN
TorstenThieme0ec95eb2021-11-23 14:56:26 +0000357 Current State Test All Onus tech-profile-config-delete-success
TorstenThieme731a7592021-07-01 14:26:54 +0000358 Wait for all ONU Ports in ONOS Disabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
TorstenThieme440b7c02020-12-18 15:42:57 +0000359 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000360 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000361 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000362 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000363
364Do Reconcile In Omci-Flows-Pushed
365 [Documentation] This keyword reconciles ONU device in omci-flows-pushed and check the state afterwards.
366 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
367 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000368 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000369 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000370 ... - wait for open-onu-adapter-go to restart
371 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000372 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000373 ... - wait for corresponding device reason
374 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000375 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000376 ... - perform sanity test supress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000377 FOR ${I} IN RANGE 0 ${num_olts}
378 #get olt serial number
379 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
380 #validate olt states
381 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
382 Enable Device ${olt_device_id}
383 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000384 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000385 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000386 ... ELSE Perform Sanity Test
TorstenThieme96fe9ee2021-10-21 10:24:08 +0000387 Reconcile Onu Adapter ${NAMESPACE} ${usekill2restart} ACTIVE
TorstenThieme70bc5262021-01-19 12:12:55 +0000388 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000389 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000390 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000391 Disable Onu Device
TorstenThieme0ec95eb2021-11-23 14:56:26 +0000392 Current State Test All Onus tech-profile-config-delete-success
TorstenThieme731a7592021-07-01 14:26:54 +0000393 Wait for all ONU Ports in ONOS Disabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
TorstenThieme440b7c02020-12-18 15:42:57 +0000394 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000395 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000396 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000397 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme712b2962021-11-17 14:16:15 +0000398
399
400Do Olt Deletion After Adapter Restart
401 [Documentation] This keyword deletes OLT after adapter restart and checks deleted device(s) and data
402 ... - prefered environment is two ONUs are active on each of two OLTs, but test works also with single ONU/OLT
403 ... - restart the ONU adapter preferred via "kubectl delete pod"
404 ... - delete one OLT immediately after the restart has been initiated
405 ... - wait until the restart of the ONU adapter and the reconcile processing are finished
406 ... - check whether the ONUs on the remaining OLT have been properly reconciled (if avaialable)
407 ... - check whether the ONUs at the deleted OLT have disappeared from the device list
408 ... - KV store data of these ONUs are deleted under:
409 ... - <kvStorePrefix>/openonu/<deviceId>
410 ... - <kvStorePrefix>/openonu/pm-data/<deviceId>
411 ... - check for not deleted device(s) reason is still the same before restart (if available)
412 ... - delete ONU and MIB-template in KV-store
413 ... Check [VOL-4443] for more details
414 FOR ${I} IN RANGE 0 ${num_olts}
415 #get olt serial number
416 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
417 #validate olt states
418 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
419 Enable Device ${olt_device_id}
420 END
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000421 # bring all onus to active -> OMCI-Flows-Pushed
TorstenThieme712b2962021-11-17 14:16:15 +0000422 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
423 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
424 ... ELSE Perform Sanity Test
425 # OLT#1 will be deleted, get its SN
426 ${olt_to_be_deleted}= Set Variable ${olts[0]['serial']}
427 ${olt_to_be_deleted_device_id}= Get OLTDeviceID From OLT List ${olt_to_be_deleted}
428 # collect all ONU device ids belonging to OLT to be deleted
429 ${onu_device_id_list_should_be_deleted} Create List
430 Build ONU Device Id List ${onu_device_id_list_should_be_deleted} ${olt_to_be_deleted}
431 Log ${onu_device_id_list_should_be_deleted}
432 Reconcile Onu Adapter ${NAMESPACE} ${usekill2restart} ACTIVE ${olt_to_be_deleted}
433 # validate OLT and all corresponding ONUs are removed
434 Validate all ONUS for OLT Removed ${num_all_onus} ${hosts} ${olt_to_be_deleted} ${timeout}
435 Validate Device Removed ${olt_to_be_deleted}
436 # validate for alle removed ONUs KV store date deleted
437 FOR ${onu_device_id} IN @{onu_device_id_list_should_be_deleted}
438 Log ${onu_device_id}
439 Wait Until Keyword Succeeds ${timeout} 1s Validate Onu Data In Etcd Removed ${INFRA_NAMESPACE}
440 ... ${onu_device_id} ${kvstoreprefix} without_pm_data=False
441 END
442 FOR ${I} IN RANGE 0 ${num_all_onus}
443 ${src}= Set Variable ${hosts.src[${I}]}
444 Continue For Loop If "${olt_to_be_deleted}"=="${src['olt']}"
445 Current State Test omci-flows-pushed ${src['onu']}
446 END
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000447
448Do Flow Deletion After Adapter Restart
449 [Documentation] This keyword removes flow(s) after adapter restart and checks removed flow(s)
450 ... - perform sanity test include add subscriber
451 ... - restart the ONU adapter preferred via "kubectl delete pod"
452 ... - remove flow(s) from one ONU immediately after the restart has been initiated
453 ... - wait until the restart of the ONU adapter and the reconcile processing are finished
454 ... - check removed flow(s) from ONU
455 ... - check for not removed flows still the same before restart (if available)
456 FOR ${I} IN RANGE 0 ${num_olts}
457 #get olt serial number
458 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
459 #validate olt states
460 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
461 Enable Device ${olt_device_id}
462 END
463 # bring all onus to active -> OMCI-Flows-Pushed
464 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
465 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
466 ... ELSE Perform Sanity Test
467 # log ONOS flows before remove
468 ${flow}= Execute ONOS CLI Command use single connection
469 ... ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s any ${of_id}
470 Log ${flow}
471 # validate OLT flows before remove
472 ${onu_device_id_list} Create List
473 Build ONU Device Id List ${onu_device_id_list}
474 Log ${onu_device_id_list}
475 FOR ${onu_device_id} IN @{onu_device_id_list}
476 Log ${onu_device_id}
477 ${rc} ${output}= Run and Return Rc and Output
Andrea Campanella28989d12022-01-11 09:49:21 +0100478 ... voltctl -c ${VOLTCTL_CONFIG} device flows ${onu_device_id} -m 32MB -o json
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000479 Should Be Equal As Integers ${rc} 0
480 ${jsondata}= To Json ${output}
481 Log ${jsondata}
482 END
483 # Collect data for remove flow(s)
484 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${hosts.src[0]['olt']}
485 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${hosts.src[0]['onu']}
486 ... ${of_id} ${hosts.src[0]['uni_id']}
487 ${params_for_remove_flow}= Create Dictionary of_id=${of_id} onu_port=${onu_port}
488 # Collect number of flows for comparing after Reconcile
489 ${olt_flows_list} Create List
490 FOR ${I} IN RANGE 0 ${num_olts}
491 ${olt_of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS ${list_olts}[${I}][sn]
492 ${flows}= Count flows ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${olt_of_id} added
493 ${olt_flows}= Create Dictionary olt=${olt_of_id} flows=${flows}
494 Append To List ${olt_flows_list} ${olt_flows}
495 END
496 ${flows_onu}= Count flows ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} added ${onu_port}
497 # Restart onu adapter with deleting flows from first onu
498 Reconcile Onu Adapter ${NAMESPACE} ${usekill2restart} ACTIVE flow_delete_params=${params_for_remove_flow}
499 # validate flows in ONOS after remove
500 ${flow}= Execute ONOS CLI Command use single connection
501 ... ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s any ${of_id}
502 Log ${flow}
503 ${expected_flows_onu}= Set Variable If "${workflow}"=="ATT" 1 0
504 Wait Until Keyword Succeeds ${timeout} 2s Validate number of flows ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
505 ... ${expected_flows_onu} ${of_id} any ${onu_port}
TorstenThiemed6492882021-12-16 08:10:02 +0000506 ${flow}= Execute ONOS CLI Command use single connection
507 ... ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s any ${of_id}
508 Log ${flow}
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000509 # Beside onu port specific flows additional flows deleted depending on workflow
510 ${additional_flows_deleted}= Set Variable If
511 ... "${workflow}"=="DT" 1
512 ... "${workflow}"=="TT" 3
513 ... "${workflow}"=="ATT" 0
514 FOR ${I} IN RANGE 0 ${num_olts}
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000515 ${expected_flows}= Run Keyword If "${of_id}"=="${olt_flows_list}[${I}][olt]"
516 ... Evaluate ${olt_flows_list}[${I}][flows]-${flows_onu}-${additional_flows_deleted}
517 ... ELSE Set Variable ${olt_flows_list}[${I}][flows]
TorstenThiemed6492882021-12-16 08:10:02 +0000518 Wait Until Keyword Succeeds ${timeout} 2s Validate ONOS Flows per OLT ${list_olts}[${I}][sn]
519 ... ${expected_flows}
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000520 END
TorstenThiemed6492882021-12-16 08:10:02 +0000521 ${flow}= Execute ONOS CLI Command use single connection
522 ... ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s any ${of_id}
523 Log ${flow}
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000524 # validate etcd data
525 ${List_ONU_Serial} Create List
526 Build ONU SN List ${List_ONU_Serial}
527 ${onu_sn_no_flows}= Set Variable ${hosts.src[0]['onu']}
528 FOR ${onu_sn} IN @{List_ONU_Serial}
529 ${must_exist}= Set Variable If "${onu_sn}"=="${onu_sn_no_flows}" False True
TorstenThiemed6492882021-12-16 08:10:02 +0000530 Wait Until Keyword Succeeds ${timeout} 2s Validate Tech Profiles and Flows in ETCD Data Per Onu
531 ... ${onu_sn} ${INFRA_NAMESPACE} ${kvstoreprefix} ${must_exist}
TorstenThiemef7cd2be2021-12-06 14:30:11 +0000532 END
533 ${onu_device_id_no_flows}= Get Device ID From SN ${hosts.src[0]['onu']}
534 FOR ${onu_device_id} IN @{onu_device_id_list}
535 Log ${onu_device_id}
536 ${must_exist}= Set Variable If "${onu_device_id}"=="${onu_device_id_no_flows}" False True
537 Validate OLT Flows Per Onu ${onu_device_id} ${must_exist}
538 END