blob: c63d46e0222783093696e345e2e360f0e3436cc6 [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 ***
41${namespace} voltha
42${timeout} 60s
43${of_id} 0
44${logical_id} 0
45${has_dataplane} True
46${external_libs} True
47${teardown_device} True
48${scripts} ../../scripts
49# Per-test logging on failure is turned off by default; set this variable to enable
50${container_log_dir} ${None}
51# flag for first test, needed due default timeout in BBSim to mimic OLT reboot of 60 seconds
52${firsttest} True
TorstenThiemec3c23232021-01-13 13:06:31 +000053# determines the environment workflow: DT, TT or ATT (default)
54# example: -v workflow:DT
55${workflow} ATT
TorstenThieme440b7c02020-12-18 15:42:57 +000056# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
57# example: -v debugmode:True
58${debugmode} False
59# logging flag to enable Collect Logs, can be passed via the command line too
60# example: -v logging:True
61${logging} False
62# if True execution will be paused before clean up, only use in case of manual testing, do not use in ci pipeline!
63# example: -v pausebeforecleanup:True
64${pausebeforecleanup} False
65# if True some outputs to console are done during running tests e.g. long duration flow test
66# example: -v print2console:True
67${print2console} False
68# if True (hard) kill will be used to restart onu adapter, else (soft) restart mechanism of k8s will be used
69# example: -v usekill2restart:True
70${usekill2restart} False
71${data_dir} ../data
TorstenThieme70bc5262021-01-19 12:12:55 +000072${suppressaddsubscriber} True
TorstenThieme440b7c02020-12-18 15:42:57 +000073
74
75*** Test Cases ***
76Reconcile In Starting-OpenOmci
77 [Documentation] Validates the Reconcile in Starting-OpenOmci
78 ... Reconcile test during starting-openomci in AT&T-workflow:
79 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +000080 ... - wait for device reason starting-openomci
TorstenThieme440b7c02020-12-18 15:42:57 +000081 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +000082 ... - wait for open-onu-adapter-go to restart
83 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +000084 ... - delete ONU and MIB-template in KV-store
85 [Tags] functionalOnuGo ReconcileStartingOpenOmciOnuGo
86 [Setup] Run Keywords Start Logging ReconcileStartingOpenOmciOnuGo
87 ... AND Setup Test
88 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +000089 Do Reconcile In Determined State starting-openomci
TorstenThieme440b7c02020-12-18 15:42:57 +000090 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
91 ... AND Teardown Test
92 ... AND Stop Logging ReconcileStartingOpenOmciOnuGo
93
94Reconcile In Initial-Mib-Downloaded
95 [Documentation] Validates the Reconcile in initial-mib-downloaded
96 ... Reconcile test during initial-mib-downloaded in AT&T-workflow:
97 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +000098 ... - wait for device reason initial-mib-downloaded
TorstenThieme440b7c02020-12-18 15:42:57 +000099 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000100 ... - wait for open-onu-adapter-go to restart
101 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000102 ... - delete ONU and MIB-template in KV-store
103 [Tags] functionalOnuGo ReconcileInitialMibDownloadedOnuGo
104 [Setup] Run Keywords Start Logging ReconcileInitialMibDownloadedOnuGo
105 ... AND Setup Test
106 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000107 Do Reconcile In Determined State initial-mib-downloaded
TorstenThieme440b7c02020-12-18 15:42:57 +0000108 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
109 ... AND Teardown Test
110 ... AND Stop Logging ReconcileInitialMibDownloadedOnuGo
111
112Reconcile In Omci-Flows-Pushed
113 [Documentation] Validates the Reconcile in omci-flows-pushed
114 ... Former testcase: Reconcile Onu Device in Testsuite Voltha_ONUStateTest.robot
115 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
116 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000117 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000118 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000119 ... - wait for open-onu-adapter-go to restart
120 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000121 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000122 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
123 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000124 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000125 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000126 ... - delete ONU and MIB-template in KV-store
127 [Tags] functionalOnuGo ReconcileOmciFlowsPushedOnuGo
128 [Setup] Run Keywords Start Logging ReconcileOmciFlowsPushedOnuGo
129 ... AND Setup Test
130 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000131 Do Reconcile In Omci-Flows-Pushed
TorstenThieme440b7c02020-12-18 15:42:57 +0000132 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
133 ... AND Teardown Test
134 ... AND Stop Logging ReconcileOmciFlowsPushedOnuGo
135
136Reconcile For Disabled Onu Device
137 [Documentation] Validates the Reconcile for disabled Onu device
138 ... Reconcile test for disabled Onu device in AT&T-workflow:
139 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000140 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000141 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000142 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
143 ... - check UNI-ports disabled in ONOS
144 ... - kill the open-onu-adapter-go
145 ... - wait for open-onu-adapter-go to restart
146 ... - check device reason is still the same before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000147 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000148 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000149 ... - delete ONU and MIB-template in KV-store
150 [Tags] functionalOnuGo ReconcileDisabledOnuDeviceOnuGo
151 [Setup] Run Keywords Start Logging ReconcileDisabledOnuDeviceOnuGo
152 ... AND Setup Test
153 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemee9017be2021-03-05 16:59:31 +0000154 Do Reconcile For Disabled Onu Device
TorstenThieme440b7c02020-12-18 15:42:57 +0000155 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
156 ... AND Teardown Test
157 ... AND Stop Logging ReconcileDisabledOnuDeviceOnuGo
158
159*** Keywords ***
160Setup Suite
161 [Documentation] Set up the test suite
162 ${LogInfo}= Catenate
163 ... \r\nPassed arguments:
164 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThiemec3c23232021-01-13 13:06:31 +0000165 ... print2console:${print2console}, usekill2restart:${usekill2restart}, workflow:${workflow}
TorstenThieme440b7c02020-12-18 15:42:57 +0000166 Log ${LogInfo} console=yes
167 Common Test Suite Setup
TorstenThieme440b7c02020-12-18 15:42:57 +0000168 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
169 Set Suite Variable ${onos_ssh_connection}
170 # delete etcd MIB Template Data
171 Delete MIB Template Data
172
TorstenThieme70bc5262021-01-19 12:12:55 +0000173
TorstenThieme440b7c02020-12-18 15:42:57 +0000174Teardown Suite
175 [Documentation] Replaces the Suite Teardown in utils.robot.
176 ... Cleans up and checks all ONU ports disabled in ONOS.
177 ... Furthermore gives the possibility to pause the execution.
178 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
179 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
180 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
181 Run Keyword If ${teardown_device} Delete All Devices and Verify
182 Run Keyword If ${usekill2restart} Restart Pod ${namespace} open-onu
183 Validate Onu Data In Etcd 0
184 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM ${timeout}
185 Close All ONOS SSH Connections
186
187Setup Test
188 [Documentation] Pre-test Setup
189 #test for empty device list
190 Test Empty Device List
191 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
192 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
193 Run Keyword If ${has_dataplane} Sleep 60s
194 #restart open-onu pod to reset crash loop back off mechansim of kubenetes
195 Run Keyword If "${firsttest}"=="False" and "${usekill2restart}"=="True" Restart Pod ${namespace} open-onu
196 Run Keyword If "${firsttest}"=="False" Sleep 35s
197 ${firsttest} Set Variable False
198 Set Suite Variable ${firsttest}
199 # Create a list of olt ids (logical and device_id)
200 ${olt_ids} Create List
201 FOR ${I} IN RANGE 0 ${num_olts}
202 #create/preprovision device
Andrea Campanella3dcce272021-01-15 16:04:47 +0100203 ${olt_device_id}= Run Keyword If "${list_olts}[${I}][type]" == "${None}"
TorstenThieme44136642021-02-12 13:41:17 +0000204 ... Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport]
205 ... ELSE Create Device ${list_olts}[${I}][ip] ${list_olts}[${I}][oltport] ${list_olts}[${I}][type]
TorstenThieme440b7c02020-12-18 15:42:57 +0000206 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
207 #validate olt states
208 Wait Until Keyword Succeeds ${timeout} 5s
209 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id}
210 Sleep 5s
211 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
212 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
213 ... of_id ${of_id} sn ${olt_serial_number}
214 Append To List ${olt_ids} ${olt}
215 END
216 Set Global Variable ${olt_ids}
217
218Teardown Test
219 [Documentation] Post-test Teardown
TorstenThiemee9017be2021-03-05 16:59:31 +0000220 Run Keyword If ${teardown_device} Delete All Devices and Verify
TorstenThieme440b7c02020-12-18 15:42:57 +0000221 # delete etcd MIB Template Data
222 Delete MIB Template Data
TorstenThiemeb355eb62021-03-09 14:04:55 +0000223 # check etcd data are empty
224 Validate Onu Data In Etcd 0
TorstenThieme440b7c02020-12-18 15:42:57 +0000225 Sleep 5s
226
227Do Reconcile In Determined State
228 [Documentation] This keyword reconciles ONU device when passed reason is reached and
229 ... check the state afterwards.
230 ... Following steps will be executed:
231 ... - enable OLT device
232 ... - wait for passed openonu reason
233 ... - restart openonu adaptor
TorstenThiemec3c23232021-01-13 13:06:31 +0000234 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000235 [Arguments] ${expected_onu_reason}
TorstenThiemec3c23232021-01-13 13:06:31 +0000236 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}= Map State
237 ... ${expected_onu_reason}
238 Should Be True ${onu_state_nb}<=5
239 ... Wrong expected onu reason ${expected_onu_reason}, must be lower than 'omci-flows-pushed'!
TorstenThieme440b7c02020-12-18 15:42:57 +0000240 FOR ${I} IN RANGE 0 ${num_olts}
241 #get olt serial number
242 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
243 #validate olt states
244 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
245 Enable Device ${olt_device_id}
246 END
247 Current State Test All Onus ${expected_onu_reason}
248 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
249 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThiemec3c23232021-01-13 13:06:31 +0000250 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000251 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000252 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000253
254Do Reconcile For Disabled Onu Device
255 [Documentation] This keyword reconciles ONU device for a disabled onu device and
256 ... check the state afterwards.
257 ... Following steps will be executed:
258 ... - enable OLT device
TorstenThiemec3c23232021-01-13 13:06:31 +0000259 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000260 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000261 ... - wait for corresponding openonu reason
TorstenThieme440b7c02020-12-18 15:42:57 +0000262 ... - check UNI-ports disabled in ONOS
263 ... - restart openonu adaptor
264 ... - check openonu adaptor is ready again
TorstenThiemec3c23232021-01-13 13:06:31 +0000265 ... - check device reason is still before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000266 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000267 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000268 FOR ${I} IN RANGE 0 ${num_olts}
269 #get olt serial number
270 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
271 #validate olt states
272 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
273 Enable Device ${olt_device_id}
274 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000275 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000276 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000277 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000278 Disable Onu Device
TorstenThieme3871cf72021-01-21 14:11:57 +0000279 ${alternativeonustates}= Create List omci-flows-deleted
280 Run Keyword If "${workflow}"=="DT" Current State Test All Onus omci-admin-lock
281 ... ELSE IF "${workflow}"=="TT" Current State Test All Onus omci-admin-lock
282 ... ELSE Current State Test All Onus omci-admin-lock alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000283 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
284 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThieme3871cf72021-01-21 14:11:57 +0000285 Run Keyword If "${workflow}"=="DT" Current State Test All Onus omci-admin-lock
286 ... ELSE IF "${workflow}"=="TT" Current State Test All Onus omci-admin-lock
287 ... ELSE Current State Test All Onus omci-admin-lock alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000288 Wait for all ONU Ports in ONOS Disabled ${onos_ssh_connection}
289 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000290 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000291 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000292 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000293
294Do Reconcile In Omci-Flows-Pushed
295 [Documentation] This keyword reconciles ONU device in omci-flows-pushed and check the state afterwards.
296 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
297 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000298 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000299 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000300 ... - wait for open-onu-adapter-go to restart
301 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000302 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000303 ... - wait for corresponding device reason
304 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000305 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000306 ... - perform sanity test supress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000307 FOR ${I} IN RANGE 0 ${num_olts}
308 #get olt serial number
309 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
310 #validate olt states
311 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
312 Enable Device ${olt_device_id}
313 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000314 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme136ebf72021-02-26 14:27:07 +0000315 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000316 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000317 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
318 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThieme70bc5262021-01-19 12:12:55 +0000319 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000320 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000321 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000322 Disable Onu Device
TorstenThieme3871cf72021-01-21 14:11:57 +0000323 ${alternativeonustates}= Create List omci-flows-deleted
324 Run Keyword If "${workflow}"=="DT" Current State Test All Onus omci-admin-lock
325 ... ELSE IF "${workflow}"=="TT" Current State Test All Onus omci-admin-lock
326 ... ELSE Current State Test All Onus omci-admin-lock alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000327 Wait for all ONU Ports in ONOS Disabled ${onos_ssh_connection}
TorstenThieme440b7c02020-12-18 15:42:57 +0000328 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000329 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
TorstenThieme136ebf72021-02-26 14:27:07 +0000330 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
TorstenThieme70bc5262021-01-19 12:12:55 +0000331 ... ELSE Perform Sanity Test ${suppressaddsubscriber}