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);