summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMatt Spinler <spinler@us.ibm.com>2019-11-06 15:40:45 -0600
committerMatt Spinler <spinler@us.ibm.com>2019-12-03 15:08:08 -0600
commit421f6531c5563d1e4e66b17062ebb9e632ca967b (patch)
tree4e83a7d0cf1ea426634ea392316f2beff46af79d /test
parenta7d9d9615308d6a43d69b0fedea67218f00322ae (diff)
downloadphosphor-logging-421f6531c5563d1e4e66b17062ebb9e632ca967b.tar.gz
phosphor-logging-421f6531c5563d1e4e66b17062ebb9e632ca967b.zip
PEL: Add subscriptions for new and deleted PELs
Add functionality to the Repository class to be able to call functions provided by others when PELs are added or removed from the repository. This will be used in the future for things like knowing when a new PEL is added so it can be sent to the host. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I2effc9d5fa9a38890311a88bcfb07eed1292a453
Diffstat (limited to 'test')
-rw-r--r--test/openpower-pels/repository_test.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/openpower-pels/repository_test.cpp b/test/openpower-pels/repository_test.cpp
index 0c927f6..34de855 100644
--- a/test/openpower-pels/repository_test.cpp
+++ b/test/openpower-pels/repository_test.cpp
@@ -212,3 +212,46 @@ TEST_F(RepositoryTest, TestForEach)
repo.for_each(f2);
EXPECT_EQ(ids.size(), 1);
}
+
+TEST_F(RepositoryTest, TestSubscriptions)
+{
+ std::vector<uint32_t> added;
+ std::vector<uint32_t> removed;
+
+ Repository::AddCallback ac = [&added](const PEL& pel) {
+ added.push_back(pel.id());
+ };
+
+ Repository::DeleteCallback dc = [&removed](uint32_t id) {
+ removed.push_back(id);
+ };
+
+ Repository repo{repoPath};
+ repo.subscribeToAdds("test", ac);
+ repo.subscribeToDeletes("test", dc);
+
+ auto data = pelDataFactory(TestPELType::pelSimple);
+ auto pel = std::make_unique<PEL>(data);
+ auto pelID = pel->id();
+ repo.add(pel);
+
+ EXPECT_EQ(added.size(), 1);
+
+ using ID = Repository::LogID;
+ ID id{ID::Pel(pelID)};
+ repo.remove(id);
+
+ EXPECT_EQ(removed.size(), 1);
+
+ repo.unsubscribeFromAdds("test");
+ repo.unsubscribeFromDeletes("test");
+
+ added.clear();
+ removed.clear();
+
+ repo.add(pel);
+ EXPECT_EQ(added.size(), 0);
+
+ repo.remove(id);
+ EXPECT_EQ(removed.size(), 0);
+}
OpenPOWER on IntegriCloud