diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2015-05-14 13:23:05 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2015-05-14 13:23:05 +1200 |
commit | 015c9937df08acb97063ae52e90e92b130e9d167 (patch) | |
tree | 6fef2628aef747f06459defb569fd6b347adf26b /tests | |
parent | 2f5a6e856f88fedd27dc2defeecf3f8300b9be4e (diff) | |
download | lightdm-015c9937df08acb97063ae52e90e92b130e9d167.tar.gz |
Improve Xvnc tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scripts/vnc-command.conf | 16 | ||||
-rw-r--r-- | tests/scripts/vnc-dimensions.conf | 16 | ||||
-rw-r--r-- | tests/scripts/vnc-guest.conf | 18 | ||||
-rw-r--r-- | tests/scripts/vnc-login.conf | 18 | ||||
-rw-r--r-- | tests/scripts/vnc-open-file-descriptors.conf | 18 | ||||
-rw-r--r-- | tests/src/Xvnc.c | 65 | ||||
-rw-r--r-- | tests/src/test-runner.c | 1 |
7 files changed, 93 insertions, 59 deletions
diff --git a/tests/scripts/vnc-command.conf b/tests/scripts/vnc-command.conf index 3a974b10..fc2bbcb6 100644 --- a/tests/scripts/vnc-command.conf +++ b/tests/scripts/vnc-command.conf @@ -19,22 +19,22 @@ command=Xvnc -option #?VNC-CLIENT CONNECT # Xvnc server starts -#?XSERVER-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=TRUE +#?XVNC-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=TRUE # Daemon connects when X server is ready -#?*XSERVER-0 INDICATE-READY -#?XSERVER-0 INDICATE-READY -#?XSERVER-0 ACCEPT-CONNECT +#?*XVNC-0 INDICATE-READY +#?XVNC-0 INDICATE-READY +#?XVNC-0 ACCEPT-CONNECT # Negotiate with Xvnc -#?*XSERVER-0 START-VNC +#?*XVNC-0 START-VNC #?VNC-CLIENT CONNECTED VERSION="RFB 003.007" -#?XSERVER-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" +#?XVNC-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" # Greeter starts and connects to remote X server #?GREETER-X-0 START XDG_SESSION_CLASS=greeter #?LOGIN1 ACTIVATE-SESSION SESSION=c0 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?GREETER-X-0 CONNECT-XSERVER #?GREETER-X-0 CONNECT-TO-DAEMON #?GREETER-X-0 CONNECTED-TO-DAEMON @@ -42,5 +42,5 @@ command=Xvnc -option # Clean up #?*STOP-DAEMON #?GREETER-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 +#?XVNC-0 TERMINATE SIGNAL=15 #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-dimensions.conf b/tests/scripts/vnc-dimensions.conf index 8acfff16..0e835138 100644 --- a/tests/scripts/vnc-dimensions.conf +++ b/tests/scripts/vnc-dimensions.conf @@ -21,22 +21,22 @@ depth=16 #?VNC-CLIENT CONNECT # Xvnc server starts -#?XSERVER-0 START GEOMETRY=1440x900 DEPTH=16 OPTION=FALSE +#?XVNC-0 START GEOMETRY=1440x900 DEPTH=16 OPTION=FALSE # Daemon connects when X server is ready -#?*XSERVER-0 INDICATE-READY -#?XSERVER-0 INDICATE-READY -#?XSERVER-0 ACCEPT-CONNECT +#?*XVNC-0 INDICATE-READY +#?XVNC-0 INDICATE-READY +#?XVNC-0 ACCEPT-CONNECT # Negotiate with Xvnc -#?*XSERVER-0 START-VNC +#?*XVNC-0 START-VNC #?VNC-CLIENT CONNECTED VERSION="RFB 003.007" -#?XSERVER-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" +#?XVNC-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" # Greeter starts and connects to remote X server #?GREETER-X-0 START XDG_SESSION_CLASS=greeter #?LOGIN1 ACTIVATE-SESSION SESSION=c0 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?GREETER-X-0 CONNECT-XSERVER #?GREETER-X-0 CONNECT-TO-DAEMON #?GREETER-X-0 CONNECTED-TO-DAEMON @@ -44,5 +44,5 @@ depth=16 # Clean up #?*STOP-DAEMON #?GREETER-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 +#?XVNC-0 TERMINATE SIGNAL=15 #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-guest.conf b/tests/scripts/vnc-guest.conf index 10549d93..2d394f12 100644 --- a/tests/scripts/vnc-guest.conf +++ b/tests/scripts/vnc-guest.conf @@ -21,24 +21,24 @@ user-session=default #?VNC-CLIENT CONNECT # Xvnc server starts -#?XSERVER-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE +#?XVNC-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE # Daemon connects when X server is ready -#?*XSERVER-0 INDICATE-READY -#?XSERVER-0 INDICATE-READY -#?XSERVER-0 ACCEPT-CONNECT +#?*XVNC-0 INDICATE-READY +#?XVNC-0 INDICATE-READY +#?XVNC-0 ACCEPT-CONNECT # Negotiate with Xvnc -#?*XSERVER-0 START-VNC +#?*XVNC-0 START-VNC #?VNC-CLIENT CONNECTED VERSION="RFB 003.007" # VNC client connects to X server -#?XSERVER-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" +#?XVNC-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" # Greeter starts and connects to remote X server #?GREETER-X-0 START XDG_SESSION_CLASS=greeter #?LOGIN1 ACTIVATE-SESSION SESSION=c0 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?GREETER-X-0 CONNECT-XSERVER #?GREETER-X-0 CONNECT-TO-DAEMON #?GREETER-X-0 CONNECTED-TO-DAEMON @@ -55,12 +55,12 @@ user-session=default # Guest session starts #?SESSION-X-0 START XDG_GREETER_DATA_DIR=.*/guest-.* XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=guest-.* #?LOGIN1 ACTIVATE-SESSION SESSION=c1 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?SESSION-X-0 CONNECT-XSERVER # Clean up #?*STOP-DAEMON #?SESSION-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 +#?XVNC-0 TERMINATE SIGNAL=15 #?GUEST-ACCOUNT REMOVE USERNAME=guest-.* #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-login.conf b/tests/scripts/vnc-login.conf index 63d951eb..2ba177dc 100644 --- a/tests/scripts/vnc-login.conf +++ b/tests/scripts/vnc-login.conf @@ -21,24 +21,24 @@ user-session=default #?VNC-CLIENT CONNECT # Xvnc server starts -#?XSERVER-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE +#?XVNC-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE # Daemon connects when X server is ready -#?*XSERVER-0 INDICATE-READY -#?XSERVER-0 INDICATE-READY -#?XSERVER-0 ACCEPT-CONNECT +#?*XVNC-0 INDICATE-READY +#?XVNC-0 INDICATE-READY +#?XVNC-0 ACCEPT-CONNECT # Negotiate with Xvnc -#?*XSERVER-0 START-VNC +#?*XVNC-0 START-VNC #?VNC-CLIENT CONNECTED VERSION="RFB 003.007" # VNC client connects to X server -#?XSERVER-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" +#?XVNC-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" # Greeter starts and connects to remote X server #?GREETER-X-0 START XDG_SESSION_CLASS=greeter #?LOGIN1 ACTIVATE-SESSION SESSION=c0 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?GREETER-X-0 CONNECT-XSERVER #?GREETER-X-0 CONNECT-TO-DAEMON #?GREETER-X-0 CONNECTED-TO-DAEMON @@ -54,11 +54,11 @@ user-session=default # Session starts #?SESSION-X-0 START XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 #?LOGIN1 ACTIVATE-SESSION SESSION=c1 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?SESSION-X-0 CONNECT-XSERVER # Clean up #?*STOP-DAEMON #?SESSION-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 +#?XVNC-0 TERMINATE SIGNAL=15 #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-open-file-descriptors.conf b/tests/scripts/vnc-open-file-descriptors.conf index 454e449b..323fa39f 100644 --- a/tests/scripts/vnc-open-file-descriptors.conf +++ b/tests/scripts/vnc-open-file-descriptors.conf @@ -21,23 +21,23 @@ user-session=default #?VNC-CLIENT CONNECT # Xvnc server starts -#?XSERVER-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE +#?XVNC-0 START GEOMETRY=1024x768 DEPTH=8 OPTION=FALSE # Daemon connects when X server is ready -#?*XSERVER-0 INDICATE-READY -#?XSERVER-0 INDICATE-READY -#?XSERVER-0 ACCEPT-CONNECT +#?*XVNC-0 INDICATE-READY +#?XVNC-0 INDICATE-READY +#?XVNC-0 ACCEPT-CONNECT # Negotiate with Xvnc -#?*XSERVER-0 START-VNC +#?*XVNC-0 START-VNC #?VNC-CLIENT CONNECTED VERSION="RFB 003.007" -#?XSERVER-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" +#?XVNC-0 VNC-CLIENT-CONNECT VERSION="RFB 003.003" # Greeter starts and connects to remote X server #?GREETER-X-0 START XDG_SESSION_CLASS=greeter #?LOGIN1 ACTIVATE-SESSION SESSION=c0 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?GREETER-X-0 CONNECT-XSERVER #?GREETER-X-0 CONNECT-TO-DAEMON #?GREETER-X-0 CONNECTED-TO-DAEMON @@ -53,7 +53,7 @@ user-session=default # Session starts #?SESSION-X-0 START XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 #?LOGIN1 ACTIVATE-SESSION SESSION=c1 -#?XSERVER-0 ACCEPT-CONNECT +#?XVNC-0 ACCEPT-CONNECT #?SESSION-X-0 CONNECT-XSERVER # Check file descriptors @@ -63,5 +63,5 @@ user-session=default # Clean up #?*STOP-DAEMON #?SESSION-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 +#?XVNC-0 TERMINATE SIGNAL=15 #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/src/Xvnc.c b/tests/src/Xvnc.c index 971ddcef..56dada4f 100644 --- a/tests/src/Xvnc.c +++ b/tests/src/Xvnc.c @@ -3,6 +3,7 @@ #include <string.h> #include <sys/types.h> #include <unistd.h> +#include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <gio/gio.h> @@ -13,6 +14,7 @@ #include "x-authority.h" static GMainLoop *loop; +static int exit_status = EXIT_SUCCESS; static GKeyFile *config; @@ -43,8 +45,8 @@ cleanup (void) static void quit (int status) { - cleanup (); - exit (status); + exit_status = status; + g_main_loop_quit (loop); } static gboolean @@ -73,15 +75,8 @@ sigterm_cb (gpointer user_data) static void client_connected_cb (XServer *server, XClient *client) { - gchar *auth_error = NULL; - status_notify ("%s ACCEPT-CONNECT", id); - - if (auth_error) - x_client_send_failed (client, auth_error); - else - x_client_send_success (client); - g_free (auth_error); + x_client_send_success (client); } static void @@ -146,6 +141,7 @@ request_cb (const gchar *name, GHashTable *params) int main (int argc, char **argv) { + int i; char *pid_string; gboolean use_inetd = FALSE; gboolean has_option = FALSE; @@ -153,7 +149,6 @@ main (int argc, char **argv) gint depth = 8; gchar *lock_filename; int lock_file; - int i; #if !defined(GLIB_VERSION_2_36) g_type_init (); @@ -220,7 +215,7 @@ main (int argc, char **argv) } } - id = g_strdup_printf ("XSERVER-%d", display_number); + id = g_strdup_printf ("XVNC-%d", display_number); status_connect (request_cb, id); @@ -250,6 +245,44 @@ main (int argc, char **argv) lock_file = open (lock_path, O_CREAT | O_EXCL | O_WRONLY, 0444); if (lock_file < 0) { + char *lock_contents = NULL; + + if (g_file_get_contents (lock_path, &lock_contents, NULL, NULL)) + { + gchar *proc_filename; + pid_t pid; + + pid = atol (lock_contents); + g_free (lock_contents); + + proc_filename = g_strdup_printf ("/proc/%d", pid); + if (!g_file_test (proc_filename, G_FILE_TEST_EXISTS)) + { + gchar *socket_dir; + gchar *socket_filename; + gchar *socket_path; + + socket_dir = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "tmp", ".X11-unix", NULL); + g_mkdir_with_parents (socket_dir, 0755); + + socket_filename = g_strdup_printf ("X%d", display_number); + socket_path = g_build_filename (socket_dir, socket_filename, NULL); + + g_printerr ("Breaking lock on non-existant process %d\n", pid); + unlink (lock_path); + unlink (socket_path); + + g_free (socket_dir); + g_free (socket_filename); + g_free (socket_path); + } + g_free (proc_filename); + + lock_file = open (lock_path, O_CREAT | O_EXCL | O_WRONLY, 0444); + } + } + if (lock_file < 0) + { fprintf (stderr, "Fatal server error:\n" "Server is already active for display %d\n" @@ -257,22 +290,22 @@ main (int argc, char **argv) " and start again.\n", display_number, lock_path); g_free (lock_path); lock_path = NULL; - quit (EXIT_FAILURE); + return EXIT_FAILURE; } pid_string = g_strdup_printf ("%10ld", (long) getpid ()); if (write (lock_file, pid_string, strlen (pid_string)) < 0) { g_warning ("Error writing PID file: %s", strerror (errno)); - quit (EXIT_FAILURE); + return EXIT_FAILURE; } g_free (pid_string); if (!x_server_start (xserver)) - quit (EXIT_FAILURE); + return EXIT_FAILURE; g_main_loop_run (loop); cleanup (); - return EXIT_SUCCESS; + return exit_status; } diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index fad4b746..5d8ae691 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -966,6 +966,7 @@ handle_command (const gchar *command) else if (g_str_has_prefix (name, "SESSION-") || g_str_has_prefix (name, "GREETER-") || g_str_has_prefix (name, "XSERVER-") || + g_str_has_prefix (name, "XVNC-") || strcmp (name, "UNITY-SYSTEM-COMPOSITOR") == 0) { GList *link; |