Testing successful removal of events from within event callbacks

checksum-failure-logging
EricLiu2000 2019-08-05 11:40:47 -04:00
parent 9b3d36c8c1
commit 1aeee082ae
1 changed files with 8 additions and 1 deletions

View File

@ -16,8 +16,9 @@ protected:
}; };
/** /**
* Tests behavior of adding event callbcaks on multiple threads. * Tests behavior of adding event callbacks on multiple threads.
* The order in which they are called is not guaranteed, but we check for the correct amount of calls. * The order in which they are called is not guaranteed, but we check for the correct amount of calls.
* Each callback also flushes the event buffer upon call.
*/ */
TEST_F(EventManagerTest, MultithreadedEventCallbacksTest) { TEST_F(EventManagerTest, MultithreadedEventCallbacksTest) {
int callCounter = 0; int callCounter = 0;
@ -28,6 +29,7 @@ TEST_F(EventManagerTest, MultithreadedEventCallbacksTest) {
int id1 = EventManager::GetInstance().addEventCallback(EventCallback([&callCounter, &mutex](std::shared_ptr<APIEvent>){ int id1 = EventManager::GetInstance().addEventCallback(EventCallback([&callCounter, &mutex](std::shared_ptr<APIEvent>){
std::lock_guard<std::mutex> lk(mutex); std::lock_guard<std::mutex> lk(mutex);
callCounter++; callCounter++;
EventManager::GetInstance().get();
}, EventFilter(APIEvent::Type::BaudrateNotFound))); }, EventFilter(APIEvent::Type::BaudrateNotFound)));
// shouldn't add anything // shouldn't add anything
@ -45,6 +47,7 @@ TEST_F(EventManagerTest, MultithreadedEventCallbacksTest) {
int id2 = EventManager::GetInstance().addEventCallback(EventCallback([&callCounter, &mutex](std::shared_ptr<APIEvent>) { int id2 = EventManager::GetInstance().addEventCallback(EventCallback([&callCounter, &mutex](std::shared_ptr<APIEvent>) {
std::lock_guard<std::mutex> lk(mutex); std::lock_guard<std::mutex> lk(mutex);
callCounter++; callCounter++;
EventManager::GetInstance().get();
}, EventFilter(APIEvent::Severity::EventInfo))); }, EventFilter(APIEvent::Severity::EventInfo)));
// shouldn't add anything // shouldn't add anything
@ -59,10 +62,14 @@ TEST_F(EventManagerTest, MultithreadedEventCallbacksTest) {
t1.join(); t1.join();
t2.join(); t2.join();
EXPECT_EQ(EventCount(), 0);
EXPECT_EQ(callCounter, 2); EXPECT_EQ(callCounter, 2);
EventManager::GetInstance().add(APIEvent(APIEvent::Type::BaudrateNotFound, APIEvent::Severity::EventInfo)); EventManager::GetInstance().add(APIEvent(APIEvent::Type::BaudrateNotFound, APIEvent::Severity::EventInfo));
EXPECT_EQ(EventCount(), 1);
EXPECT_EQ(callCounter, 2); EXPECT_EQ(callCounter, 2);
} }