Upgrade bluez5_37 :Merge the code from private
[platform/upstream/bluez.git] / unit / test-gdbus-client.c
index ad426fe..dd17c00 100644 (file)
 
 #include "gdbus/gdbus.h"
 
+#include "src/shared/tester.h"
+
 #define SERVICE_NAME "org.bluez.unit.test-gdbus-client"
 #define SERVICE_NAME1 "org.bluez.unit.test-gdbus-client1"
 #define SERVICE_PATH "/org/bluez/unit/test_gdbus_client"
 
 struct context {
-       GMainLoop *main_loop;
        DBusConnection *dbus_conn;
        GDBusClient *dbus_client;
        GDBusProxy *proxy;
@@ -60,26 +61,18 @@ static struct context *create_context(void)
        struct context *context = g_new0(struct context, 1);
        DBusError err;
 
-       context->main_loop = g_main_loop_new(NULL, FALSE);
-       if (context->main_loop == NULL) {
-               g_free(context);
-               return NULL;
-       }
-
        dbus_error_init(&err);
 
        context->dbus_conn = g_dbus_setup_private(DBUS_BUS_SESSION,
                                                        SERVICE_NAME, &err);
        if (context->dbus_conn == NULL) {
                if (dbus_error_is_set(&err)) {
-                       if (g_test_verbose())
-                               g_printerr("D-Bus setup failed: %s\n",
-                                                               err.message);
+                       tester_debug("D-Bus setup failed: %s", err.message);
                        dbus_error_free(&err);
                }
 
-               g_main_loop_unref(context->main_loop);
                g_free(context);
+               tester_test_abort();
                return NULL;
        }
 
@@ -97,17 +90,20 @@ static void destroy_context(struct context *context)
        if (context == NULL)
                return;
 
+       tester_test_passed();
+
        if (context->timeout_source > 0)
                g_source_remove(context->timeout_source);
 
        g_dbus_detach_object_manager(context->dbus_conn);
 
+       g_dbus_unregister_interface(context->dbus_conn,
+                                       SERVICE_PATH, SERVICE_NAME);
+
        dbus_connection_flush(context->dbus_conn);
        dbus_connection_close(context->dbus_conn);
        dbus_connection_unref(context->dbus_conn);
 
-       g_main_loop_unref(context->main_loop);
-
        g_free(context->data);
        g_free(context);
 }
@@ -116,8 +112,7 @@ static gboolean timeout_handler(gpointer user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("timeout triggered\n");
+       tester_debug("timeout triggered");
 
        context->timeout_source = 0;
 
@@ -130,8 +125,7 @@ static void connect_handler(DBusConnection *connection, void *user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("service connected\n");
+       tester_debug("service connected");
 
        g_dbus_client_unref(context->dbus_client);
 }
@@ -140,13 +134,12 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("service disconnected\n");
+       tester_debug("service disconnected");
 
-       g_main_loop_quit(context->main_loop);
+       destroy_context(context);
 }
 
-static void simple_client(void)
+static void simple_client(const void *data)
 {
        struct context *context = create_context();
 
@@ -160,13 +153,9 @@ static void simple_client(void)
                                                connect_handler, context);
        g_dbus_client_set_disconnect_watch(context->dbus_client,
                                                disconnect_handler, context);
-
-       g_main_loop_run(context->main_loop);
-
-       destroy_context(context);
 }
 
-static void client_connect_disconnect(void)
+static void client_connect_disconnect(const void *data)
 {
        struct context *context = create_context();
 
@@ -187,13 +176,6 @@ static void client_connect_disconnect(void)
 
        context->timeout_source = g_timeout_add_seconds(10, timeout_handler,
                                                                context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void append_variant(DBusMessageIter *iter, int type, void *val)
@@ -256,9 +238,7 @@ static void proxy_get_dict(GDBusProxy *proxy, void *user_data)
        const char *string;
        dbus_bool_t boolean;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "Dict", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_ARRAY);
@@ -307,7 +287,7 @@ static void proxy_get_dict(GDBusProxy *proxy, void *user_data)
        g_dbus_client_unref(context->dbus_client);
 }
 
-static void client_get_dict_property(void)
+static void client_get_dict_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable dict_properties[] = {
@@ -330,13 +310,6 @@ static void client_get_dict_property(void)
                                                disconnect_handler, context);
        g_dbus_client_set_proxy_handlers(context->dbus_client, proxy_get_dict,
                                                NULL, NULL, context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void proxy_get_string(GDBusProxy *proxy, void *user_data)
@@ -345,13 +318,16 @@ static void proxy_get_string(GDBusProxy *proxy, void *user_data)
        DBusMessageIter iter;
        const char *string;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "String", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING);
 
