Test baseboard temperature via IPMI.

Resolves openbmc/openbmc-test-automation#1249

Change-Id: Ibe194f3bbc0c91b99cde494c477532decdcd4fb4
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/tests/ipmi/test_general_ipmi.robot b/tests/ipmi/test_general_ipmi.robot
index 6c40b76..5a344b8 100644
--- a/tests/ipmi/test_general_ipmi.robot
+++ b/tests/ipmi/test_general_ipmi.robot
@@ -286,6 +286,45 @@
     ...  msg=Power reading above allowed threshold ${allowed_power_diff}.
 
 
+Test Baseboard Temperature Via IPMI
+    [Documentation]  Test baseboard temperature via IPMI and verify using REST.
+    [Tags]  Test_Baseboard_Temperature_Via_IPMI
+
+    # Example of IPMI dcmi get_temp_reading output:
+    #        Entity ID                       Entity Instance    Temp. Readings
+    # Inlet air temperature(40h)                      1               +19 C
+    # CPU temperature sensors(41h)                    5               +51 C
+    # CPU temperature sensors(41h)                    6               +50 C
+    # CPU temperature sensors(41h)                    7               +50 C
+    # CPU temperature sensors(41h)                    8               +50 C
+    # CPU temperature sensors(41h)                    9               +50 C
+    # CPU temperature sensors(41h)                    10              +48 C
+    # CPU temperature sensors(41h)                    11              +49 C
+    # CPU temperature sensors(41h)                    12              +47 C
+    # CPU temperature sensors(41h)                    8               +50 C
+    # CPU temperature sensors(41h)                    16              +51 C
+    # CPU temperature sensors(41h)                    24              +50 C
+    # CPU temperature sensors(41h)                    32              +43 C
+    # CPU temperature sensors(41h)                    40              +43 C
+    # Baseboard temperature sensors(42h)              1               +35 C
+
+    ${temp_reading}=  Run IPMI Standard Command  dcmi get_temp_reading -N 10
+    ${baseboard_temp_line}=
+    ...  Get Lines Containing String  ${temp_reading}
+    ...  Baseboard temperature  case-insensitive=True
+
+    ${baseboard_temp_ipmi}=  Fetch From Right  ${baseboard_temp_line}  +
+    ${baseboard_temp_ipmi}=  Remove String  ${baseboard_temp_ipmi}  ${SPACE}C
+
+    ${baseboard_temp_rest}=  Read Attribute
+    ...  /xyz/openbmc_project/sensors/temperature/pcie  Value
+    ${baseboard_temp_rest}=  Evaluate  ${baseboard_temp_rest}/1000
+
+    Should Be True
+    ...  ${baseboard_temp_rest} - ${baseboard_temp_ipmi} <= ${allowed_temp_diff}
+    ...  msg=Baseboard temperature above allowed threshold ${allowed_temp_diff}.
+
+
 *** Keywords ***
 
 Set Management Controller ID String