blob: 26086584f76c0b1ceb771c6ef541b21be409681a [file] [log] [blame]
Rahul Maheshwarief003062020-03-23 07:17:16 -05001*** Settings ***
2Documentation This suite tests System Vital Product Data (VPD) using vpdtool.
3
4Library ../../lib/vpd_utils.py
5Variables ../../data/vpd_variables.py
6Resource ../../lib/openbmc_ffdc.robot
7
8Test Teardown FFDC On Test Case Fail
9
10
11*** Variables ***
12
13${CMD_GET_PROPERTY_INVENTORY} busctl get-property xyz.openbmc_project.Inventory.Manager
14${DR_WRITE_VALUE} XYZ Component
15${PN_WRITE_VALUE} XYZ1234
16${SN_WRITE_VALUE} ABCD12345678
17
18*** Test Cases ***
19
20Verify System VPD
21 [Documentation] Verify system VPD details via vpdtool '-i' option.
22 [Tags] Verify_System_VPD
23
24 ${vpd_records}= Vpdtool -i
25
26 ${components}= Get Dictionary Keys ${vpd_records}
27 FOR ${component} IN @{components}
28 Verify VPD Data ${vpd_records} ${component}
29 END
30
31
32Verify VPD Component Read
33 [Documentation] Verify details of VPD component via vpdtool.
34 [Tags] Verify_VPD_Component_Read
35
36 ${components}= Get Dictionary Keys ${VPD_DETAILS}
37 FOR ${component} IN @{components}
38 Verify VPD Component Read Operation ${component}
39 END
40
41
42Verify VPD Field Read
43 [Documentation] Verify reading VPD field value via vpdtool.
44 [Tags] Verify_VPD_Field_Read
45
46 ${components}= Get Dictionary Keys ${VPD_DETAILS}
47 FOR ${component} IN @{components}
48 Verify VPD Field Read Operation ${component}
49 END
50
51
52Verify VPD Field Write
George Keishinge20f82c2020-05-13 10:51:02 -050053 [Documentation] Verify writing VPD field value via vpdtool.
Rahul Maheshwarief003062020-03-23 07:17:16 -050054 [Tags] Verify_VPD_Field_Write
55
56 ${components}= Get Dictionary Keys ${VPD_DETAILS}
57 FOR ${component} IN @{components}
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -060058 # VPD fields "DR", "CC" and "FN" will be added later.
59 @{vpd_fields}= Create List SN PN
60 ${field}= Evaluate random.choice($vpd_fields) random
61 Verify VPD Field Write Operation ${component} ${field}
Rahul Maheshwarief003062020-03-23 07:17:16 -050062 END
63
64
65*** Keywords ***
66
67Verify VPD Data
68 [Documentation] Verify VPD data of given component.
69 [Arguments] ${vpd_records} ${component}
70 # Description of arguments:
71 # vpd_records All VPD data Via vpdtool.
72 # component VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
73
74 # Verification of "CC" and "FN" will be added later.
75 @{vpd_fields}= Create List DR LocationCode SN PN
76 FOR ${field} IN @{vpd_fields}
77 ${busctl_field}= Set Variable If
78 ... '${field}' == 'DR' xyz.openbmc_project.Inventory.Item PrettyName
79 ... '${field}' == 'LocationCode' com.ibm.ipzvpd.Location LocationCode
80 ... '${field}' == 'PN' xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
81 ... '${field}' == 'SN' xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
82
83 ${cmd}= Catenate ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory${component}
84 ... ${busctl_field}
85 ${cmd_output}= BMC Execute Command ${cmd}
86 # Example of cmd_output:
87 # [0]: s "ABCD.XY1.1234567-P0"
88 # [1]:
89 # [2]: 0
90
91 Valid Value vpd_records['${component}']['${field}'] ['${cmd_output[0].split('"')[1].strip('"')}']
92 END
93 Valid Value vpd_records['${component}']['type'] ['${VPD_DETAILS['${component}']['type']}']
94
95
96Verify VPD Component Read Operation
George Keishing16b3c7b2021-01-28 09:23:37 -060097 [Documentation] Verify reading VPD details of given component via vpdtool.
Rahul Maheshwarief003062020-03-23 07:17:16 -050098 [Arguments] ${component}
99 # Description of arguments:
100 # component VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
101
102 ${vpd_records}= Vpdtool -o -O ${component}
103
104 # Example output from 'Vpdtool -o -O /system/chassis/motherboard/vdd_vrm1':
105 # [/system/chassis/motherboard/vdd_vrm1]:
106 # [DR]: CPU POWER CARD
107 # [type]: xyz.openbmc_project.Inventory.Item.Vrm
108 # [CC]: E123
109 # [FN]: F123456
110 # [LocationCode]: ABCD.XY1.1234567-P0
111 # [SN]: YL2E32010000
112 # [PN]: PN12345
113
114 Verify VPD Data ${vpd_records} ${component}
115
116
117Verify VPD Field Read Operation
George Keishing16b3c7b2021-01-28 09:23:37 -0600118 [Documentation] Verify reading all VPD fields for given component via vpdtool.
Rahul Maheshwarief003062020-03-23 07:17:16 -0500119 [Arguments] ${component}
120 # Description of arguments:
121 # component VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
122
123 # Verification of "CC" and "FN" will be added later.
124 @{vpd_fields}= Create List DR SN PN
125
126 FOR ${fields} IN @{vpd_fields}
127 Verify VPD Field Value ${component} ${fields}
128 END
129
130
131Verify VPD Field Write Operation
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -0600132 [Documentation] Verify writing VPD fields for given component via vpdtool.
133 [Arguments] ${component} ${field}
134 [Teardown] Restore VPD Value ${component} ${field} ${old_field_value}
Rahul Maheshwarief003062020-03-23 07:17:16 -0500135 # Description of arguments:
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -0600136 # component VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
137 # field VPD component field (e.g. PN, SN)
Rahul Maheshwarief003062020-03-23 07:17:16 -0500138
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -0600139 ${vpd_records}= Vpdtool -r -O ${component} -R VINI -K ${field}
140 ${old_field_value}= Set Variable ${vpd_records['${component}']['${field}']}
Rahul Maheshwarief003062020-03-23 07:17:16 -0500141
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -0600142 ${write_value}= Set Variable If
143 ... '${field}' == 'DR' ${DR_WRITE_VALUE}
144 ... '${field}' == 'PN' ${PN_WRITE_VALUE}
145 ... '${field}' == 'SN' ${SN_WRITE_VALUE}
Rahul Maheshwarief003062020-03-23 07:17:16 -0500146
Rahul Maheshwari0ef1e152020-11-02 23:10:55 -0600147 Vpdtool -w -O ${component} -R VINI -K ${field} --value ${write_value}
148
149 Verify VPD Field Value ${component} ${field}
150
151
152Restore VPD Value
153 [Documentation] Restore VPD's field value of given component.
154 [Arguments] ${component} ${field} ${value}
155 # Description of arguments:
156 # component VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
157 # field VPD component field (e.g. PN, SN)
158 # value VPD value to be restore.
159
160 Vpdtool -w -O ${component} -R VINI -K ${field} --value ${value}
Rahul Maheshwarief003062020-03-23 07:17:16 -0500161
162
163Verify VPD Field Value
164 [Documentation] Verify VPD field value via vpdtool.
165 [Arguments] ${component} ${field}
166 # Description of arguments:
167 # component VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
168 # field VPD field (e.g. DR, SN, PN)
169
170 ${vpd_records}= Vpdtool -r -O ${component} -R VINI -K ${field}
171
172 ${busctl_field}= Set Variable If
173 ... '${field}' == 'DR' xyz.openbmc_project.Inventory.Item PrettyName
174 ... '${field}' == 'PN' xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
175 ... '${field}' == 'SN' xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
176
177 ${cmd}= Catenate ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory${component}
178 ... ${busctl_field}
179 ${cmd_output}= BMC Execute Command ${cmd}
180
181 Valid Value vpd_records['${component}']['${field}'] ['${cmd_output[0].split('"')[1].strip('"')}']