blob: 410a5455fc8bf18401fe46fdc7d1f99cb2d17a5f [file] [log] [blame]
TorstenThieme1619db22020-04-03 12:01:15 +00001*** Settings ***
TorstenThieme109683b2020-09-24 12:35:41 +00002Documentation Test states of ONU Go adapter with ATT workflows only (not for DT/TT workflow!)
TorstenThieme1619db22020-04-03 12:01:15 +00003Suite Setup Setup Suite
4Suite Teardown Teardown Suite
5Test Setup Setup
6Test Teardown Teardown
7Library Collections
8Library String
9Library OperatingSystem
10Library XML
11Library RequestsLibrary
12Library ../../libraries/DependencyLibrary.py
13Resource ../../libraries/onos.robot
14Resource ../../libraries/voltctl.robot
15Resource ../../libraries/voltha.robot
16Resource ../../libraries/utils.robot
17Resource ../../libraries/k8s.robot
18Resource ../../variables/variables.robot
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000019Resource Voltha_ONUUtilities.robot
TorstenThieme1619db22020-04-03 12:01:15 +000020
21*** Variables ***
TorstenThieme94e4ae42020-05-18 13:01:42 +000022${timeout} 180s
TorstenThieme1619db22020-04-03 12:01:15 +000023${of_id} 0
24${logical_id} 0
25${has_dataplane} True
26${external_libs} True
27${teardown_device} True
28${scripts} ../../scripts
29# Per-test logging on failure is turned off by default; set this variable to enable
30${container_log_dir} ${None}
TorstenThiemee0e5bba2020-08-05 11:20:13 +000031# state to test variable, can be passed via the command line too, valid values: 1-6
32# 1 -> activating-onu
33# 2 -> starting-openomci
34# 3 -> discovery-mibsync-complete
35# 4 -> initial-mib-downloaded
36# 5 -> tech-profile-config-download-success
37# 6 -> omci-flows-pushed
TorstenThieme87cd6202020-09-09 10:01:28 +000038# example: -v state2test:5
TorstenThieme66c91a82020-10-19 13:37:53 +000039# example: -v state2test:omci-flows-pushed
TorstenThieme1619db22020-04-03 12:01:15 +000040${state2test} 6
TorstenThiemee0e5bba2020-08-05 11:20:13 +000041# test mode variable, can be passed via the command line too, valid values: SingleState, Up2State, SingleStateTime
TorstenThieme87cd6202020-09-09 10:01:28 +000042# example: -v testmode:SingleStateTime
TorstenThieme1619db22020-04-03 12:01:15 +000043${testmode} SingleState
TorstenThieme87cd6202020-09-09 10:01:28 +000044# used tech profile, can be passed via the command line too, valid values: default (=1T1GEM), 1T4GEM, 1T8GEM
45# example: -v techprofile:1T4GEM
TorstenThiemee0e5bba2020-08-05 11:20:13 +000046${techprofile} default
TorstenThiemee0e5bba2020-08-05 11:20:13 +000047# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000048# example: -v debugmode:True
TorstenThieme401af432020-06-11 15:53:53 +000049${debugmode} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000050# logging flag to enable Collect Logs, can be passed via the command line too
TorstenThieme87cd6202020-09-09 10:01:28 +000051# example: -v logging:True
TorstenThieme5e324e42020-07-27 09:36:16 +000052${logging} False
TorstenThieme66c91a82020-10-19 13:37:53 +000053# 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 +000054# example: -v pausebeforecleanup:True
TorstenThiemeb41007d2020-06-22 12:14:12 +000055${pausebeforecleanup} False
TorstenThiemee0e5bba2020-08-05 11:20:13 +000056${data_dir} ../data
57
TorstenThieme1619db22020-04-03 12:01:15 +000058
59*** Test Cases ***
60ONU State Test
61 [Documentation] Validates the ONU Go adapter states
TorstenThieme66c91a82020-10-19 13:37:53 +000062 [Tags] sanityOnuGo StateTestOnuGo
TorstenThieme1619db22020-04-03 12:01:15 +000063 [Setup] Run Keywords Start Logging ONUStateTest
64 ... AND Setup Test
65 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThiemefd7e7ba2020-11-06 13:57:57 +000066 FOR ${I} IN RANGE 0 ${num_olts}
67 #get olt serial number
68 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
69 #validate olt states
70 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
71 Enable Device ${olt_device_id}
72 END
TorstenThieme94e4ae42020-05-18 13:01:42 +000073 ${timeStart} = Get Current Date
74 Set Global Variable ${timeStart}
TorstenThieme1619db22020-04-03 12:01:15 +000075 Run Keyword If "${testmode}"=="SingleState" Do ONU Single State Test
76 ... ELSE IF "${testmode}"=="Up2State" Do ONU Up To State Test
TorstenThieme94e4ae42020-05-18 13:01:42 +000077 ... ELSE IF "${testmode}"=="SingleStateTime" Do ONU Single State Test Time
TorstenThieme1619db22020-04-03 12:01:15 +000078 ... ELSE Fail The testmode (${testmode}) is not valid!
TorstenThieme5e324e42020-07-27 09:36:16 +000079 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme1619db22020-04-03 12:01:15 +000080 ... AND Stop Logging ONUStateTest
81
TorstenThiemee0e5bba2020-08-05 11:20:13 +000082Check Loaded Tech Profile
83 [Documentation] Validates the loaded Tech Profile
84 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
85 ... Check will be executed only the reached ONU state is 5 (tech-profile-config-download-success) or higher
TorstenThieme66c91a82020-10-19 13:37:53 +000086 [Tags] functionalOnuGo CheckTechProfileOnuGo
TorstenThiemee0e5bba2020-08-05 11:20:13 +000087 [Setup] Start Logging ONUCheckTechProfile
TorstenThieme66c91a82020-10-19 13:37:53 +000088 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
89 ... Do Check Tech Profile
TorstenThieme5a205ba2020-09-29 08:08:29 +000090 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee0e5bba2020-08-05 11:20:13 +000091 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
92 ... AND Stop Logging ONUCheckTechProfile
93
TorstenThieme401af432020-06-11 15:53:53 +000094Onu Port Check
TorstenThieme87cd6202020-09-09 10:01:28 +000095 [Documentation] Validates that all the UNI ports show up in ONOS
TorstenThieme00958682020-06-19 11:29:31 +000096 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +000097 [Tags] functionalOnuGo PortTestOnuGo
TorstenThieme401af432020-06-11 15:53:53 +000098 [Setup] Start Logging ONUPortTest
Matteo Scandolo786aba42020-12-07 10:00:03 -080099 FOR ${I} IN RANGE 0 ${num_olts}
100 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800101 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
Matteo Scandolo786aba42020-12-07 10:00:03 -0800102 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
Matteo Scandolob9953232020-12-07 14:24:47 -0800103 ... Do Onu Port Check ${of_id}
Matteo Scandolo786aba42020-12-07 10:00:03 -0800104 ... ELSE Pass Execution ${skip_message} skipped
105 END
TorstenThieme5e324e42020-07-27 09:36:16 +0000106 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
TorstenThieme401af432020-06-11 15:53:53 +0000107 ... AND Stop Logging ONUPortTest
108
TorstenThieme17756ea2020-11-11 14:09:47 +0000109Onu Etcd Data Check
110 [Documentation] Validates ONU data stored in ETCD
111 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
112 [Tags] functionalOnuGo EtcdDataOnuGo
113 [Setup] Start Logging ONUEtcdDataTest
114 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
115 ... Do Onu Etcd Data Check
116 ... ELSE Pass Execution ${skip_message} skipped
117 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
118 ... AND Stop Logging ONUEtcdDataTest
119
TorstenThieme109683b2020-09-24 12:35:41 +0000120Onu Flow Check
121 [Documentation] Validates the onu flows in ONOS and Voltha
122 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
mpagenkoc2e7ba52020-11-12 13:50:57 +0000123 [Tags] functionalOnuGo FlowTestOnuGo
TorstenThieme109683b2020-09-24 12:35:41 +0000124 [Setup] Start Logging ONUFlowTest
TorstenThieme66c91a82020-10-19 13:37:53 +0000125 Run Keyword If '${onu_state}'=='omci-flows-pushed' Do Onu Flow Check
TorstenThieme5a205ba2020-09-29 08:08:29 +0000126 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme109683b2020-09-24 12:35:41 +0000127 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
128 ... AND Stop Logging ONUFlowTest
129
TorstenThiemee3841a02020-09-23 08:20:43 +0000130Disable Enable Onu Device
131 [Documentation] Disables/enables ONU Device and check states
132 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000133 [Tags] functionalOnuGo DisableEnableOnuGo
TorstenThiemee3841a02020-09-23 08:20:43 +0000134 [Setup] Start Logging DisableEnableONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000135 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
136 ... Do Disable Enable Onu Test
TorstenThieme5a205ba2020-09-29 08:08:29 +0000137 ... ELSE Pass Execution ${skip_message} skipped
TorstenThiemee3841a02020-09-23 08:20:43 +0000138 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
139 ... AND Stop Logging DisableEnableONUDevice
140
TorstenThieme015d5c02020-09-11 09:53:34 +0000141Reconcile Onu Device
142 [Documentation] Reconciles ONU Device and check state
143 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000144 [Tags] functionalOnuGo ReconcileOnuGo
TorstenThieme015d5c02020-09-11 09:53:34 +0000145 [Setup] Start Logging ReconcileONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000146 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
147 ... Do Reconcile Onu Device
TorstenThieme5a205ba2020-09-29 08:08:29 +0000148 ... ELSE Pass Execution ${skip_message} skipped
TorstenThieme015d5c02020-09-11 09:53:34 +0000149 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
150 ... AND Stop Logging ReconcileONUDevice
151
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000152Power Off Power On Onu Device
153 [Documentation] Power off and Power on of all ONU Devices and check state
154 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
TorstenThieme66c91a82020-10-19 13:37:53 +0000155 [Tags] functionalOnuGo PowerOffPowerOnOnuGo
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000156 [Setup] Start Logging PowerOffPowerOnONUDevice
TorstenThieme66c91a82020-10-19 13:37:53 +0000157 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
158 ... Do Power Off Power On Onu Device
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000159 ... ELSE Pass Execution ${skip_message} skipped
160 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
161 ... AND Stop Logging PowerOffPowerOnONUDevice
162
TorstenThieme1fbe8082020-10-21 13:27:59 +0000163Soft Reboot Onu Device
164 [Documentation] Reboots softly all ONU Devices and check state
165 ... Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
166 [Tags] functionalOnuGo SoftRebootOnuGo
167 [Setup] Start Logging SoftRebootONUDevice
168 Run Keyword If '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
169 ... Do Soft Reboot Onu Device
170 ... ELSE Pass Execution ${skip_message} skipped
171 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
172 ... AND Stop Logging SoftRebootONUDevice
173
TorstenThieme1619db22020-04-03 12:01:15 +0000174*** Keywords ***
175Setup Suite
176 [Documentation] Set up the test suite
TorstenThieme87cd6202020-09-09 10:01:28 +0000177 ${LogInfo}= Catenate
178 ... \r\nPassed arguments:
TorstenThieme66c91a82020-10-19 13:37:53 +0000179 ... state2test:${state2test}, testmode:${testmode}, techprofile:${techprofile},
TorstenThieme015d5c02020-09-11 09:53:34 +0000180 ... debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
TorstenThieme87cd6202020-09-09 10:01:28 +0000181 Log ${LogInfo} console=yes
TorstenThieme1619db22020-04-03 12:01:15 +0000182 Common Test Suite Setup
TorstenThieme5a205ba2020-09-29 08:08:29 +0000183 # prepare skip message in yellow for console log
184 ${skip}= Evaluate "\\033[33mSKIP\\033[0m"
185 ${skipped}= Evaluate "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
186 ${skip_message} Catenate ${skipped} | ${skip} |
187 Set Suite Variable ${skip_message}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000188 Run Keyword If ${num_all_onus}>4 Calculate Timeout
TorstenThieme1488d772020-09-28 10:52:43 +0000189 ${techprofile}= Set Variable If "${techprofile}"=="1T1GEM" default ${techprofile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000190 Run Keyword If "${techprofile}"=="default" Log To Console \nTechProfile:default (1T1GEM)
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000191 ... ELSE IF "${techprofile}"=="1T4GEM" Set Tech Profile 1T4GEM
192 ... ELSE IF "${techprofile}"=="1T8GEM" Set Tech Profile 1T8GEM
193 ... ELSE Fail The TechProfile (${techprofile}) is not valid!
194 ${onos_ssh_connection} Open ONOS SSH Connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
195 Set Suite Variable ${onos_ssh_connection}
TorstenThieme66c91a82020-10-19 13:37:53 +0000196 # map the passed onu state to reached and make it visible for test suite
197 ${admin_state} ${oper_status} ${connect_status} ${onu_state_nb} ${onu_state}=
198 ... Map State ${state2test}
199 Set Suite Variable ${admin_state}
200 Set Suite Variable ${oper_status}
201 Set Suite Variable ${connect_status}
202 Set Suite Variable ${onu_state_nb}
203 Set Suite Variable ${onu_state}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000204 # delete etcd MIB Template Data
205 Delete MIB Template Data
TorstenThieme1619db22020-04-03 12:01:15 +0000206
TorstenThiemeb41007d2020-06-22 12:14:12 +0000207Teardown Suite
208 [Documentation] Replaces the Suite Teardown in utils.robot.
209 ... Cleans up and checks all ONU ports disabled in ONOS.
210 ... Furthermore gives the possibility to pause the execution.
211 Run Keyword If ${pausebeforecleanup} Import Library Dialogs
212 Run Keyword If ${pausebeforecleanup} Pause Execution Press OK to continue with clean up!
TorstenThieme87cd6202020-09-09 10:01:28 +0000213 Run Keyword If ${pausebeforecleanup} Log Teardown will be continued... console=yes
TorstenThiemeb41007d2020-06-22 12:14:12 +0000214 Run Keyword If ${teardown_device} Delete All Devices and Verify
TorstenThiemefcafba02020-11-11 16:18:50 +0000215 Validate Onu Data In Etcd 0
Matteo Scandolo786aba42020-12-07 10:00:03 -0800216 FOR ${I} IN RANGE 0 ${num_olts}
217 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800218 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
219 Wait for Ports in ONOS ${onos_ssh_connection} 0 ${of_id} BBSM
Matteo Scandolo786aba42020-12-07 10:00:03 -0800220 END
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000221 Close ONOS SSH Connection ${onos_ssh_connection}
TorstenThieme87cd6202020-09-09 10:01:28 +0000222 Remove Tech Profile
TorstenThiemeb41007d2020-06-22 12:14:12 +0000223
TorstenThieme1619db22020-04-03 12:01:15 +0000224Setup Test
225 [Documentation] Pre-test Setup
226 #test for empty device list
227 Test Empty Device List
228 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s Openolt is Up
Suchitra Vemurib7253a52020-07-14 22:35:17 -0700229 ... ${olt_ssh_ip} ${olt_user} ${olt_pass}
TorstenThieme1619db22020-04-03 12:01:15 +0000230 Run Keyword If ${has_dataplane} Sleep 60s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000231 # Create a list of olt ids (logical and device_id)
232 ${olt_ids} Create List
233 FOR ${I} IN RANGE 0 ${num_olts}
234 #create/preprovision device
235 ${olt_device_id}= Create Device ${list_olts}[${I}][ip] ${OLT_PORT}
236 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
237 #validate olt states
238 Wait Until Keyword Succeeds ${timeout} 5s
239 ... Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${olt_device_id}
240 Sleep 5s
241 ${logical_id}= Get Logical Device ID From SN ${olt_serial_number}
242 ${olt} Create Dictionary device_id ${olt_device_id} logical_id ${logical_id}
243 ... of_id ${of_id} sn ${olt_serial_number}
244 Append To List ${olt_ids} ${olt}
245 END
246 Set Global Variable ${olt_ids}
TorstenThieme1619db22020-04-03 12:01:15 +0000247
248Calculate Timeout
249 [Documentation] Calculates the timeout regarding num-onus in case of more than 4 onus
250 ${timeout} Fetch From Left ${timeout} s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000251 ${timeout}= evaluate ${timeout}+((${num_all_onus}-4)*30)
TorstenThieme401af432020-06-11 15:53:53 +0000252 ${timeout}= Set Variable If (not ${debugmode}) and (${timeout}>600) 600 ${timeout}
TorstenThieme1619db22020-04-03 12:01:15 +0000253 ${timeout}= Catenate SEPARATOR= ${timeout} s
254 Set Suite Variable ${timeout}
TorstenThieme1619db22020-04-03 12:01:15 +0000255
256Do ONU Up To State Test
257 [Documentation] This keyword performs Up2State Test
258 ... All states up to the passed have to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000259 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000260 ${src}= Set Variable ${hosts.src[${I}]}
261 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThieme66c91a82020-10-19 13:37:53 +0000262 Run Keyword If ${onu_state_nb}>=1
TorstenThieme1619db22020-04-03 12:01:15 +0000263 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
264 ... Validate Device ENABLED ACTIVATING REACHABLE
265 ... ${src['onu']} onu=True onu_reason=activating-onu
TorstenThieme66c91a82020-10-19 13:37:53 +0000266 Run Keyword If ${onu_state_nb}>=2
TorstenThieme1619db22020-04-03 12:01:15 +0000267 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
268 ... Validate Device ENABLED ACTIVATING REACHABLE
269 ... ${src['onu']} onu=True onu_reason=starting-openomci
TorstenThieme66c91a82020-10-19 13:37:53 +0000270 Run Keyword If ${onu_state_nb}>=3
TorstenThieme1619db22020-04-03 12:01:15 +0000271 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
272 ... Validate Device ENABLED ACTIVATING REACHABLE
273 ... ${src['onu']} onu=True onu_reason=discovery-mibsync-complete
TorstenThieme66c91a82020-10-19 13:37:53 +0000274 Run Keyword If ${onu_state_nb}>=4
TorstenThieme1619db22020-04-03 12:01:15 +0000275 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
276 ... Validate Device ENABLED ACTIVE REACHABLE
277 ... ${src['onu']} onu=True onu_reason=initial-mib-downloaded
TorstenThieme66c91a82020-10-19 13:37:53 +0000278 Run Keyword If ${onu_state_nb}>=5
TorstenThieme1619db22020-04-03 12:01:15 +0000279 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
280 ... Validate Device ENABLED ACTIVE REACHABLE
281 ... ${src['onu']} onu=True onu_reason=tech-profile-config-download-success
TorstenThieme66c91a82020-10-19 13:37:53 +0000282 Run Keyword If ${onu_state_nb}>=6
TorstenThieme1619db22020-04-03 12:01:15 +0000283 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
284 ... Validate Device ENABLED ACTIVE REACHABLE
285 ... ${src['onu']} onu=True onu_reason=omci-flows-pushed
286 END
287
288Do ONU Single State Test
289 [Documentation] This keyword performs SingleState Test
290 ... Only the passed state has to be checked
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000291 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1619db22020-04-03 12:01:15 +0000292 ${src}= Set Variable ${hosts.src[${I}]}
293 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThieme015d5c02020-09-11 09:53:34 +0000294 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
295 ... Validate Device ${admin_state} ${oper_status} ${connect_status}
296 ... ${src['onu']} onu=True onu_reason=${onu_state}
TorstenThieme1619db22020-04-03 12:01:15 +0000297 END
298
TorstenThieme94e4ae42020-05-18 13:01:42 +0000299Do ONU Single State Test Time
300 [Documentation] This keyword performs SingleState Test with calculate running time
301 ... Only the passed state has to be checked and the duration each single onu adapter needed
302 ... will be calculated and printed out
TorstenThieme17becfc2020-10-08 09:46:27 +0000303 #${ListfinishedONUs} Create List
304 #Set Global Variable ${ListfinishedONUs}
TorstenThieme94e4ae42020-05-18 13:01:42 +0000305 Create File ONU_Startup_Time.txt This file contains the startup times of all ONUs.
306 ${list_onus} Create List
TorstenThieme401af432020-06-11 15:53:53 +0000307 Build ONU SN List ${list_onus}
TorstenThieme015d5c02020-09-11 09:53:34 +0000308 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 50ms
TorstenThieme9949b172020-06-16 10:00:15 +0000309 ... Validate ONU Devices MIB State With Duration
TorstenThieme015d5c02020-09-11 09:53:34 +0000310 ... ${onu_state} ${list_onus} ${timeStart} print2console=True
TorstenThieme401af432020-06-11 15:53:53 +0000311 ... output_file=ONU_Startup_Time.txt
TorstenThieme94e4ae42020-05-18 13:01:42 +0000312
TorstenThieme1619db22020-04-03 12:01:15 +0000313Do Onu Port Check
TorstenThieme00958682020-06-19 11:29:31 +0000314 [Documentation] Check that all the UNI ports show up in ONOS
Matteo Scandolo786aba42020-12-07 10:00:03 -0800315 [Arguments] ${olt_serial_number}
316 Wait for Ports in ONOS ${onos_ssh_connection} ${num_all_onus} ${olt_serial_number} BBSM
TorstenThieme9949b172020-06-16 10:00:15 +0000317
TorstenThieme17756ea2020-11-11 14:09:47 +0000318Do Onu Etcd Data Check
319 [Documentation] Check Onu data stored in etcd
320 Validate Onu Data In Etcd
321
TorstenThieme109683b2020-09-24 12:35:41 +0000322Do Onu Flow Check
TorstenThieme52ef8392020-11-10 13:42:26 +0000323 [Documentation] This keyword iterate all OLTs and performs Do Onu Flow Checks Per OLT
324 # Check and store vlan rules
325 ${firstvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000326 FOR ${J} IN RANGE 0 ${num_olts}
327 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
328 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
329 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
330 ... ${olt_serial_number}
331 Set Global Variable ${of_id}
332 ${nni_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
333 ... Get NNI Port in ONOS ${of_id}
334 Set Global Variable ${nni_port}
335 # Verify Default Meter in ONOS (valid only for ATT)
TorstenThieme52ef8392020-11-10 13:42:26 +0000336 Do Onu Subscriber Add And Flow Check Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000337 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000338 #log flows for verification
339 ${flowsresult}= Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT} flows -s
340 log ${flowsresult}
341 #check for previous state is kept (normally omci-flows-pushed)
342 Sleep 10s
343 Run Keyword And Continue On Failure Do Current State Test All Onus ${state2test}
344 ${secondvlanrules}= Run Keyword And Continue On Failure Validate Vlan Rules In Etcd nbofcookieslice=3
345 ... prevvlanrules=${firstvlanrules}
346 FOR ${J} IN RANGE 0 ${num_olts}
347 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
348 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
349 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
350 ... ${olt_serial_number}
351 Set Global Variable ${of_id}
352 ${nni_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
353 ... Get NNI Port in ONOS ${of_id}
354 Set Global Variable ${nni_port}
355 # Verify Default Meter in ONOS (valid only for ATT)
356 Do Onu Subscriber Remove Per OLT ${of_id} ${nni_port} ${olt_serial_number} ${onu_count}
357 END
358 #check for previous state is kept (normally omci-flows-pushed)
359 Sleep 10s
360 Run Keyword And Continue On Failure Do Current State Test All Onus ${state2test}
361 Run Keyword And Continue On Failure Validate Vlan Rules In Etcd prevvlanrules=${firstvlanrules}
362 ... setvidequal=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000363
TorstenThieme52ef8392020-11-10 13:42:26 +0000364Do Onu Subscriber Add And Flow Check Per OLT
365 [Documentation] Add Subscriber per OLT and checks all ONU flows show up in ONOS and Voltha
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000366 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
367 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme109683b2020-09-24 12:35:41 +0000368 ${src}= Set Variable ${hosts.src[${I}]}
369 ${dst}= Set Variable ${hosts.dst[${I}]}
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000370 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
TorstenThieme109683b2020-09-24 12:35:41 +0000371 ${onu_device_id}= Get Device ID From SN ${src['onu']}
372 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
373 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
374 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
375 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
376 ... volt-add-subscriber-access ${of_id} ${onu_port}
377 # Verify subscriber access flows are added for the ONU port
378 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
379 ... Verify Subscriber Access Flows Added For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
380 ... ${onu_port} ${nni_port} ${src['c_tag']} ${src['s_tag']}
TorstenThieme109683b2020-09-24 12:35:41 +0000381 END
TorstenThieme52ef8392020-11-10 13:42:26 +0000382
383Do Onu Subscriber Remove Per OLT
384 [Documentation] Removes per OLT subscribers in ONOS and Voltha
385 [Arguments] ${of_id} ${nni_port} ${olt_serial_number} ${num_onus}
386 FOR ${I} IN RANGE 0 ${num_all_onus}
387 ${src}= Set Variable ${hosts.src[${I}]}
388 ${dst}= Set Variable ${hosts.dst[${I}]}
389 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
390 ${onu_device_id}= Get Device ID From SN ${src['onu']}
391 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
392 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
393 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
394 ... Execute ONOS CLI Command ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
395 ... volt-remove-subscriber-access ${of_id} ${onu_port}
396 END
TorstenThieme109683b2020-09-24 12:35:41 +0000397
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000398Set Tech Profile
399 [Documentation] This keyword set the passed TechProfile for the test
400 [Arguments] ${TechProfile}
TorstenThieme87cd6202020-09-09 10:01:28 +0000401 Log To Console \nTechProfile:${TechProfile}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000402 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200403 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000404 ${src}= Set Variable ${data_dir}/TechProfile-${TechProfile}.json
405 ${dest}= Set Variable /tmp/flexpod.json
406 ${command} Catenate
407 ... /bin/sh -c 'cat ${dest} | ETCDCTL_API=3 etcdctl put service/voltha/technology_profiles/XGS-PON/64'
408 Copy File To Pod ${namespace} ${podname} ${src} ${dest}
Holger Hildebrandt23147742020-11-16 10:13:21 +0000409 Exec Pod In Kube ${namespace} ${podname} ${command}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000410 ${commandget} Catenate
411 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000412 Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000413
414Remove Tech Profile
415 [Documentation] This keyword removes TechProfile
TorstenThieme015d5c02020-09-11 09:53:34 +0000416 Log To Console \nTechProfile:${TechProfile}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000417 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200418 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000419 ${command} Catenate
420 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl del --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000421 Exec Pod In Kube ${namespace} ${podname} ${command}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000422 ${commandget} Catenate
423 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000424 Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000425
426Do Check Tech Profile
427 [Documentation] This keyword checks the loaded TechProfile
428 ${namespace}= Set Variable default
Andrea Campanella60dde302020-09-09 18:42:56 +0200429 ${podname}= Set Variable etcd
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000430 ${commandget} Catenate
431 ... /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
Holger Hildebrandt23147742020-11-16 10:13:21 +0000432 ${result}= Exec Pod In Kube ${namespace} ${podname} ${commandget}
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000433 ${num_gem_ports}= Set Variable 1
434 ${num_gem_ports}= Set Variable If
435 ... "${techprofile}"=="default" 1
436 ... "${techprofile}"=="1T4GEM" 4
437 ... "${techprofile}"=="1T8GEM" 8
438 @{resultList} Split String ${result} separator=,
439 ${num_of_count_matches}= Get Match Count ${resultList} "num_gem_ports": ${num_gem_ports}
440 ... whitespace_insensitive=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000441 ${num_of_expected_matches}= Run Keyword If "${techprofile}"=="default" Evaluate ${num_all_onus}
442 ... ELSE Evaluate ${num_all_onus}+1
TorstenThiemee0e5bba2020-08-05 11:20:13 +0000443 Run Keyword If ${num_of_expected_matches}!=${num_of_count_matches} Log To Console
444 ... \nTechProfile (${TechProfile}) not loaded correctly:${num_of_count_matches} of ${num_of_expected_matches}
TorstenThieme015d5c02020-09-11 09:53:34 +0000445
446Do Disable Enable Onu Test
447 [Documentation] This keyword disables/enables all onus and checks the states.
TorstenThieme1fbe8082020-10-21 13:27:59 +0000448 [Arguments] ${state2check}=${state2test} ${checkstatebeforedisable}=True
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000449 ... ${state2checkafterdisable}=tech-profile-config-delete-success
TorstenThieme1fbe8082020-10-21 13:27:59 +0000450 Run Keyword If ${checkstatebeforedisable} Do Current State Test All Onus ${state2check}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000451 Do Disable Onu Device
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000452 ${alternative_onu_reason}= Set Variable If '${state2checkafterdisable}'=='tech-profile-config-delete-success'
453 ... omci-flows-deleted ${EMPTY}
454 Do Current State Test All Onus ${state2checkafterdisable} alternativeonustate=${alternative_onu_reason}
TorstenThieme17becfc2020-10-08 09:46:27 +0000455 Log Ports
456 #check no port is enabled in ONOS
Matteo Scandolo786aba42020-12-07 10:00:03 -0800457 FOR ${I} IN RANGE 0 ${num_olts}
458 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800459 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
460 Wait for Ports in ONOS ${onos_ssh_connection} 0 ${of_id} BBSM
Matteo Scandolo786aba42020-12-07 10:00:03 -0800461 END
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000462 Do Enable Onu Device
TorstenThieme17becfc2020-10-08 09:46:27 +0000463 Do Current State Test All Onus ${state2check}
464 Log Ports onlyenabled=True
465 #check that all the UNI ports show up in ONOS again
Matteo Scandolo786aba42020-12-07 10:00:03 -0800466 FOR ${I} IN RANGE 0 ${num_olts}
467 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800468 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
469 Wait for Ports in ONOS ${onos_ssh_connection} ${num_all_onus} ${of_id} BBSM
Matteo Scandolo786aba42020-12-07 10:00:03 -0800470 END
TorstenThieme015d5c02020-09-11 09:53:34 +0000471
472Do Reconcile Onu Device
473 [Documentation] This keyword reconciles ONU device and check the state afterwards.
474 ... Following steps will be executed:
475 ... - restart openonu adaptor
476 ... - check openonu adaptor is ready again
477 ... - check previous state is kept
478 ... - ONU-Disable
479 ... - wait some seconds
480 ... - check for state omci-admin-lock
481 ... - ONU-Enable
482 ... - wait some seconds
483 ... - check for state onu-reenabled
484 ... - port check
TorstenThieme015d5c02020-09-11 09:53:34 +0000485 ${list_openonu_apps} Create List adapter-open-onu
486 ${namespace}= Set Variable voltha
487 ${adaptorname}= Set Variable open-onu
TorstenThieme015d5c02020-09-11 09:53:34 +0000488 Kill Adaptor ${namespace} ${adaptorname}
489 Sleep 5s
490 Wait For Pods Ready ${namespace} ${list_openonu_apps}
491 Do Disable Enable Onu Test
Matteo Scandolo786aba42020-12-07 10:00:03 -0800492 FOR ${I} IN RANGE 0 ${num_olts}
493 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800494 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
495 Do Onu Port Check ${of_id}
Matteo Scandolo786aba42020-12-07 10:00:03 -0800496 END
TorstenThieme015d5c02020-09-11 09:53:34 +0000497
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000498Do Power Off Power On Onu Device
499 [Documentation] This keyword power off/on all onus and checks the states.
500 Do Power Off ONU Device
501 Sleep 5s
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000502 #Do Current State Test All Onus stopping-openomci
503 Do Current State Test All Onus tech-profile-config-delete-success
504 ... ENABLED DISCOVERED UNREACHABLE alternativeonustate=omci-flows-deleted
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000505 Do Power On ONU Device
506 Do Current State Test All Onus ${state2test}
507
TorstenThieme1fbe8082020-10-21 13:27:59 +0000508Do Soft Reboot Onu Device
509 [Documentation] This keyword reboots softly all onus and checks the states.
510 ${namespace}= Set Variable voltha
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000511 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme1fbe8082020-10-21 13:27:59 +0000512 ${src}= Set Variable ${hosts.src[${I}]}
513 ${onu_device_id}= Get Device ID From SN ${src['onu']}
TorstenThiemea0b11602020-10-30 08:39:24 +0000514 Reboot ONU ${onu_device_id} False
TorstenThieme1fbe8082020-10-21 13:27:59 +0000515 END
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000516 Run Keyword Unless ${has_dataplane} Do Current State Test All Onus tech-profile-config-delete-success
517 ... ENABLED DISCOVERED REACHABLE alternativeonustate=omci-flows-deleted
TorstenThiemea0b11602020-10-30 08:39:24 +0000518 Run Keyword Unless ${has_dataplane} Do Disable Enable Onu Test checkstatebeforedisable=False
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000519 ... state2checkafterdisable=omci-admin-lock
TorstenThiemea0b11602020-10-30 08:39:24 +0000520 Run Keyword If ${has_dataplane} Do Current State Test All Onus omci-flows-pushed
Matteo Scandolo786aba42020-12-07 10:00:03 -0800521 FOR ${I} IN RANGE 0 ${num_olts}
522 ${olt_serial_number}= Set Variable ${list_olts}[${I}][sn]
Matteo Scandolob9953232020-12-07 14:24:47 -0800523 ${of_id}= Wait Until Keyword Succeeds 60s 5s Validate OLT Device in ONOS ${olt_serial_number}
524 Do Onu Port Check ${of_id}
Matteo Scandolo786aba42020-12-07 10:00:03 -0800525 END
TorstenThieme1fbe8082020-10-21 13:27:59 +0000526
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000527Do Disable Onu Device
528 [Documentation] This keyword disables all onus.
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000529 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme17becfc2020-10-08 09:46:27 +0000530 ${src}= Set Variable ${hosts.src[${I}]}
531 ${onu_device_id}= Get Device ID From SN ${src['onu']}
532 Disable Device ${onu_device_id}
533 Wait Until Keyword Succeeds 20s 2s Test Devices Disabled in VOLTHA Id=${onu_device_id}
534 END
535
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000536Do Enable Onu Device
537 [Documentation] This keyword enables all onus.
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000538 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme17becfc2020-10-08 09:46:27 +0000539 ${src}= Set Variable ${hosts.src[${I}]}
540 ${onu_device_id}= Get Device ID From SN ${src['onu']}
541 Enable Device ${onu_device_id}
542 END
543
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000544Do Power Off ONU Device
545 [Documentation] This keyword power off all onus.
546 ${namespace}= Set Variable voltha
TorstenThiemefd7e7ba2020-11-06 13:57:57 +0000547 FOR ${I} IN RANGE 0 ${num_all_onus}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000548 ${src}= Set Variable ${hosts.src[${I}]}
Holger Hildebrandt23147742020-11-16 10:13:21 +0000549 ${result}= Exec Pod In Kube ${namespace} bbsim bbsimctl onu shutdown ${src['onu']}
TorstenThieme5ca1dd12020-10-16 08:42:16 +0000550 Should Contain ${result} successfully msg=Can not shutdown ${src['onu']} values=False
551 END