summaryrefslogtreecommitdiff
path: root/src/test/DBusBroadcastTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/DBusBroadcastTest.cpp')
-rw-r--r--src/test/DBusBroadcastTest.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/src/test/DBusBroadcastTest.cpp b/src/test/DBusBroadcastTest.cpp
index 9905155..491baab 100644
--- a/src/test/DBusBroadcastTest.cpp
+++ b/src/test/DBusBroadcastTest.cpp
@@ -170,7 +170,8 @@ TEST_F(DBusBroadcastTest, ProxysCanHandleBroadcast) {
bool callbackArrived = false;
broadcastEvent.subscribeCancellableListener([&](uint32_t intParam, std::string stringParam) -> CommonAPI::SubscriptionStatus {
- callbackArrived = true; return CommonAPI::SubscriptionStatus::RETAIN;
+ callbackArrived = true;
+ return CommonAPI::SubscriptionStatus::RETAIN;
});
stub->fireTestPredefinedTypeBroadcastEvent(2, "xyz");
@@ -235,6 +236,42 @@ TEST_F(DBusBroadcastTest, ProxysCanUnsubscribeFromBroadcastAndSubscribeAgain) {
broadcastEvent.unsubscribe(broadcastSubscription2);
}
+TEST_F(DBusBroadcastTest, ProxysCanUnsubscribeFromBroadcastAndSubscribeAgainInALoop) {
+ auto stub = std::make_shared<SelectiveBroadcastSender>();
+
+ bool serviceRegistered = servicePublisher_->registerService(stub, serviceAddress_, stubFactory_);
+ for (unsigned int i = 0; !serviceRegistered && i < 100; ++i) {
+ serviceRegistered = servicePublisher_->registerService(stub, serviceAddress_, stubFactory_);
+ usleep(10000);
+ }
+ ASSERT_TRUE(serviceRegistered);
+
+
+ auto proxy = proxyFactory_->buildProxy<commonapi::tests::TestInterfaceProxy>(serviceAddress_);
+
+ commonapi::tests::TestInterfaceProxyDefault::TestPredefinedTypeBroadcastEvent& broadcastEvent =
+ proxy->getTestPredefinedTypeBroadcastEvent();
+
+ for(unsigned int i=0; i<10; i++) {
+ bool callbackArrived = false;
+
+ auto broadcastSubscription = broadcastEvent.subscribe([&,i](uint32_t intParam, std::string stringParam) {
+ EXPECT_EQ(intParam, i);
+ callbackArrived = true;
+ });
+
+ stub->fireTestPredefinedTypeBroadcastEvent(i, "xyz");
+
+ for(unsigned int j=0; j<100 && !callbackArrived; j++) {
+ usleep(10000);
+ }
+
+ ASSERT_TRUE(callbackArrived);
+
+ broadcastEvent.unsubscribe(broadcastSubscription);
+ }
+}
+
TEST_F(DBusBroadcastTest, ProxysCanUnsubscribeFromBroadcastAndSubscribeAgainWithOtherProxy) {
auto stub = std::make_shared<SelectiveBroadcastSender>();
@@ -346,7 +383,8 @@ TEST_F(DBusBroadcastTest, ProxysCanCancelSubscriptionAndSubscribeAgainWithOtherP
ASSERT_TRUE(callbackArrived);
- broadcastEvent.unsubscribe(broadcastSubscription2);
+ broadcastEvent.unsubscribe(broadcastSubscription);
+ broadcastEvent2.unsubscribe(broadcastSubscription2);
}