diff options
author | Juergen Gehring <juergen.gehring@bmw.de> | 2014-04-15 17:16:13 +0200 |
---|---|---|
committer | Juergen Gehring <juergen.gehring@bmw.de> | 2014-04-15 17:16:13 +0200 |
commit | e8c943168a78b361e9035830a81c16d724d5c08a (patch) | |
tree | 124ca40994a104c65b141ea7e8041006135c368b | |
parent | 29bdc128d232478f039ac0100424c8d1d2b5a355 (diff) | |
parent | 32cf8e909ea56dbcfb7f61b43bd600b8a8e5ae93 (diff) | |
download | genivi-common-api-dbus-runtime-e8c943168a78b361e9035830a81c16d724d5c08a.tar.gz |
Merge branch 'master' of https://asc-repo.bmwgroup.net/gerrit/ascgit017.CommonAPI-D-Bus
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | UnitTests.vcxproj | 1 | ||||
-rw-r--r-- | src/test/DBusBroadcastTest.cpp | 42 | ||||
-rw-r--r-- | src/test/DBusLoadTest.cpp | 10 |
4 files changed, 49 insertions, 7 deletions
@@ -58,3 +58,6 @@ /DBusSelectiveBroadcastTest /DBusManagedTest /DBusPolymorphicTest +/DBusBroadcastTest +/DBusFreedesktopPropertiesTest +/DBusLoadTest diff --git a/UnitTests.vcxproj b/UnitTests.vcxproj index f788db5..9ba7a45 100644 --- a/UnitTests.vcxproj +++ b/UnitTests.vcxproj @@ -37,7 +37,6 @@ <ClCompile Include="src\test\commonapi\tests\TestInterfaceDBusStubAdapter.cpp" />
<ClCompile Include="src\test\commonapi\tests\TestInterfaceStubDefault.cpp" />
<ClCompile Include="src\test\DBusAddressTranslatorTest.cpp" />
- <ClCompile Include="src\test\DBusBroadcastTest.cpp" />
<ClCompile Include="src\test\DBusClientIdTest.cpp" />
<ClCompile Include="src\test\DBusCommunicationTest.cpp" />
<ClCompile Include="src\test\DBusConnectionTest.cpp" />
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); } diff --git a/src/test/DBusLoadTest.cpp b/src/test/DBusLoadTest.cpp index 94090d3..e5e26bc 100644 --- a/src/test/DBusLoadTest.cpp +++ b/src/test/DBusLoadTest.cpp @@ -42,6 +42,7 @@ public: std::string stringInValue, uint32_t& uint32OutValue, std::string& stringOutValue) { + uint32OutValue = uint32InValue; stringOutValue = stringInValue; } @@ -82,10 +83,10 @@ public: EXPECT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS); EXPECT_EQ(out1, in1); EXPECT_EQ(out2, in2); - if (callStatus == CommonAPI::CallStatus::SUCCESS) { - ASSERT_FALSE(callSucceeded_[callId]); - callSucceeded_[callId] = true; - } + mutexCallSucceeded_.lock(); + ASSERT_FALSE(callSucceeded_[callId]); + callSucceeded_[callId] = true; + mutexCallSucceeded_.unlock(); } std::shared_ptr<CommonAPI::Runtime> runtime_; @@ -93,6 +94,7 @@ public: std::shared_ptr<CommonAPI::Factory> stubFactory_; std::shared_ptr<CommonAPI::ServicePublisher> servicePublisher_; std::vector<bool> callSucceeded_; + std::mutex mutexCallSucceeded_; static const std::string serviceAddress_; static const uint32_t numCallsPerProxy_; |