Add Unittest for topic.
authorjaesick.shin <jaesick.shin@samsung.com>
Wed, 7 Sep 2016 05:11:50 +0000 (14:11 +0900)
committerUze Choi <uzchoi@samsung.com>
Thu, 8 Sep 2016 09:00:59 +0000 (09:00 +0000)
1. Unregister topic case.
2. setTopic case.
3. unSet Topic case.

second patch,
remove warning code.

Change-Id: I8f918bcc23297311d86fcb7f4c13419b99b02d36
Signed-off-by: jaesick.shin <jaesick.shin@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11477
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/unittest/NSConsumerSimulator.h
service/notification/unittest/NSProviderTest.cpp

index 64522e2..1c87c07 100644 (file)
@@ -35,6 +35,7 @@ private:
 
     std::shared_ptr<OC::OCResource> m_syncResource;
     std::shared_ptr<OC::OCResource> m_msgResource;
+    std::shared_ptr<OC::OCResource> m_topicResource;
 
 public:
     NSConsumerSimulator()
@@ -103,8 +104,8 @@ private:
         {
             resource->get(OC::QueryParamsMap(),
                     std::bind(&NSConsumerSimulator::onGet, this,
-                            std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, resource),
-                    OC::QualityOfService::LowQos);
+                            std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
+                            resource), OC::QualityOfService::LowQos);
         }
     }
     void onGet(const OC::HeaderOptions &/*headerOption*/,
@@ -114,15 +115,19 @@ private:
         std::cout << __func__ << " " << rep.getHost() << " result : " << eCode << std::endl;
 
         OC::QueryParamsMap map;
-        map.insert(std::pair<std::string,std::string>(std::string("consumerid"), std::string("123456789012345678901234567890123456")));
+        map.insert(std::pair<std::string,std::string>(std::string("consumerid"),
+                std::string("123456789012345678901234567890123456")));
 
         try
         {
             std::cout << "resourc : host " << resource->host() << std::endl;
             std::cout << "resourc : uri " << resource->uri() << std::endl;
-            std::cout << " resource->connectivityType() " <<  resource->connectivityType() << std::endl;
-            std::cout << "resourc : getResourceInterfaces " << resource->getResourceInterfaces()[0] << std::endl;
-            std::cout << "resourc : getResourceTypes " << resource->getResourceTypes()[0] << std::endl;
+            std::cout << " resource->connectivityType() "
+                    <<  resource->connectivityType() << std::endl;
+            std::cout << "resourc : getResourceInterfaces "
+                    << resource->getResourceInterfaces()[0] << std::endl;
+            std::cout << "resourc : getResourceTypes "
+                    << resource->getResourceTypes()[0] << std::endl;
 
             std::vector<std::string> rts{"oic.r.notification"};
 
@@ -153,6 +158,12 @@ private:
                         std::placeholders::_3, std::placeholders::_4, resource),
                 OC::QualityOfService::LowQos);
 
+
+        m_topicResource
+            = OC::OCPlatform::constructResourceObject(resource->host(), resource->uri() + "/topic",
+                    resource->connectivityType(), true, resource->getResourceTypes(),
+                    resource->getResourceInterfaces());
+
     }
     void onObserve(const OC::HeaderOptions &/*headerOption*/,
             const OC::OCRepresentation &rep , const int &eCode, const int &,
@@ -171,6 +182,14 @@ private:
                           std::string(rep.getValueToString("TITLE")),
                           std::string(rep.getValueToString("CONTENT")),
                           std::string(rep.getValueToString("SOURCE")));
+
+            if(rep.getValue<int>("MESSAGE_ID") == 3)
+            {
+                m_topicResource->get(OC::QueryParamsMap(),
+                        std::bind(&NSConsumerSimulator::onTopicGet, this, std::placeholders::_1,
+                                std::placeholders::_2, std::placeholders::_3, m_topicResource),
+                                OC::QualityOfService::LowQos);
+            }
         }
         else if (rep.getUri() == "/notification/sync")
         {
@@ -179,6 +198,17 @@ private:
         }
     }
 
+    void onTopicGet(const OC::HeaderOptions &/*headerOption*/,
+            const OC::OCRepresentation & rep , const int eCode,
+            std::shared_ptr<OC::OCResource> resource)
+    {
+        //TO-DO using this function.
+        (void) rep;
+        (void) eCode;
+        (void) resource;
+        std::cout << "onTopicGet()" << std::endl;
+    }
+
     OCStackResult msgResourceCancelObserve(OC::QualityOfService qos)
     {
         return m_msgResource->cancelObserve(qos);
index dd2238b..55505be 100755 (executable)
@@ -331,7 +331,9 @@ TEST_F(NotificationProviderTest, ExpectCallbackSyncOnReadFromConsumer)
 
     g_consumerSimul.syncToProvider(type, id, msg->providerId);
     std::unique_lock< std::mutex > lock{ mutexForCondition };
-    responseCon.wait_for(lock, std::chrono::milliseconds(5000));
+
+    responseCon.wait(lock);
+    //responseCon.wait_for(lock, std::chrono::milliseconds(3000));
 }
 
 TEST_F(NotificationProviderTest, ExpectEqualAddedTopicsAndRegisteredTopics)
