TEST_P(IltConsumerBroadcastSubscriptionTest, callSubscribeBroadcastWithSinglePrimitiveParameter) { Semaphore publicationSemaphore; std::string subscriptionId; const std::vector<std::string> partitions = GetParam(); auto mockBroadcastWithSinglePrimitiveParameterBroadcastListener = std::make_shared<MockBroadcastWithSinglePrimitiveParameterBroadcastListener>(); EXPECT_CALL(*mockBroadcastWithSinglePrimitiveParameterBroadcastListener, onError(_)) .Times(0) .WillRepeatedly(ReleaseSemaphore(&publicationSemaphore)); EXPECT_CALL(*mockBroadcastWithSinglePrimitiveParameterBroadcastListener, onReceive(Eq("boom"))) .Times(1) .WillRepeatedly(ReleaseSemaphore(&publicationSemaphore)); std::shared_ptr<ISubscriptionListener<std::string>> listener( mockBroadcastWithSinglePrimitiveParameterBroadcastListener); JOYNR_ASSERT_NO_THROW({ JOYNR_LOG_INFO( iltConsumerBroadcastSubscriptionTestLogger, "callSubscribeBroadcastWithSinglePrimitiveParameter - register subscription"); testInterfaceProxy->subscribeToBroadcastWithSinglePrimitiveParameterBroadcast( listener, subscriptionQos, partitions) ->get(subscriptionIdFutureTimeoutMs, subscriptionId); JOYNR_LOG_INFO( iltConsumerBroadcastSubscriptionTestLogger, "callSubscribeBroadcastWithSinglePrimitiveParameter - subscription registered"); JOYNR_LOG_INFO(iltConsumerBroadcastSubscriptionTestLogger, "callSubscribeBroadcastWithSinglePrimitiveParameter - fire broadcast"); testInterfaceProxy->methodToFireBroadcastWithSinglePrimitiveParameter(partitions); ASSERT_TRUE(publicationSemaphore.waitFor(publicationTimeoutMs)); testInterfaceProxy->unsubscribeFromBroadcastWithSinglePrimitiveParameterBroadcast( subscriptionId); std::this_thread::sleep_for(std::chrono::milliseconds(1000)); });
void WaitXTimes(std::uint64_t x) { for(std::uint64_t i = 0; i<x; ++i) { ASSERT_TRUE(semaphore.waitFor(std::chrono::seconds(1))); } }