Modified a case for general IPMI
Currently, the "Verify Get Device ID" testcase erroneously relies on
some hard-coded values. Changing these hard-coded values to values
obtained from the dev_id.json file on the BMC.
Signed-off-by: Tony Lee <tony.lee@quantatw.com>
Change-Id: I68b5a2aea8134d7ca739c136ab4d713e59f596c9
diff --git a/lib/ipmi_utils.py b/lib/ipmi_utils.py
index 32d32fd..1602300 100644
--- a/lib/ipmi_utils.py
+++ b/lib/ipmi_utils.py
@@ -16,6 +16,7 @@
import tempfile
gru.my_import_resource("ipmi_client.robot")
from robot.libraries.BuiltIn import BuiltIn
+import json
def get_sol_info():
@@ -529,3 +530,37 @@
cmd_buf = "channel getciphers ipmi | sed -re 's/ Alg/_Alg/g'"
stdout, stderr, rc = execute_ipmi_cmd(cmd_buf, "external", print_output=0)
return vf.outbuf_to_report(stdout)
+
+
+def get_device_id_config():
+ r"""
+ Get the device id config data and return as a dictionary.
+
+ Example:
+
+ dev_id_config = get_device_id_config()
+ print_vars(dev_id_config)
+
+ dev_id_config:
+ [manuf_id]: 7244
+ [addn_dev_support]: 141
+ [prod_id]: 16976
+ [aux]: 0
+ [id]: 32
+ [revision]: 129
+ [device_revision]: 1
+ """
+ stdout, stderr, rc = bsu.bmc_execute_command("cat /usr/share/ipmi-providers/dev_id.json")
+
+ result = json.loads(stdout)
+
+ # Create device revision field for the user.
+ # Reference IPMI specification v2.0 "Get Device ID Command"
+ # [7] 1 = device provides Device SDRs
+ # 0 = device does not provide Device SDRs
+ # [6:4] reserved. Return as 0.
+ # [3:0] Device Revision, binary encoded.
+
+ result['device_revision'] = result['revision'] & 0x0F
+
+ return result
diff --git a/tests/ipmi/test_general_ipmi.robot b/tests/ipmi/test_general_ipmi.robot
index 0a54b5d..8875305 100755
--- a/tests/ipmi/test_general_ipmi.robot
+++ b/tests/ipmi/test_general_ipmi.robot
@@ -10,6 +10,7 @@
Library ../../lib/ipmi_utils.py
Variables ../../data/ipmi_raw_cmd_table.py
Library ../../lib/gen_misc.py
+Library ../../lib/gen_robot_valid.py
Test Setup Log to Console ${EMPTY}
Test Teardown FFDC On Test Case Fail
@@ -276,10 +277,13 @@
# 0x00
# 0x03
+ # Verify Manufacturer and Product IDs, etc. directly from json file.
+ ${device_id_config}= Get Device Id Config
${mc_info}= Get MC Info
- Should Be Equal ${mc_info['device_id']} 0
- Should Be Equal ${mc_info['device_revision']} 0
+ Rprint Vars device_id_config mc_info
+ Valid Value ${mc_info['device_id']} [${device_id_config['id']}]
+ Valid Value ${mc_info['device_revision']} [${device_id_config['device_revision']}]
# Get firmware revision from mc info command output i.e. 2.01
${ipmi_fw_major_version} ${ipmi_fw_minor_version}=
@@ -300,15 +304,14 @@
Should Be Equal As Strings ${ipmi_fw_minor_version} ${major_minor_version[1]}
... msg=Minor version mismatch.
- Should Be Equal ${mc_info['ipmi_version']} 2.0
+ Valid Value mc_info['ipmi_version'] ['2.0']
- # TODO: Verify Manufacturer and Product IDs directly from json file.
- # Reference : openbmc/openbmc-test-automation#1244
- Should Be Equal ${mc_info['manufacturer_id']} 42817
- Should Be Equal ${mc_info['product_id']} 16975 (0x424f)
+ Valid Value ${mc_info['manufacturer_id']} [${device_id_config['manuf_id']}]
+ ${product_id_hex} = Convert To Hex ${device_id_config['prod_id']} lowercase=True
+ Valid Value mc_info['product_id'] ['${device_id_config['prod_id']} (0x${product_id_hex})']
- Should Be Equal ${mc_info['device_available']} yes
- Should Be Equal ${mc_info['provides_device_sdrs']} yes
+ Valid Value mc_info['device_available'] ['yes']
+ Valid Value mc_info['provides_device_sdrs'] ['yes']
Should Contain ${mc_info['additional_device_support']} Sensor Device
Should Contain ${mc_info['additional_device_support']} SEL Device
Should Contain