@@ -341,6 +343,9 @@ TEST_F(NotificationProviderTest, ExpectEqualAddedTopicsAndRegisteredTopics)
     NSProviderRegisterTopic(str.c_str());
     NSProviderRegisterTopic(str2.c_str());
 
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+
     bool isSame = true;
     NSTopicLL * topics = NSProviderGetTopics();
 
@@ -365,6 +370,11 @@ TEST_F(NotificationProviderTest, ExpectEqualAddedTopicsAndRegisteredTopics)
     }
 
     EXPECT_EQ(isSame, true);
+
+    NSProviderUnregisterTopic(str.c_str());
+    NSProviderUnregisterTopic(str2.c_str());
+
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
 }
 
 TEST_F(NotificationProviderTest, ExpectEqualUnregisteredTopicsAndRegisteredTopics)
@@ -375,6 +385,9 @@ TEST_F(NotificationProviderTest, ExpectEqualUnregisteredTopicsAndRegisteredTopic
     NSProviderRegisterTopic(str2.c_str());
     NSProviderUnregisterTopic(str2.c_str());
 
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+
     bool isSame = true;
     NSTopicLL * topics = NSProviderGetTopics();
 
@@ -397,6 +410,102 @@ TEST_F(NotificationProviderTest, ExpectEqualUnregisteredTopicsAndRegisteredTopic
     }
 
     EXPECT_EQ(isSame, true);
+
+    NSProviderUnregisterTopic(str.c_str());
+
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+}
+
+TEST_F(NotificationProviderTest, ExpectEqualSetConsumerTopicsAndGetConsumerTopics)
+{
+    std::string str("TEST1");
+    std::string str2("TEST2");
+    NSProviderRegisterTopic(str.c_str());
+    NSProviderRegisterTopic(str2.c_str());
+    NSProviderSetConsumerTopic(g_consumerID, str.c_str());
+
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+
+    bool isSame = false;
+    NSTopicLL * topics = NSProviderGetConsumerTopics(g_consumerID);
+
+    if(!topics)
+    {
+        printf("topic is NULL\n");
+        isSame = false;
+    }
+    else
+    {
+        NSTopicLL * firstData = topics;
+        NSTopicLL * secondData = firstData->next;
+
+        printf("str = %s, compStr = %s, state = %d\n", str.c_str(), firstData->topicName,
+                (int)firstData->state);
+
+        printf("str2 = %s, compStr = %s, state = %d\n", str2.c_str(), secondData->topicName,
+                (int)secondData->state);
+
+        if(str.compare(firstData->topicName) == 0 && str2.compare(secondData->topicName) == 0
+                && ((int)firstData->state) == 1 && ((int)secondData->state) == 0)
+        {
+            isSame = true;
+        }
+    }
+
+    EXPECT_EQ(isSame, true);
+
+    NSProviderUnregisterTopic(str.c_str());
+    NSProviderUnregisterTopic(str2.c_str());
+
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+}
+
+TEST_F(NotificationProviderTest, ExpectEqualUnSetConsumerTopicsAndGetConsumerTopics)
+{
+    std::string str("TEST1");
+    std::string str2("TEST2");
+    NSProviderRegisterTopic(str.c_str());
+    NSProviderRegisterTopic(str2.c_str());
+    NSProviderSetConsumerTopic(g_consumerID, str.c_str());
+    NSProviderSetConsumerTopic(g_consumerID, str2.c_str());
+    NSProviderUnsetConsumerTopic(g_consumerID, str.c_str());
+
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
+
+    bool isSame = false;
+    NSTopicLL * topics = NSProviderGetConsumerTopics(g_consumerID);
+
+    if(!topics)
+    {
+        printf("topic is NULL\n");
+        isSame = false;
+    }
+    else
+    {
+        NSTopicLL * firstData = topics;
+        NSTopicLL * secondData = firstData->next;
+
+        printf("str = %s, compStr = %s, state = %d\n", str.c_str(), firstData->topicName,
+                (int)firstData->state);
+
+        printf("str2 = %s, compStr = %s, state = %d\n", str2.c_str(), secondData->topicName,
+                (int)secondData->state);
+
+        if(str.compare(firstData->topicName) == 0 && str2.compare(secondData->topicName) == 0
+                && ((int)firstData->state) == 0 && ((int)secondData->state) == 1)
+        {
+            isSame = true;
+        }
+    }
+
+    EXPECT_EQ(isSame, true);
+
+    NSProviderUnregisterTopic(str.c_str());
+    NSProviderUnregisterTopic(str2.c_str());
+
+    responseCon.wait_for(lock, std::chrono::milliseconds(500));
 }
 
 TEST_F(NotificationProviderTest, CancelObserves)