Refactor mocks for emitting signal 29/237029/1
authorCheoleun Moon <chleun.moon@samsung.com>
Wed, 24 Jun 2020 06:32:09 +0000 (15:32 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Wed, 24 Jun 2020 06:32:15 +0000 (15:32 +0900)
Change-Id: Ia1f3c0534af380f04c58e3384b11f97a9675905c

tests/unittest/mocks/wifi-aware-mock-gdbus-internal.c

index 33bcfa4..1748b85 100644 (file)
@@ -24,15 +24,7 @@ typedef struct {
        gpointer user_data;
 } gdbus_result_data_s;
 
-typedef struct {
-       GDBusSignalCallback callback;
-       gchar signal_name[50];
-       GVariant *parameters;
-       gpointer user_data;
-} gdbus_signal_data_s;
-
 static gdbus_result_data_s _gdbus_async_result;
-static gdbus_signal_data_s _signal_data;
 
 static gboolean __reply_async_method(gpointer data)
 {
@@ -265,92 +257,86 @@ static GVariant *__pack_byte_array(const unsigned char *array, uint16_t len)
        return var;
 }
 
-static void __service_discovered(GDBusSignalCallback callback, gpointer user_data)
+static GVariant *__service_discovered()
 {
-       if (!callback)
-               return;
-
        unsigned char mac[MAC_ADDR_LEN] = {0, 0, 0, 0, 0, 0};
        unsigned char specific_info[5] = {'1', '2', '3', '4', '5'};
-       _signal_data.callback = callback;
-       strncpy(_signal_data.signal_name, "ServiceDiscovered", 50);
-       _signal_data.parameters = g_variant_new("(quvqvi)",
+       return g_variant_new("(quvqvi)",
                DUMMY_SUBSCRIBE_ID, DUMMY_PEER_ID, __pack_byte_array(mac, MAC_ADDR_LEN),
                5, __pack_byte_array(specific_info, 5), DUMMY_DISTANCE);
-       _signal_data.user_data = user_data;
 }
 
-static void __message_received(GDBusSignalCallback callback, gpointer user_data)
+static GVariant *__message_received(GDBusSignalCallback callback, gpointer user_data)
 {
-       if (!callback)
-               return;
-
        unsigned char mac[MAC_ADDR_LEN] = {0, 0, 0, 0, 0, 0};
        unsigned char message[5] = {'1', '2', '3', '4', '5'};
-       _signal_data.callback = callback;
-       strncpy(_signal_data.signal_name, "MessageReceived", 50);
-       _signal_data.parameters = g_variant_new("(quvqv)",
+       return g_variant_new("(quvqv)",
                DUMMY_SUBSCRIBE_ID, DUMMY_PEER_ID, __pack_byte_array(mac, MAC_ADDR_LEN),
                5, __pack_byte_array(message, 5));
-       _signal_data.user_data = user_data;
 }
 
-static void __data_path_open_result(GDBusSignalCallback callback, gpointer user_data)
+static GVariant *__data_path_open_result()
 {
-       if (!callback)
-               return;
-       _signal_data.callback = callback;
-       strncpy(_signal_data.signal_name, "DataPathOpenResult", 50);
-       _signal_data.parameters = g_variant_new("(ussii)", DUMMY_NDP_ID,
+       return g_variant_new("(ussii)", DUMMY_NDP_ID,
                        DUMMY_NDP_IFACE, DUMMY_PEER_IP, DUMMY_PEER_PORT,
                        WIFI_AWARE_ERROR_NONE);
-       _signal_data.user_data = user_data;
 }
 
 struct {
        const gchar *interface_name;
        const gchar *signal_name;
-       void(*subscribe)(GDBusSignalCallback callback, gpointer user_data);
+       GVariant *(*create_parameters)();
+       GDBusSignalCallback callback;
+       gpointer user_data;
 } wifi_aware_gdbus_signal_list[] = {
        [SERVICE_DISCOVERED] = {
                "net.nan.discovery",
                "ServiceDiscovered",
                __service_discovered,
+               NULL,
+               NULL,
        },
        [MESSAGE_RECEIVED] = {
                "net.nan.discovery",
                "MessageReceived",
                __message_received,
+               NULL,
+               NULL,
        },
        [DATA_PATH_OPENED] = {
                "net.nan.discovery",
                "DataPathOpenResult",
                __data_path_open_result,
+               NULL,
+               NULL,
        },
        {
                NULL,
                NULL,
                NULL,
+               NULL,
+               NULL,
        },
 };
 
 static gboolean __emit_signal(gpointer data)
 {
-       gdbus_signal_data_s *signal_data = (gdbus_signal_data_s *)data;
-       signal_data->callback(_get_dummy_gdbus_connection(),
-                       NULL, WIFI_AWARE_INTERFACE,
-                       WIFI_AWARE_DISCOVERY_INTERFACE, signal_data->signal_name,
-                       signal_data->parameters, signal_data->user_data);
+       wifi_aware_gdbus_signal_e signal = GPOINTER_TO_INT(data);
+       printf("__emit_signal %d\n", signal);
+       fflush(stdout);
+
+       wifi_aware_gdbus_signal_list[signal].callback(_get_dummy_gdbus_connection(),
+                       NULL, WIFI_AWARE_INTERFACE, WIFI_AWARE_DISCOVERY_INTERFACE,
+                       wifi_aware_gdbus_signal_list[signal].signal_name,
+                       wifi_aware_gdbus_signal_list[signal].create_parameters(),
+                       wifi_aware_gdbus_signal_list[signal].user_data);
+
        return FALSE;
 }
 
 void _emit_gdbus_signal(wifi_aware_gdbus_signal_e signal)
 {
-       if (g_strcmp0(_signal_data.signal_name,
-                       wifi_aware_gdbus_signal_list[(int)signal].signal_name) != 0)
-               return;
-
-       g_timeout_add(SIGNAL_DELAY, __emit_signal, &_signal_data);
+       g_timeout_add(SIGNAL_DELAY, __emit_signal, GINT_TO_POINTER(signal));
 }
 
 static bool __is_same_signal(int i, const char *interface_name, const char *signal_name)
@@ -366,8 +352,10 @@ guint _signal_subscribe(const char *interface_name,
        for (int i = 0; ; ++i) {
                if (wifi_aware_gdbus_signal_list[i].interface_name == NULL)
                        break;
-               if (__is_same_signal(i, interface_name, member))
-                               wifi_aware_gdbus_signal_list[i].subscribe(callback, user_data);
+               if (__is_same_signal(i, interface_name, member)) {
+                       wifi_aware_gdbus_signal_list[i].callback = callback;
+                       wifi_aware_gdbus_signal_list[i].user_data = user_data;
+               }
        }
        return DUMMY_SIGNAL_ID;
 }