summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2013-11-22 11:27:14 +0100
committerAleksander Morgado <aleksander@aleksander.es>2014-02-13 13:41:20 +0100
commitbf57da537d62c5ef15b7be32818cd4a531f89d38 (patch)
tree44f73125bfae07c6648b296d24c66784b4a81708
parent46ff06ff80b404ceb92297c4d8ca8cec40c7c51e (diff)
context: new '--test-session' allows launching the MM daemon in the session bus
-rw-r--r--data/tests/org.freedesktop.ModemManager1.service.in2
-rw-r--r--src/main.c5
-rw-r--r--src/mm-context.c49
-rw-r--r--src/mm-context.h3
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
diff --git a/src/main.c b/src/main.c
index 4841c3d7..ee4eaff0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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 */