~lightdm-team/lightdm/1.14

« back to all changes in this revision

Viewing changes to tests/src/X.c

  • Committer: Robert Ancell
  • Date: 2015-11-17 01:36:50 UTC
  • Revision ID: robert.ancell@canonical.com-20151117013650-mpodft6vids8h38q
Backport test improvements:
- Make XDMCP tests more controllable
- Make tests use Xorg 1.17 by default
- Add xremote tests
- Add a regression test for xserver-layout option.
- Test xserver-config option          

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
/* TRUE if we allow Unix connections */
32
32
static gboolean listen_unix = TRUE;
33
33
 
 
34
/* Configuration to use */
 
35
static gchar *config_file = NULL;
 
36
 
 
37
/* Configuration layout to use */
 
38
static gchar *layout = NULL;
 
39
 
34
40
/* Path to authority database to use */
35
41
static gchar *auth_path = NULL;
36
42
 
49
55
/* XDMCP client */
50
56
static XDMCPClient *xdmcp_client = NULL;
51
57
 
 
58
/* Session ID provided by XDMCP server */
 
59
static guint32 xdmcp_session_id = 0;
 
60
 
52
61
/* Authorization provided by XDMCP server */
53
62
static guint16 xdmcp_cookie_length = 0;
54
63
static guint8 *xdmcp_cookie = NULL;
109
118
static void
110
119
xdmcp_willing_cb (XDMCPClient *client, XDMCPWilling *message)
111
120
{
112
 
    gchar **authorization_names;
113
 
    GInetAddress *addresses[2];
114
 
 
115
121
    status_notify ("%s GOT-WILLING AUTHENTICATION-NAME=\"%s\" HOSTNAME=\"%s\" STATUS=\"%s\"", id, message->authentication_name, message->hostname, message->status);
116
 
 
117
 
    status_notify ("%s SEND-REQUEST DISPLAY-NUMBER=%d AUTHORIZATION-NAME=\"%s\" MFID=\"%s\"", id, display_number, "MIT-MAGIC-COOKIE-1", "TEST XSERVER");
118
 
 
119
 
    authorization_names = g_strsplit ("MIT-MAGIC-COOKIE-1", " ", -1);
120
 
    addresses[0] = xdmcp_client_get_local_address (client);
121
 
    addresses[1] = NULL;
122
 
    xdmcp_client_send_request (client, display_number,
123
 
                               addresses,
124
 
                               "", NULL, 0,
125
 
                               authorization_names, "TEST XSERVER");
126
 
    g_strfreev (authorization_names);
127
122
}
128
123
 
129
124
static void
131
126
{
132
127
    status_notify ("%s GOT-ACCEPT SESSION-ID=%d AUTHENTICATION-NAME=\"%s\" AUTHORIZATION-NAME=\"%s\"", id, message->session_id, message->authentication_name, message->authorization_name);
133
128
 
134
 
    /* Ignore if haven't picked a valid authorization */
135
 
    if (strcmp (message->authorization_name, "MIT-MAGIC-COOKIE-1") != 0)
136
 
        return;
 
129
    xdmcp_session_id = message->session_id;
137
130
 
138
131
    g_free (xdmcp_cookie);
139
132
    xdmcp_cookie_length = message->authorization_data_length;
140
133
    xdmcp_cookie = g_malloc (message->authorization_data_length);
141
134
    memcpy (xdmcp_cookie, message->authorization_data, message->authorization_data_length);
142
 
 
143
 
    status_notify ("%s SEND-MANAGE SESSION-ID=%d DISPLAY-NUMBER=%d DISPLAY-CLASS=\"%s\"", id, message->session_id, display_number, "DISPLAY CLASS");
144
 
    xdmcp_client_send_manage (client, message->session_id, display_number, "DISPLAY CLASS");
145
135
}
146
136
 
147
137
static void
202
192
        if (!xdmcp_client_start (xdmcp_client))
203
193
            quit (EXIT_FAILURE);
204
194
    }
 
