Update unittest for remote opertion in scene manager
[platform/upstream/iotivity.git] / service / scene-manager / unittests / RemoteSceneTest.cpp
old mode 100644 (file)
new mode 100755 (executable)
index c51ed61..93196a8
@@ -29,6 +29,8 @@
 #include "RCSResourceObject.h"
 #include "RCSRemoteResourceObject.h"
 #include "OCPlatform.h"
+#include "RCSDiscoveryManager.h"
+#include "RCSAddress.h"
 
 using namespace std;
 using namespace OIC::Service;
@@ -43,6 +45,27 @@ constexpr char VALUE[]{ "off" };
 
 static int lightNum = 0;
 
+SceneList* g_sceneList = SceneList::getInstance();
+RCSRemoteResourceObject::Ptr pListResource = nullptr;
+RemoteSceneList::Ptr pSceneList = nullptr;
+RemoteSceneCollection::Ptr pSceneCollection = nullptr;
+RemoteScene::Ptr pScene = nullptr;
+RemoteSceneAction::Ptr pSceneAction = nullptr;
+RCSRemoteResourceObject::Ptr pLightResource = nullptr;
+
+void discoverSceneListServer()
+{
+    if(pListResource == nullptr)
+    {
+        std::vector< std::string > vecRT{ SCENE_LIST_RT };
+        std::vector< std::string > vecIF{ OC_RSRVD_INTERFACE_DEFAULT, OC::BATCH_INTERFACE };
+
+        pListResource = SceneUtils::createRCSResourceObject(
+                            "coap://" + SceneUtils::getNetAddress() + SCENE_LIST_URI,
+                            SCENE_CONNECTIVITY, vecRT, vecIF);
+    }
+}
+
 class RemoteSceneTest : public TestWithMock
 {
 protected:
@@ -51,40 +74,35 @@ protected:
         TestWithMock::SetUp();
         executionSucceeded = false;
 
-        SceneList::getInstance()->getName();
-        createListServer();
+        g_sceneList->getName();
+        discoverSceneListServer();
 
-        RemoteSceneList::createInstance(pListResource, std::bind(
-            &RemoteSceneTest::onRemoteSceneListCreated, this,
-            placeholders::_1, placeholders::_2));
+        if(pSceneList == nullptr)
+        {
+            RemoteSceneList::createInstance(pListResource, std::bind(
+                &RemoteSceneTest::onRemoteSceneListCreated, this,
+                placeholders::_1, placeholders::_2));
 
-        waitForCallback();
+            waitForCallback();
+        }
 
-        pSceneList->addNewSceneCollection(std::bind(
-            &RemoteSceneTest::onRemoteSceneCollectionCreated, this,
-            placeholders::_1, placeholders::_2));
-
-        waitForCallback();
+        if(pSceneCollection == nullptr)
+        {
+            pSceneList->addNewSceneCollection(std::bind(
+                &RemoteSceneTest::onRemoteSceneCollectionCreated, this,
+                placeholders::_1, placeholders::_2));
 
-        pSceneCollection->addNewScene("Default", std::bind(
-            &RemoteSceneTest::onRemoteSceneCreated, this,
-            placeholders::_1, placeholders::_2));
-
-        waitForCallback();
-    }
-
-    void createListServer()
-    {
-        std::vector< std::string > vecRT{ SCENE_LIST_RT };
-        std::vector< std::string > vecIF{ OC_RSRVD_INTERFACE_DEFAULT, OC::BATCH_INTERFACE };
-
-        pListResource = SceneUtils::createRCSResourceObject(
-            "coap://" + SceneUtils::getNetAddress() + SCENE_LIST_URI,
-            SCENE_CONNECTIVITY, vecRT, vecIF);
+            waitForCallback();
+        }
     }
 
     void createLightServer()
     {
+        if(pLightResource != nullptr)
+        {
+            return ;
+        }
+
         RCSResourceObject::Ptr pResource = RCSResourceObject::Builder(
             RESOURCE_URI, RESOURCE_TYPE, DEFAULT_INTERFACE).build();
         pResource->setAttribute(KEY, RCSResourceAttributes::Value(VALUE));
@@ -93,7 +111,9 @@ protected:
             = SceneUtils::createRCSResourceObject(
             "coap://" + SceneUtils::getNetAddress() + RESOURCE_URI
             + "/" + std::to_string(lightNum++),
-            SCENE_CONNECTIVITY, pResource->getTypes(), pResource->getInterfaces());
+            (OCConnectivityType)(CT_ADAPTER_IP|CT_IP_USE_V4),
+            pResource->getTypes(), pResource->getInterfaces());
+
     }
 
     void waitForCallback(int waitingTime = DEFAULT_WAITTIME)
