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    # Example 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 --type StringTable
81    Valid List  pldm_output  required_values=${RESPONSE_LIST_GETBIOSTABLE_STRTABLE}
82
83
84Verify GetBIOSTable For AttributeTable
85    [Documentation]  Verify if attribute table content exist for
86    ...            GetBIOSTable with table type attribute table.
87    [Tags]  Verify_GetBIOSTable_For_AttributeTable
88
89    # Example pldm_output:
90    # [pldm_attributetable]:                          True
91    # [attributehandle]:                               0
92    # [ AttributeNameHandle]:                          20(vmi-if1-ipv4-method)
93    # [     attributetype]:                            BIOSStringReadOnly
94    # [     StringType]:                               0x01
95    # [     minimumstringlength]:                      1
96    # [     maximumstringlength]:                      100
97    # [     defaultstringlength]:                      15
98
99    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
100    Rprint Vars  pldm_output
101    Valid Value  pldm_output['pldm_attributetable']  [True]
102
103
104Verify GetBIOSTable For AttributeValueTable
105    [Documentation]  Verify if attribute value table content exist for
106    ...              GetBIOSTable with table type attribute value table.
107    [Tags]  Verify_GetBIOSTable_For_AttributeValueTable
108
109    # Example pldm_output:
110    # [pldm_attributevaluetable]:                     True
111    # [attributehandle]:                              0
112    # [     attributetype]:                           BIOSStringReadOnly
113    # [     currentstringlength]:                     15
114
115    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeValueTable
116    Log To Console  ${pldm_output}
117    Rprint Vars  pldm_output
118    Valid Value  pldm_output['pldm_attributevaluetable']  [True]
119
120*** Keywords ***
121
122PLDM BIOS Suite Cleanup
123    [Documentation]  Perform pldm BIOS suite cleanup.
124
125    ${result}=  Get Current Date  UTC  exclude_millis=True
126    ${current_date_time}=  Evaluate  re.sub(r'-* *:*', "", '${result}')  modules=re
127    ${cmd_set_date_time}=  Evaluate  $CMD_SETDATETIME % '${current_date_time}'
128    ${pldm_output}=  Pldmtool  ${cmd_set_date_time}
129    Valid Value  pldm_output['setdatetime']  ['SUCCESS']
130