From: Daniel Wagner Date: Thu, 11 Aug 2011 14:56:17 +0000 (+0200) Subject: unit: Add manager state callback X-Git-Tag: accepted/2.0alpha-wayland/20121110.002834~1257 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef0ff3328fa0e951647ec187b2085671ab83b553;p=profile%2Fivi%2Fconnman.git unit: Add manager state callback --- diff --git a/unit/test-connman.h b/unit/test-connman.h index 0d9da93..5602daa 100644 --- a/unit/test-connman.h +++ b/unit/test-connman.h @@ -40,6 +40,7 @@ struct test_fix { guint manager_watch; struct test_manager manager; + GSourceFunc manager_changed; /* session test cases */ unsigned int max_sessions; diff --git a/unit/test-session.c b/unit/test-session.c index c626e04..3431cea 100644 --- a/unit/test-session.c +++ b/unit/test-session.c @@ -216,8 +216,6 @@ static void set_session_mode(struct test_fix *fix, g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR); dbus_message_unref(msg); - - util_idle_call(fix, util_quit_loop, NULL); } static void test_session_connect_notify(struct test_session *session) @@ -445,12 +443,35 @@ static gboolean test_session_connect_free_ride(gpointer data) return FALSE; } +static connman_bool_t is_online(struct test_fix *fix) +{ + if (g_strcmp0(fix->manager.state, "online") == 0) + return TRUE; + + return FALSE; +} + static gboolean enable_session_mode(gpointer data) { struct test_fix *fix = data; set_session_mode(fix, TRUE); + if (is_online(fix) == FALSE) + util_idle_call(fix, util_quit_loop, NULL); + + return FALSE; +} + +static gboolean manager_state_changed(gpointer data) +{ + struct test_fix *fix = data; + + if (is_online(fix) == FALSE) { + fix->manager_changed = NULL; + util_idle_call(fix, util_quit_loop, NULL); + } + return FALSE; } @@ -465,15 +486,21 @@ static gboolean disable_session_mode(gpointer data) static void setup_cb(struct test_fix *fix, gconstpointer data) { - util_setup(fix, data); + fix->manager_changed = manager_state_changed; + util_setup(fix, data); util_call(fix, enable_session_mode, NULL); + g_main_loop_run(fix->main_loop); + + fix->manager_changed = NULL; } static void teardown_cb(struct test_fix *fix, gconstpointer data) { util_call(fix, disable_session_mode, NULL); + util_idle_call(fix, util_quit_loop, NULL); + g_main_loop_run(fix->main_loop); util_teardown(fix, data); diff --git a/unit/utils.c b/unit/utils.c index 9664463..6ff1c71 100644 --- a/unit/utils.c +++ b/unit/utils.c @@ -91,6 +91,9 @@ static void manager_changed(struct test_fix *fix, fix->manager.state = g_strdup(value); } + + if (fix->manager_changed != NULL) + fix->manager_changed(fix); } static gboolean handle_manager_changed(DBusConnection *connection,