FRU: simplify BMC FRU table construction
We should be able to map standard D-Bus FRU inventory properties to
standard FRU properties from the PLDM FRU spec.
This commit will simplify things by removing JSONs for standard FRUs.
The standard FRU jsons are not going to be installed, we have mandated
the default DBUS lookup and setup Default Fru record map.
If OEM FRU JSONs are present then only those will be parsed by the
parser.
Tested on rainier with the pldmtool.
Change-Id: I53cd3cd98a0552e3faa42d50c9ae93280218ad28
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/configurations/fru/Bmc_General.json b/configurations/fru/Bmc_General.json
deleted file mode 100644
index b1a164f..0000000
--- a/configurations/fru/Bmc_General.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Bmc"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/configurations/fru/FRU_Master.json b/configurations/fru/FRU_Master.json
deleted file mode 100644
index 6f0f72e..0000000
--- a/configurations/fru/FRU_Master.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "service":"xyz.openbmc_project.Inventory.Manager",
- "root_path":"/xyz/openbmc_project/inventory",
- "entities":[
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Board.Motherboard",
- "entity_type" : 64
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Bmc",
- "entity_type" : 137
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Panel",
- "entity_type" : 69
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Vrm",
- "entity_type" : 123
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Tpm",
- "entity_type" : 24576
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.System",
- "entity_type" : 11521
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Chassis",
- "entity_type" : 45
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.PowerSupply",
- "entity_type" : 120
- }
- ]
-}
diff --git a/configurations/fru/Motherboard_General.json b/configurations/fru/Motherboard_General.json
deleted file mode 100644
index 1f6036e..0000000
--- a/configurations/fru/Motherboard_General.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Board.Motherboard"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/configurations/fru/Panel_General.json b/configurations/fru/Panel_General.json
deleted file mode 100644
index d81ae82..0000000
--- a/configurations/fru/Panel_General.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Panel"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/configurations/fru/PowerSupply_General.json b/configurations/fru/PowerSupply_General.json
deleted file mode 100644
index b4e5a63..0000000
--- a/configurations/fru/PowerSupply_General.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.PowerSupply"
- },
- "fru_fields":[
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- }
- ]
-}
diff --git a/configurations/fru/System_General.json b/configurations/fru/System_General.json
deleted file mode 100644
index 5f6d10d..0000000
--- a/configurations/fru/System_General.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.System"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
diff --git a/configurations/fru/Tpm_General.json b/configurations/fru/Tpm_General.json
deleted file mode 100644
index 40a54a4..0000000
--- a/configurations/fru/Tpm_General.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Tpm"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/configurations/fru/Vrm_General.json b/configurations/fru/Vrm_General.json
deleted file mode 100644
index 50325c0..0000000
--- a/configurations/fru/Vrm_General.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Vrm"
- },
- "fru_fields":[
- {
- "fru_field_type" : 2,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Model",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 5,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "Manufacturer",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 8,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Item",
- "property_name" : "PrettyName",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 11,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.AssetTag",
- "property_name" : "AssetTag",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/configurations/meson.build b/configurations/meson.build
index 79550d8..440f5a6 100644
--- a/configurations/meson.build
+++ b/configurations/meson.build
@@ -8,7 +8,6 @@
meson.project_name(),
)
-install_subdir('fru', install_dir: packagedir)
install_subdir('pdr', install_dir: packagedir)
diff --git a/libpldmresponder/fru_parser.cpp b/libpldmresponder/fru_parser.cpp
index a500a00..d41ebaa 100644
--- a/libpldmresponder/fru_parser.cpp
+++ b/libpldmresponder/fru_parser.cpp
@@ -24,28 +24,16 @@
const std::vector<Json> emptyJsonList{};
const std::vector<std::string> emptyStringVec{};
-constexpr auto fruMasterJson = "FRU_Master.json";
-
FruParser::FruParser(const std::string& dirPath)
{
+ setupDefaultDBusLookup();
+ setupDefaultFruRecordMap();
+
fs::path dir(dirPath);
- if (!fs::exists(dir) || fs::is_empty(dir))
+ if (fs::exists(dir) && !fs::is_empty(dir))
{
- setupDefaultDBusLookup();
- setupDefaultFruRecordMap();
- return;
+ setupFruRecordMap(dirPath);
}
-
- fs::path masterFilePath = dir / fruMasterJson;
- if (!fs::exists(masterFilePath))
- {
- std::cerr << "FRU D-Bus lookup JSON does not exist, PATH="
- << masterFilePath << "\n";
- throw InternalFailure();
- }
-
- setupDBusLookup(masterFilePath);
- setupFruRecordMap(dirPath);
}
void FruParser::setupDefaultDBusLookup()
@@ -64,6 +52,8 @@
{"xyz.openbmc_project.Inventory.Item.Cpu", 135},
{"xyz.openbmc_project.Inventory.Item.Bmc", 137},
{"xyz.openbmc_project.Inventory.Item.Dimm", 142},
+ {"xyz.openbmc_project.Inventory.Item.Tpm", 24576},
+ {"xyz.openbmc_project.Inventory.Item.System", 11521},
};
Interfaces interfaces{};
@@ -76,33 +66,6 @@
lookupInfo.emplace(service, rootPath, std::move(interfaces));
}
-void FruParser::setupDBusLookup(const fs::path& filePath)
-{
- std::ifstream jsonFile(filePath);
-
- auto data = Json::parse(jsonFile, nullptr, false);
- if (data.is_discarded())
- {
- std::cerr << "Parsing FRU master config file failed, FILE=" << filePath;
- throw InternalFailure();
- }
-
- Service service = data.value("service", "");
- RootPath rootPath = data.value("root_path", "");
- auto entities = data.value("entities", emptyJsonList);
- Interfaces interfaces{};
- EntityType entityType{};
- for (auto& entity : entities)
- {
- auto intf = entity.value("interface", "");
- intfToEntityType[intf] =
- std::move(entity.value("entity_type", entityType));
- interfaces.emplace(std::move(intf));
- }
- lookupInfo.emplace(std::make_tuple(std::move(service), std::move(rootPath),
- std::move(interfaces)));
-}
-
void FruParser::setupDefaultFruRecordMap()
{
const FruRecordInfo generalRecordInfo = {
@@ -136,18 +99,12 @@
for (auto& file : fs::directory_iterator(dirPath))
{
auto fileName = file.path().filename().string();
- if (fruMasterJson == fileName)
- {
- continue;
- }
-
std::ifstream jsonFile(file.path());
auto data = Json::parse(jsonFile, nullptr, false);
if (data.is_discarded())
{
- std::cerr << "Parsing FRU master config file failed, FILE="
- << file.path();
+ std::cerr << "Parsing FRU config file failed, FILE=" << file.path();
throw InternalFailure();
}
diff --git a/test/fru_jsons/malformed1/Board_General.json b/test/fru_jsons/malformed1/Board_General.json
deleted file mode 100644
index aa6dc4b..0000000
--- a/test/fru_jsons/malformed1/Board_General.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1,
- "encoding_type": 1
- },
- "fields":[
- {
- "field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- }
- ]
-}
-
diff --git a/test/fru_jsons/malformed2/FRU_Master.json b/test/fru_jsons/malformed2/FRU_Master.json
deleted file mode 100644
index 1cf1e4c..0000000
--- a/test/fru_jsons/malformed2/FRU_Master.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "service":"xyz.openbmc_project.Inventory.Manager"
- "root_path":"/xyz/openbmc_project/inventory/system/",
- "entities":[
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Board",
- "entity_type" : 64
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Cpu",
- "entity_type" : 135
- }
- ]
-}
diff --git a/test/fru_jsons/malformed3/Cpu_General.json b/test/fru_jsons/malformed3/Cpu_General.json
deleted file mode 100644
index 99ebd39..0000000
--- a/test/fru_jsons/malformed3/Cpu_General.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "record_details":
- {
- "fru_record_type" : 1
- "fru_encoding_type": 1,
- "dbus_interface_name": "xyz.openbmc_project.Inventory.Item.Cpu"
- },
- "fru_fields":[
- {
- "fru_field_type" : 3,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "PartNumber",
- "property_type" : "string"
- }
- },
- {
- "fru_field_type" : 4,
- "dbus":
- {
- "interface" : "xyz.openbmc_project.Inventory.Decorator.Asset",
- "property_name" : "SerialNumber",
- "property_type" : "string"
- }
- }
- ]
-}
diff --git a/test/fru_jsons/malformed3/FRU_Master.json b/test/fru_jsons/malformed3/FRU_Master.json
deleted file mode 100644
index fa2c405..0000000
--- a/test/fru_jsons/malformed3/FRU_Master.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "service":"xyz.openbmc_project.Inventory.Manager",
- "root_path":"/xyz/openbmc_project/inventory/system/",
- "entities":[
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Board",
- "entity_type" : 64
- },
- {
- "interface" : "xyz.openbmc_project.Inventory.Item.Cpu",
- "entity_type" : 135
- }
- ]
-}
diff --git a/test/libpldmresponder_fru_test.cpp b/test/libpldmresponder_fru_test.cpp
index 9e66ea2..7b1b470 100644
--- a/test/libpldmresponder_fru_test.cpp
+++ b/test/libpldmresponder_fru_test.cpp
@@ -1,47 +1,63 @@
#include "libpldmresponder/fru_parser.hpp"
#include <gtest/gtest.h>
-
TEST(FruParser, allScenarios)
{
using namespace pldm::responder::fru_parser;
- // No master FRU JSON
- ASSERT_THROW(FruParser("./fru_jsons/malformed1"), std::exception);
- // Malformed master FRU JSON
- ASSERT_THROW(FruParser("./fru_jsons/malformed2"), std::exception);
- // Malformed FRU JSON
- ASSERT_THROW(FruParser("./fru_jsons/malformed3"), std::exception);
-
FruParser parser{"./fru_jsons/good"};
// Get an item with a single PLDM FRU record
- FruRecordInfos cpu{{1,
- 1,
- {{"xyz.openbmc_project.Inventory.Decorator.Asset",
- "PartNumber", "string", 3},
- {"xyz.openbmc_project.Inventory.Decorator.Asset",
- "SerialNumber", "string", 4}}}};
+ FruRecordInfos cpu{
+ {1,
+ 1,
+ {{"xyz.openbmc_project.Inventory.Decorator.Asset", "Model", "string",
+ 2},
+ {"xyz.openbmc_project.Inventory.Decorator.Asset", "PartNumber",
+ "string", 3},
+ {"xyz.openbmc_project.Inventory.Decorator.Asset", "SerialNumber",
+ "string", 4},
+ {"xyz.openbmc_project.Inventory.Decorator.Asset", "Manufacturer",
+ "string", 5},
+ {"xyz.openbmc_project.Inventory.Item", "PrettyName", "string", 8},
+ {"xyz.openbmc_project.Inventory.Decorator.AssetTag", "AssetTag",
+ "string", 11},
+ {"xyz.openbmc_project.Inventory.Decorator.Revision", "Version",
+ "string", 10}}},
+ {1,
+ 1,
+ {{"xyz.openbmc_project.Inventory.Decorator.Asset", "PartNumber",
+ "string", 3},
+ {"xyz.openbmc_project.Inventory.Decorator.Asset", "SerialNumber",
+ "string", 4}}}};
auto cpuInfos =
parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.Cpu");
- ASSERT_EQ(cpuInfos.size(), 1);
+ ASSERT_EQ(cpuInfos.size(), 2);
ASSERT_EQ(cpu == cpuInfos, true);
- // Get an item type with 2 PLDM FRU records
+ // Get an item type with 3 PLDM FRU records
auto boardInfos =
parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.Board");
- ASSERT_EQ(boardInfos.size(), 2);
+ ASSERT_EQ(boardInfos.size(), 3);
// D-Bus lookup info for FRU information
- DBusLookupInfo lookupInfo{"xyz.openbmc_project.Inventory.Manager",
- "/xyz/openbmc_project/inventory/system/",
- {"xyz.openbmc_project.Inventory.Item.Board",
- "xyz.openbmc_project.Inventory.Item.Cpu"}};
-
+ DBusLookupInfo lookupInfo{
+ "xyz.openbmc_project.Inventory.Manager",
+ "/xyz/openbmc_project/inventory",
+ {"xyz.openbmc_project.Inventory.Item.Chassis",
+ "xyz.openbmc_project.Inventory.Item.Board",
+ "xyz.openbmc_project.Inventory.Item.Board.Motherboard",
+ "xyz.openbmc_project.Inventory.Item.Panel",
+ "xyz.openbmc_project.Inventory.Item.PowerSupply",
+ "xyz.openbmc_project.Inventory.Item.Vrm",
+ "xyz.openbmc_project.Inventory.Item.Cpu",
+ "xyz.openbmc_project.Inventory.Item.Bmc",
+ "xyz.openbmc_project.Inventory.Item.Dimm",
+ "xyz.openbmc_project.Inventory.Item.Tpm",
+ "xyz.openbmc_project.Inventory.Item.System"}};
auto dbusInfo = parser.inventoryLookup();
ASSERT_EQ(dbusInfo == lookupInfo, true);
- // Search for an invalid item type
ASSERT_THROW(
parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.DIMM"),
std::exception);