@@ -103,11 +123,6 @@ protected:
     }
 
 public:
-    RCSRemoteResourceObject::Ptr pListResource;
-    RemoteSceneList::Ptr pSceneList;
-    RemoteSceneCollection::Ptr pSceneCollection;
-    RemoteScene::Ptr pScene;
-    RCSRemoteResourceObject::Ptr pLightResource;
     bool executionSucceeded;
     std::condition_variable cond;
     std::mutex mutex;
@@ -144,11 +159,13 @@ public:
 
 TEST_F(RemoteSceneTest, addNewRemoteScene)
 {
-    pSceneCollection->addNewScene("Test Scene", std::bind(
-        &RemoteSceneTest::onRemoteSceneCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
+    if(pScene == nullptr)
+    {
+        pSceneCollection->addNewScene("Test Scene", std::bind(
+            &RemoteSceneTest::onRemoteSceneCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     ASSERT_NE(nullptr, pScene);
     ASSERT_EQ("Test Scene", pScene->getName());
@@ -164,11 +181,13 @@ TEST_F(RemoteSceneTest, createNewRemoteSceneWithEmptyName)
 
 TEST_F(RemoteSceneTest, getRemoteSceneBySceneName)
 {
-    pSceneCollection->addNewScene("Test Scene", std::bind(
-        &RemoteSceneTest::onRemoteSceneCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
+    if(pScene == nullptr)
+    {
+        pSceneCollection->addNewScene("Test Scene", std::bind(
+            &RemoteSceneTest::onRemoteSceneCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     auto scene = pSceneCollection->getRemoteScene("Test Scene");
 
@@ -178,15 +197,17 @@ TEST_F(RemoteSceneTest, getRemoteSceneBySceneName)
 
 TEST_F(RemoteSceneTest, getAllRemoteScenes)
 {
-    pSceneCollection->addNewScene("Test Scene", std::bind(
-        &RemoteSceneTest::onRemoteSceneCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
+    if(pScene == nullptr)
+    {
+        pSceneCollection->addNewScene("Test Scene", std::bind(
+            &RemoteSceneTest::onRemoteSceneCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     auto scenes = pSceneCollection->getRemoteScenes();
 
-    ASSERT_EQ((unsigned int)2, scenes.size());
+    ASSERT_EQ((unsigned int)1, scenes.size());
     ASSERT_NE(scenes.end(), scenes.find("Test Scene"));
 }
 
@@ -194,11 +215,13 @@ TEST_F(RemoteSceneTest, executeRemoteScene)
 {
     createLightServer();
 
-    pScene->addNewSceneAction(pLightResource, KEY, RCSResourceAttributes::Value(VALUE),
-        std::bind(&RemoteSceneTest::onRemoteSceneActionCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
+    if(pSceneAction == nullptr)
+    {
+        pScene->addNewSceneAction(pLightResource, KEY, RCSResourceAttributes::Value(VALUE),
+            std::bind(&RemoteSceneTest::onRemoteSceneActionCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     pScene->execute(std::bind(
         &RemoteSceneTest::onRemoteSceneExecuted, this, placeholders::_1, placeholders::_2));