xref: /openbmc/openbmc-test-automation/extended/code_update/bmc_code_update.robot (revision 2184546968b301fcf4d99223d195d10644476b8a)
1*** Settings ***
2Documentation     Update the BMC code on a target BMC.
3...               Execution Method:
4...               python -m robot -v OPENBMC_HOST:<hostname>
5...               -v IMAGE_FILE_PATH:<path/*.tar>  bmc_code_update.robot
6
7Library           ../../lib/code_update_utils.py
8Variables         ../../data/variables.py
9Resource          ../../lib/boot_utils.robot
10Resource          code_update_utils.robot
11Resource          ../../lib/code_update_utils.robot
12Resource          ../../lib/openbmc_ffdc.robot
13Resource          ../../lib/dump_utils.robot
14
15Test Teardown     Code Update Test Teardown
16
17*** Variables ***
18
19${QUIET}                          ${1}
20${IMAGE_FILE_PATH}                ${EMPTY}
21${ALTERNATE_IMAGE_FILE_PATH}      ${EMPTY}
22${SKIP_UPDATE_IF_ACTIVE}          false
23
24*** Test Cases ***
25
26REST BMC Code Update
27    [Documentation]  Do a BMC code update by uploading image on BMC via REST.
28    [Tags]  REST_BMC_Code_Update
29    [Setup]  Code Update Setup
30
31    Upload And Activate Image  ${IMAGE_FILE_PATH}
32    ...  skip_if_active=${SKIP_UPDATE_IF_ACTIVE}
33    OBMC Reboot (off)
34
35
36Upload And Activate Multiple BMC Images
37    [Documentation]  Upload another BMC image and verify that its state is
38    ...              different from all others.
39    [Tags]  Upload_And_Activate_Multiple_BMC_Images
40    [Template]  Activate Image And Verify No Duplicate Priorities
41    [Setup]  Upload And Activate Multiple BMC Images Setup
42
43    # Image File Path              Image Purpose
44    ${ALTERNATE_IMAGE_FILE_PATH}   ${VERSION_PURPOSE_BMC}
45
46
47BMC Set Priority To Invalid Values
48    [Documentation]  Attempt to set the priority of an image to an invalid
49    ...              value and expect an error.
50    [Tags]  BMC_Set_Priority_To_Invalid_Values
51    [Template]  Set Priority To Invalid Value And Expect Error
52
53    # Version Type              Priority
54    ${VERSION_PURPOSE_BMC}     ${-1}
55    ${VERSION_PURPOSE_BMC}     ${256}
56
57
58Delete BMC Image
59    [Documentation]  Delete a BMC image from the BMC flash chip.
60    [Tags]  Delete_BMC_Image
61
62    ${software_object}=  Get Non Running BMC Software Object
63    Delete Image And Verify  ${software_object}  ${VERSION_PURPOSE_BMC}
64
65
66BMC Image Priority Attribute Test
67    [Documentation]  Set "Priority" attribute.
68    [Tags]  BMC_Image_Priority_Attribute_Test
69    [Template]  Temporarily Set BMC Attribute
70
71    # Property        Value
72    Priority          ${0}
73    Priority          ${1}
74    Priority          ${127}
75    Priority          ${255}
76
77
78*** Keywords ***
79
80Temporarily Set BMC Attribute
81    [Documentation]  Update the BMC attribute value.
82    [Arguments]  ${attribute_name}  ${attribute_value}
83
84    # Description of argument(s):
85    # attribute_name    BMC software attribute name (e.g. "Priority").
86    # attribute_value   Value to be written.
87
88    ${image_ids}=  Get Software Objects  ${VERSION_PURPOSE_BMC}
89    ${init_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
90    ${initial_priority}=  Set Variable  ${init_bmc_properties["Priority"]}
91
92    Set Host Software Property  ${image_ids[0]}  ${attribute_name}
93    ...  ${attribute_value}
94
95    ${cur_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
96    Should Be Equal As Integers  ${cur_bmc_properties["Priority"]}
97    ...  ${attribute_value}
98
99    # Revert to to initial value.
100    Set Host Software Property
101    ...  ${image_ids[0]}  ${attribute_name}  ${initial_priority}
102
103
104Upload And Activate Multiple BMC Images Setup
105    [Documentation]  Check that the ALTERNATE_FILE_PATH variable is set.
106
107    Should Not Be Empty  ${ALTERNATE_IMAGE_FILE_PATH}
108
109Code Update Setup
110    [Documentation]  Do code update test case setup.
111    # - Clean up all existing BMC dumps.
112
113    Delete All Dumps
114
115Code Update Test Teardown
116    [Documentation]  Do code update test case teardown.
117    # 1. Collect FFDC if test case failed.
118    # 2. Collect FFDC if test PASS but error log exists.
119
120    FFDC On Test Case Fail
121    Run Keyword If  '${TEST_STATUS}' == 'PASS'  Check Error And Collect FFDC
122