xref: /openbmc/openbmc-test-automation/extended/code_update/bmc_code_update.robot (revision 0889d43b6d4360b76108af63e16b43911c4fe276)
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
977c6919bSSivas SRRResource          ../../lib/utils.robot
109f74d3afSCharles Paul HoferResource          ../../lib/boot_utils.robot
119f74d3afSCharles Paul HoferResource          code_update_utils.robot
129f74d3afSCharles Paul HoferResource          ../../lib/code_update_utils.robot
131eb85f57SGeorge KeishingResource          ../../lib/openbmc_ffdc.robot
141eb85f57SGeorge KeishingResource          ../../lib/dump_utils.robot
159f74d3afSCharles Paul Hofer
16d66c5dceSCharles Paul HoferSuite Setup       Suite Setup Execution
17d66c5dceSCharles Paul Hofer
18d66c5dceSCharles Paul HoferTest Teardown     Test Teardown Execution
199f74d3afSCharles Paul Hofer
2009712a1eSGeorge KeishingForce Tags        BMC_Code_Update
2109712a1eSGeorge Keishing
229f74d3afSCharles Paul Hofer*** Variables ***
239f74d3afSCharles Paul Hofer
249f74d3afSCharles Paul Hofer${QUIET}                          ${1}
259f74d3afSCharles Paul Hofer${IMAGE_FILE_PATH}                ${EMPTY}
26c1fa2bc9SCharles Paul Hofer${ALTERNATE_IMAGE_FILE_PATH}      ${EMPTY}
27b7842a59SCharles Paul Hofer${SKIP_UPDATE_IF_ACTIVE}          false
28d66c5dceSCharles Paul Hofer${dump_id}                        ${EMPTY}
29d66c5dceSCharles Paul Hofer${running_persistence_test}       ${FALSE}
30d66c5dceSCharles Paul Hofer${test_errlog_text}               AutoTestSimple
319f74d3afSCharles Paul Hofer
329f74d3afSCharles Paul Hofer*** Test Cases ***
339f74d3afSCharles Paul Hofer
3477c6919bSSivas SRRTest Basic BMC Performance Before BMC Code Update
3577c6919bSSivas SRR    [Documentation]  Check performance of memory, CPU & file system of BMC.
3677c6919bSSivas SRR    [Tags]  Test_Basic_BMC_Performance_Before_BMC_Code_Update
3777c6919bSSivas SRR
3877c6919bSSivas SRR    Open Connection And Log In
3977c6919bSSivas SRR    Check BMC Performance
4077c6919bSSivas SRR
41d66c5dceSCharles Paul HoferPrepare Persistent Data
42d66c5dceSCharles Paul Hofer    [Documentation]  Set data that should persist across the code update.
43d66c5dceSCharles Paul Hofer    [Tags]  Prepare_Persistent_Data
44d66c5dceSCharles Paul Hofer
45d66c5dceSCharles Paul Hofer    # Install the debug tarball.
46d66c5dceSCharles Paul Hofer    BMC Execute Command  rm -rf /tmp/tarball
47d66c5dceSCharles Paul Hofer    Install Debug Tarball On BMC  tarball_file_path=${DEBUG_TARBALL_PATH}
48d66c5dceSCharles Paul Hofer
49d66c5dceSCharles Paul Hofer    # Create a dummy error log and dump.
50d66c5dceSCharles Paul Hofer    BMC Execute Command  /tmp/tarball/bin/logging-test -c ${test_errlog_text}
51d66c5dceSCharles Paul Hofer    ${dump_id}=  Create User Initiated Dump
52d66c5dceSCharles Paul Hofer    Check Dump Existence  ${dump_id}
53d66c5dceSCharles Paul Hofer    Set Suite Variable  ${dump_id}
54d66c5dceSCharles Paul Hofer
55d66c5dceSCharles Paul Hofer    # Set persistent settings.
56d66c5dceSCharles Paul Hofer    ${autoreboot_dict}=  Create Dictionary  data=${0}
57d66c5dceSCharles Paul Hofer    Write Attribute  ${CONTROL_HOST_URI}auto_reboot  AutoReboot
58d66c5dceSCharles Paul Hofer    ...  data=${autoreboot_dict}
59d66c5dceSCharles Paul Hofer    ${onetime_dict}=  Create Dictionary  data=${0}
60d66c5dceSCharles Paul Hofer    Write Attribute  ${CONTROL_HOST_URI}boot/one_time  Enabled
61d66c5dceSCharles Paul Hofer    ...  data=${onetime_dict}
62d66c5dceSCharles Paul Hofer
63d66c5dceSCharles Paul Hofer    # Let the remaining test cases know we are doing a persistence test so we
64d66c5dceSCharles Paul Hofer    # do not delete logs.
65d66c5dceSCharles Paul Hofer    Set Suite Variable  ${running_persistence_test}  ${TRUE}
66d66c5dceSCharles Paul Hofer
67d66c5dceSCharles Paul Hofer
689f74d3afSCharles Paul HoferREST BMC Code Update
699f74d3afSCharles Paul Hofer    [Documentation]  Do a BMC code update by uploading image on BMC via REST.
709f74d3afSCharles Paul Hofer    [Tags]  REST_BMC_Code_Update
71d66c5dceSCharles Paul Hofer    [Teardown]  REST BMC Code Update Teardown
729f74d3afSCharles Paul Hofer
7321845469SCharles Paul Hofer    Upload And Activate Image  ${IMAGE_FILE_PATH}
7421845469SCharles Paul Hofer    ...  skip_if_active=${SKIP_UPDATE_IF_ACTIVE}
759f74d3afSCharles Paul Hofer    OBMC Reboot (off)
76e43fb2f7SCharles Paul Hofer    Verify Running BMC Image  ${IMAGE_FILE_PATH}
779f74d3afSCharles Paul Hofer
789f74d3afSCharles Paul Hofer
79d66c5dceSCharles Paul HoferVerify Error Log Persistency
80d66c5dceSCharles Paul Hofer    [Documentation]  Check that the error log is still present after a
81d66c5dceSCharles Paul Hofer    ...              code update.
82d66c5dceSCharles Paul Hofer    [Tags]  Verify_Error_Log_Persistency
83d66c5dceSCharles Paul Hofer
84d66c5dceSCharles Paul Hofer    ${error_log_paths}=  Read Properties  ${BMC_LOGGING_URI}/list
85d66c5dceSCharles Paul Hofer    Log To Console  ${error_log_paths}
86d66c5dceSCharles Paul Hofer    ${test_error_message}=  Read Attribute  @{error_log_paths}[-1]  Message
87d66c5dceSCharles Paul Hofer    Should Be Equal  ${test_error_message}
88d66c5dceSCharles Paul Hofer    ...  example.xyz.openbmc_project.Example.Elog.${test_errlog_text}
89d66c5dceSCharles Paul Hofer    Delete Error Log Entry  @{error_log_paths}[-1]
90d66c5dceSCharles Paul Hofer
91d66c5dceSCharles Paul Hofer
92d66c5dceSCharles Paul HoferVerify BMC Dump Persistency
93d66c5dceSCharles Paul Hofer    [Documentation]  Check that the BMC dump present after a code update.
94d66c5dceSCharles Paul Hofer    [Tags]  Verify_BMC_Dump_Persistency
95d66c5dceSCharles Paul Hofer    [Teardown]  Set Suite Variable  ${running_persistence_test}  ${FALSE}
96d66c5dceSCharles Paul Hofer
97d66c5dceSCharles Paul Hofer    Check Dump Existence  ${dump_id}
98d66c5dceSCharles Paul Hofer    Delete BMC Dump  ${dump_id}
99d66c5dceSCharles Paul Hofer
100d66c5dceSCharles Paul Hofer
101d66c5dceSCharles Paul HoferVerify Settings Persistency
102d66c5dceSCharles Paul Hofer    [Documentation]  Verify that the settings from 'Prepare Persistent Data'
103d66c5dceSCharles Paul Hofer    ...              are still set correctly after the code update.
104d66c5dceSCharles Paul Hofer    [Tags]  Verify_Settings_Persistency
105d66c5dceSCharles Paul Hofer
106d66c5dceSCharles Paul Hofer    ${autoreboot_enabled}=  Read Attribute  ${CONTROL_HOST_URI}auto_reboot
107d66c5dceSCharles Paul Hofer    ...  AutoReboot
108d66c5dceSCharles Paul Hofer    Should Be Equal  ${autoreboot_enabled}  ${0}
109d66c5dceSCharles Paul Hofer    ${onetime_enabled}=  Read Attribute  ${CONTROL_HOST_URI}boot/one_time
110d66c5dceSCharles Paul Hofer    ...  Enabled
111d66c5dceSCharles Paul Hofer    Should Be Equal  ${onetime_enabled}  ${0}
112d66c5dceSCharles Paul Hofer
113d66c5dceSCharles Paul Hofer    # Set values back to their defaults
114d66c5dceSCharles Paul Hofer    ${autoreboot_dict}=  Create Dictionary  data=${1}
115d66c5dceSCharles Paul Hofer    Write Attribute  ${CONTROL_HOST_URI}auto_reboot  AutoReboot
116d66c5dceSCharles Paul Hofer    ...  data=${autoreboot_dict}
117d66c5dceSCharles Paul Hofer    ${onetime_dict}=  Create Dictionary  data=${1}
118d66c5dceSCharles Paul Hofer    Write Attribute  ${CONTROL_HOST_URI}boot/one_time  Enabled
119d66c5dceSCharles Paul Hofer    ...  data=${onetime_dict}
120d66c5dceSCharles Paul Hofer
121d66c5dceSCharles Paul Hofer
122c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images
123c1fa2bc9SCharles Paul Hofer    [Documentation]  Upload another BMC image and verify that its state is
124c1fa2bc9SCharles Paul Hofer    ...              different from all others.
125c1fa2bc9SCharles Paul Hofer    [Tags]  Upload_And_Activate_Multiple_BMC_Images
126c1fa2bc9SCharles Paul Hofer    [Template]  Activate Image And Verify No Duplicate Priorities
127c1fa2bc9SCharles Paul Hofer    [Setup]  Upload And Activate Multiple BMC Images Setup
128c1fa2bc9SCharles Paul Hofer
129c1fa2bc9SCharles Paul Hofer    # Image File Path              Image Purpose
130c1fa2bc9SCharles Paul Hofer    ${ALTERNATE_IMAGE_FILE_PATH}   ${VERSION_PURPOSE_BMC}
131c1fa2bc9SCharles Paul Hofer
132c1fa2bc9SCharles Paul Hofer
13342f17468SCharles Paul HoferBMC Set Priority To Invalid Values
13442f17468SCharles Paul Hofer    [Documentation]  Attempt to set the priority of an image to an invalid
13542f17468SCharles Paul Hofer    ...              value and expect an error.
13642f17468SCharles Paul Hofer    [Tags]  BMC_Set_Priority_To_Invalid_Values
13742f17468SCharles Paul Hofer    [Template]  Set Priority To Invalid Value And Expect Error
13842f17468SCharles Paul Hofer
13942f17468SCharles Paul Hofer    # Version Type              Priority
14042f17468SCharles Paul Hofer    ${VERSION_PURPOSE_BMC}     ${-1}
14142f17468SCharles Paul Hofer    ${VERSION_PURPOSE_BMC}     ${256}
14242f17468SCharles Paul Hofer
14342f17468SCharles Paul Hofer
1449f74d3afSCharles Paul HoferDelete BMC Image
1459f74d3afSCharles Paul Hofer    [Documentation]  Delete a BMC image from the BMC flash chip.
1469f74d3afSCharles Paul Hofer    [Tags]  Delete_BMC_Image
1479f74d3afSCharles Paul Hofer
1489f74d3afSCharles Paul Hofer    ${software_object}=  Get Non Running BMC Software Object
1499f74d3afSCharles Paul Hofer    Delete Image And Verify  ${software_object}  ${VERSION_PURPOSE_BMC}
150c1fa2bc9SCharles Paul Hofer
151c1fa2bc9SCharles Paul Hofer
15297ecb270SGeorge KeishingBMC Image Priority Attribute Test
15397ecb270SGeorge Keishing    [Documentation]  Set "Priority" attribute.
15497ecb270SGeorge Keishing    [Tags]  BMC_Image_Priority_Attribute_Test
15597ecb270SGeorge Keishing    [Template]  Temporarily Set BMC Attribute
15697ecb270SGeorge Keishing
15797ecb270SGeorge Keishing    # Property        Value
15897ecb270SGeorge Keishing    Priority          ${0}
15997ecb270SGeorge Keishing    Priority          ${1}
16097ecb270SGeorge Keishing    Priority          ${127}
16197ecb270SGeorge Keishing    Priority          ${255}
16297ecb270SGeorge Keishing
16397ecb270SGeorge Keishing
164e8dc5253SCharles Paul HoferDelete All Non Running BMC Images
165e8dc5253SCharles Paul Hofer    [Documentation]  Delete all non running BMC images.
166e8dc5253SCharles Paul Hofer    [Tags]  Delete_All_Non_Running_BMC_Images
167e8dc5253SCharles Paul Hofer
168e8dc5253SCharles Paul Hofer    ${version_id}=  Upload And Activate Image  ${ALTERNATE_IMAGE_FILE_PATH}
169*0889d43bSGeorge Keishing    ...  skip_if_active=true
170e8dc5253SCharles Paul Hofer    Delete All Non Running BMC Images
171e8dc5253SCharles Paul Hofer
172e8dc5253SCharles Paul Hofer    ${software_ids}=  Get Software Objects Id
173e8dc5253SCharles Paul Hofer    ...  version_type=${VERSION_PURPOSE_BMC}
174e8dc5253SCharles Paul Hofer    Should Not Contain  ${software_ids}  ${version_id}
175e8dc5253SCharles Paul Hofer
17677c6919bSSivas SRRTest Basic BMC Performance After Code Update
17777c6919bSSivas SRR    [Documentation]  Check performance of memory, CPU & file system of BMC.
17877c6919bSSivas SRR    [Tags]  Test_Basic_BMC_Performance_After_Code_Update
17977c6919bSSivas SRR
18077c6919bSSivas SRR    Open Connection And Log In
18177c6919bSSivas SRR    Check BMC Performance
18277c6919bSSivas SRR
183e8dc5253SCharles Paul Hofer
184c1fa2bc9SCharles Paul Hofer*** Keywords ***
185c1fa2bc9SCharles Paul Hofer
18697ecb270SGeorge KeishingTemporarily Set BMC Attribute
18797ecb270SGeorge Keishing    [Documentation]  Update the BMC attribute value.
18897ecb270SGeorge Keishing    [Arguments]  ${attribute_name}  ${attribute_value}
18997ecb270SGeorge Keishing
19097ecb270SGeorge Keishing    # Description of argument(s):
19197ecb270SGeorge Keishing    # attribute_name    BMC software attribute name (e.g. "Priority").
19297ecb270SGeorge Keishing    # attribute_value   Value to be written.
19397ecb270SGeorge Keishing
19497ecb270SGeorge Keishing    ${image_ids}=  Get Software Objects  ${VERSION_PURPOSE_BMC}
19597ecb270SGeorge Keishing    ${init_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
19697ecb270SGeorge Keishing    ${initial_priority}=  Set Variable  ${init_bmc_properties["Priority"]}
19797ecb270SGeorge Keishing
19897ecb270SGeorge Keishing    Set Host Software Property  ${image_ids[0]}  ${attribute_name}
19997ecb270SGeorge Keishing    ...  ${attribute_value}
20097ecb270SGeorge Keishing
20197ecb270SGeorge Keishing    ${cur_bmc_properties}=  Get Host Software Property  ${image_ids[0]}
20297ecb270SGeorge Keishing    Should Be Equal As Integers  ${cur_bmc_properties["Priority"]}
20397ecb270SGeorge Keishing    ...  ${attribute_value}
20497ecb270SGeorge Keishing
20597ecb270SGeorge Keishing    # Revert to to initial value.
20697ecb270SGeorge Keishing    Set Host Software Property
20797ecb270SGeorge Keishing    ...  ${image_ids[0]}  ${attribute_name}  ${initial_priority}
20897ecb270SGeorge Keishing
20997ecb270SGeorge Keishing
210c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images Setup
211c1fa2bc9SCharles Paul Hofer    [Documentation]  Check that the ALTERNATE_FILE_PATH variable is set.
212c1fa2bc9SCharles Paul Hofer
213c1fa2bc9SCharles Paul Hofer    Should Not Be Empty  ${ALTERNATE_IMAGE_FILE_PATH}
2141eb85f57SGeorge Keishing
215d66c5dceSCharles Paul Hofer
216d66c5dceSCharles Paul HoferREST BMC Code Update Teardown
217d66c5dceSCharles Paul Hofer    [Documentation]  Do code update test teardown.
218d66c5dceSCharles Paul Hofer
219d66c5dceSCharles Paul Hofer    FFDC On Test Case Fail
220d66c5dceSCharles Paul Hofer    Run Keyword If Test Failed  Fatal Error  msg=Code update failed.
221d66c5dceSCharles Paul Hofer
222d66c5dceSCharles Paul Hofer
223d66c5dceSCharles Paul HoferSuite Setup Execution
2241eb85f57SGeorge Keishing    [Documentation]  Do code update test case setup.
2251eb85f57SGeorge Keishing    # - Clean up all existing BMC dumps.
2261eb85f57SGeorge Keishing
2271eb85f57SGeorge Keishing    Delete All Dumps
228b926408eSCharles Paul Hofer    Run Keyword And Ignore Error  Smart Power Off
2290071549eSGeorge Keishing
230d66c5dceSCharles Paul HoferTest Teardown Execution
2310071549eSGeorge Keishing    [Documentation]  Do code update test case teardown.
2320071549eSGeorge Keishing    # 1. Collect FFDC if test case failed.
2330071549eSGeorge Keishing    # 2. Collect FFDC if test PASS but error log exists.
2340071549eSGeorge Keishing
235d66c5dceSCharles Paul Hofer    # Don't delete our logs if we want to persist them for tests.
236d66c5dceSCharles Paul Hofer    Return From Keyword If  ${running_persistence_test}
237d66c5dceSCharles Paul Hofer
2380071549eSGeorge Keishing    FFDC On Test Case Fail
2390071549eSGeorge Keishing    Run Keyword If  '${TEST_STATUS}' == 'PASS'  Check Error And Collect FFDC
24077c6919bSSivas SRR    Close All Connections
241