blob: a7d7ea5d906a1f09dc44d1dff00f5ee24a6491ab [file] [log] [blame]
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -05001*** Settings ***
2Documentation Update the PNOR code on a target BMC.
3... Execution Method:
4... python -m robot -v OPENBMC_HOST:<hostname>
5... -v DELETE_OLD_PNOR_IMAGES:<"true" or "false">
Charles Paul Hofera5673162017-08-30 09:49:16 -05006... -v IMAGE_FILE_PATH:<path/*.tar>
7... -v ALTERNATE_IMAGE_FILE_PATH:<path/*.tar>
8... host_code_update.robot
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -05009...
10... Code update method BMC
11... Update work flow sequence:
12... - Upload image via REST
13... - Verify that the file exists on the BMC
14... - Check that software "Activation" is set to "Ready"
15... - Set "Requested Activation" to "Active"
16... - Wait for code update to complete
17... - Verify the new version
18
19Library ../../lib/bmc_ssh_utils.py
20Library ../../lib/code_update_utils.py
Michael Walshe78a4432018-03-29 16:36:04 -050021Library ../../lib/gen_robot_keyword.py
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050022Variables ../../data/variables.py
23Resource ../../lib/boot_utils.robot
24Resource code_update_utils.robot
25Resource ../../lib/code_update_utils.robot
George Keishing1eb85f52017-08-30 22:55:13 -050026Resource ../../lib/openbmc_ffdc.robot
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050027Resource ../../lib/state_manager.robot
George Keishing1eb85f52017-08-30 22:55:13 -050028Resource ../../lib/dump_utils.robot
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050029
George Keishing00715492017-08-18 11:46:37 -050030Test Teardown Code Update Test Teardown
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050031
George Keishing09712a12017-10-16 12:52:42 -050032Force Tags Host_Code_Update
33
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050034*** Variables ***
35
36${QUIET} ${1}
37${IMAGE_FILE_PATH} ${EMPTY}
38${DELETE_OLD_PNOR_IMAGES} false
Charles Paul Hofer51b54c02017-09-13 22:13:49 -050039${DELETE_OLD_GUARD_FILE} false
Charles Paul Hoferc1fa2bc2017-08-18 16:44:03 -050040${ALTERNATE_IMAGE_FILE_PATH} ${EMPTY}
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050041
42*** Test Cases ***
43
44REST Host Code Update
45 [Documentation] Do a PNOR code update by uploading image on BMC via REST.
George Keishing00715492017-08-18 11:46:37 -050046 # 1. Delete error logs if there is any.
47 # 1. Do code update.
48 # 2. Do post update the following:
49 # - Collect FFDC if error log exist and delete error logs.
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050050 [Tags] REST_Host_Code_Update
51 [Setup] Code Update Setup
52
Sweta Potthuri8c7ada42018-01-15 05:05:59 -060053 Run Keyword And Ignore Error List Installed Images Host
54
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050055 Upload And Activate Image ${IMAGE_FILE_PATH}
56 OBMC Reboot (off)
57
58
59Post Update Boot To OS
60 [Documentation] Boot the host OS
61 [Tags] Post_Update_Boot_To_OS
Charles Paul Hofer0c4a87d2017-10-11 17:27:40 -050062 [Setup] Start SOL Console Logging
George Keishingda6bace2017-09-14 07:42:27 -050063 [Teardown] Run Keywords Stop SOL Console Logging
64 ... AND Code Update Test Teardown
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050065
66 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL'
67 ... Fail Code update failed. No need to boot to OS.
George Keishing32fe4e12018-07-13 05:06:47 -050068 Delete All Error Logs
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050069 REST Power On
Charles Paul Hofere43fb2f2017-09-26 15:36:18 -050070 Verify Running Host Image ${IMAGE_FILE_PATH}
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050071
72
Charles Paul Hofer7c6e7522017-10-18 17:09:27 -050073REST Host Code Update While OS Is Running
74 [Documentation] Do a PNOR code update while the host is running.
75 [Tags] REST_Host_Code_Update_While_OS_Is_Running
Charles Paul Hofer4e8c09b2017-11-03 14:59:05 -050076 [Teardown] Run Keywords REST Power Off stack_mode=skip
77 ... AND Code Update Test Teardown
Charles Paul Hofer7c6e7522017-10-18 17:09:27 -050078
79 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL'
80 ... Fail Cannot boot the OS.
81
82 REST Power On stack_mode=skip
George Keishing72373f82017-11-20 09:18:41 -060083 Upload And Activate Image
84 ... ${ALTERNATE_IMAGE_FILE_PATH} skip_if_active=true
Charles Paul Hofer7c6e7522017-10-18 17:09:27 -050085 REST Power On stack_mode=normal
86 Verify Running Host Image ${ALTERNATE_IMAGE_FILE_PATH}
87
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050088Host Image Priority Attribute Test
89 [Documentation] Set "Priority" attribute.
90 [Tags] Host_Image_Priority_Attribute_Test
91 [Template] Temporarily Set PNOR Attribute
92
93 # Property Value
94 Priority ${0}
95 Priority ${1}
96 Priority ${127}
George Keishing97ecb272017-09-12 04:30:20 -050097 Priority ${255}
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -050098
99
Charles Paul Hofer42f17462017-09-12 14:09:32 -0500100Host Set Priority To Invalid Values
101 [Documentation] Attempt to set the priority of an image to an invalid
102 ... value and expect an error.
103 [Tags] Host_Set_Priority_To_Invalid_Values
104 [Template] Set Priority To Invalid Value And Expect Error
105
106 # Version Type Priority
107 ${VERSION_PURPOSE_HOST} ${-1}
108 ${VERSION_PURPOSE_HOST} ${256}
109
110
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500111Set RequestedActivation To None
112 [Documentation] Set the RequestedActivation of the image to None and
113 ... verify that it is in fact set to None.
114 [Tags] Set_RequestedActivation_To_None
115
116 ${software_objects}= Get Software Objects
117 Set Host Software Property @{software_objects}[0] RequestedActivation
118 ... ${REQUESTED_NONE}
119 ${software_properties}= Get Host Software Property @{software_objects}[0]
120 Should Be Equal As Strings &{software_properties}[RequestedActivation]
121 ... ${REQUESTED_NONE}
122
123
124Set RequestedActivation And Activation To Invalid Value
125 [Documentation] Set the RequestedActivation and Activation propreties of
126 ... the image to an invalid value and verify that it was not
127 ... changed.
128 [Template] Set Property To Invalid Value And Verify No Change
129 [Tags] Set_RequestedActivation_And_Activation_To_Invalid_Value
130
131 # Property Version Type
132 RequestedActivation ${VERSION_PURPOSE_HOST}
133 Activation ${VERSION_PURPOSE_HOST}
134
135
Charles Paul Hoferc1fa2bc2017-08-18 16:44:03 -0500136Upload And Activate Multiple Host Images
137 [Documentation] Upload another PNOR image and verify that its state is
138 ... different from all others.
139 [Tags] Upload_And_Activate_Multiple_Host_Images
140 [Template] Activate Image And Verify No Duplicate Priorities
141 [Setup] Upload And Activate Multiple BMC Images Setup
142
143 # Image File Path Image Purpose
144 ${ALTERNATE_IMAGE_FILE_PATH} ${VERSION_PURPOSE_HOST}
145
146
Charles Paul Hofera5673162017-08-30 09:49:16 -0500147Set Same Priority For Multiple Host Images
148 [Documentation] Attempt to set the priority to be the same for two PNOR
149 ... images and verify that the priorities are not the same.
150 [Tags] Set_Same_Priority_For_Multiple_Host_Images
151
152 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL'
153 ... Fail Activation of alternate image failed. Cannot set priority.
154 Set Same Priority For Multiple Images ${VERSION_PURPOSE_HOST}
155
156
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500157Delete Host Image
158 [Documentation] Delete a PNOR image from the BMC and PNOR flash chip.
159 [Tags] Delete_Host_Image
160 [Setup] Initiate Host PowerOff
161
162 ${software_objects}= Get Software Objects
163 ... version_type=${VERSION_PURPOSE_HOST}
164 ${num_images}= Get Length ${software_objects}
165 Should Be True 0 < ${num_images}
166 ... msg=There are no PNOR images on the BMC to delete.
167 Delete Image And Verify @{software_objects}[0] ${VERSION_PURPOSE_HOST}
168
169
George Keishing287faaf2017-11-21 12:31:03 -0600170Verify Host Update When Host Reboot During Activation In Progress
171 [Documentation] Attempt to reboot the host while an image is activating.
172 [Tags] Verify_Host_Update_When_Host_Reboot_During_Activation_In_Progress
173
174 Upload And Activate Image ${IMAGE_FILE_PATH}
175 REST Power On
George Keishing32fe4e12018-07-13 05:06:47 -0500176 Delete All Error Logs
George Keishing287faaf2017-11-21 12:31:03 -0600177
178 ${version_id}= Upload And Activate Image ${ALTERNATE_IMAGE_FILE_PATH}
179 ... wait=${0}
180
181 ${resp}= OpenBMC Get Request ${SOFTWARE_VERSION_URI}${version_id}
182 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
183
184 # Reboot Host during activation.
185 Host Reboot
186
187 Wait For Activation State Change ${version_id} ${ACTIVATING}
188
189 # New image priority should be 0.
190 ${new_host_properties}=
191 ... Get Host Software Property ${SOFTWARE_VERSION_URI}${version_id}
192 Should Be Equal As Integers ${new_host_properties["Priority"]} ${0}
193
194 # Reboot host to boot up with the new host image version.
195 Host Reboot
196 Verify Running Host Image ${ALTERNATE_IMAGE_FILE_PATH}
197
198
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500199*** Keywords ***
200
201Temporarily Set PNOR Attribute
202 [Documentation] Update the PNOR attribute value.
203 [Arguments] ${attribute_name} ${attribute_value}
204
205 # Description of argument(s):
206 # attribute_name Host software attribute name (e.g. "Priority").
207 # attribute_value Value to be written.
208
209 ${image_ids}= Get Software Objects
210 ${init_host_properties}= Get Host Software Property ${image_ids[0]}
211 ${initial_priority}= Set Variable ${init_host_properties["Priority"]}
212
213 Set Host Software Property ${image_ids[0]} ${attribute_name}
214 ... ${attribute_value}
215
216 ${cur_host_properties}= Get Host Software Property ${image_ids[0]}
217 Should Be Equal As Integers ${cur_host_properties["Priority"]}
218 ... ${attribute_value}
219
220 # Revert to to initial value.
221 Set Host Software Property
222 ... ${image_ids[0]} ${attribute_name} ${initial_priority}
223
224
225Code Update Setup
226 [Documentation] Do code update test case setup.
George Keishing1eb85f52017-08-30 22:55:13 -0500227 # - Clean up all existing BMC dumps.
228 # - Clean up all currently install PNOR images.
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500229
Charles Paul Hoferb9264082017-09-29 15:00:19 -0500230 Run Keyword And Ignore Error Smart Power Off
Michael Walshe78a4432018-03-29 16:36:04 -0500231 Run Key Delete All Dumps ignore=1
George Keishing32fe4e12018-07-13 05:06:47 -0500232 Run Key Delete All Error Logs ignore=1
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500233 Run Keyword If 'true' == '${DELETE_OLD_PNOR_IMAGES}'
234 ... Delete All PNOR Images
Charles Paul Hofer51b54c02017-09-13 22:13:49 -0500235 Run Keyword If 'true' == '${DELETE_OLD_GUARD_FILE}' BMC Execute Command
236 ... rm -f /var/lib/phosphor-software-manager/pnor/prsv/GUARD
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500237
238
Charles Paul Hoferc1fa2bc2017-08-18 16:44:03 -0500239Upload And Activate Multiple BMC Images Setup
240 [Documentation] Check that the ALTERNATE_FILE_PATH variable is set.
241
242 Should Not Be Empty ${ALTERNATE_IMAGE_FILE_PATH}
Charles Paul Hofer4e8c09b2017-11-03 14:59:05 -0500243 Delete All PNOR Images
George Keishing72373f82017-11-20 09:18:41 -0600244 Upload And Activate Image ${IMAGE_FILE_PATH} skip_if_active=true
Charles Paul Hoferc1fa2bc2017-08-18 16:44:03 -0500245
Charles Paul Hofer9f74d3a2017-08-18 09:54:28 -0500246Get PNOR Extended Version
247 [Documentation] Return the PNOR extended version.
248 [Arguments] ${manifest_path}
249
250 # Description of argument(s):
251 # manifest_path Path of the MANIFEST file
252 # (e.g. "/tmp/images/abc123/MANIFEST").
253
254 ${version}= BMC Execute Command
255 ... grep extended_version= ${manifest_path}
256 [return] ${version.split(",")}
George Keishing00715492017-08-18 11:46:37 -0500257
258
259Code Update Test Teardown
260 [Documentation] Do code update test case teardown.
261 # 1. Collect FFDC if test case failed.
262 # 2. Collect FFDC if test PASS but error log exists.
263
264 FFDC On Test Case Fail
265 Run Keyword If '${TEST_STATUS}' == 'PASS' Check Error And Collect FFDC