test_IOT_PolicySender : signOut call was added
authori.metelytsia <i.metelytsia@samsung.com>
Thu, 25 May 2017 14:26:45 +0000 (17:26 +0300)
committeri.metelytsia <i.metelytsia@samsung.com>
Thu, 25 May 2017 14:26:45 +0000 (17:26 +0300)
device_core/iotivity_lib/IoT/IOT_Device.cpp
device_core/iotivity_lib/IoT/IOT_Device.h
device_core/utest/test_IoT.cpp

index 8e79140..9b61b25 100644 (file)
@@ -71,6 +71,21 @@ IOT_Device::IOT_Device(OCConnectivityType _conn_type, const std::string& _host,
     cvar.wait(lck);
 }
 
+/*virtual*/ IOT_Device::~IOT_Device()
+{
+    std::mutex mtx;
+    std::unique_lock<std::mutex> lck(mtx);
+    std::condition_variable cvar;
+
+    if(m_account_manager->signOut(  m_access_token,
+                                    [&](const HeaderOptions& /*_hopt*/, const OCRepresentation& /*_rep*/, const int /*_ecode*/)
+                                    {
+                                        cvar.notify_all();
+                                    }   ) != OC_STACK_OK)
+        throw std::runtime_error("signOut failed");
+    cvar.wait(lck);
+}
+
 /*******************************************************/
 /*******************************************************/
 std::ostream& operator<<(std::ostream& _os, const IOT_Device& _obj)
index 001997a..4132dac 100644 (file)
@@ -19,7 +19,7 @@ public:
     IOT_Device(OCConnectivityType _conn_type, const std::string& _host, const std::string& _auth_provider, const std::string& _auth_code, const std::string& _uid, const std::string& _access_token);
     IOT_Device(const IOT_Device& _obj) = default;
 
-    virtual ~IOT_Device() = default;
+    virtual ~IOT_Device();
 
     IOT_Device& operator=(const IOT_Device& _obj) = default;
 
index 9ed3970..0bf0b81 100644 (file)
@@ -173,16 +173,15 @@ TEST(test_IoT, test_IOT_PolicySender)
             IOT_PolicyGroup group("tv-extension", {item1, item2});
             string json_data = IOT_Policy::makePolicy({group});
 
-            static mutex mtx;
+            static mutex mtx, mtx1;
             unique_lock<mutex> lck(mtx);
             condition_variable cvar;
-
             auto on_observe = [&](const HeaderOptions& /*_head_options*/, const OCRepresentation& _rep, const int& _ecode, const int& _seq_number)
             {
-                unique_lock<mutex> lambda_lock(mtx);
+                unique_lock<mutex> lambda_lock(mtx1);
                 if (res) return;
 
-                if(IOT_Resource::representationToString(_rep).find(json_data) != string::npos)
+//                if(IOT_Resource::representationToString(_rep).find(json_data) != string::npos)
                 {
                     res = true;
                     cvar.notify_all();