1 #include "libpldmresponder/fru_parser.hpp" 2 3 #include <gtest/gtest.h> 4 TEST(FruParser, allScenarios) 5 { 6 using namespace pldm::responder::fru_parser; 7 8 FruParser parser{"./fru_jsons/good"}; 9 10 // Get an item with a single PLDM FRU record 11 FruRecordInfos cpu{ 12 {1, 13 1, 14 {{"xyz.openbmc_project.Inventory.Decorator.Asset", "Model", "string", 15 2}, 16 {"xyz.openbmc_project.Inventory.Decorator.Asset", "PartNumber", 17 "string", 3}, 18 {"xyz.openbmc_project.Inventory.Decorator.Asset", "SerialNumber", 19 "string", 4}, 20 {"xyz.openbmc_project.Inventory.Decorator.Asset", "Manufacturer", 21 "string", 5}, 22 {"xyz.openbmc_project.Inventory.Item", "PrettyName", "string", 8}, 23 {"xyz.openbmc_project.Inventory.Decorator.AssetTag", "AssetTag", 24 "string", 11}, 25 {"xyz.openbmc_project.Inventory.Decorator.Revision", "Version", 26 "string", 10}}}, 27 {1, 28 1, 29 {{"xyz.openbmc_project.Inventory.Decorator.Asset", "PartNumber", 30 "string", 3}, 31 {"xyz.openbmc_project.Inventory.Decorator.Asset", "SerialNumber", 32 "string", 4}}}}; 33 auto cpuInfos = 34 parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.Cpu"); 35 ASSERT_EQ(cpuInfos.size(), 2); 36 ASSERT_EQ(cpu == cpuInfos, true); 37 38 // Get an item type with 3 PLDM FRU records 39 auto boardInfos = 40 parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.Board"); 41 ASSERT_EQ(boardInfos.size(), 3); 42 43 // D-Bus lookup info for FRU information 44 DBusLookupInfo lookupInfo{ 45 "xyz.openbmc_project.Inventory.Manager", 46 "/xyz/openbmc_project/inventory", 47 {"xyz.openbmc_project.Inventory.Item.Chassis", 48 "xyz.openbmc_project.Inventory.Item.Board", 49 "xyz.openbmc_project.Inventory.Item.PCIeDevice", 50 "xyz.openbmc_project.Inventory.Item.Board.Motherboard", 51 "xyz.openbmc_project.Inventory.Item.Dimm", 52 "xyz.openbmc_project.Inventory.Item.Panel", 53 "xyz.openbmc_project.Inventory.Item.DiskBackplane", 54 "xyz.openbmc_project.Inventory.Item.Fan", 55 "xyz.openbmc_project.Inventory.Item.PowerSupply", 56 "xyz.openbmc_project.Inventory.Item.Battery", 57 "xyz.openbmc_project.Inventory.Item.Vrm", 58 "xyz.openbmc_project.Inventory.Item.Cpu", 59 "xyz.openbmc_project.Inventory.Item.Bmc", 60 "xyz.openbmc_project.Inventory.Item.Connector", 61 "xyz.openbmc_project.Inventory.Item.PCIeSlot", 62 "xyz.openbmc_project.Inventory.Item.System", 63 "xyz.openbmc_project.Inventory.Item.Tpm"}}; 64 auto dbusInfo = parser.inventoryLookup(); 65 ASSERT_EQ(dbusInfo == lookupInfo, true); 66 67 ASSERT_THROW( 68 parser.getRecordInfo("xyz.openbmc_project.Inventory.Item.DIMM"), 69 std::exception); 70 } 71