summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2016-01-25 16:00:32 +1300
committerRobert Ancell <robert.ancell@canonical.com>2016-01-25 16:00:32 +1300
commitb1231a284fdec2074bc3bfd19036d3dffa44033c (patch)
tree8ebc8bb7d0d70bf9180a99233ddc9780711d110f
parent3c438ca4a21212f21618889d35fe0637aa8c33be (diff)
downloadlightdm-b1231a284fdec2074bc3bfd19036d3dffa44033c.tar.gz
Add a test for adding local X servers
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/scripts/add-local-x-seat.conf47
-rw-r--r--tests/src/test-runner.c19
-rwxr-xr-xtests/test-add-local-x-seat2
4 files changed, 70 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 38b1f4ec..770d96a5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -208,6 +208,7 @@ TESTS = \
test-power-no-services-gobject \
test-open-file-descriptors \
test-xdmcp-server-open-file-descriptors \
+ test-add-local-x-seat \
test-multi-seat \
test-multi-seat-seat0-non-graphical \
test-multi-seat-seat0-non-graphical-disabled \
@@ -386,6 +387,7 @@ EXTRA_DIST = \
data/sessions/wayland.desktop \
scripts/0-additional.conf \
scripts/1-additional.conf \
+ scripts/add-local-x-seat.conf \
scripts/additional-config.conf \
scripts/additional-config-priority.conf \
scripts/additional-system-config.conf \
diff --git a/tests/scripts/add-local-x-seat.conf b/tests/scripts/add-local-x-seat.conf
new file mode 100644
index 00000000..02f70fa8
--- /dev/null
+++ b/tests/scripts/add-local-x-seat.conf
@@ -0,0 +1,47 @@
+#
+# Check can run a local X server on demand
+#
+
+# Start a remote X server to use
+#?*START-XSERVER ARGS=":98 -listen tcp"
+#?XSERVER-98 START LISTEN-TCP
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Register the local X server with LightDM
+#?*ADD-LOCAL-X-SEAT DISPLAY=98
+
+# LightDM connects to X server
+#?XSERVER-98 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-127.0.0.1:98 START XDG_SEAT=xremote0 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-98 ACCEPT-CONNECT
+#?GREETER-X-127.0.0.1:98 CONNECT-XSERVER
+#?GREETER-X-127.0.0.1:98 CONNECT-TO-DAEMON
+#?GREETER-X-127.0.0.1:98 CONNECTED-TO-DAEMON
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?GREETER-X-127.0.0.1:98 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c
index 479a2ffa..5694e5f4 100644
--- a/tests/src/test-runner.c
+++ b/tests/src/test-runner.c
@@ -557,6 +557,25 @@ handle_command (const gchar *command)
if (v)
seat->can_multi_session = strcmp (v, "TRUE") == 0;
}
+ else if (strcmp (name, "ADD-LOCAL-X-SEAT") == 0)
+ {
+ GVariant *result;
+ const gchar *v;
+
+ v = g_hash_table_lookup (params, "DISPLAY");
+ result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL),
+ "org.freedesktop.DisplayManager",
+ "/org/freedesktop/DisplayManager",
+ "org.freedesktop.DisplayManager",
+ "AddLocalXSeat",
+ g_variant_new ("(i)", v ? atoi (v) : -1),
+ G_VARIANT_TYPE ("(o)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ G_MAXINT,
+ NULL,
+ NULL);
+ g_variant_unref (result);
+ }
else if (strcmp (name, "UPDATE-SEAT") == 0)
{
Login1Seat *seat;
diff --git a/tests/test-add-local-x-seat b/tests/test-add-local-x-seat
new file mode 100755
index 00000000..b64eedbc
--- /dev/null
+++ b/tests/test-add-local-x-seat
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner add-local-x-seat test-gobject-greeter