xref: /openbmc/openbmc-test-automation/extended/code_update/bmc_code_update.robot (revision e43fb2f773a76a1083c47ceac20f0a638e5be567)
19f74d3afSCharles Paul Hofer*** Settings ***
29f74d3afSCharles Paul HoferDocumentation     Update the BMC code on a target BMC.
39f74d3afSCharles Paul Hofer...               Execution Method:
49f74d3afSCharles Paul Hofer...               python -m robot -v OPENBMC_HOST:<hostname>
59f74d3afSCharles Paul Hofer...               -v IMAGE_FILE_PATH:<path/*.tar>  bmc_code_update.robot
69f74d3afSCharles Paul Hofer
79f74d3afSCharles Paul HoferLibrary           ../../lib/code_update_utils.py
89f74d3afSCharles Paul HoferVariables         ../../data/variables.py
99f74d3afSCharles Paul HoferResource          ../../lib/boot_utils.robot
109f74d3afSCharles Paul HoferResource          code_update_utils.robot
119f74d3afSCharles Paul HoferResource          ../../lib/code_update_utils.robot
121eb85f57SGeorge KeishingResource          ../../lib/openbmc_ffdc.robot
131eb85f57SGeorge KeishingResource          ../../lib/dump_utils.robot
149f74d3afSCharles Paul Hofer
150071549eSGeorge KeishingTest Teardown     Code Update Test Teardown
169f74d3afSCharles Paul Hofer
179f74d3afSCharles Paul Hofer*** Variables ***
189f74d3afSCharles Paul Hofer
199f74d3afSCharles Paul Hofer${QUIET}                          ${1}
209f74d3afSCharles Paul Hofer${IMAGE_FILE_PATH}                ${EMPTY}
21c1fa2bc9SCharles Paul Hofer${ALTERNATE_IMAGE_FILE_PATH}      ${EMPTY}
22b7842a59SCharles Paul Hofer${SKIP_UPDATE_IF_ACTIVE}          false
239f74d3afSCharles Paul Hofer
249f74d3afSCharles Paul Hofer*** Test Cases ***
259f74d3afSCharles Paul Hofer
269f74d3afSCharles Paul HoferREST BMC Code Update
279f74d3afSCharles Paul Hofer    [Documentation]  Do a BMC code update by uploading image on BMC via REST.
289f74d3afSCharles Paul Hofer    [Tags]  REST_BMC_Code_Update
291eb85f57SGeorge Keishing    [Setup]  Code Update Setup
309f74d3afSCharles Paul Hofer
3121845469SCharles Paul Hofer    Upload And Activate Image  ${IMAGE_FILE_PATH}
3221845469SCharles Paul Hofer    ...  skip_if_active=${SKIP_UPDATE_IF_ACTIVE}
339f74d3afSCharles Paul Hofer    OBMC Reboot (off)
34*e43fb2f7SCharles Paul Hofer    Verify Running BMC Image  ${IMAGE_FILE_PATH}
359f74d3afSCharles Paul Hofer
369f74d3afSCharles Paul Hofer
37c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images
38c1fa2bc9SCharles Paul Hofer    [Documentation]  Upload another BMC image and verify that its state is
39c1fa2bc9SCharles Paul Hofer    ...              different from all others.
40c1fa2bc9SCharles Paul Hofer    [Tags]  Upload_And_Activate_Multiple_BMC_Images
41c1fa2bc9SCharles Paul Hofer    [Template]  Activate Image And Verify No Duplicate Priorities
42c1fa2bc9SCharles Paul Hofer    [Setup]  Upload And Activate Multiple BMC Images Setup
43c1fa2bc9SCharles Paul Hofer
44c1fa2bc9SCharles Paul Hofer    # Image File Path              Image Purpose
45c1fa2bc9SCharles Paul Hofer    ${ALTERNATE_IMAGE_FILE_PATH}   ${VERSION_PURPOSE_BMC}
46c1fa2bc9SCharles Paul Hofer
47c1fa2bc9SCharles Paul Hofer
4842f17468SCharles Paul HoferBMC Set Priority To Invalid Values
4942f17468SCharles Paul Hofer    [Documentation]  Attempt to set the priority of an image to an invalid
5042f17468SCharles Paul Hofer    ...              value and expect an error.
5142f17468SCharles Paul Hofer    [Tags]  BMC_Set_Priority_To_Invalid_Values
5242f17468SCharles Paul Hofer    [Template]  Set Priority To Invalid Value And Expect Error
5342f17468SCharles Paul Hofer
5442f17468SCharles Paul Hofer    # Version Type              Priority
5542f17468SCharles Paul Hofer    ${VERSION_PURPOSE_BMC}     ${-1}
5642f17468SCharles Paul Hofer    ${VERSION_PURPOSE_BMC}     ${256}
5742f17468SCharles Paul Hofer
5842f17468SCharles Paul Hofer
599f74d3afSCharles Paul HoferDelete BMC Image
609f74d3afSCharles Paul Hofer    [Documentation]  Delete a BMC image from the BMC flash chip.
619f74d3afSCharles Paul Hofer    [Tags]  Delete_BMC_Image
629f74d3afSCharles Paul Hofer
639f74d3afSCharles Paul Hofer    ${software_object}=  Get Non Running BMC Software Object
649f74d3afSCharles Paul Hofer    Delete Image And Verify  ${software_object}  ${VERSION_PURPOSE_BMC}
65c1fa2bc9SCharles Paul Hofer
66c1fa2bc9SCharles Paul Hofer
6797ecb270SGeorge KeishingBMC Image Priority Attribute Test
6897ecb270SGeorge Keishing    [Documentation]  Set "Priority" attribute.
6997ecb270SGeorge Keishing    [Tags]  BMC_Image_Priority_Attribute_Test
7097ecb270SGeorge Keishing    [Template]  Temporarily Set BMC Attribute
7197ecb270SGeorge Keishing
7297ecb270SGeorge Keishing    # Property        Value
7397ecb270SGeorge Keishing    Priority          ${0}
7497ecb270SGeorge Keishing    Priority          ${1}
7597ecb270SGeorge Keishing    Priority          ${127}
7697ecb270SGeorge Keishing    Priority          ${255}
7797ecb270SGeorge Keishing
7897ecb270SGeorge Keishing
79c1fa2bc9SCharles Paul Hofer*** Keywords ***
80c1fa2bc9SCharles Paul Hofer
8197ecb270SGeorge KeishingTemporarily Set BMC Attribute
8297ecb270SGeorge Keishing    [Documentation]  Update the BMC attribute value.
8397ecb270SGeorge Keishing    [Arguments]  ${attribute_name}  ${attribute_value}
8497ecb270SGeorge Keishing
8597ecb270SGeorge Keishing    # Description of argument(s):
8697ecb270SGeorge Keishing    # attribute_name    BMC software attribute name (e.g. "Priority").
8797ecb270SGeorge Keishing    # attribute_value   Value to be written.
8897ecb270SGeorge Keishing
8997ecb270SGeorge Keishing    ${image_ids}=  Get Software Objects  ${VERSION_PURPOSE_BMC}
9097ecb270SGeorge Keishing    ${init_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
9197ecb270SGeorge Keishing    ${initial_priority}=  Set Variable  ${init_bmc_properties["Priority"]}
9297ecb270SGeorge Keishing
9397ecb270SGeorge Keishing    Set Host Software Property  ${image_ids[0]}  ${attribute_name}
9497ecb270SGeorge Keishing    ...  ${attribute_value}
9597ecb270SGeorge Keishing
9697ecb270SGeorge Keishing    ${cur_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
9797ecb270SGeorge Keishing    Should Be Equal As Integers  ${cur_bmc_properties["Priority"]}
9897ecb270SGeorge Keishing    ...  ${attribute_value}
9997ecb270SGeorge Keishing
10097ecb270SGeorge Keishing    # Revert to to initial value.
10197ecb270SGeorge Keishing    Set Host Software Property
10297ecb270SGeorge Keishing    ...  ${image_ids[0]}  ${attribute_name}  ${initial_priority}
10397ecb270SGeorge Keishing
10497ecb270SGeorge Keishing
105c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images Setup
106c1fa2bc9SCharles Paul Hofer    [Documentation]  Check that the ALTERNATE_FILE_PATH variable is set.
107c1fa2bc9SCharles Paul Hofer
108c1fa2bc9SCharles Paul Hofer    Should Not Be Empty  ${ALTERNATE_IMAGE_FILE_PATH}
1091eb85f57SGeorge Keishing
1101eb85f57SGeorge KeishingCode Update Setup
1111eb85f57SGeorge Keishing    [Documentation]  Do code update test case setup.
1121eb85f57SGeorge Keishing    # - Clean up all existing BMC dumps.
1131eb85f57SGeorge Keishing
1141eb85f57SGeorge Keishing    Delete All Dumps
1150071549eSGeorge Keishing
1160071549eSGeorge KeishingCode Update Test Teardown
1170071549eSGeorge Keishing    [Documentation]  Do code update test case teardown.
1180071549eSGeorge Keishing    # 1. Collect FFDC if test case failed.
1190071549eSGeorge Keishing    # 2. Collect FFDC if test PASS but error log exists.
1200071549eSGeorge Keishing
1210071549eSGeorge Keishing    FFDC On Test Case Fail
1220071549eSGeorge Keishing    Run Keyword If  '${TEST_STATUS}' == 'PASS'  Check Error And Collect FFDC
123