195
 
 
196
    else if (strcmp (name, "SEND-REQUEST") == 0)
 
197
    {
 
198
        const gchar *addresses_list, *authorization_names_list, *mfid;
 
199
        gchar **list, **authorization_names;
 
200
        gsize list_length;
 
201
        gint i;
 
202
        GInetAddress **addresses;
 
203
 
 
204
        addresses_list = g_hash_table_lookup (params, "ADDRESSES");
 
205
        if (!addresses_list)
 
206
            addresses_list = "";
 
207
        authorization_names_list = g_hash_table_lookup (params, "AUTHORIZATION-NAMES");
 
208
        if (!authorization_names_list)
 
209
            authorization_names_list = "";
 
210
        mfid = g_hash_table_lookup (params, "MFID");
 
211
        if (!mfid)
 
212
            mfid = "";
 
213
 
 
214
        list = g_strsplit (addresses_list, " ", -1);
 
215
        list_length = g_strv_length (list);
 
216
        addresses = g_malloc (sizeof (GInetAddress *) * (list_length + 1));
 
217
        for (i = 0; i < list_length; i++)
 
218
            addresses[i] = g_inet_address_new_from_string (list[i]);
 
219
        addresses[i] = NULL;
 
220
        g_strfreev (list);
 
221
 
 
222
        authorization_names = g_strsplit (authorization_names_list, " ", -1);
 
223
 
 
224
        xdmcp_client_send_request (xdmcp_client, display_number,
 
225
                                   addresses,
 
226
                                   "", NULL, 0,
 
227
                                   authorization_names, mfid);
 
228
        g_strfreev (authorization_names);
 
229
    }
 
230
 
 
231
    else if (strcmp (name, "SEND-MANAGE") == 0)
 
232
    {
 
233
        xdmcp_client_send_manage (xdmcp_client, xdmcp_session_id, display_number, "DISPLAY CLASS");
 
234
    }
205
235
}
206
236
 
207
237
static int
244
274
 
245
275
    xorg_version = g_key_file_get_string (config, "test-xserver-config", "version", NULL);
246
276
    if (!xorg_version)
247
 
        xorg_version = g_strdup ("1.16.0");
 
277
        xorg_version = g_strdup ("1.17.0");
248
278
    tokens = g_strsplit (xorg_version, ".", -1);
249
279
    xorg_version_major = g_strv_length (tokens) > 0 ? atoi (tokens[0]) : 0;
250
280
    xorg_version_minor = g_strv_length (tokens) > 1 ? atoi (tokens[1]) : 0;
261
291
        {
262
292
            display_number = atoi (arg + 1);
263
293
        }
 
294
        else if (strcmp (arg, "-config") == 0)
 
295
        {
 
296
            config_file = argv[i+1];
 
297
            i++;
 
298
        }
 
299
        else if (strcmp (arg, "-layout") == 0)
 
300
        {
 
301
            layout = argv[i+1];
 
302
            i++;
 
303
        }
264
304
        else if (strcmp (arg, "-auth") == 0)
265
305
        {
266
306
            auth_path = argv[i+1];
345
385
        {
346
386
            g_printerr ("Unrecognized option: %s\n"
347
387
                        "Use: %s [:<display>] [option]\n"
 
388
                        "-config file           Specify a configuration file\n"
 
389
                        "-layout name           Specify the ServerLayout section name\n"
348
390
                        "-auth file             Select authorization file\n"
349
391
                        "-nolisten protocol     Don't listen on protocol\n"
350
392
                        "-listen protocol       Listen on protocol\n"
374
416
 
375
417
    status_text = g_string_new ("");
376
418
    g_string_printf (status_text, "%s START", id);
 
419
    if (config_file)
 
420
        g_string_append_printf (status_text, " CONFIG=%s", config_file);
 
421
    if (layout)
 
422
        g_string_append_printf (status_text, " LAYOUT=%s", layout);
377
423
    if (vt_number >= 0)
378
424
        g_string_append_printf (status_text, " VT=%d", vt_number);
379
425
    if (listen_tcp)