e_test_helper: Added timeout set method 53/256853/5
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 14 Apr 2021 03:37:14 +0000 (12:37 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 20 Apr 2021 04:06:53 +0000 (04:06 +0000)
Added timeout set method.
It could set/unset timer of Testcase, and can set time of timer.

Change-Id: Ia023a4c8c49329e9ac60fbd6f5112707eaa9251d
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
src/bin/e_test_helper.c

index adac49a4d435a68fc831207770257f2bdcc80c04..c5abf76e7dddcc6261471621b2b1dc75db617b12 100644 (file)
@@ -28,6 +28,7 @@ typedef struct _Test_Helper_Data
    Eina_List *reg_wins;
 
    Eina_Bool tc_running;
+   Eina_Bool tc_timer_needs;
    Ecore_Timer *tc_timer;
 } Test_Helper_Data;
 
@@ -37,6 +38,7 @@ static Eina_Bool _e_test_helper_cb_property_get(const Eldbus_Service_Interface *
 
 static Eldbus_Message *_e_test_helper_cb_testcase_start(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
 static Eldbus_Message *_e_test_helper_cb_testcase_end(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_test_helper_cb_testcase_timeout_set(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
 static Eldbus_Message *_e_test_helper_cb_register_window(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
 static Eldbus_Message *_e_test_helper_cb_deregister_window(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
 static Eldbus_Message *_e_test_helper_cb_reset_register_window(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
@@ -129,6 +131,12 @@ static const Eldbus_Method methods[] ={
           ELDBUS_ARGS({"b", "accept or not"}),
           _e_test_helper_cb_testcase_end, 0
        },
+       {
+          "SetTestTimeout",
+          ELDBUS_ARGS({"bu", "needs timer and time in millisecond"}),
+          ELDBUS_ARGS({"b", "accept or not"}),
+          _e_test_helper_cb_testcase_timeout_set, 0
+       },
        {
           "RegisterWindow",
           ELDBUS_ARGS({"u", "window id to be registered"}),
@@ -543,7 +551,8 @@ _e_test_helper_cb_testcase_start(const Eldbus_Service_Interface *iface EINA_UNUS
         if (th_data->tc_timer)
           ecore_timer_del(th_data->tc_timer);
 
-        th_data->tc_timer = ecore_timer_add(E_TC_TIMEOUT, _e_test_helper_cb_tc_timeout, NULL);
+        if (th_data->tc_timer_needs)
+          th_data->tc_timer = ecore_timer_add(E_TC_TIMEOUT, _e_test_helper_cb_tc_timeout, NULL);
         res = th_data->tc_running = EINA_TRUE;
      }
 
@@ -577,6 +586,52 @@ _e_test_helper_cb_testcase_end(const Eldbus_Service_Interface *iface EINA_UNUSED
    return reply;
 }
 
+static Eldbus_Message *
+_e_test_helper_cb_testcase_timeout_set(const Eldbus_Service_Interface *iface EINA_UNUSED,
+                                       const Eldbus_Message *msg)
+{
+   Eldbus_Message *reply;
+   Eina_Bool res = EINA_FALSE;
+   Eina_Bool set = EINA_TRUE;
+   uint32_t timeout = E_TC_TIMEOUT;
+
+   reply = eldbus_message_method_return_new(msg);
+
+   if (!eldbus_message_arguments_get(msg, "bu", &set, &timeout))
+     {
+        ERR("Error on eldbus_message_arguments_get()\n");
+        goto err;
+     }
+
+   if (th_data)
+     {
+        if (set != th_data->tc_timer_needs)
+          {
+             th_data->tc_timer_needs = set;
+             if (!set)
+               ecore_timer_del(th_data->tc_timer);
+          }
+
+        if (timeout > 0)
+          {
+             if (th_data->tc_timer)
+               ecore_timer_del(th_data->tc_timer);
+
+             if (th_data->tc_timer_needs)
+               th_data->tc_timer = ecore_timer_add(timeout, _e_test_helper_cb_tc_timeout, NULL);
+          }
+        res = EINA_TRUE;
+     }
+
+   eldbus_message_arguments_append(reply, "b", res);
+
+   return reply;
+
+err:
+   eldbus_message_arguments_append(reply, "b", EINA_FALSE);
+   return reply;
+}
+
 static Eldbus_Message *
 _e_test_helper_cb_register_window(const Eldbus_Service_Interface *iface EINA_UNUSED,
                                   const Eldbus_Message *msg)