+       if (context->proxy) {
+               g_assert(context->proxy == proxy);
+               g_dbus_proxy_unref(context->proxy);
+       }
+
        dbus_message_iter_get_basic(&iter, &string);
        g_assert_cmpstr(string, ==, "value");
 
@@ -368,7 +344,7 @@ static gboolean get_string(const GDBusPropertyTable *property,
        return TRUE;
 }
 
-static void client_get_string_property(void)
+static void client_get_string_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -392,13 +368,6 @@ static void client_get_string_property(void)
                                                disconnect_handler, context);
        g_dbus_client_set_proxy_handlers(context->dbus_client, proxy_get_string,
                                                NULL, NULL, context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void proxy_get_boolean(GDBusProxy *proxy, void *user_data)
@@ -407,9 +376,7 @@ static void proxy_get_boolean(GDBusProxy *proxy, void *user_data)
        DBusMessageIter iter;
        dbus_bool_t value;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "Boolean", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_BOOLEAN);
@@ -430,7 +397,7 @@ static gboolean get_boolean(const GDBusPropertyTable *property,
        return TRUE;
 }
 
-static void client_get_boolean_property(void)
+static void client_get_boolean_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable boolean_properties[] = {
@@ -454,13 +421,6 @@ static void client_get_boolean_property(void)
                                                NULL, NULL, context);
        g_dbus_client_set_disconnect_watch(context->dbus_client,
                                                disconnect_handler, context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void proxy_get_array(GDBusProxy *proxy, void *user_data)
@@ -469,9 +429,7 @@ static void proxy_get_array(GDBusProxy *proxy, void *user_data)
        DBusMessageIter iter, entry;
        const char *value1, *value2;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "Array", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_ARRAY);
@@ -507,7 +465,7 @@ static gboolean get_array(const GDBusPropertyTable *property,
        return TRUE;
 }
 
-static void client_get_array_property(void)
+static void client_get_array_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable array_properties[] = {
@@ -530,13 +488,6 @@ static void client_get_array_property(void)
                                                NULL, NULL, context);
        g_dbus_client_set_disconnect_watch(context->dbus_client,
                                                disconnect_handler, context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void proxy_get_uint64(GDBusProxy *proxy, void *user_data)
@@ -545,9 +496,7 @@ static void proxy_get_uint64(GDBusProxy *proxy, void *user_data)
        DBusMessageIter iter;
        guint64 value;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "Number", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_UINT64);
@@ -568,7 +517,7 @@ static gboolean get_uint64(const GDBusPropertyTable *property,
        return TRUE;
 }
 
-static void client_get_uint64_property(void)
+static void client_get_uint64_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable uint64_properties[] = {
@@ -592,13 +541,6 @@ static void client_get_uint64_property(void)
                                                NULL, NULL, context);
        g_dbus_client_set_disconnect_watch(context->dbus_client,
                                                disconnect_handler, context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void property_set_success(const DBusError *err, void *user_data)
@@ -611,9 +553,7 @@ static void proxy_set_string(GDBusProxy *proxy, void *user_data)
        DBusMessageIter iter;
        const char *string;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_get_property(proxy, "String", &iter));
        g_assert(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING);
@@ -634,8 +574,7 @@ static void property_string_changed(GDBusProxy *proxy, const char *name,
        struct context *context = user_data;
        const char *string;
 
-       if (g_test_verbose())
-               g_print("property %s changed\n", name);
+       tester_debug("property %s changed", name);
 
        g_assert(g_strcmp0(name, "String") == 0);
        g_assert(dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_STRING);
@@ -667,7 +606,7 @@ static void set_string(const GDBusPropertyTable *property,
        g_dbus_pending_property_success(id);
 }
 
-static void client_set_string_property(void)
+static void client_set_string_property(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -692,13 +631,6 @@ static void client_set_string_property(void)
        g_dbus_client_set_proxy_handlers(context->dbus_client, proxy_set_string,
                                                NULL, property_string_changed,
                                                context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static gboolean string_exists(const GDBusPropertyTable *property, void *data)
@@ -712,8 +644,7 @@ static gboolean timeout_test(gpointer user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("timeout triggered\n");
+       tester_debug("timeout triggered");
 
        context->timeout_source = 0;
 
@@ -742,16 +673,14 @@ static void proxy_string_changed(GDBusProxy *proxy, void *user_data)
        struct context *context = user_data;
        DBusMessageIter iter;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(!g_dbus_proxy_get_property(proxy, "String", &iter));
 
        g_idle_add(emit_string_change, context);
 }
 
-static void client_string_changed(void)
+static void client_string_changed(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -776,13 +705,6 @@ static void client_string_changed(void)
                                                proxy_string_changed, NULL,
                                                property_string_changed,
                                                context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void property_check_order(const DBusError *err, void *user_data)
@@ -807,9 +729,7 @@ static void proxy_check_order(GDBusProxy *proxy, void *user_data)
        struct context *context = user_data;
        const char *string;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        context->proxy = proxy;
        string = "value1";
@@ -819,7 +739,7 @@ static void proxy_check_order(GDBusProxy *proxy, void *user_data)
                                        NULL));
 }
 
-static void client_check_order(void)
+static void client_check_order(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -844,32 +764,22 @@ static void client_check_order(void)
        g_dbus_client_set_proxy_handlers(context->dbus_client,
                                                proxy_check_order, NULL, NULL,
                                                context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(context->dbus_conn,
-                                       SERVICE_PATH, SERVICE_NAME);
-
-       destroy_context(context);
 }
 
 static void proxy_removed(GDBusProxy *proxy, void *user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("proxy removed\n");
+       tester_debug("proxy removed");
 
-       g_main_loop_quit(context->main_loop);
+       destroy_context(context);
 }
 
 static void proxy_set_removed(GDBusProxy *proxy, void *user_data)
 {
        struct context *context = user_data;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_set_removed_watch(proxy, proxy_removed, context));
 
@@ -880,7 +790,7 @@ static void proxy_set_removed(GDBusProxy *proxy, void *user_data)
                                                                SERVICE_NAME);
 }
 
