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 Setup      PLDM BIOS Suite Setup
14Suite Teardown   PLDM BIOS Suite Cleanup
15
16*** Test Cases ***
17
18Verify GetDateTime
19
20    [Documentation]  Verify host date & time.
21    [Tags]  Verify_GetDateTime
22
23    # Example output:
24    # {
25    #     "Response": "2020-11-07 07:10:10"
26    # }
27
28    ${pldm_output}=  Pldmtool  bios GetDateTime
29    @{date_time}=  Split String  ${pldm_output['Response']}  ${SPACE}
30    @{time}=  Split String  ${date_time}[1]  :
31
32    # verify date & time.
33    ${utc}=  Get Current Date  UTC  exclude_millis=True
34    @{current_dmy}=  Split String  ${utc}  ${SPACE}
35    @{current_time}=  Split String  ${current_dmy[1]}  :
36
37    # Example output:
38    # 2020-11-25 07:34:30
39
40    Should Contain  ${current_dmy[0]}  ${date_time[0]}
41
42
43Verify SetDateTime
44
45    [Documentation]  Verify set date & time for the host.
46    [Tags]  Verify_SetDateTime
47
48    # Example output:
49    # {
50    #     "Response": "SUCCESS"
51    # }
52
53    ${current_date_time}=  Get Current Date  UTC  exclude_millis=True
54    # Example output:
55    # 2020-11-25 07:34:30
56
57    ${date}=  Add Time To Date  ${current_date_time}  400 days  exclude_millis=True
58    ${upgrade_date}=  Evaluate  re.sub(r'-* *:*', "", '${date}')  modules=re
59
60    ${time}=  Add Time To Date  ${current_date_time}  01:01:00  exclude_millis=True
61    ${upgrade_time}=  Evaluate  re.sub(r'-* *:*', "", '${time}')  modules=re
62
63    # Set date.
64    ${cmd_set_date}=  Evaluate  $CMD_SETDATETIME % '${upgrade_date}'
65    ${pldm_output}=  Pldmtool  ${cmd_set_date}
66    Valid Value  pldm_output['Response']  ['SUCCESS']
67
68    # Set time.
69    ${cmd_set_time}=  Evaluate  $CMD_SETDATETIME % '${upgrade_time}'
70    ${pldm_output}=  Pldmtool  ${cmd_set_time}
71
72
73Verify GetBIOSTable For AttributeValueTable
74
75    [Documentation]  Verify if attribute value table content exist for
76    ...              GetBIOSTable with table type attribute value table.
77    [Tags]  Verify_GetBIOSTable_For_AttributeValueTable
78
79    # Example pldm_output:
80    # [pldm_attributevaluetable]:                     True
81    # [attributehandle]:                              0
82    # [     attributetype]:                           BIOSStringReadOnly
83    # [     currentstringlength]:                     15
84
85    ${count}=  Get Length  ${attr_table_data}
86    ${attr_val_list}=  Create List
87    FOR  ${i}  IN RANGE  ${count}
88        Append To List  ${attr_val_list}  ${attr_table_data}[${i}][AttributeType]
89    END
90    Valid List  attr_val_list  required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE}
91
92
93Verify GetBIOSAttributeCurrentValueByHandle
94
95    [Documentation]  Verify GetBIOSAttributeCurrentValueByHandle with the
96    ...              various BIOS attribute handle and its values.
97    [Tags]  Verify_GetBIOSAttributeCurrentValueByHandle
98
99    # Example output:
100    #
101    # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side
102    # {
103    #     "CurrentValue": "Temp"
104    # }
105
106    ${attr_val_data}=  GetBIOSEnumAttributeOptionalValues  ${attr_table_data}
107    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
108    FOR  ${i}  IN  @{attr_handles}
109        ${cur_attr}=  Pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${i}
110        @{attr_val_list}=  Set Variable  ${attr_val_data}[${i}]
111        Run Keyword If  '${cur_attr['CurrentValue']}' not in @{attr_val_list}
112        ...  Fail  Invalid GetBIOSAttributeCurrentValueByHandle value found.
113    END
114
115
116*** Keywords ***
117
118PLDM BIOS Suite Setup
119
120    [Documentation]  Perform PLDM BIOS suite setup.
121
122    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
123    Set Global Variable  ${attr_table_data}  ${pldm_output}
124
125
126PLDM BIOS Suite Cleanup
127
128    [Documentation]  Perform PLDM BIOS suite cleanup.
129
130    ${result}=  Get Current Date  UTC  exclude_millis=True
131    ${current_date_time}=  Evaluate  re.sub(r'-* *:*', "", '${result}')  modules=re
132    ${cmd_set_date_time}=  Evaluate  $CMD_SETDATETIME % '${current_date_time}'
133    ${pldm_output}=  Pldmtool  ${cmd_set_date_time}
134    Valid Value  pldm_output['Response']  ['SUCCESS']
135