summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Gehring <juergen.gehring@bmw.de>2014-04-15 17:16:13 +0200
committerJuergen Gehring <juergen.gehring@bmw.de>2014-04-15 17:16:13 +0200
commite8c943168a78b361e9035830a81c16d724d5c08a (patch)
tree124ca40994a104c65b141ea7e8041006135c368b
parent29bdc128d232478f039ac0100424c8d1d2b5a355 (diff)
parent32cf8e909ea56dbcfb7f61b43bd600b8a8e5ae93 (diff)
downloadgenivi-common-api-dbus-runtime-e8c943168a78b361e9035830a81c16d724d5c08a.tar.gz
Merge branch 'master' of https://asc-repo.bmwgroup.net/gerrit/ascgit017.CommonAPI-D-Bus
-rw-r--r--.gitignore3
-rw-r--r--UnitTests.vcxproj1
-rw-r--r--src/test/DBusBroadcastTest.cpp42
-rw-r--r--src/test/DBusLoadTest.cpp10
4 files changed, 49 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore
index 5c8eb8a..e2057f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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_;