enhance unittest of dbus-server 43/215543/1 accepted/tizen/unified/20191011.015540 submit/tizen/20191010.122651
authorwansu.yoo <wansu.yoo@samsung.com>
Thu, 10 Oct 2019 11:04:01 +0000 (20:04 +0900)
committerwansu.yoo <wansu.yoo@samsung.com>
Thu, 10 Oct 2019 11:04:01 +0000 (20:04 +0900)
Change-Id: Ie354828c1825ecd809f7b09a5409f4c7ff0b837c
Signed-off-by: wansu.yoo <wansu.yoo@samsung.com>
CMain/inc/gdbus_interface.h
CMain/src/orchestration_server.c
CMain/unittest/test_orchestration_server.cpp
build.sh

index 6c653f5..cd06c23 100644 (file)
@@ -47,6 +47,17 @@ typedef guint (*_g_dbus_connection_register_object)(GDBusConnection *connection,
 typedef void (*_g_error_free)(GError *error);
 typedef void (*_g_dbus_method_invocation_return_value)(GDBusMethodInvocation *invocation,
                                                         GVariant *parameters);
+typedef GVariant * (*_g_dbus_connection_call_sync)(GDBusConnection *connection,
+                                                  const gchar *bus_name,
+                                                  const gchar *object_path,
+                                                  const gchar *interface_name,
+                                                  const gchar *method_name,
+                                                  GVariant *parameters,
+                                                  const GVariantType *reply_type,
+                                                  GDBusCallFlags flags,
+                                                  gint timeout_msec,
+                                                  GCancellable *cancellable,
+                                                  GError **error);
 /* ---------------------------------------------------------------------------------------------------- */
 
 typedef struct
@@ -59,6 +70,7 @@ typedef struct
     _g_dbus_connection_register_object connection_register_object;
     _g_error_free error_free;
     _g_dbus_method_invocation_return_value invocation_return_value;
+    _g_dbus_connection_call_sync connection_call_sync;
 } _gdbus_interface;
 
 #ifdef __cplusplus
index 51acbcc..2985938 100644 (file)
@@ -61,7 +61,7 @@ int get_pid_with_connection(const gchar* sender) {
     connection = g_variant_new ("(s)", sender);
 
     GVariant *result =
-        g_dbus_connection_call_sync (_gdbus_conn,
+        _gdbus.connection_call_sync (_gdbus_conn,
                                 _FREEDESKTOP_BUS_NAME,
                                 _FREEDESKTOP_OBJECT_PATH,
                                 _FREEDESKTOP_INTERFACE,
@@ -100,6 +100,7 @@ void set_default_dbus_interface(void)
     _gdbus.connection_register_object = g_dbus_connection_register_object;
     _gdbus.error_free = g_error_free;
     _gdbus.invocation_return_value = g_dbus_method_invocation_return_value;
+    _gdbus.connection_call_sync = g_dbus_connection_call_sync;
 }
 
 static int _request_service(GVariant *parameters, int origin_client_pid)
index 44a0846..f3760aa 100644 (file)
@@ -32,15 +32,19 @@ GDBusNodeInfo *valid_GDBusNodeInfo;
 GDBusInterfaceInfo *valid_GDBusinterface;
 gboolean requestCbResult;
 
-int fake_request_cb(char* app_name, RequestServiceInfo service_info[], int count)
+int fake_request_cb(char* app_name, bool self_select, RequestServiceInfo service_info[], int count, int client_pid)
 {
-    if (app_name == APP_NAME && count == 1 && service_info[0].ExecutionType == EXECUTE_TYPE &&
-        service_info[0].ExeCmd == EXECUTE_COMMAND)
+    if (!strcmp(app_name, APP_NAME) && 
+        count == 1 &&
+        !strcmp(service_info[0].ExecutionType, EXECUTE_TYPE) &&
+        !strcmp(service_info[0].ExeCmd, EXECUTE_COMMAND))
     {
+        requestCbResult = 1;
         return 1;
     }
     else
     {
+        requestCbResult = -1;
         return -1;
     }
 }
@@ -128,6 +132,24 @@ void fake_invocation_return_value(GDBusMethodInvocation *invocation,
 
 void fake_error_free(GError *error)
 {
+    
+}
+
+GVariant *
+fake_g_dbus_connection_call_sync (GDBusConnection *connection,
+                             const gchar *bus_name,
+                             const gchar *object_path,
+                             const gchar *interface_name,
+                             const gchar *method_name,
+                             GVariant *parameters,
+                             const GVariantType *reply_type,
+                             GDBusCallFlags flags,
+                             gint timeout_msec,
+                             GCancellable *cancellable,
+                             GError **error)
+{
+    *error = NULL;
+    return g_variant_new ("(u)", 1);
 }
 
 class OrchestrationServerTests : public testing::Test
@@ -276,6 +298,56 @@ TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WithRequestServiceMe
     }
 }
 
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WithRequestServiceMethod_WithValidParam_ExpectedReturnSuccess)
+{
+    set_default_dbus_interface();
+    _gdbus.get_sync = fake_get_sync_success;
+    _gdbus.own_name_on_connection = fake_own_name_success;
+    _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+    _gdbus.connection_register_object = fake_connection_register_object_success;
+    _gdbus.invocation_return_value = fake_invocation_return_value;
+    _gdbus.error_free = fake_error_free;
+    _gdbus.connection_call_sync = fake_g_dbus_connection_call_sync;
+
+    int idx;
+    int count = 1, client_pid = 1;
+    GVariant *services;
+    GVariantBuilder *builder;
+    builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)"));
+    for (idx = 0; idx < count; idx++) {
+        g_variant_builder_add (
+            builder,
+            "(ss)",
+            EXECUTE_TYPE,
+            EXECUTE_COMMAND
+        );
+    }
+    services = g_variant_new ("(sia(ss)ii)", APP_NAME, 1, builder, count, client_pid);
+    
+    _handle_method_call(NULL,
+                        "edge_orchestration_sample",
+                        NULL,
+                        NULL,
+                        "request_service",
+                        services,
+                        NULL,
+                        NULL);
+
+    EXPECT_EQ(requestCbResult, true);
+    g_variant_builder_unref (builder);
+
+    if (valid_GDBusConnection != NULL)
+    {
+        free(valid_GDBusConnection);
+        valid_GDBusConnection = NULL;
+    }
+    if (valid_GDBusNodeInfo != NULL)
+    {
+        free(valid_GDBusNodeInfo);
+        valid_GDBusNodeInfo = NULL;
+    }
+}
+
 int main(int argc, char **argv)
 {
     testing::InitGoogleTest(&argc, argv);
index 5b9622a..abd124b 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -110,6 +110,10 @@ function build_test() {
     echo "-----------------------------------"
     echo " Build test"
     echo "-----------------------------------"
+    INTERFACE_OUT_INC_DIR="$INTERFACE_OUT_DIR/inc/linux_x86-64"
+    INTERFACE_OUT_LIB_DIR="$INTERFACE_OUT_DIR/lib/linux_x86-64"
+    build_clean
+    build_c_interface
     make test
 }