pdr: Add pldm_pdr_find_last_in_range()
Adds a new libpldm API to find the last PDR record from the PDR repo
based on the range of record handle values given as input. This API is
used when a record needs to be added in a particular range of record
handles to the repo that contains all PDRs (inclusive of BMC and remote
endpoints).
Change-Id: Ica5187053361b27810577a4985fab4b994d35961
Signed-off-by: Pavithra Barithaya <pavithra.b@ibm.com>
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
diff --git a/tests/libpldm_pdr_test.cpp b/tests/libpldm_pdr_test.cpp
index 72860d7..f29fb97 100644
--- a/tests/libpldm_pdr_test.cpp
+++ b/tests/libpldm_pdr_test.cpp
@@ -547,6 +547,34 @@
pldm_pdr_destroy(repo);
}
+#ifdef LIBPLDM_API_TESTING
+TEST(PDRUpdate, testFindLastInRange)
+{
+ auto repo = pldm_pdr_init();
+
+ std::array<uint8_t, 10> data{};
+ auto handle1 = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1);
+ auto handle2 = pldm_pdr_add(repo, data.data(), data.size(), 23, false, 1);
+ auto handle3 = pldm_pdr_add(repo, data.data(), data.size(), 77, false, 1);
+ auto handle4 =
+ pldm_pdr_add(repo, data.data(), data.size(), 16777325, true, 1);
+ auto handle5 =
+ pldm_pdr_add(repo, data.data(), data.size(), 16777344, true, 1);
+
+ auto rec1 = pldm_pdr_find_last_in_range(repo, 0, 100);
+ auto rec2 = pldm_pdr_find_last_in_range(repo, 16777300, 33554431);
+ EXPECT_NE(rec1, nullptr);
+ EXPECT_NE(rec2, nullptr);
+ EXPECT_NE(handle1, pldm_pdr_get_record_handle(repo, rec1));
+ EXPECT_NE(handle2, pldm_pdr_get_record_handle(repo, rec1));
+ EXPECT_EQ(handle3, pldm_pdr_get_record_handle(repo, rec1));
+ EXPECT_NE(handle4, pldm_pdr_get_record_handle(repo, rec2));
+ EXPECT_EQ(handle5, pldm_pdr_get_record_handle(repo, rec2));
+
+ pldm_pdr_destroy(repo);
+}
+#endif
+
TEST(EntityAssociationPDR, testInit)
{
auto tree = pldm_entity_association_tree_init();