blob: 26b1760a85a5d01f081b8b7a335dfbd390e9e9a1 [file] [log] [blame]
ganesanba016f3f2022-12-13 13:56:34 +00001*** Settings ***
2
3Documentation Module to test dcmi get temperature reading functionality.
4Resource ../../lib/ipmi_client.robot
5Resource ../../lib/openbmc_ffdc.robot
6Resource ../../lib/bmc_network_utils.robot
7Resource ../../lib/boot_utils.robot
8Variables ../../data/ipmi_raw_cmd_table.py
9Variables ../../data/dcmi_raw_cmd_table.py
10Variables ../../data/ipmi_variable.py
11Library ../../lib/bmc_network_utils.py
12Library ../../lib/ipmi_utils.py
13Library ../../lib/utilities.py
14Library JSONLibrary
15
16Suite Setup Suite Setup Execution
17
Matt Fischer6fb70d92023-10-24 19:06:33 -060018Test Tags DCMI_Get_Temperature_Reading
George Keishing87dc4422023-10-20 12:56:30 +053019
ganesanba016f3f2022-12-13 13:56:34 +000020*** Variables ***
George Keishing87dc4422023-10-20 12:56:30 +053021
ganesanba016f3f2022-12-13 13:56:34 +000022${config_file_name} dcmi_sensors.json
23${dcmi_sensors_info_json_file} /usr/share/ipmi-providers/${config_file_name}
24${client_config_file_path} ${EXEC_DIR}/${config_file_name}
25&{dcmi_sensor_uri}
26
27*** Test Cases ***
Sridevi Ramesh34f0bf02025-07-24 09:31:26 -050028
ganesanba016f3f2022-12-13 13:56:34 +000029Verify Get Temperature Reading Command For Inlet Temperature Sensor
30 [Documentation] Verify IPMI Get Temperature Reading command for inlet temperature sensor.
31 [Tags] Verify_Get_Temperature_Reading_Command_For_Inlet_Temperature_Sensor
32
33 ${cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][0]}
34 ... ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][1]} 0x00 0x00
ishwaryamathim372cd862023-11-14 18:12:23 +000035 ${ipmi_resp}= Run IPMI Command ${cmd}
ganesanba016f3f2022-12-13 13:56:34 +000036 Verify Reading With IPMI ${ipmi_resp} ${1} inlet
37 # Verify Temperature Reading With Dbus URI ${ipmi_resp} inlet ${1}
38
39Verify Get Temperature Reading Command For CPU 0 Temperature Sensor
40 [Documentation] Verify IPMI Get Temperature Reading command for cpu0 temperature sensor.
41 [Tags] Verify_Get_Temperature_Reading_Command_For_CPU_0_Temperature_Sensor
42
43 ${cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][0]}
44 ... ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][2]} 0x00 0x00
ishwaryamathim372cd862023-11-14 18:12:23 +000045 ${ipmi_resp}= Run IPMI Command ${cmd}
ganesanba016f3f2022-12-13 13:56:34 +000046 Verify Reading With IPMI ${ipmi_resp} ${1} cpu
47 # Verify Temperature Reading With Dbus URI ${ipmi_resp} cpu ${1}
48
49Verify Get Temperature Reading Command For CPU 1 Temperature Sensor
50 [Documentation] Verify IPMI Get Temperature Reading command for cpu1 temperature sensor.
51 [Tags] Verify_Get_Temperature_Reading_Command_For_CPU_1_Temperature_Sensor
52
53 ${cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][0]}
54 ... ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][2]} 0x00 0x00
ishwaryamathim372cd862023-11-14 18:12:23 +000055 ${ipmi_resp}= Run IPMI Command ${cmd}
ganesanba016f3f2022-12-13 13:56:34 +000056 Verify Reading With IPMI ${ipmi_resp} ${2} cpu
57 # Verify Temperature Reading With Dbus URI ${ipmi_resp} cpu ${2}
58
59Verify Get Temperature Reading Command For Baseboard Temperature Sensor
60 [Documentation] Verify IPMI Get Temperature Reading command for baseboard temperature sensor.
61 [Tags] Verify_Get_Temperature_Reading_Command_For_Baseboard_Temperature_Sensor
62
63 ${cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][0]}
64 ... ${DCMI_RAW_CMD['DCMI']['GET_TEMPERATURE_READING'][3]} 0x00 0x00
ishwaryamathim372cd862023-11-14 18:12:23 +000065 ${ipmi_resp}= Run IPMI Command ${cmd}
ganesanba016f3f2022-12-13 13:56:34 +000066 Verify Reading With IPMI ${ipmi_resp} ${1} baseboard
67 # Verify Temperature Reading With Dbus URI ${ipmi_resp} baseboard ${1}
68
69*** Keywords ***
70Suite Setup Execution
71 [Documentation] Get dcmi sensors uri from config file.
72
73 IPMI Power On stack_mode=skip quiet=1
74
75 # Get this file to client machine /usr/share/ipmi-providers/dcmi_sensors.json
76 scp.Open Connection
77 ... ${OPENBMC_HOST} username=${OPENBMC_USERNAME} password=${OPENBMC_PASSWORD} port=${SSH_PORT}
78 scp.Get File ${dcmi_sensors_info_json_file} ${EXEC_DIR}
79 scp.Close Connection
80
81 ${config_file}= OperatingSystem.Get File ${client_config_file_path}
82 ${config_file_response}= Evaluate json.loads('''${config_file}''') json
83
84 ${remove_configuration_file}= Catenate rm -rf ${client_config_file_path}
85 ${rc} ${output}= Shell Cmd ${remove_configuration_file}
86
87 FOR ${key} ${value} IN &{config_file_response}
88 &{tmp}= Create Dictionary
89 FOR ${response} IN @{value}
90 ${sensor_dbus}= Get From Dictionary ${response} dbus
91 ${instance}= Get From Dictionary ${response} instance
92 Set To Dictionary ${tmp} ${instance} ${sensor_dbus}
93 END
94 Set To Dictionary ${dcmi_sensor_uri} ${key} ${tmp}
95 END
96
97Verify Temperature Reading With Dbus URI
98 [Documentation] Verify temperature from ipmi response and json file.
99 [Arguments] ${ipmi_resp} ${key} ${instance}
100
101 # Description of argument(s):
102 # ipmi_resp IPMI command response.
103 # key Entity ID description i.e inlet, cpu, baseboard.
104 # instance instance number 1, 2, ..
105
106 ${dbus_uris}= Get From Dictionary ${dcmi_sensor_uri} ${key}
107 ${dbus_uri}= Get From Dictionary ${dbus_uris} ${instance}
108
109 ${get_reading_value}= Set Variable If
110 ... '${instance}' == '1' ${3}
111 ... '${instance}' == '2' ${5}
112
113 ${ipmi_resp_list}= Split String ${ipmi_resp}
114 ${temperature_reading}= Get From List ${ipmi_resp_list} ${get_reading_value}
115 ${temp_reading}= Convert To Integer ${temperature_reading} 16
116 ${busctl_cmd}= Catenate busctl introspect xyz.openbmc_project.HwmonTempSensor ${dbus_uri}
117 ${busctl_cmd_resp}= BMC Execute Command ${busctl_cmd}
118 ${current_temp_value_from_dbus}= Get Regexp Matches ${busctl_cmd_resp[0]}
119 ... \\.Value\\s+property\\s+d\\s+(\\S+)\\s 1
120
121 ${min_value}= Evaluate ${temp_reading} - 1
122 ${max_value}= Evaluate ${temp_reading} + 1
123
124Check Reading Value In D-Bus
125 [Documentation] Verify temperature from ipmi response and json file.
126 [Arguments] ${key} ${instance} ${dcmi_reading_value}
127
128 # Description of argument(s):
Sridevi Ramesh34f0bf02025-07-24 09:31:26 -0500129 # key Entity ID description i.e inlet, cpu, baseboard.
130 # instance instance number 1, 2, ..
131 # dcmi_reading_value DCMI reading value.
ganesanba016f3f2022-12-13 13:56:34 +0000132
133 ${dbus_uris}= Get From Dictionary ${dcmi_sensor_uri} ${key}
134 ${dbus_uri}= Get From Dictionary ${dbus_uris} ${instance}
135
136 ${busctl_cmd}= Catenate busctl introspect xyz.openbmc_project.HwmonTempSensor ${dbus_uri}
137 ${busctl_cmd_resp}= BMC Execute Command ${busctl_cmd}
138 ${current_temp_value_from_dbus}= Get Regexp Matches ${busctl_cmd_resp[0]}
139 ... \\.Value\\s+property\\s+d\\s+(\\S+)\\s 1
George Keishing923c9df2025-05-14 18:14:01 +0530140
141 IF '${current_temp_value_from_dbus[0]}' == 'nan' and '${dcmi_reading_value}' == '0'
142 Fail msg=sensor reading value is not present.
143 END
144
145 IF '${current_temp_value_from_dbus[0]}' != 'nan' and '${dcmi_reading_value}' == '0'
146 Fail msg=sensor reading value is showing as 0 in dcmi get temperature raw command.
147 END
148
ganesanba016f3f2022-12-13 13:56:34 +0000149 ${dbus_reading_value}= Set Variable .${current_temp_value_from_dbus[0].split(".")[1].strip()}
150 ${status}= Run Keyword And Return Status Should Be True ${dbus_reading_value} > .499
George Keishing923c9df2025-05-14 18:14:01 +0530151
152 IF ${status} == False
153 Fail msg=sensor reading value is showing wrongly in dcmi get temperature raw command.
154 END
155
ganesanba016f3f2022-12-13 13:56:34 +0000156 ${dbus_reading_value}= Set Variable ${current_temp_value_from_dbus[0].split(".")[0].strip()}
157 Should Be Equal ${dcmi_reading_value} ${dbus_reading_value}
158 ... msg=sensor reading value is showing wrongly in dcmi get temperature raw command.
159
160Verify Reading With IPMI
161 [Documentation] Verify temperature reading with ipmi command.
162 [Arguments] ${ipmi_resp} ${instance} ${key}
163
164 # Description of argument(s):
165 # ipmi_resp IPMI command response.
166 # instance instance number 1, 2, ..
167 # key Entity ID description i.e inlet, cpu, baseboard.
168
169 ${get_reading_value}= Set Variable If
170 ... '${instance}' == '1' ${3}
171 ... '${instance}' == '2' ${5}
172
173 ${ipmi_resp_list}= Split String ${ipmi_resp}
174 ${temperature_reading}= Get From List ${ipmi_resp_list} ${get_reading_value}
175 ${dcmi_reading}= Convert To Integer ${temperature_reading} 16
George Keishing923c9df2025-05-14 18:14:01 +0530176 IF '${dcmi_reading}' == '0'
177 Check Reading Value In D-Bus ${key} ${instance} ${dcmi_reading}
178 END
ganesanba016f3f2022-12-13 13:56:34 +0000179 ${dcmi_temp_reading}= Convert To String ${dcmi_reading}
180 ${ipmi_sensor_cmd_resp}= Get IPMI Sensor Reading ${key} ${instance}
181 ${ipmi_sensor_cmd_resp_list}= Split String ${ipmi_sensor_cmd_resp} |
182 ${ipmi_temp_reading}= Set Variable ${ipmi_sensor_cmd_resp_list[1].strip().split(".")[0]}
183 ${reading_status}= Run Keyword And Return Status Should Be Equal
184 ... ${dcmi_temp_reading} ${ipmi_temp_reading}
George Keishing923c9df2025-05-14 18:14:01 +0530185 IF ${reading_status} == False
186 Check Reading Value In D-Bus ${key} ${instance} ${dcmi_temp_reading}
187 END
ganesanba016f3f2022-12-13 13:56:34 +0000188
189Get IPMI Sensor Reading
190 [Documentation] Return ipmi sensor reading.
191 [Arguments] ${key} ${instance}
192
193 # Description of argument(s):
194 # instance Entity ID description i.e inlet, cpu, baseboard.
195 # index Selecting the corresponding sensor dbus uri from list.
196
197 ${dbus_uris}= Get From Dictionary ${dcmi_sensor_uri} ${key}
198 ${dbus_uri}= Get From Dictionary ${dbus_uris} ${instance}
199 ${sensor_name}= Set Variable ${dbus_uri.split('/')[-1]}
200
ishwaryamathimdeb9b392023-11-10 07:21:21 +0000201 ${sensor_format}= Run IPMI Standard Command sensor
202 ${sensor_name_status}= Run Keyword And Return Status Should Contain
203 ... ${sensor_format} _
204
George Keishing923c9df2025-05-14 18:14:01 +0530205 ${replaced_str}= Replace String ${sensor_name} _ ${SPACE}
206 ${sensor_name}= Set Variable If ${sensor_name_status} == True
207 ... ${sensor_name_dbus}
208 ... ${replaced_str}
ishwaryamathimdeb9b392023-11-10 07:21:21 +0000209
ganesanba016f3f2022-12-13 13:56:34 +0000210 ${ret}= Run External IPMI Standard Command sensor | grep -i "${sensor_name}"
211
George Keishing409df052024-01-17 22:36:14 +0530212 RETURN ${ret}