xref: /openbmc/openbmc-test-automation/extended/code_update/host_code_update.robot (revision 0071549e6363f2ba27ff3be143cb4aa22618eedb)
19f74d3afSCharles Paul Hofer*** Settings ***
29f74d3afSCharles Paul HoferDocumentation     Update the PNOR code on a target BMC.
39f74d3afSCharles Paul Hofer...               Execution Method:
49f74d3afSCharles Paul Hofer...               python -m robot -v OPENBMC_HOST:<hostname>
59f74d3afSCharles Paul Hofer...               -v DELETE_OLD_PNOR_IMAGES:<"true" or "false">
69f74d3afSCharles Paul Hofer...               -v IMAGE_FILE_PATH:<path/*.tar>  host_code_update.robot
79f74d3afSCharles Paul Hofer...
89f74d3afSCharles Paul Hofer...               Code update method BMC
99f74d3afSCharles Paul Hofer...               Update work flow sequence:
109f74d3afSCharles Paul Hofer...                 - Upload image via REST
119f74d3afSCharles Paul Hofer...                 - Verify that the file exists on the BMC
129f74d3afSCharles Paul Hofer...                 - Check that software "Activation" is set to "Ready"
139f74d3afSCharles Paul Hofer...                 - Set "Requested Activation" to "Active"
149f74d3afSCharles Paul Hofer...                 - Wait for code update to complete
159f74d3afSCharles Paul Hofer...                 - Verify the new version
169f74d3afSCharles Paul Hofer
179f74d3afSCharles Paul HoferLibrary           ../../lib/bmc_ssh_utils.py
189f74d3afSCharles Paul HoferLibrary           ../../lib/code_update_utils.py
199f74d3afSCharles Paul HoferVariables         ../../data/variables.py
209f74d3afSCharles Paul HoferResource          ../../lib/boot_utils.robot
219f74d3afSCharles Paul HoferResource          code_update_utils.robot
229f74d3afSCharles Paul HoferResource          ../../lib/code_update_utils.robot
231eb85f57SGeorge KeishingResource          ../../lib/openbmc_ffdc.robot
249f74d3afSCharles Paul HoferResource          ../../lib/state_manager.robot
251eb85f57SGeorge KeishingResource          ../../lib/dump_utils.robot
269f74d3afSCharles Paul Hofer
27*0071549eSGeorge KeishingTest Teardown     Code Update Test Teardown
289f74d3afSCharles Paul Hofer
299f74d3afSCharles Paul Hofer*** Variables ***
309f74d3afSCharles Paul Hofer
319f74d3afSCharles Paul Hofer${QUIET}                          ${1}
329f74d3afSCharles Paul Hofer${IMAGE_FILE_PATH}                ${EMPTY}
339f74d3afSCharles Paul Hofer${DELETE_OLD_PNOR_IMAGES}         false
34c1fa2bc9SCharles Paul Hofer${ALTERNATE_IMAGE_FILE_PATH}      ${EMPTY}
359f74d3afSCharles Paul Hofer
369f74d3afSCharles Paul Hofer*** Test Cases ***
379f74d3afSCharles Paul Hofer
389f74d3afSCharles Paul HoferREST Host Code Update
399f74d3afSCharles Paul Hofer    [Documentation]  Do a PNOR code update by uploading image on BMC via REST.
40*0071549eSGeorge Keishing    # 1. Delete error logs if there is any.
41*0071549eSGeorge Keishing    # 1. Do code update.
42*0071549eSGeorge Keishing    # 2. Do post update the following:
43*0071549eSGeorge Keishing    #    - Collect FFDC if error log exist and delete error logs.
449f74d3afSCharles Paul Hofer    [Tags]  REST_Host_Code_Update
459f74d3afSCharles Paul Hofer    [Setup]  Code Update Setup
469f74d3afSCharles Paul Hofer
479f74d3afSCharles Paul Hofer    Upload And Activate Image  ${IMAGE_FILE_PATH}
489f74d3afSCharles Paul Hofer    OBMC Reboot (off)
499f74d3afSCharles Paul Hofer
509f74d3afSCharles Paul Hofer
51*0071549eSGeorge Keishing
529f74d3afSCharles Paul HoferPost Update Boot To OS
539f74d3afSCharles Paul Hofer    [Documentation]  Boot the host OS
549f74d3afSCharles Paul Hofer    [Tags]  Post_Update_Boot_To_OS
559f74d3afSCharles Paul Hofer    [Teardown]  Stop SOL Console Logging
569f74d3afSCharles Paul Hofer
579f74d3afSCharles Paul Hofer    Run Keyword If  '${PREV_TEST_STATUS}' == 'FAIL'
589f74d3afSCharles Paul Hofer    ...  Fail  Code update failed. No need to boot to OS.
599f74d3afSCharles Paul Hofer    Start SOL Console Logging
60*0071549eSGeorge Keishing    Delete Error Logs
619f74d3afSCharles Paul Hofer    REST Power On
629f74d3afSCharles Paul Hofer
639f74d3afSCharles Paul Hofer
649f74d3afSCharles Paul HoferHost Image Priority Attribute Test
659f74d3afSCharles Paul Hofer    [Documentation]  Set "Priority" attribute.
669f74d3afSCharles Paul Hofer    [Tags]  Host_Image_Priority_Attribute_Test
679f74d3afSCharles Paul Hofer    [Template]  Temporarily Set PNOR Attribute
689f74d3afSCharles Paul Hofer
699f74d3afSCharles Paul Hofer    # Property        Value
709f74d3afSCharles Paul Hofer    Priority          ${0}
719f74d3afSCharles Paul Hofer    Priority          ${1}
729f74d3afSCharles Paul Hofer    Priority          ${127}
739f74d3afSCharles Paul Hofer
749f74d3afSCharles Paul Hofer
759f74d3afSCharles Paul HoferSet RequestedActivation To None
769f74d3afSCharles Paul Hofer    [Documentation]  Set the RequestedActivation of the image to None and
779f74d3afSCharles Paul Hofer    ...              verify that it is in fact set to None.
789f74d3afSCharles Paul Hofer    [Tags]  Set_RequestedActivation_To_None
799f74d3afSCharles Paul Hofer
809f74d3afSCharles Paul Hofer    ${software_objects}=  Get Software Objects
819f74d3afSCharles Paul Hofer    Set Host Software Property  @{software_objects}[0]  RequestedActivation
829f74d3afSCharles Paul Hofer    ...  ${REQUESTED_NONE}
839f74d3afSCharles Paul Hofer    ${software_properties}=  Get Host Software Property  @{software_objects}[0]
849f74d3afSCharles Paul Hofer    Should Be Equal As Strings  &{software_properties}[RequestedActivation]
859f74d3afSCharles Paul Hofer    ...  ${REQUESTED_NONE}
869f74d3afSCharles Paul Hofer
879f74d3afSCharles Paul Hofer
889f74d3afSCharles Paul HoferSet RequestedActivation And Activation To Invalid Value
899f74d3afSCharles Paul Hofer    [Documentation]  Set the RequestedActivation and Activation propreties of
909f74d3afSCharles Paul Hofer    ...              the image to an invalid value and verify that it was not
919f74d3afSCharles Paul Hofer    ...              changed.
929f74d3afSCharles Paul Hofer    [Template]  Set Property To Invalid Value And Verify No Change
939f74d3afSCharles Paul Hofer    [Tags]  Set_RequestedActivation_And_Activation_To_Invalid_Value
949f74d3afSCharles Paul Hofer
959f74d3afSCharles Paul Hofer    # Property              Version Type
969f74d3afSCharles Paul Hofer    RequestedActivation     ${VERSION_PURPOSE_HOST}
979f74d3afSCharles Paul Hofer    Activation              ${VERSION_PURPOSE_HOST}
989f74d3afSCharles Paul Hofer
999f74d3afSCharles Paul Hofer
100c1fa2bc9SCharles Paul HoferUpload And Activate Multiple Host Images
101c1fa2bc9SCharles Paul Hofer    [Documentation]  Upload another PNOR image and verify that its state is
102c1fa2bc9SCharles Paul Hofer    ...              different from all others.
103c1fa2bc9SCharles Paul Hofer    [Tags]  Upload_And_Activate_Multiple_Host_Images
104c1fa2bc9SCharles Paul Hofer    [Template]  Activate Image And Verify No Duplicate Priorities
105c1fa2bc9SCharles Paul Hofer    [Setup]  Upload And Activate Multiple BMC Images Setup
106c1fa2bc9SCharles Paul Hofer
107c1fa2bc9SCharles Paul Hofer    # Image File Path              Image Purpose
108c1fa2bc9SCharles Paul Hofer    ${ALTERNATE_IMAGE_FILE_PATH}   ${VERSION_PURPOSE_HOST}
109c1fa2bc9SCharles Paul Hofer
110c1fa2bc9SCharles Paul Hofer
1119f74d3afSCharles Paul HoferDelete Host Image
1129f74d3afSCharles Paul Hofer    [Documentation]  Delete a PNOR image from the BMC and PNOR flash chip.
1139f74d3afSCharles Paul Hofer    [Tags]  Delete_Host_Image
1149f74d3afSCharles Paul Hofer    [Setup]  Initiate Host PowerOff
1159f74d3afSCharles Paul Hofer
1169f74d3afSCharles Paul Hofer    ${software_objects}=  Get Software Objects
1179f74d3afSCharles Paul Hofer    ...  version_type=${VERSION_PURPOSE_HOST}
1189f74d3afSCharles Paul Hofer    ${num_images}=  Get Length  ${software_objects}
1199f74d3afSCharles Paul Hofer    Should Be True  0 < ${num_images}
1209f74d3afSCharles Paul Hofer    ...  msg=There are no PNOR images on the BMC to delete.
1219f74d3afSCharles Paul Hofer    Delete Image And Verify  @{software_objects}[0]  ${VERSION_PURPOSE_HOST}
1229f74d3afSCharles Paul Hofer
1239f74d3afSCharles Paul Hofer
1249f74d3afSCharles Paul Hofer*** Keywords ***
1259f74d3afSCharles Paul Hofer
1269f74d3afSCharles Paul HoferTemporarily Set PNOR Attribute
1279f74d3afSCharles Paul Hofer    [Documentation]  Update the PNOR attribute value.
1289f74d3afSCharles Paul Hofer    [Arguments]  ${attribute_name}  ${attribute_value}
1299f74d3afSCharles Paul Hofer
1309f74d3afSCharles Paul Hofer    # Description of argument(s):
1319f74d3afSCharles Paul Hofer    # attribute_name    Host software attribute name (e.g. "Priority").
1329f74d3afSCharles Paul Hofer    # attribute_value   Value to be written.
1339f74d3afSCharles Paul Hofer
1349f74d3afSCharles Paul Hofer    ${image_ids}=  Get Software Objects
1359f74d3afSCharles Paul Hofer    ${init_host_properties}=  Get Host Software Property  ${image_ids[0]}
1369f74d3afSCharles Paul Hofer    ${initial_priority}=  Set Variable  ${init_host_properties["Priority"]}
1379f74d3afSCharles Paul Hofer
1389f74d3afSCharles Paul Hofer    Set Host Software Property  ${image_ids[0]}  ${attribute_name}
1399f74d3afSCharles Paul Hofer    ...  ${attribute_value}
1409f74d3afSCharles Paul Hofer
1419f74d3afSCharles Paul Hofer    ${cur_host_properties}=  Get Host Software Property  ${image_ids[0]}
1429f74d3afSCharles Paul Hofer    Should Be Equal As Integers  ${cur_host_properties["Priority"]}
1439f74d3afSCharles Paul Hofer    ...  ${attribute_value}
1449f74d3afSCharles Paul Hofer
1459f74d3afSCharles Paul Hofer    # Revert to to initial value.
1469f74d3afSCharles Paul Hofer    Set Host Software Property
1479f74d3afSCharles Paul Hofer    ...  ${image_ids[0]}  ${attribute_name}  ${initial_priority}
1489f74d3afSCharles Paul Hofer
1499f74d3afSCharles Paul Hofer
1509f74d3afSCharles Paul HoferCode Update Setup
1519f74d3afSCharles Paul Hofer    [Documentation]  Do code update test case setup.
1521eb85f57SGeorge Keishing    # - Clean up all existing BMC dumps.
1531eb85f57SGeorge Keishing    # - Clean up all currently install PNOR images.
1549f74d3afSCharles Paul Hofer
1551eb85f57SGeorge Keishing    Delete All Dumps
156*0071549eSGeorge Keishing    Delete Error Logs
1579f74d3afSCharles Paul Hofer    Run Keyword If  'true' == '${DELETE_OLD_PNOR_IMAGES}'
1589f74d3afSCharles Paul Hofer    ...  Delete All PNOR Images
1599f74d3afSCharles Paul Hofer
1609f74d3afSCharles Paul Hofer
161c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images Setup
162c1fa2bc9SCharles Paul Hofer    [Documentation]  Check that the ALTERNATE_FILE_PATH variable is set.
163c1fa2bc9SCharles Paul Hofer
164c1fa2bc9SCharles Paul Hofer    Should Not Be Empty  ${ALTERNATE_IMAGE_FILE_PATH}
165c1fa2bc9SCharles Paul Hofer
166c1fa2bc9SCharles Paul Hofer
1679f74d3afSCharles Paul HoferGet PNOR Extended Version
1689f74d3afSCharles Paul Hofer    [Documentation]  Return the PNOR extended version.
1699f74d3afSCharles Paul Hofer    [Arguments]  ${manifest_path}
1709f74d3afSCharles Paul Hofer
1719f74d3afSCharles Paul Hofer    # Description of argument(s):
1729f74d3afSCharles Paul Hofer    # manifest_path  Path of the MANIFEST file
1739f74d3afSCharles Paul Hofer    #                (e.g. "/tmp/images/abc123/MANIFEST").
1749f74d3afSCharles Paul Hofer
1759f74d3afSCharles Paul Hofer    ${version}= BMC Execute Command
1769f74d3afSCharles Paul Hofer    ...  grep extended_version= ${manifest_path}
1779f74d3afSCharles Paul Hofer    [return] ${version.split(",")}
178*0071549eSGeorge Keishing
179*0071549eSGeorge Keishing
180*0071549eSGeorge KeishingCode Update Test Teardown
181*0071549eSGeorge Keishing    [Documentation]  Do code update test case teardown.
182*0071549eSGeorge Keishing    # 1. Collect FFDC if test case failed.
183*0071549eSGeorge Keishing    # 2. Collect FFDC if test PASS but error log exists.
184*0071549eSGeorge Keishing
185*0071549eSGeorge Keishing    FFDC On Test Case Fail
186*0071549eSGeorge Keishing    Run Keyword If  '${TEST_STATUS}' == 'PASS'  Check Error And Collect FFDC
187