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));
    });
Esempio n. 2
0
 void WaitXTimes(std::uint64_t x)
 {
     for(std::uint64_t i = 0; i<x; ++i) {
         ASSERT_TRUE(semaphore.waitFor(std::chrono::seconds(1)));
     }
 }