blob: 61642ca7b0ae900a02f7fbd099746cc049381319 [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
TorstenThieme70bc5262021-01-19 12:12:55 +000089 Run Keyword If ${no_skip}
TorstenThieme440b7c02020-12-18 15:42:57 +000090 ... Do Reconcile In Determined State starting-openomci
91 ... ELSE Pass Execution ${skip_message} skipped
92 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
93 ... AND Teardown Test
94 ... AND Stop Logging ReconcileStartingOpenOmciOnuGo
95
96Reconcile In Initial-Mib-Downloaded
97 [Documentation] Validates the Reconcile in initial-mib-downloaded
98 ... Reconcile test during initial-mib-downloaded in AT&T-workflow:
99 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000100 ... - wait for device reason initial-mib-downloaded
TorstenThieme440b7c02020-12-18 15:42:57 +0000101 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000102 ... - wait for open-onu-adapter-go to restart
103 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000104 ... - delete ONU and MIB-template in KV-store
105 [Tags] functionalOnuGo ReconcileInitialMibDownloadedOnuGo
106 [Setup] Run Keywords Start Logging ReconcileInitialMibDownloadedOnuGo
107 ... AND Setup Test
108 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThieme70bc5262021-01-19 12:12:55 +0000109 Run Keyword If ${no_skip}
TorstenThieme440b7c02020-12-18 15:42:57 +0000110 ... Do Reconcile In Determined State initial-mib-downloaded
111 ... ELSE Pass Execution ${skip_message} skipped
112 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
113 ... AND Teardown Test
114 ... AND Stop Logging ReconcileInitialMibDownloadedOnuGo
115
116Reconcile In Omci-Flows-Pushed
117 [Documentation] Validates the Reconcile in omci-flows-pushed
118 ... Former testcase: Reconcile Onu Device in Testsuite Voltha_ONUStateTest.robot
119 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
120 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000121 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000122 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000123 ... - wait for open-onu-adapter-go to restart
124 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000125 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000126 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
127 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000128 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000129 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000130 ... - delete ONU and MIB-template in KV-store
131 [Tags] functionalOnuGo ReconcileOmciFlowsPushedOnuGo
132 [Setup] Run Keywords Start Logging ReconcileOmciFlowsPushedOnuGo
133 ... AND Setup Test
134 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThieme70bc5262021-01-19 12:12:55 +0000135 Run Keyword If ${no_skip}
TorstenThieme440b7c02020-12-18 15:42:57 +0000136 ... Do Reconcile In Omci-Flows-Pushed
137 ... ELSE Pass Execution ${skip_message} skipped
138 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
139 ... AND Teardown Test
140 ... AND Stop Logging ReconcileOmciFlowsPushedOnuGo
141
142Reconcile For Disabled Onu Device
143 [Documentation] Validates the Reconcile for disabled Onu device
144 ... Reconcile test for disabled Onu device in AT&T-workflow:
145 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000146 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000147 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000148 ... - wait for device corresponding onu reason e.g. tech-profile-config-delete-success
149 ... - check UNI-ports disabled in ONOS
150 ... - kill the open-onu-adapter-go
151 ... - wait for open-onu-adapter-go to restart
152 ... - check device reason is still the same before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000153 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000154 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000155 ... - delete ONU and MIB-template in KV-store
156 [Tags] functionalOnuGo ReconcileDisabledOnuDeviceOnuGo
157 [Setup] Run Keywords Start Logging ReconcileDisabledOnuDeviceOnuGo
158 ... AND Setup Test
159 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThieme70bc5262021-01-19 12:12:55 +0000160 Run Keyword If ${no_skip}
TorstenThieme440b7c02020-12-18 15:42:57 +0000161 ... Do Reconcile For Disabled Onu Device
162 ... ELSE Pass Execution ${skip_message} skipped
163 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
164 ... AND Teardown Test
165 ... AND Stop Logging ReconcileDisabledOnuDeviceOnuGo
166
167*** Keywords ***
168Setup Suite
169 [Documentation] Set up the test suite
170 ${LogInfo}= Catenate
171 ... \r\nPassed arguments:
172 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThiemec3c23232021-01-13 13:06:31 +0000173 ... print2console:${print2console}, usekill2restart:${usekill2restart}, workflow:${workflow}
TorstenThieme440b7c02020-12-18 15:42:57 +0000174 Log ${LogInfo} console=yes
175 Common Test Suite Setup
TorstenThieme70bc5262021-01-19 12:12:55 +0000176 # determine real number of onus
177 ${num_real_onus}= Determine Number Of ONU
178 ${no_skip}= Set Variable If '${num_real_onus}'=='1' True False
179 Set Suite Variable ${no_skip}
TorstenThieme440b7c02020-12-18 15:42:57 +0000180 # prepare skip message in yellow for console log
181 ${skip}= Evaluate "\\033[33mSKIP\\033[0m"
TorstenThieme70bc5262021-01-19 12:12:55 +0000182 ${skipping}= Evaluate
183 ... "\\033[33m${SPACE*5} ===> Test case above was skipped! Too much ONUs (${num_real_onus})! <=== ${SPACE*5}\\033[0m"
184 ${skip_message} Catenate ${skipping} | ${skip} |
TorstenThieme440b7c02020-12-18 15:42:57 +0000185 Set Suite Variable ${skip_message}
186 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
187 Set Suite Variable ${onos_ssh_connection}
188 # delete etcd MIB Template Data
189 Delete MIB Template Data
190
TorstenThieme70bc5262021-01-19 12:12:55 +0000191
TorstenThieme440b7c02020-12-18 15:42:57 +0000192Teardown Suite
193 [Documentation] Replaces the Suite Teardown in utils.robot.
194 ... Cleans up and checks all ONU ports disabled in ONOS.
195 ... Furthermore gives the possibility to pause the execution.
196 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
197 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
198 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
199 Run Keyword If ${teardown_device} Delete All Devices and Verify
200 Run Keyword If ${usekill2restart} Restart Pod ${namespace} open-onu
201 Validate Onu Data In Etcd 0
202 Wait for Ports in ONOS for all OLTs ${onos_ssh_connection} 0 BBSM ${timeout}
203 Close All ONOS SSH Connections
204
205Setup Test
206 [Documentation] Pre-test Setup
207 #test for empty device list
208 Test Empty Device List
209 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
210 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
211 Run Keyword If ${has_dataplane} Sleep 60s
212 #restart open-onu pod to reset crash loop back off mechansim of kubenetes
213 Run Keyword If "${firsttest}"=="False" and "${usekill2restart}"=="True" Restart Pod ${namespace} open-onu
214 Run Keyword If "${firsttest}"=="False" Sleep 35s
215 ${firsttest} Set Variable False
216 Set Suite Variable ${firsttest}
217 # Create a list of olt ids (logical and device_id)
218 ${olt_ids} Create List
219 FOR ${I} IN RANGE 0 ${num_olts}
220 #create/preprovision device
221 ${olt_device_id}= Create Device ${list_olts}[${I}][ip] ${OLT_PORT}
222 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
223 #validate olt states
224 Wait Until Keyword Succeeds ${timeout} 5s
225 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id}
226 Sleep 5s
227 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
228 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
229 ... of_id ${of_id} sn ${olt_serial_number}
230 Append To List ${olt_ids} ${olt}
231 END
232 Set Global Variable ${olt_ids}
233
234Teardown Test
235 [Documentation] Post-test Teardown
TorstenThieme70bc5262021-01-19 12:12:55 +0000236 Run Keyword If ${teardown_device} and ${no_skip} Delete All Devices and Verify
237 ... ELSE IF ${teardown_device} Delete Devices In Voltha Root=true
TorstenThieme440b7c02020-12-18 15:42:57 +0000238 # delete etcd MIB Template Data
239 Delete MIB Template Data
240 Sleep 5s
241
242Do Reconcile In Determined State
243 [Documentation] This keyword reconciles ONU device when passed reason is reached and
244 ... check the state afterwards.
245 ... Following steps will be executed:
246 ... - enable OLT device
247 ... - wait for passed openonu reason
248 ... - restart openonu adaptor
TorstenThiemec3c23232021-01-13 13:06:31 +0000249 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000250 [Arguments] ${expected_onu_reason}
TorstenThiemec3c23232021-01-13 13:06:31 +0000251 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}= Map State
252 ... ${expected_onu_reason}
253 Should Be True ${onu_state_nb}<=5
254 ... Wrong expected onu reason ${expected_onu_reason}, must be lower than 'omci-flows-pushed'!
TorstenThieme440b7c02020-12-18 15:42:57 +0000255 FOR ${I} IN RANGE 0 ${num_olts}
256 #get olt serial number
257 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
258 #validate olt states
259 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
260 Enable Device ${olt_device_id}
261 END
262 Current State Test All Onus ${expected_onu_reason}
263 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
264 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThiemec3c23232021-01-13 13:06:31 +0000265 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme70bc5262021-01-19 12:12:55 +0000266 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000267 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000268
269Do Reconcile For Disabled Onu Device
270 [Documentation] This keyword reconciles ONU device for a disabled onu device and
271 ... check the state afterwards.
272 ... Following steps will be executed:
273 ... - enable OLT device
TorstenThiemec3c23232021-01-13 13:06:31 +0000274 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000275 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000276 ... - wait for corresponding openonu reason
TorstenThieme440b7c02020-12-18 15:42:57 +0000277 ... - check UNI-ports disabled in ONOS
278 ... - restart openonu adaptor
279 ... - check openonu adaptor is ready again
TorstenThiemec3c23232021-01-13 13:06:31 +0000280 ... - check device reason is still before restart
TorstenThieme440b7c02020-12-18 15:42:57 +0000281 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000282 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000283 FOR ${I} IN RANGE 0 ${num_olts}
284 #get olt serial number
285 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
286 #validate olt states
287 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
288 Enable Device ${olt_device_id}
289 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000290 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme70bc5262021-01-19 12:12:55 +0000291 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000292 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000293 Disable Onu Device
TorstenThiemec3c23232021-01-13 13:06:31 +0000294 ${alternativeonustates}= Create List omci-flows-deleted omci-admin-lock
295 Current State Test All Onus tech-profile-config-delete-success alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000296 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
297 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThiemec3c23232021-01-13 13:06:31 +0000298 Current State Test All Onus tech-profile-config-delete-success alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000299 Wait for all ONU Ports in ONOS Disabled ${onos_ssh_connection}
300 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000301 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
302 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
303 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000304
305Do Reconcile In Omci-Flows-Pushed
306 [Documentation] This keyword reconciles ONU device in omci-flows-pushed and check the state afterwards.
307 ... Reconcile test during omci-flows-pushed in AT&T-workflow:
308 ... - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
TorstenThiemec3c23232021-01-13 13:06:31 +0000309 ... - perform sanity test include add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000310 ... - kill the open-onu-adapter-go
TorstenThiemec3c23232021-01-13 13:06:31 +0000311 ... - wait for open-onu-adapter-go to restart
312 ... - perform sanity test suppress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000313 ... - disable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000314 ... - wait for corresponding device reason
315 ... - check UNI-ports disabled in ONOS
TorstenThieme440b7c02020-12-18 15:42:57 +0000316 ... - enable onu device
TorstenThiemec3c23232021-01-13 13:06:31 +0000317 ... - perform sanity test supress add subscriber
TorstenThieme440b7c02020-12-18 15:42:57 +0000318 FOR ${I} IN RANGE 0 ${num_olts}
319 #get olt serial number
320 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
321 #validate olt states
322 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
323 Enable Device ${olt_device_id}
324 END
TorstenThiemec3c23232021-01-13 13:06:31 +0000325 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
TorstenThieme70bc5262021-01-19 12:12:55 +0000326 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
TorstenThiemec3c23232021-01-13 13:06:31 +0000327 ... ELSE Perform Sanity Test
TorstenThieme440b7c02020-12-18 15:42:57 +0000328 Run Keyword If ${usekill2restart} Kill And Check Onu Adaptor ${namespace}
329 ... ELSE Restart And Check Onu Adaptor ${namespace}
TorstenThieme70bc5262021-01-19 12:12:55 +0000330 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
331 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
332 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
TorstenThieme440b7c02020-12-18 15:42:57 +0000333 Disable Onu Device
TorstenThiemec3c23232021-01-13 13:06:31 +0000334 ${alternativeonustates}= Create List omci-flows-deleted omci-admin-lock
335 Current State Test All Onus tech-profile-config-delete-success alternativeonustate=${alternativeonustates}
TorstenThieme440b7c02020-12-18 15:42:57 +0000336 Wait for all ONU Ports in ONOS Disabled ${onos_ssh_connection}
TorstenThieme440b7c02020-12-18 15:42:57 +0000337 Enable Onu Device
TorstenThieme70bc5262021-01-19 12:12:55 +0000338 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT ${suppressaddsubscriber}
339 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT ${suppressaddsubscriber}
340 ... ELSE Perform Sanity Test ${suppressaddsubscriber}