blob: 0e651b7d1263ce66c73e44ae6cb525356ad3a4eb [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 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}