xref: /openbmc/openbmc-test-automation/pldm/test_pldm_bios_attributes.robot (revision 2104d5f9bca1ab3b460f5255f6093d7b25a13c1a)
1 *** Settings ***
2 
3 Documentation    Module to test PLDM BIOS attribute types.
4 
5 Library          Collections
6 Library          String
7 Library          ../lib/pldm_utils.py
8 Variables        ../data/pldm_variables.py
9 Resource         ../lib/openbmc_ffdc.robot
10 
11 Test Setup       Printn
12 Test Teardown    FFDC On Test Case Fail
13 Suite Setup      PLDM BIOS Attribute Suite Setup
14 Suite Teardown   PLDM BIOS Attribute Suite Cleanup
15 
16 
17 *** Variables ***
18 
19 ${bios_original_data}       ${EMPTY}
20 ${attr_table_data}     ${EMPTY}
21 
22 
23 *** Test Cases ***
24 
25 Verify Get BIOS Attribute With Invalid Attribute Name
26 
27     [Documentation]  Verify get BIOS attribute with invalid attribute name.
28     [Tags]  Verify_Get_BIOS_Attribute_With_Invalid_Attribute_Name
29 
30     ${random_attr}=  Generate Random String  8  [LETTERS][NUMBERS]
31     ${pldm_output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${random_attr}
32 
33     # Example output:
34     #
35     # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a hjkhkj
36     # Can not find the attribute hjkhkj
37     #
38 
39     Should Contain  ${pldm_output}  Can not find the attribute
40 
41 
42 Verify Set BIOS Attribute With Invalid Attribute Name
43 
44     [Documentation]  Verify set BIOS attribute with invalid attribute name.
45     [Tags]  Verify_Set_BIOS_Attribute_With_Invalid_Attribute_Name
46 
47     ${random_str}=  Generate Random String  8  [LETTERS][NUMBERS]
48     ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${random_str} -d ${random_str}
49 
50     # Example output:
51     #
52     # pldmtool bios SetBIOSAttributeCurrentValue -a hjkhkj -d 0
53     # Could not find attribute :hjkhkj
54     #
55 
56     Should Contain  ${pldm_output}  Could not find attribute
57 
58 
59 Verify Set Invalid Optional Value For BIOS Enumeration Attribute Type
60 
61     [Documentation]  Verify set invalid optional value for BIOS enumeration attribute type.
62     [Tags]  Verify_Set_Invalid_Optional_Value_For_BIOS_Enumeration_Attribute_Type
63 
64     ${attr_val_data}=  GetBIOSEnumAttributeOptionalValues  ${attr_table_data}
65     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
66     ${enum_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
67 
68     # Example output:
69     #
70     # pldmtool bios SetBIOSAttributeCurrentValue -a pvm_os_boot_side -d hhhhhj
71     # Set Attribute Error: It's not a possible value
72     #
73 
74     ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${enum_attr} -d 0
75     Should Contain  ${pldm_output}  Set Attribute Error
76 
77 
78 Verify Set Out Of Range Integer Value For BIOS Integer Attribute Type
79 
80     [Documentation]  Verify set out of range integer value for BIOS integer attribute type.
81     [Tags]  Verify_Set_Out_Of_Range_Integer_Value_For_BIOS_Integer_Attribute_Type
82 
83     ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSInteger  ${attr_table_data}
84     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
85     ${int_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
86     ${count}=  Evaluate  ${attr_val_data['${int_attr}']["UpperBound"]} + 5
87 
88     # Example output:
89     #
90     # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if_count -d 12
91     # Response Message Error: rc=0,cc=2
92     #
93 
94     ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${int_attr} -d ${count}
95     Should Contain  ${pldm_output}  Response Message Error
96 
97 
98 Verify Set Out Of Range String Value For BIOS String Attribute Type
99 
100     [Documentation]  Verify set out of range string value for BIOS string attribute type.
101     [Tags]  Verify_Set_Out_Of_Range_String_Value_For_BIOS_String_Attribute_Type
102 
103     ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSString  ${attr_table_data}
104     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
105     ${str_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
106     ${count}=  Evaluate  ${attr_val_data['${str_attr}']["MaximumStringLength"]} + 5
107     ${random_value}=  Generate Random String  ${count}  [LETTERS][NUMBERS]
108 
109     # Example output:
110     #
111     # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if0_ipv4_ipaddr -d 1234566788999
112     # Response Message Error: rc=0,cc=2
113     #
114 
115     ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${str_attr} -d ${random_value}
116     Should Contain  ${pldm_output}  Response Message Error
117 
118 
119 Verify Set BIOS String Attribute Type
120 
121     [Documentation]  Verify set BIOS string attribute type for various BIOS
122     ...              attribute handle with random values with in the range.
123     [Tags]  Verify_Set_BIOS_String_Attribute_Type
124 
125     ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSString  ${attr_table_data}
126 
127     # Example output:
128     #
129     # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_hostname -d BMC
130     # {
131     #     "Response": "SUCCESS"
132     # }
133 
134     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
135     FOR  ${i}  IN  @{attr_handles}
136         ${random_value}=  GetRandomBIOSIntAndStrValues  ${i}  ${attr_val_data['${i}']["MaximumStringLength"]}
137         ${attr_val_list}=  Create List
138         Append To List  ${attr_val_list}  ${random_value}
139         Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
140     END
141 
142 
143 Verify Set BIOS Integer Attribute Type
144 
145     [Documentation]  Verify set BIOS integer attribute type for various BIOS
146     ...              attribute handle with random values with in the range.
147     [Tags]  Verify_Set_BIOS_Integer_Attribute_Type
148 
149     ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSInteger  ${attr_table_data}
150 
151     # Example output:
152     #
153     # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if_count -d 1
154     # {
155     #     "Response": "SUCCESS"
156     # }
157 
158     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
159 
160     FOR  ${i}  IN  @{attr_handles}
161         ${random_value}=  GetRandomBIOSIntAndStrValues  ${i}  ${attr_val_data['${i}']["UpperBound"]}
162         ${attr_val_list}=  Create List
163         Append To List  ${attr_val_list}  ${random_value}
164         Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
165     END
166 
167 
168 Verify Set BIOS Enumeration Attribute Type
169 
170     [Documentation]  Verify set BIOS enumeration attribute type for various BIOS
171     ...              attribute handle with random values with in the range of
172     ...              default optional values.
173     [Tags]  Verify_Set_BIOS_Enumeration_Attribute_Type
174 
175     ${attr_val_data}=  GetBIOSEnumAttributeOptionalValues  ${attr_table_data}
176 
177     # Example output:
178     #
179     # pldmtool bios SetBIOSAttributeCurrentValue -a pvm_default_os_type -d AIX
180     # {
181     #     "Response": "SUCCESS"
182     # }
183 
184     @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
185     FOR  ${i}  IN  @{attr_handles}
186         @{attr_val_list}=  Set Variable  ${attr_val_data}[${i}]
187         Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
188     END
189 
190 
191 Verify Restore BIOS Attribute Values
192 
193     [Documentation]  Restore all BIOS attribute values with its default values and verify.
194     [Tags]  Verify_Restore_BIOS_Attribute_Values
195 
196     ${bios_default_data}=  GetBIOSAttrDefaultValues  ${attr_table_data}
197     Validate Set All BIOS Attributes Values  ${bios_default_data}
198 
199 
200 *** Keywords ***
201 
202 PLDM BIOS Attribute Suite Setup
203 
204     [Documentation]  Perform PLDM BIOS attribute suite setup.
205 
206     ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
207     Set Global Variable  ${attr_table_data}  ${pldm_output}
208 
209     ${data}=  GetBIOSAttrOriginalValues  ${pldm_output}
210     Set Global Variable  ${bios_original_data}  ${data}
211 
212 
213 PLDM BIOS Attribute Suite Cleanup
214 
215     [Documentation]  Perform PLDM BIOS attribute suite cleanup.
216 
217     Validate Set All BIOS Attributes Values  ${bios_original_data}
218 
219 
220 Validate Set BIOS Attributes With Optional Values
221 
222     [Documentation]  Set BIOS attribute with the available attribute handle
223     ...              values and revert back to original attribute handle value.
224     [Arguments]      ${attr_handle}  @{attr_val_list}
225 
226     # Description of argument(s):
227     # attr_handle    BIOS attribute handle (e.g. pvm_system_power_off_policy).
228     # attr_val_list  List of the attribute values for the given attribute handle
229     #                (e.g. ['"Power Off"', '"Stay On"', 'Automatic']).
230 
231     FOR  ${j}  IN  @{attr_val_list}
232         ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${attr_handle} -d ${j}
233         Valid Value  pldm_resp['Response']  ['SUCCESS']
234 
235         # Compare BIOS attribute values after set operation.
236         ${output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${attr_handle}
237         ${value1}=  Convert To String  ${output["CurrentValue"]}
238         ${value2}=  Convert To String  ${j}
239         ${value2}=  Replace String  ${value2}  "  ${EMPTY}
240         Should Be Equal  ${value1.strip()}  ${value2.strip()}
241 
242     END
243 
244 
245 Validate Set All BIOS Attributes Values
246 
247     [Documentation]  Validate Set BIOS Attributes Values.
248     [Arguments]      ${bios_attr_data}
249 
250     # Description of argument(s):
251     # bios_attr_data  Dictionary containing BIOS attribute name and values.
252 
253     @{keys}=  Get Dictionary Keys  ${bios_attr_data}
254 
255     FOR  ${key}  IN  @{keys}
256         ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${key} -d ${bios_attr_data['${key}']}
257         Valid Value  pldm_resp['Response']  ['SUCCESS']
258 
259         # Compare BIOS attribute values after set operation.
260         ${output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${key}
261         ${value1}=  Convert To String  ${output["CurrentValue"]}
262         ${value2}=  Convert To String  ${bios_attr_data['${key}']}
263         ${value2}=  Replace String  ${value2}  "  ${EMPTY}
264         Should Be Equal  ${value1.strip()}  ${value2.strip()}
265     END
266