-static void client_proxy_removed(void)
+static void client_proxy_removed(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -902,16 +812,11 @@ static void client_proxy_removed(void)
        g_dbus_client_set_proxy_handlers(context->dbus_client,
                                                proxy_set_removed, NULL, NULL,
                                                context);
-
-       g_main_loop_run(context->main_loop);
-
-       destroy_context(context);
 }
 
-static void client_no_object_manager(void)
+static void client_no_object_manager(const void *data)
 {
        struct context *context = create_context();
-       DBusConnection *conn;
        DBusMessageIter iter;
        static const GDBusPropertyTable string_properties[] = {
                { "String", "s", get_string, set_string, string_exists },
@@ -921,41 +826,27 @@ static void client_no_object_manager(void)
        if (context == NULL)
                return;
 
-       conn = g_dbus_setup_private(DBUS_BUS_SESSION, SERVICE_NAME1, NULL);
-       g_assert(conn != NULL);
-
        context->data = g_strdup("value");
 
-       g_dbus_register_interface(conn,
-                               SERVICE_PATH, SERVICE_NAME1,
+       g_dbus_register_interface(context->dbus_conn,
+                               SERVICE_PATH, SERVICE_NAME,
                                methods, signals, string_properties,
                                context, NULL);
 
        context->dbus_client = g_dbus_client_new_full(context->dbus_conn,
-                                               SERVICE_NAME1, SERVICE_PATH,
+                                               SERVICE_NAME, SERVICE_PATH,
                                                NULL);
 
        g_dbus_client_set_disconnect_watch(context->dbus_client,
                                                disconnect_handler, context);
 
        context->proxy = g_dbus_proxy_new(context->dbus_client, SERVICE_PATH,
-                                                               SERVICE_NAME1);
+                                                               SERVICE_NAME);
 
        g_dbus_client_set_proxy_handlers(context->dbus_client, proxy_get_string,
                                                NULL, NULL, context);
 
        g_assert(!g_dbus_proxy_get_property(context->proxy, "String", &iter));
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_proxy_unref(context->proxy);
-       g_dbus_unregister_interface(conn, SERVICE_PATH, SERVICE_NAME1);
-
-       dbus_connection_flush(conn);
-       dbus_connection_close(conn);
-       dbus_connection_unref(conn);
-
-       destroy_context(context);
 }
 
 static void proxy_force_disconnect(GDBusProxy *proxy, void *user_data)
@@ -963,21 +854,24 @@ static void proxy_force_disconnect(GDBusProxy *proxy, void *user_data)
        struct context *context = user_data;
        DBusConnection *conn = context->data;
 
-       if (g_test_verbose())
-               g_print("proxy %s found\n",
-                                       g_dbus_proxy_get_interface(proxy));
+       tester_debug("proxy %s found", g_dbus_proxy_get_interface(proxy));
 
        g_assert(g_dbus_proxy_set_removed_watch(proxy, proxy_removed, context));
 
        context->timeout_source = g_timeout_add_seconds(2, timeout_test,
                                                                context);
 
+       g_dbus_detach_object_manager(conn);
+
+       g_dbus_unregister_interface(conn, SERVICE_PATH, SERVICE_NAME1);
+
        dbus_connection_flush(conn);
        dbus_connection_close(conn);
+       dbus_connection_unref(conn);
        context->data = NULL;
 }
 
