[IoT-1562] Handle unit test segfaults at notification service
authorcc <ch79.cho@samsung.com>
Mon, 28 Nov 2016 12:39:35 +0000 (21:39 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 30 Nov 2016 08:43:39 +0000 (08:43 +0000)
Fix unittest segfault caused by discovery failure.
It is because external consumers or providers on the same network
interupt discovery or subscription precedure.
The test will be terminated once this situation happens,
even though precondition of the unittest is guided
to prevent this issue.

Change-Id: I0f763db760d8d2af0a185b9e7c3c6e71dfc5e5bf
Signed-off-by: cc <ch79.cho@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/14851
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: JungYong KIM <jyong2.kim@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/cpp-wrapper/unittest/NSConsumerServiceTest.cpp
service/notification/cpp-wrapper/unittest/NSProviderServiceTest.cpp
service/notification/unittest/NSConsumerTest.cpp
service/notification/unittest/NSProviderTest.cpp

index e64b3e7108fb6f32889cd0210a1317ddcbf5a54e..295a35e3dddc1b7bea7577b03aa7491b318eca16 100755 (executable)
@@ -206,6 +206,8 @@ TEST_F(NotificationServiceConsumerTest, DiscoverProviderWithNonAccepterWhenStart
     std::unique_lock< std::mutex > lock { mutexForCondition };
     responseCon.wait_for(lock, g_waitForResponse);
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
 }
 
 TEST_F(NotificationServiceConsumerTest, DiscoverProviderWithNonAccepterWhenRescan)
@@ -237,6 +239,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectSubscribeSuccess)
         responseCon.notify_all();
     });
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     g_provider->setListener( (OIC::Service::NSProvider::ProviderStateCallback)
                              ProviderChangedCallbackEmpty,
                              (OIC::Service::NSProvider::MessageReceivedCallback)NotificationReceivedCallbackEmpty,
@@ -402,6 +406,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectCallbackReadCheckWhenConsumerPostS
     std::string msg = "msg";
     OIC::Service::NSSyncInfo::NSSyncType type = OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_DELETED;
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     mocks.OnCallFunc(NotificationReceivedCallbackEmpty).Do(
         [this]( OIC::Service::NSMessage * message)
     {
@@ -437,6 +443,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectCallbackDismissCheckWhenConsumerPo
     std::string msg = "msg";
     OIC::Service::NSSyncInfo::NSSyncType type = OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ;
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     mocks.OnCallFunc(NotificationReceivedCallbackEmpty).Do(
         [this]( OIC::Service::NSMessage * message)
     {
@@ -467,6 +475,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectCallbackDismissCheckWhenConsumerPo
 
 TEST_F(NotificationServiceConsumerTest, ExpectGetProviderSuccessWithValidProviderId)
 {
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     OIC::Service::NSProvider *provider =
         OIC::Service::NSConsumerService::getInstance()->getProvider(g_provider->getProviderId());
     int ret = strcmp(provider->getProviderId().c_str(), g_provider->getProviderId().c_str());
@@ -513,6 +523,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectEQTopicList)
     topics.push_back("2");
     topics.push_back("3");
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     std::list<OIC::Service::NSTopic *>  retTopic = g_provider->getTopicList()->getTopicsList();
     auto it1 = retTopic.begin();
     auto it2 = topics.begin();
@@ -531,6 +543,8 @@ TEST_F(NotificationServiceConsumerTest, ExpectEQTopicList)
 
 TEST_F(NotificationServiceConsumerTest, ExpectFailUpdateTopicOnConsumer)
 {
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     OIC::Service::NSTopicsList *retTopic = g_provider->getTopicList();
     for (auto it : retTopic->getTopicsList())
     {
index 81cb1e8d8ebf44c4a6b95fdb77a479151b36c3ff..215359ab77b98e1bc68c83988d2eec571c93569a 100755 (executable)
@@ -199,7 +199,7 @@ TEST_F(NotificationProviderServiceTest,
     std::unique_lock< std::mutex > lock { mutexForCondition };
     responseCon.wait_for(lock, g_waitForResponse);
 
-    EXPECT_NE((void *)g_consumer, (void *)NULL);
+    ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
 }
 
 TEST_F(NotificationProviderServiceTest, NeverCallNotifyOnConsumerByAcceptIsFalse)
@@ -219,6 +219,8 @@ TEST_F(NotificationProviderServiceTest, NeverCallNotifyOnConsumerByAcceptIsFalse
         responseCon.notify_all();
     });
 
+    ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
+
     g_consumer->acceptSubscription(false);
 
     OIC::Service::NSMessage *msg =  OIC::Service::NSProviderService::getInstance()->createMessage();
@@ -245,6 +247,8 @@ TEST_F(NotificationProviderServiceTest, ExpectCallNotifyOnConsumerByAcceptIsTrue
 {
     int msgID = 0;
 
+    ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
+
     mocks.ExpectCallFunc(MessageCallbackFromConsumerEmpty).Do(
         [&msgID](const int &id, const std::string &, const std::string &, const std::string &)
     {
@@ -413,6 +417,9 @@ TEST_F(NotificationProviderServiceTest, ExpectEqualSetConsumerTopicsAndGetConsum
     std::string str2("TEST2");
     OIC::Service::NSProviderService::getInstance()->registerTopic(str1);
     OIC::Service::NSProviderService::getInstance()->registerTopic(str2);
+
+    ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
+
     g_consumer->setTopic(str1);
 
     std::unique_lock< std::mutex > lock { mutexForCondition };
@@ -461,6 +468,9 @@ TEST_F(NotificationProviderServiceTest, ExpectEqualUnSetConsumerTopicsAndGetCons
     std::string str2("TEST2");
     OIC::Service::NSProviderService::getInstance()->registerTopic(str1);
     OIC::Service::NSProviderService::getInstance()->registerTopic(str2);
+
+    ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
+
     g_consumer->setTopic(str1);
     g_consumer->setTopic(str2);
     g_consumer->unsetTopic(str1);
index 8eb2153755e780584869e5b6c337a7a359057c29..4a57bde72719a2e47d905280e082d6edf6785ac1 100644 (file)
@@ -255,6 +255,8 @@ TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenStartedConsu
     responseCon.wait_for(lock, g_waitForResponse);
 
     EXPECT_EQ(NS_DISCOVERED, revState);
+
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
 }
 
 TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenRescan)
@@ -282,6 +284,9 @@ TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenRescan)
 TEST_F(NotificationConsumerTest, ExpectSubscribeSuccess)
 {
     NSProviderState revState = NS_DENY;
+
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     mocks.OnCallFunc(NSProviderChangedCallback).Do(
             [this, & revState](NSProvider * , NSProviderState state)
             {
@@ -303,7 +308,6 @@ TEST_F(NotificationConsumerTest, ExpectReceiveNotification)
     uint64_t id = 10;
     std::string title = "title";
     std::string msg = "msg";
-
     uint64_t revId = 0;
 
     mocks.OnCallFunc(NSNotificationReceivedCallbackEmpty).Do(
@@ -526,6 +530,8 @@ TEST_F(NotificationConsumerTest, ExpectCallbackDismissCheckWhenConsumerPostSync)
 
 TEST_F(NotificationConsumerTest, ExpectGetProviderSuccessWithValidProviderId)
 {
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     NSProvider * provider = NSConsumerGetProvider(g_provider->providerId);
     int ret = strcmp(provider->providerId, g_provider->providerId);
     EXPECT_EQ(0, ret);
@@ -546,6 +552,8 @@ TEST_F(NotificationConsumerTest, ExpectGetProviderSuccessWithNULL)
 
 TEST_F(NotificationConsumerTest, ExpectGetTopicListIsNULL)
 {
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     NSTopicLL * currentTopics = NSConsumerGetTopicList(g_provider->providerId);
     EXPECT_EQ(NULL, currentTopics);
 }
@@ -583,6 +591,8 @@ TEST_F(NotificationConsumerTest, ExpectEQTopicList)
     topics.push_back("2");
     topics.push_back("3");
 
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     NSTopicLL * retTopic = NSConsumerGetTopicList(g_provider->providerId);
     std::for_each (topics.begin(), topics.end(),
             [this, & retTopic, & isSame](const std::string & str)
@@ -596,6 +606,8 @@ TEST_F(NotificationConsumerTest, ExpectEQTopicList)
 
 TEST_F(NotificationConsumerTest, ExpectFailUpdateTopicOnConsumer)
 {
+    ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
+
     NSTopicLL * retTopic = NSConsumerGetTopicList(g_provider->providerId);
     for (; retTopic; retTopic = retTopic->next)
     {
index 0349297eb8db902b8690e7f167f65ec807064c2c..dda37b9eba2d145ca5d596e8b24525d5772beccf 100755 (executable)
@@ -208,7 +208,7 @@ TEST_F(NotificationProviderTest, ExpectCallbackWhenReceiveSubscribeRequestWithAc
     std::unique_lock< std::mutex > lock{ mutexForCondition };
     responseCon.wait_for(lock, g_waitForResponse);
 
-    EXPECT_NE((void*)g_consumerID, (void*)NULL);
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
 }
 
 TEST_F(NotificationProviderTest, NeverCallNotifyOnConsumerByAcceptIsFalse)
@@ -216,6 +216,8 @@ TEST_F(NotificationProviderTest, NeverCallNotifyOnConsumerByAcceptIsFalse)
     bool expectTrue = true;
     int msgID;
 
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
+
     mocks.OnCallFunc(NSMessageCallbackFromConsumerEmpty).Do(
             [& expectTrue, &msgID](const int &id, const std::string&, const std::string&, const std::string&)
             {
@@ -254,6 +256,8 @@ TEST_F(NotificationProviderTest, ExpectCallNotifyOnConsumerByAcceptIsTrue)
 {
     int msgID;
 
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
+
     mocks.ExpectCallFunc(NSMessageCallbackFromConsumerEmpty).Do(
             [&msgID](const int &id, const std::string&, const std::string&, const std::string&)
             {
@@ -281,6 +285,8 @@ TEST_F(NotificationProviderTest, ExpectCallbackSyncOnReadToConsumer)
 {
     int id;
 
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
+
     mocks.ExpectCallFunc(NSSyncCallbackFromConsumerEmpty).Do(
             [& id](int & type, int &syncId)
             {
@@ -308,6 +314,9 @@ TEST_F(NotificationProviderTest, ExpectCallbackSyncOnReadFromConsumer)
 {
     int type = NS_SYNC_READ;
     int id;
+
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
+
     mocks.ExpectCallFunc(NSSyncCallbackEmpty).Do(
             [& id](NSSyncInfo * sync)
             {
@@ -441,6 +450,9 @@ TEST_F(NotificationProviderTest, ExpectEqualUnSetConsumerTopicsAndGetConsumerTop
     responseCon.wait_for(lock, g_waitForResponse);
 
     bool isSame = false;
+
+    ASSERT_NE(nullptr, g_consumerID) << "error: discovery failure";
+
     NSTopicLL * topics = NSProviderGetConsumerTopics(g_consumerID);
 
     if(!topics)