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