From b5756991e81d2877f9a0eb1f03313546744a370a Mon Sep 17 00:00:00 2001 From: Philip Rauwolf Date: Tue, 12 Mar 2013 16:15:57 +0100 Subject: [PATCH] Small corrections in some tests --- src/test/DBusDaemonProxyTest.cpp | 19 +++---------------- src/test/DBusProxyTest.cpp | 35 ++++++++++++++++++++++------------- src/test/DBusServiceRegistryTest.cpp | 3 ++- src/test/DBusStubAdapterTest.cpp | 1 + 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/test/DBusDaemonProxyTest.cpp b/src/test/DBusDaemonProxyTest.cpp index c25098e..f708a1f 100644 --- a/src/test/DBusDaemonProxyTest.cpp +++ b/src/test/DBusDaemonProxyTest.cpp @@ -25,8 +25,6 @@ class DBusDaemonProxyTest: public ::testing::Test { } virtual void TearDown() { - if (dbusConnection_ && dbusConnection_->isConnected()) { - } } std::shared_ptr dbusConnection_; @@ -98,12 +96,6 @@ TEST_F(DBusDaemonProxyTest, NameHasOwnerAsync) { promise.set_value(std::tuple(callStatus, std::move(nameHasOwner))); }); - //while (readWriteDispatchCount_ < 5) { - // ASSERT_TRUE(doReadWriteDispatch()); - //if (callStatusFuture.wait_for(std::chrono::milliseconds(100)) == std::future_status::ready) - // break; - //} - //ASSERT_NE(readWriteDispatchCount_, 5); auto status = future.wait_for(std::chrono::milliseconds(100)); const bool waitResult = CommonAPI::DBus::checkReady(status); ASSERT_EQ(waitResult, true); @@ -122,7 +114,7 @@ TEST_F(DBusDaemonProxyTest, NameOwnerChangedEvent) { std::promise promise; auto future = promise.get_future(); - dbusDaemonProxy_->getNameOwnerChangedEvent().subscribe( + auto subscription = dbusDaemonProxy_->getNameOwnerChangedEvent().subscribe( [&](const std::string& name, const std::string& oldOwner, const std::string& newOwner) { static bool promiseIsSet = false; if(!promiseIsSet) { @@ -134,14 +126,9 @@ TEST_F(DBusDaemonProxyTest, NameOwnerChangedEvent) { // Trigger NameOwnerChanged using a new DBusConnection ASSERT_TRUE(CommonAPI::DBus::DBusConnection::getSessionBus()->connect()); - //while (readWriteDispatchCount_ < 5) { - // ASSERT_TRUE(doReadWriteDispatch()); - //if (future.wait_for(std::chrono::milliseconds(100)) == std::future_status::ready) - // break; - //} - - //ASSERT_NE(readWriteDispatchCount_, 5); ASSERT_TRUE(future.get()); + + dbusDaemonProxy_->getNameOwnerChangedEvent().unsubscribe(subscription); } } // namespace diff --git a/src/test/DBusProxyTest.cpp b/src/test/DBusProxyTest.cpp index 7efdda9..4a99c4e 100644 --- a/src/test/DBusProxyTest.cpp +++ b/src/test/DBusProxyTest.cpp @@ -84,11 +84,15 @@ protected: void proxyRegisterForAvailabilityStatus() { proxyAvailabilityStatus_ = CommonAPI::AvailabilityStatus::UNKNOWN; - proxy_->getProxyStatusEvent().subscribe([&](const CommonAPI::AvailabilityStatus& availabilityStatus) { + proxyStatusSubscription_ = proxy_->getProxyStatusEvent().subscribe([&](const CommonAPI::AvailabilityStatus& availabilityStatus) { proxyAvailabilityStatus_ = availabilityStatus; }); } + void proxyDeregisterForAvailabilityStatus() { + proxy_->getProxyStatusEvent().unsubscribe(proxyStatusSubscription_); + } + bool proxyWaitForAvailabilityStatus(const CommonAPI::AvailabilityStatus& availabilityStatus) const { std::chrono::milliseconds loopWaitDuration(100); @@ -109,6 +113,8 @@ protected: std::shared_ptr proxy_; CommonAPI::AvailabilityStatus proxyAvailabilityStatus_; + CommonAPI::ProxyStatusEvent::Subscription proxyStatusSubscription_; + std::shared_ptr stubDBusConnection_; std::shared_ptr stubAdapter_; }; @@ -133,7 +139,11 @@ TEST_F(ProxyTest, IsNotAvailable) { EXPECT_FALSE(isAvailable); } -TEST_F(ProxyTest, ServiceRegistry) { +TEST_F(ProxyTest, IsConnected) { + ASSERT_TRUE(proxy_->getDBusConnection()->isConnected()); +} + +TEST_F(ProxyTest, AssociatedConnectionHasServiceRegistry) { std::shared_ptr connection = proxy_->getDBusConnection(); auto registry = connection->getDBusServiceRegistry(); ASSERT_FALSE(!registry); @@ -153,6 +163,7 @@ TEST_F(ProxyTest, DBusProxyStatusEventBeforeServiceIsRegistered) { EXPECT_TRUE(proxyWaitForAvailabilityStatus(CommonAPI::AvailabilityStatus::NOT_AVAILABLE)); deregisterTestStub(); + proxyDeregisterForAvailabilityStatus(); } TEST_F(ProxyTest, DBusProxyStatusEventAfterServiceIsRegistered) { @@ -171,6 +182,7 @@ TEST_F(ProxyTest, DBusProxyStatusEventAfterServiceIsRegistered) { EXPECT_TRUE(proxyWaitForAvailabilityStatus(CommonAPI::AvailabilityStatus::NOT_AVAILABLE)); deregisterTestStub(); + proxyDeregisterForAvailabilityStatus(); } TEST_F(ProxyTest, ServiceStatus) { @@ -187,7 +199,7 @@ TEST_F(ProxyTest, ServiceStatus) { break; } } - sleep(1); + auto found = std::find(availableDBusServices.begin(), availableDBusServices.end(), commonApiAddress); EXPECT_TRUE(availableDBusServices.begin() != availableDBusServices.end()); @@ -214,7 +226,7 @@ TEST_F(ProxyTest, isServiceInstanceAlive) { TEST_F(ProxyTest, IsAvailableBlocking) { registerTestStub(); - // blocking in terms of "if it's still uknown" + // blocking in terms of "if it's still unknown" bool isAvailable = proxy_->isAvailableBlocking(); for (int i = 0; !isAvailable && i < 10; i++) { std::this_thread::sleep_for(std::chrono::milliseconds(200)); @@ -231,30 +243,27 @@ TEST_F(ProxyTest, HasNecessaryAttributesAndEvents) { CommonAPI::ProxyStatusEvent& statusEvent = (proxy_->getProxyStatusEvent()); } -TEST_F(ProxyTest, IsConnected) { - ASSERT_TRUE(proxy_->getDBusConnection()->isConnected()); -} - TEST_F(ProxyTest, TestInterfaceVersionAttribute) { CommonAPI::InterfaceVersionAttribute& versionAttribute = proxy_->getInterfaceVersionAttribute(); CommonAPI::Version version; - CommonAPI::CallStatus status = versionAttribute.getValue(version); + CommonAPI::CallStatus status; + ASSERT_NO_THROW(status = versionAttribute.getValue(version)); ASSERT_EQ(CommonAPI::CallStatus::NOT_AVAILABLE, status); } TEST_F(ProxyTest, AsyncCallbacksAreCalledIfServiceNotAvailable) { commonapi::tests::DerivedTypeCollection::TestEnumExtended2 testInputStruct; commonapi::tests::DerivedTypeCollection::TestMap testInputMap; - bool wasCalled = false; + std::promise wasCalledPromise; + std::future wasCalledFuture = wasCalledPromise.get_future(); proxy_->testDerivedTypeMethodAsync(testInputStruct, testInputMap, [&] (const CommonAPI::CallStatus& callStatus, const commonapi::tests::DerivedTypeCollection::TestEnumExtended2&, const commonapi::tests::DerivedTypeCollection::TestMap&) { ASSERT_EQ(callStatus, CommonAPI::CallStatus::NOT_AVAILABLE); - wasCalled = true; + wasCalledPromise.set_value(true); } ); - sleep(1); - ASSERT_TRUE(wasCalled); + ASSERT_TRUE(wasCalledFuture.get()); } int main(int argc, char** argv) { diff --git a/src/test/DBusServiceRegistryTest.cpp b/src/test/DBusServiceRegistryTest.cpp index c6036eb..cc7b3f9 100644 --- a/src/test/DBusServiceRegistryTest.cpp +++ b/src/test/DBusServiceRegistryTest.cpp @@ -82,6 +82,7 @@ TEST_F(DBusServiceRegistryTest, CanBeConstructed) { std::shared_ptr dbusConnection = CommonAPI::DBus::DBusConnection::getSessionBus(); CommonAPI::DBus::DBusServiceRegistry* registry = new CommonAPI::DBus::DBusServiceRegistry(dbusConnection); ASSERT_TRUE(registry != NULL); + delete registry; } @@ -138,7 +139,7 @@ TEST_F(DBusServiceRegistryTest, PredefinedInstances) { auto stubDBusConnection = CommonAPI::DBus::DBusConnection::getSessionBus(); ASSERT_TRUE(stubDBusConnection->connect()); - stubDBusConnection->requestServiceNameAndBlock(dbusServiceName); + ASSERT_TRUE(stubDBusConnection->requestServiceNameAndBlock(dbusServiceName)); auto proxyDBusConnection = CommonAPI::DBus::DBusConnection::getSessionBus(); auto dbusServiceRegistry = proxyDBusConnection->getDBusServiceRegistry(); diff --git a/src/test/DBusStubAdapterTest.cpp b/src/test/DBusStubAdapterTest.cpp index 984132b..45cabe1 100644 --- a/src/test/DBusStubAdapterTest.cpp +++ b/src/test/DBusStubAdapterTest.cpp @@ -220,6 +220,7 @@ int main(void) { } assert(dispatchedMessageCount > 0); + testStubAdapter->deinit(); return 0; } -- 2.7.4