blob: 4778626e3e58bc801bc73c20c34be7ee7e6c1f69 [file] [log] [blame]
*** Settings ***
Documentation Module to test PLDM BIOS commands.
Library Collections
Library String
Library ../lib/pldm_utils.py
Variables ../data/pldm_variables.py
Resource ../lib/openbmc_ffdc.robot
Test Setup Printn
Test Teardown FFDC On Test Case Fail
Suite Setup PLDM BIOS Suite Setup
Suite Teardown Run Keyword And Ignore Error PLDM BIOS Suite Cleanup
Test Tags Pldm_Bios
*** Test Cases ***
Verify GetDateTime
[Documentation] Verify host date & time.
[Tags] Verify_GetDateTime
# Example output:
# {
# "Response": "2020-11-07 07:10:10"
# }
${pldm_output}= Pldmtool bios GetDateTime
@{date_time}= Split String ${pldm_output['Response']} ${SPACE}
@{time}= Split String ${date_time}[1] :
${bmc_date}= Get Current Date from BMC
# Date format example: 2022-10-12 16:31:17
Log To Console BMC Date: ${bmc_date}
# Example : ['2022-10-12', '16:31:17']
@{current_time}= Split String ${bmc_date} ${EMPTY}
# verify date matching pldmtool vs BMC current time.
Should Contain ${current_time} ${date_time[0]}
Verify SetDateTime
[Documentation] Verify set date & time for the host.
[Tags] Verify_SetDateTime
# Example output:
# {
# "Response": "SUCCESS"
# }
${current_date_time}= Get Current Date UTC exclude_millis=True
# Example output:
# 2020-11-25 07:34:30
${date}= Add Time To Date ${current_date_time} 400 days exclude_millis=True
${upgrade_date}= Evaluate re.sub(r'-* *:*', "", '${date}') modules=re
${time}= Add Time To Date ${current_date_time} 01:01:00 exclude_millis=True
${upgrade_time}= Evaluate re.sub(r'-* *:*', "", '${time}') modules=re
# Set date.
${cmd_set_date}= Evaluate $CMD_SETDATETIME % '${upgrade_date}'
${pldm_output}= Pldmtool ${cmd_set_date}
Valid Value pldm_output['Response'] ['SUCCESS']
# Set time.
${cmd_set_time}= Evaluate $CMD_SETDATETIME % '${upgrade_time}'
${pldm_output}= Pldmtool ${cmd_set_time}
Verify GetBIOSTable For AttributeValueTable
[Documentation] Verify if attribute value table content exist for
... GetBIOSTable with table type attribute value table.
[Tags] Verify_GetBIOSTable_For_AttributeValueTable
# Example pldm_output:
# [pldm_attributevaluetable]: True
# [attributehandle]: 0
# [ attributetype]: BIOSStringReadOnly
# [ currentstringlength]: 15
${count}= Get Length ${attr_table_data}
${attr_val_list}= Create List
FOR ${i} IN RANGE ${count}
Append To List ${attr_val_list} ${attr_table_data}[${i}][AttributeType]
END
Valid List attr_val_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE}
Verify GetBIOSAttributeCurrentValueByHandle
[Documentation] Verify GetBIOSAttributeCurrentValueByHandle with the
... various BIOS attribute handle and its values.
[Tags] Verify_GetBIOSAttributeCurrentValueByHandle
# Example output:
#
# pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side
# {
# "CurrentValue": "Temp"
# }
${attr_val_data}= GetBIOSEnumAttributeOptionalValues ${attr_table_data}
@{attr_handles}= Get Dictionary Keys ${attr_val_data}
FOR ${i} IN @{attr_handles}
${cur_attr}= Pldmtool bios GetBIOSAttributeCurrentValueByHandle -a ${i}
@{attr_val_list}= Set Variable ${attr_val_data}[${i}]
Run Keyword If '${cur_attr['CurrentValue']}' not in @{attr_val_list}
... Fail Invalid GetBIOSAttributeCurrentValueByHandle value found.
END
*** Keywords ***
PLDM BIOS Suite Setup
[Documentation] Perform PLDM BIOS suite setup.
${pldm_output}= Pldmtool bios GetBIOSTable --type AttributeTable
Set Global Variable ${attr_table_data} ${pldm_output}
Set Time To Manual Mode
Sleep 10s
PLDM BIOS Suite Cleanup
[Documentation] Perform PLDM BIOS suite cleanup.
${result}= Get Current Date UTC exclude_millis=True
${current_date_time}= Evaluate re.sub(r'-* *:*', "", '${result}') modules=re
${cmd_set_date_time}= Evaluate $CMD_SETDATETIME % '${current_date_time}'
${pldm_output}= Pldmtool ${cmd_set_date_time}
Valid Value pldm_output['Response'] ['SUCCESS']
Set Time To Manual Mode
[Documentation] Set date time to manual mode via Redfish.
Redfish.Login
Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body={'NTP':{'ProtocolEnabled': ${False}}}
... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
Get Current Date from BMC
[Documentation] Runs the date command from BMC and returns current date and time.
# Get Current Date from BMC.
${date} ${stderr} ${rc}= BMC Execute Command date
# Split the string and remove first and 2nd last value from the list and
# join to form %d %b %H:%M:%S %Y date format
${date}= Split String ${date}
Remove From List ${date} 0
Remove From List ${date} -2
${date}= Evaluate " ".join(${date})
# Convert the date format to %Y/%m/%d %H:%M:%S
${date}= Convert Date ${date} date_format=%b %d %H:%M:%S %Y
... result_format=%Y-%m-%d %H:%M:%S exclude_millis=True
RETURN ${date}