1*** Settings ***
2
3Documentation    Module to test PLDM BIOS commands.
4
5Library          Collections
6Library          String
7Library          ../lib/pldm_utils.py
8Variables        ../data/pldm_variables.py
9Resource         ../lib/openbmc_ffdc.robot
10
11Test Setup       Printn
12Test Teardown    FFDC On Test Case Fail
13Suite Teardown   PLDM BIOS Suite Cleanup
14
15*** Test Cases ***
16
17Verify GetDateTime
18    [Documentation]  Verify host date & time.
19    [Tags]  Verify_GetDateTime
20
21    # Example output:
22    # YYYY-MM-DD HH:MM:SS - 09-02-2020 16:51:23
23
24    ${pldm_output}=  Pldmtool  bios GetDateTime
25    @{date_time}=  Split String  ${pldm_output}  ${SPACE}
26    @{time}=  Split String  ${date_time}[1]  :
27
28    # verify date & time.
29    ${current_date_time}=  Get Current Date  UTC  exclude_millis=True
30    Should Contain  ${current_date_time}  ${date_time[0]}
31    Should Contain  ${current_date_time}  ${time[0]}
32
33
34Verify SetDateTime
35    [Documentation]  Verify set date & time for the host.
36    [Tags]  Verify_SetDateTime
37
38    # Example output:
39    # SetDateTime: SUCCESS
40
41    ${current_date_time}=  Get Current Date  UTC  exclude_millis=True
42
43    ${date}=  Add Time To Date  ${current_date_time}  400 days  exclude_millis=True
44    ${upgrade_date}=  Evaluate  re.sub(r'-* *:*', "", '${date}')  modules=re
45
46    ${time}=  Add Time To Date  ${current_date_time}  01:01:00  exclude_millis=True
47    ${upgrade_time}=  Evaluate  re.sub(r'-* *:*', "", '${time}')  modules=re
48
49    # Set date.
50    ${cmd_set_date}=  Evaluate  $CMD_SETDATETIME % '${upgrade_date}'
51    ${pldm_output}=  Pldmtool  ${cmd_set_date}
52    Valid Value  pldm_output['setdatetime']  ['SUCCESS']
53
54    # Set time.
55    ${cmd_set_time}=  Evaluate  $CMD_SETDATETIME % '${upgrade_time}'
56    ${pldm_output}=  Pldmtool  ${cmd_set_time}
57    Valid Value  pldm_output['setdatetime']  ['SUCCESS']
58
59
60Verify GetBIOSTable For StringTable
61    [Documentation]  Verify GetBIOSTable for table type string table.
62    [Tags]  Verify_GetBIOSTable_For_StringTable
63
64    # pldm_output:
65    # [biosstringhandle]:                             BIOSString
66    # [0]:                                            Allowed
67    # [1]:                                            Disabled
68    # [2]:                                            Enabled
69    # [3]:                                            Not Allowed
70    # [4]:                                            Perm
71    # [5]:                                            Temp
72    # [6]:                                            pvm-fw-boot-side
73    # [7]:                                            pvm-inband-code-update
74    # [8]:                                            pvm-os-boot-side
75    # [9]:                                            pvm-pcie-error-inject
76    # [10]:                                           pvm-surveillance
77    # [11]:                                           pvm-system-name
78    # [12]:                                           vmi-if-count
79
80    ${pldm_output}=  Pldmtool  bios GetBIOSTable -t 0
81    Rprint Vars  pldm_output
82    # TODO: Implement verification for GetBIOSTable response message.
83    # Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETBIOSTABLE_STRTABLE}
84
85*** Keywords ***
86
87PLDM BIOS Suite Cleanup
88    [Documentation]  Perform pldm BIOS suite cleanup.
89
90    ${result}=  Get Current Date  UTC  exclude_millis=True
91    ${current_date_time}=  Evaluate  re.sub(r'-* *:*', "", '${result}')  modules=re
92    ${cmd_set_date_time}=  Evaluate  $CMD_SETDATETIME % '${current_date_time}'
93    ${pldm_output}=  Pldmtool  ${cmd_set_date_time}
94    Valid Value  pldm_output['setdatetime']  ['SUCCESS']
95