-static void client_force_disconnect(void)
+static void client_force_disconnect(const void *data)
 {
        struct context *context = create_context();
        DBusConnection *conn;
@@ -1007,14 +901,6 @@ static void client_force_disconnect(void)
        g_dbus_client_set_proxy_handlers(context->dbus_client,
                                        proxy_force_disconnect, NULL, NULL,
                                        context);
-
-       g_main_loop_run(context->main_loop);
-
-       g_dbus_unregister_interface(conn, SERVICE_PATH, SERVICE_NAME1);
-       g_dbus_detach_object_manager(conn);
-       dbus_connection_unref(conn);
-
-       destroy_context(context);
 }
 
 static void client_ready_watch(GDBusClient *client, void *user_data)
@@ -1035,10 +921,10 @@ static void proxy_added(GDBusProxy *proxy, void *user_data)
         */
        g_assert(context->client_ready == FALSE);
 
-       g_main_loop_quit(context->main_loop);
+       destroy_context(context);
 }
 
-static void client_ready(void)
+static void client_ready(const void *data)
 {
        struct context *context = create_context();
        static const GDBusPropertyTable string_properties[] = {
@@ -1061,53 +947,51 @@ static void client_ready(void)
                                                                context);
        g_dbus_client_set_proxy_handlers(context->dbus_client,
                                                proxy_added, NULL, NULL, context);
-
-       g_main_loop_run(context->main_loop);
-
-       destroy_context(context);
 }
 
 int main(int argc, char *argv[])
 {
-       g_test_init(&argc, &argv, NULL);
+       tester_init(&argc, &argv);
 
-       g_test_add_func("/gdbus/simple_client", simple_client);
+       tester_add("/gdbus/simple_client", NULL, NULL, simple_client, NULL);
 
-       g_test_add_func("/gdbus/client_connect_disconnect",
-                                               client_connect_disconnect);
+       tester_add("/gdbus/client_connect_disconnect", NULL, NULL,
+                                       client_connect_disconnect, NULL);
 
-       g_test_add_func("/gdbus/client_get_string_property",
-                                               client_get_string_property);
+       tester_add("/gdbus/client_get_string_property", NULL, NULL,
+                                       client_get_string_property, NULL);
 
-       g_test_add_func("/gdbus/client_get_boolean_property",
-                                               client_get_boolean_property);
+       tester_add("/gdbus/client_get_boolean_property", NULL, NULL,
+                                       client_get_boolean_property, NULL);
 
-       g_test_add_func("/gdbus/client_get_uint64_property",
-                                               client_get_uint64_property);
+       tester_add("/gdbus/client_get_uint64_property", NULL, NULL,
+                                       client_get_uint64_property, NULL);
 
-       g_test_add_func("/gdbus/client_get_array_property",
-                                               client_get_array_property);
+       tester_add("/gdbus/client_get_array_property", NULL, NULL,
+                                       client_get_array_property, NULL);
 
-       g_test_add_func("/gdbus/client_get_dict_property",
-                                               client_get_dict_property);
+       tester_add("/gdbus/client_get_dict_property", NULL, NULL,
+                                       client_get_dict_property, NULL);
 
-       g_test_add_func("/gdbus/client_set_string_property",
-                                               client_set_string_property);
+       tester_add("/gdbus/client_set_string_property", NULL, NULL,
+                                       client_set_string_property, NULL);
 
-       g_test_add_func("/gdbus/client_string_changed",
-                                               client_string_changed);
+       tester_add("/gdbus/client_string_changed", NULL, NULL,
+                                       client_string_changed, NULL);
 
-       g_test_add_func("/gdbus/client_check_order", client_check_order);
+       tester_add("/gdbus/client_check_order", NULL, NULL, client_check_order,
+                                       NULL);
 
-       g_test_add_func("/gdbus/client_proxy_removed", client_proxy_removed);
+       tester_add("/gdbus/client_proxy_removed", NULL, NULL,
+                                       client_proxy_removed, NULL);
 
-       g_test_add_func("/gdbus/client_no_object_manager",
-                                               client_no_object_manager);
+       tester_add("/gdbus/client_no_object_manager", NULL, NULL,
+                                       client_no_object_manager, NULL);
 
-       g_test_add_func("/gdbus/client_force_disconnect",
-                                               client_force_disconnect);
+       tester_add("/gdbus/client_force_disconnect", NULL, NULL,
+                                       client_force_disconnect, NULL);
 
-       g_test_add_func("/gdbus/client_ready", client_ready);
+       tester_add("/gdbus/client_ready", NULL, NULL, client_ready, NULL);
 
-       return g_test_run();
+       return tester_run();
 }