blob: a60f5d3f0c1ba34d4be8a29375e3ecc23ad12781 [file] [log] [blame]
Hardik Windlass17bd1142021-03-12 08:15:25 +00001# Copyright 2021 - 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# FIXME Can we use the same test against BBSim and Hardware?
15
16*** Settings ***
17Documentation Tests ONU Software Upgrade
18Suite Setup Setup Suite
19Test Setup Setup
20Test Teardown Teardown
21Suite Teardown Teardown Suite
22Library Collections
23Library String
24Library OperatingSystem
25Library XML
26Library RequestsLibrary
27Library ../../libraries/DependencyLibrary.py
28Resource ../../libraries/onos.robot
29Resource ../../libraries/voltctl.robot
30Resource ../../libraries/voltha.robot
31Resource ../../libraries/utils.robot
32Resource ../../libraries/k8s.robot
Hardik Windlassc310c7c2021-03-25 13:16:59 +000033Resource ../../libraries/bbsim.robot
Hardik Windlass17bd1142021-03-12 08:15:25 +000034Resource ../../variables/variables.robot
35
36*** Variables ***
37${POD_NAME} flex-ocp-cord
38${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
39${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
40#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
41${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
42${HELM_CHARTS_DIR} ~/helm-charts
43${VOLTHA_POD_NUM} 8
44${NAMESPACE} voltha
45# For below variable value, using deployment name as using grep for
46# parsing radius pod name, we can also use full radius pod name
47${RESTART_POD_NAME} radius
48${timeout} 60s
49${of_id} 0
50${logical_id} 0
51${has_dataplane} True
52${teardown_device} False
53${scripts} ../../scripts
54
55# Per-test logging on failure is turned off by default; set this variable to enable
56${container_log_dir} ${None}
57
58${suppressaddsubscriber} True
59
Hardik Windlassf0ce2062021-07-23 11:04:39 +000060# logging flag to enable Collect Logs, can be passed via the command line too
61# example: -v logging:False
62${logging} True
63
Hardik Windlass17bd1142021-03-12 08:15:25 +000064# ONU Image to test for Upgrade needs to be passed in the following format:
Hardik Windlassba1bd272021-06-22 08:29:33 +000065${image_version} ${EMPTY}
66# Example value: BBSM_IMG_00002
67${image_url} ${EMPTY}
Hardik Windlass17bd1142021-03-12 08:15:25 +000068# Example value: http://bbsim0:50074/images/software-image.img
Hardik Windlassba1bd272021-06-22 08:29:33 +000069${image_vendor} ${EMPTY}
70# Example value: BBSM
71${image_activate_on_success} ${EMPTY}
72# Example value: false
73${image_commit_on_success} ${EMPTY}
74# Example value: false
75${image_crc} ${EMPTY}
Hardik Windlass17bd1142021-03-12 08:15:25 +000076# Example value: 0
Hardik Windlass17bd1142021-03-12 08:15:25 +000077
78*** Test Cases ***
79Test ONU Upgrade
80 [Documentation] Validates the ONU Upgrade doesn't affect the system functionality
81 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
82 ... Requirement: Pass image details in following parameters in the robot command
83 ... onu_image_name, onu_image_url, onu_image_version, onu_image_crc, onu_image_local_dir
Hardik Windlassc310c7c2021-03-25 13:16:59 +000084 ... Note: The TC expects the image url and other parameters to be common for all ONUs on all BBSim
Hardik Windlass17bd1142021-03-12 08:15:25 +000085 ... Check [VOL-3903] for more details
86 [Tags] functional ONUUpgrade
87 [Setup] Start Logging ONUUpgrade
88 [Teardown] Run Keywords Collect Logs
89 ... AND Stop Logging ONUUpgrade
90 ... AND Delete All Devices and Verify
TorstenThieme9cf8bd52021-07-29 10:53:55 +000091 Test ONU Upgrade All OLTs
92
93Test ONU Upgrade All Activate and Commit Combinations
94 [Documentation] Validates the ONU Upgrade doesn't affect the system functionality by use all combinations of
95 ... flags activate_on_success and commit_on_success
96 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
97 ... Requirement: Pass image details in following parameters in the robot command
98 ... onu_image_name, onu_image_url, onu_image_version, onu_image_crc, onu_image_local_dir
99 ... Note: The TC expects the image url and other parameters to be common for all ONUs on all BBSim
100 ... Check [VOL-4250] for more details
101 [Tags] functional ONUUpgradeAllCombies notready
102 [Setup] Start Logging ONUUpgradeAllCombies
103 [Teardown] Run Keywords Collect Logs
104 ... AND Stop Logging ONUUpgradeAllCombies
105 ... AND Delete All Devices and Verify
106 ${false_false}= Create Dictionary activate false commit false
107 ${true_false}= Create Dictionary activate true commit false
108 ${false_true}= Create Dictionary activate false commit true
109 ${true_true}= Create Dictionary activate true commit true
110 ${flag_list}= Create List ${false_false} ${true_false} ${false_true} ${true_true}
111 FOR ${item} IN @{flag_list}
112 Test ONU Upgrade All OLTs ${item['activate']} ${item['commit']}
113 Delete All Devices and Verify
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000114 END
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000115
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000116Test ONU Upgrade Correct Indication of Download Wrong Url
117 [Documentation] Validates the ONU Upgrade download from wrong URL failure will be indicated correctly
118 ... and doesn't affect the system functionality
119 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
120 ... Check [VOL-4257] for more details
TorstenThieme7cb9de72021-08-24 09:40:57 +0000121 [Tags] functional ONUUpgradeDownloadWrongUrl
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000122 [Setup] Start Logging ONUUpgradeDownloadWrongUrl
123 [Teardown] Run Keywords Collect Logs
124 ... AND Stop Logging ONUUpgradeDownloadWrongUrl
125 ... AND Delete All Devices and Verify
126 # Add OLT device
127 Setup
128 # Performing Sanity Test to make sure subscribers are all DHCP and pingable
129 Run Keyword If ${has_dataplane} Clean Up Linux
130 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
131 FOR ${J} IN RANGE 0 ${num_olts}
132 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
133 ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
134 ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
135 Test ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
TorstenThieme7cb9de72021-08-24 09:40:57 +0000136 ... url=http://bbsim0:50074/images/wrong-image.img$
137 ... dwl_dwlstate=DOWNLOAD_FAILED dwl_reason=INVALID_URL dwl_imgstate=IMAGE_UNKNOWN
138 ... dwlstate=DOWNLOAD_UNKNOWN reason=NO_ERROR imgstate=IMAGE_UNKNOWN
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000139 List ONUs ${NAMESPACE} ${bbsim_pod}
140 END
141 # Additional Verification
142 Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
143 Setup
144 Run Keyword If ${has_dataplane} Clean Up Linux
145 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
146
TorstenThieme7cb9de72021-08-24 09:40:57 +0000147Test ONU Upgrade Correct Indication of Download Failure
148 [Documentation] Validates the ONU Upgrade download failure will be indicated correctly and
149 ... doesn't affect the system functionality
150 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
151 ... Check [VOL-3935] for more details
152 [Tags] functional ONUUpgradeDownloadFailure
153 [Setup] Start Logging ONUUpgradeDownloadFailure
154 [Teardown] Run Keywords Collect Logs
155 ... AND Stop Logging ONUUpgradeDownloadFailure
156 ... AND Delete All Devices and Verify
157 # Add OLT device
158 Setup
159 # Performing Sanity Test to make sure subscribers are all DHCP and pingable
160 Run Keyword If ${has_dataplane} Clean Up Linux
161 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
162 FOR ${J} IN RANGE 0 ${num_olts}
163 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
164 ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
165 ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
166 Test ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
167 ... dwlstate=DOWNLOAD_FAILED reason=CANCELLED_ON_ONU_STATE imgstate=IMAGE_UNKNOWN
168 List ONUs ${NAMESPACE} ${bbsim_pod}
169 END
170 # Additional Verification
171 Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
172 Setup
173 Run Keyword If ${has_dataplane} Clean Up Linux
174 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000175
176
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000177*** Keywords ***
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000178Test ONU Upgrade All OLTs
179 [Documentation] This keyword performs the ONU Upgrade test on all OLTs
180 [Arguments] ${activate_on_success}=${image_activate_on_success} ${commit_on_success}=${image_commit_on_success}
181 # Add OLT device
182 Setup
183 # Performing Sanity Test to make sure subscribers are all DHCP and pingable
184 Run Keyword If ${has_dataplane} Clean Up Linux
185 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
186 FOR ${J} IN RANGE 0 ${num_olts}
187 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
188 ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
189 ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
190 Test ONU Upgrade Per OLT ${bbsim_pod} ${olt_serial_number} ${activate_on_success} ${commit_on_success}
191 List ONUs ${NAMESPACE} ${bbsim_pod}
192 END
193 # Additional Verification
194 Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
195 Setup
196 Run Keyword If ${has_dataplane} Clean Up Linux
197 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
198
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000199Test ONU Upgrade Per OLT
200 [Documentation] This keyword performs the ONU Upgrade test on single OLT
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000201 [Arguments] ${bbsim_pod} ${olt_serial_number} ${activate_on_success}=${image_activate_on_success}
202 ... ${commit_on_success}=${image_commit_on_success}
Hardik Windlass17bd1142021-03-12 08:15:25 +0000203 FOR ${I} IN RANGE 0 ${num_all_onus}
204 ${src}= Set Variable ${hosts.src[${I}]}
205 ${dst}= Set Variable ${hosts.dst[${I}]}
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000206 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
Hardik Windlass17bd1142021-03-12 08:15:25 +0000207 ${onu_device_id}= Get Device ID From SN ${src['onu']}
Hardik Windlassba1bd272021-06-22 08:29:33 +0000208 # Download Image
209 Download ONU Device Image ${image_version} ${image_url} ${image_vendor}
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000210 ... ${activate_on_success} ${commit_on_success}
Hardik Windlassba1bd272021-06-22 08:29:33 +0000211 ... ${image_crc} ${onu_device_id}
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000212 ${imageState}= Run Keyword If '${activate_on_success}'=='true' and '${commit_on_success}'=='false'
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000213 ... Set Variable IMAGE_ACTIVE
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000214 ... ELSE IF '${activate_on_success}'=='true' and '${commit_on_success}'=='true'
Hardik Windlassba1bd272021-06-22 08:29:33 +0000215 ... Set Variable IMAGE_COMMITTED
216 ... ELSE Set Variable IMAGE_INACTIVE
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000217 ${activated}= Set Variable If '${activate_on_success}'=='true' True False
218 ${committed}= Set Variable If '${activate_on_success}'=='true' and '${commit_on_success}'=='true'
Hardik Windlassba1bd272021-06-22 08:29:33 +0000219 ... True False
220 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
221 ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR ${imageState}
222 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
223 ... ${image_version} ${committed} ${activated} True
224 # Activate Image
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000225 ${imageState}= Set Variable If '${commit_on_success}'=='true' IMAGE_COMMITTED IMAGE_ACTIVE
226 ${committed}= Set Variable If '${commit_on_success}'=='true' True False
227 Run Keyword If '${activate_on_success}'=='false' Run Keywords
228 ... Activate ONU Device Image ${image_version} ${commit_on_success} ${onu_device_id}
Hardik Windlassba1bd272021-06-22 08:29:33 +0000229 ... AND Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
230 ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR ${imageState}
231 ... AND Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
232 ... ${image_version} ${committed} True True
233 # Commit Image
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000234 Run Keyword If '${commit_on_success}'=='false' Run Keywords
Hardik Windlassba1bd272021-06-22 08:29:33 +0000235 ... Commit ONU Device Image ${image_version} ${onu_device_id}
236 ... AND Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
237 ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_COMMITTED
238 ... AND Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
239 ... ${image_version} True True True
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000240 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image On BBSim ${NAMESPACE} ${bbsim_pod}
241 ... ${src['onu']} software_image_committed
Hardik Windlass17bd1142021-03-12 08:15:25 +0000242 Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
243 END
Hardik Windlass17bd1142021-03-12 08:15:25 +0000244
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000245Test ONU Upgrade Download Failure Per OLT
246 [Documentation] This keyword performs the ONU Upgrade Dowload Failure test on single OLT
TorstenThieme7cb9de72021-08-24 09:40:57 +0000247 [Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
248 ... ${dwl_dwlstate}=DOWNLOAD_STARTED ${dwl_reason}=NO_ERROR ${dwl_imgstate}=IMAGE_UNKNOWN
249 ... ${dwlstate}=DOWNLOAD_SUCCEEDED ${reason}=NO_ERROR ${imgstate}=IMAGE_INACTIVE
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000250 FOR ${I} IN RANGE 0 ${num_all_onus}
251 ${src}= Set Variable ${hosts.src[${I}]}
252 ${dst}= Set Variable ${hosts.dst[${I}]}
253 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
254 ${onu_device_id}= Get Device ID From SN ${src['onu']}
255 # Download Image
TorstenThieme9cf8bd52021-07-29 10:53:55 +0000256 Download ONU Device Image INVALID_IMAGE ${url} ${image_vendor}
TorstenThieme7cb9de72021-08-24 09:40:57 +0000257 ... ${image_activate_on_success} ${image_commit_on_success} ${image_crc} ${onu_device_id}
258 ... download_state=${dwl_dwlstate} expected_reason=${dwl_reason} image_state=${dwl_imgstate}
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000259 Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status INVALID_IMAGE
TorstenThieme7cb9de72021-08-24 09:40:57 +0000260 ... ${onu_device_id} ${dwlstate} ${reason} ${imgstate}
TorstenThiemeeb2440e2021-07-20 10:45:05 +0000261 Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
262 END
263
Hardik Windlass17bd1142021-03-12 08:15:25 +0000264Setup Suite
265 [Documentation] Set up the test suite
266 Common Test Suite Setup
267
268Teardown Suite
269 [Documentation] Tear down steps for the suite
270 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThieme4e2168e2021-06-22 14:01:47 +0000271 Close All ONOS SSH Connections