diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2013-11-22 11:27:14 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2014-02-13 13:41:20 +0100 |
commit | bf57da537d62c5ef15b7be32818cd4a531f89d38 (patch) | |
tree | 44f73125bfae07c6648b296d24c66784b4a81708 | |
parent | 46ff06ff80b404ceb92297c4d8ca8cec40c7c51e (diff) |
context: new '--test-session' allows launching the MM daemon in the session bus
-rw-r--r-- | data/tests/org.freedesktop.ModemManager1.service.in | 2 | ||||
-rw-r--r-- | src/main.c | 5 | ||||
-rw-r--r-- | src/mm-context.c | 49 | ||||
-rw-r--r-- | src/mm-context.h | 3 |
4 files changed, 49 insertions, 10 deletions
diff --git a/data/tests/org.freedesktop.ModemManager1.service.in b/data/tests/org.freedesktop.ModemManager1.service.in index 5d107b1f..4fcbf63b 100644 --- a/data/tests/org.freedesktop.ModemManager1.service.in +++ b/data/tests/org.freedesktop.ModemManager1.service.in @@ -2,4 +2,4 @@ [D-BUS Service] Name=org.freedesktop.ModemManager1 -Exec=@abs_top_builddir@/src/ModemManager +Exec=@abs_top_builddir@/src/ModemManager --test-session @@ -125,10 +125,11 @@ main (int argc, char *argv[]) g_unix_signal_add (SIGTERM, quit_cb, NULL); g_unix_signal_add (SIGINT, quit_cb, NULL); - mm_info ("ModemManager (version " MM_DIST_VERSION ") starting..."); + mm_info ("ModemManager (version " MM_DIST_VERSION ") starting in %s bus...", + mm_context_get_test_session () ? "session" : "system"); /* Acquire name, don't allow replacement */ - name_id = g_bus_own_name (G_BUS_TYPE_SYSTEM, + name_id = g_bus_own_name (mm_context_get_test_session () ? G_BUS_TYPE_SESSION : G_BUS_TYPE_SYSTEM, MM_DBUS_SERVICE, G_BUS_NAME_OWNER_FLAGS_NONE, bus_acquired_cb, diff --git a/src/mm-context.c b/src/mm-context.c index 4a44456a..7ada188e 100644 --- a/src/mm-context.c +++ b/src/mm-context.c @@ -17,7 +17,9 @@ #include "mm-context.h" +/*****************************************************************************/ /* Application context */ + static gboolean debug; static const gchar *log_level; static const gchar *log_file; @@ -63,6 +65,38 @@ mm_context_get_relative_timestamps (void) return rel_ts; } +/*****************************************************************************/ +/* Test context */ + +static gboolean test_session; + +static const GOptionEntry test_entries[] = { + { "test-session", 0, 0, G_OPTION_ARG_NONE, &test_session, "Run in session DBus", NULL }, + { NULL } +}; + +static GOptionGroup * +test_get_option_group (void) +{ + GOptionGroup *group; + + group = g_option_group_new ("test", + "Test options", + "Show Test options", + NULL, + NULL); + g_option_group_add_entries (group, test_entries); + return group; +} + +gboolean +mm_context_get_test_session (void) +{ + return test_session; +} + +/*****************************************************************************/ + void mm_context_init (gint argc, gchar **argv) @@ -70,17 +104,18 @@ mm_context_init (gint argc, GError *error = NULL; GOptionContext *ctx; - ctx = g_option_context_new (NULL); - g_option_context_set_summary (ctx, "DBus system service to communicate with modems."); - g_option_context_add_main_entries (ctx, entries, NULL); + ctx = g_option_context_new (NULL); + g_option_context_set_summary (ctx, "DBus system service to communicate with modems."); + g_option_context_add_main_entries (ctx, entries, NULL); + g_option_context_add_group (ctx, test_get_option_group ()); if (!g_option_context_parse (ctx, &argc, &argv, &error)) { - g_warning ("%s\n", error->message); - g_error_free (error); + g_warning ("%s\n", error->message); + g_error_free (error); exit (1); - } + } - g_option_context_free (ctx); + g_option_context_free (ctx); /* Additional setup to be done on debug mode */ if (debug) { diff --git a/src/mm-context.h b/src/mm-context.h index 659a85bc..642e2b46 100644 --- a/src/mm-context.h +++ b/src/mm-context.h @@ -27,4 +27,7 @@ const gchar *mm_context_get_log_file (void); gboolean mm_context_get_timestamps (void); gboolean mm_context_get_relative_timestamps (void); +/* Testing support */ +gboolean mm_context_get_test_session (void); + #endif /* MM_CONTEXT_H */ |