diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-01-23 10:27:32 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-01-23 10:27:32 +0000 |
commit | 08dd53c14b53b88cf798b910952ab3832b83c24c (patch) | |
tree | 8a173b25995016e41f6ab3d093014435c77cd5da /test | |
parent | 5480536c0b2c9f89fe92a19711945b0593279116 (diff) | |
download | dbus-08dd53c14b53b88cf798b910952ab3832b83c24c.tar.gz |
Revert addition of files which were only meant to exist on master, too
This completes the reversion started in 5df8c3db12590edd68e968.
Diffstat (limited to 'test')
-rw-r--r-- | test/data/valid-config-files/incoming-limit.conf | 18 | ||||
-rw-r--r-- | test/dbus-daemon-eavesdrop.c | 555 |
2 files changed, 0 insertions, 573 deletions
diff --git a/test/data/valid-config-files/incoming-limit.conf b/test/data/valid-config-files/incoming-limit.conf deleted file mode 100644 index abfab3f7..00000000 --- a/test/data/valid-config-files/incoming-limit.conf +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - <!-- Our well-known bus type, don't change this --> - <type>session</type> - <listen>unix:tmpdir=/tmp</listen> - - <policy context="default"> - <!-- Allow everything to be sent --> - <allow send_destination="*" eavesdrop="true"/> - <!-- Allow everything to be received --> - <allow eavesdrop="true"/> - <!-- Allow anyone to own anything --> - <allow own="*"/> - </policy> - - <limit name="max_incoming_bytes">1</limit> -</busconfig> diff --git a/test/dbus-daemon-eavesdrop.c b/test/dbus-daemon-eavesdrop.c deleted file mode 100644 index 0bd923d2..00000000 --- a/test/dbus-daemon-eavesdrop.c +++ /dev/null @@ -1,555 +0,0 @@ -/* Integration tests for the eavesdrop=true|false keyword in DBusMatchRule - * - * Author: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk> - * Based on: tests/dbus-daemon.c by Simon McVittie - * Copyright © 2010-2011 Nokia Corporation - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include <config.h> - -#include <glib.h> - -#include <dbus/dbus.h> -#include <dbus/dbus-glib-lowlevel.h> - -#include <string.h> - -#ifdef DBUS_WIN -# include <io.h> -# include <windows.h> -#else -# include <signal.h> -# include <unistd.h> -#endif - -#define SENDER_NAME "test.eavesdrop.sender" -#define SENDER_PATH "/test/eavesdrop/sender" -#define SENDER_IFACE SENDER_NAME -#define SENDER_SIGNAL_NAME "Signal" -#define SENDER_STOPPER_NAME "Stopper" - -/* This rule is equivalent to the one added to a proxy connecting to - * SENDER_NAME+SENDER_IFACE, plus restricting on signal name. - * Being more restrictive, if the connection receives what we need, for sure - * the original proxy rule will match it */ -#define RECEIVER_RULE "sender='" SENDER_NAME "'," \ - "interface='" SENDER_IFACE "'," \ - "type='signal'," \ - "member='" SENDER_SIGNAL_NAME "'" -#define POLITELISTENER_RULE RECEIVER_RULE -#define EAVESDROPPER_RULE RECEIVER_RULE ",eavesdrop=true" - -#define STOPPER_RULE "sender='" SENDER_NAME \ - "',interface='" SENDER_IFACE "',type='signal',member='" SENDER_STOPPER_NAME "'" - -/* a connection received a signal to whom? */ -typedef enum { - NONE_YET = 0, - TO_ME, - TO_OTHER, - BROADCAST, -} SignalDst; - -typedef struct { - DBusError e; - GError *ge; - - GPid daemon_pid; - - /* eavedrop keyword tests */ - DBusConnection *sender; - DBusConnection *receiver; - SignalDst receiver_dst; - dbus_bool_t receiver_got_stopper; - DBusConnection *eavesdropper; - SignalDst eavesdropper_dst; - dbus_bool_t eavesdropper_got_stopper; - DBusConnection *politelistener; - SignalDst politelistener_dst; - dbus_bool_t politelistener_got_stopper; -} Fixture; - -#define assert_no_error(e) _assert_no_error (e, __FILE__, __LINE__) -static void -_assert_no_error (const DBusError *e, - const char *file, - int line) -{ - if (G_UNLIKELY (dbus_error_is_set (e))) - g_error ("%s:%d: expected success but got error: %s: %s", - file, line, e->name, e->message); -} - -static gchar * -spawn_dbus_daemon (gchar *binary, - gchar *configuration, - GPid *daemon_pid) -{ - GError *error = NULL; - GString *address; - gint address_fd; - gchar *argv[] = { - binary, - configuration, - "--nofork", - "--print-address=1", /* stdout */ - NULL - }; - - g_spawn_async_with_pipes (NULL, /* working directory */ - argv, - NULL, /* envp */ - G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, - NULL, /* child_setup */ - NULL, /* user data */ - daemon_pid, - NULL, /* child's stdin = /dev/null */ - &address_fd, - NULL, /* child's stderr = our stderr */ - &error); - g_assert_no_error (error); - - address = g_string_new (NULL); - - /* polling until the dbus-daemon writes out its address is a bit stupid, - * but at least it's simple, unlike dbus-launch... in principle we could - * use select() here, but life's too short */ - while (1) - { - gssize bytes; - gchar buf[4096]; - gchar *newline; - - bytes = read (address_fd, buf, sizeof (buf)); - - if (bytes > 0) - g_string_append_len (address, buf, bytes); - - newline = strchr (address->str, '\n'); - - if (newline != NULL) - { - g_string_truncate (address, newline - address->str); - break; - } - - g_usleep (G_USEC_PER_SEC / 10); - } - - return g_string_free (address, FALSE); -} - -static DBusConnection * -connect_to_bus (const gchar *address) -{ - DBusConnection *conn; - DBusError error = DBUS_ERROR_INIT; - dbus_bool_t ok; - - conn = dbus_connection_open_private (address, &error); - assert_no_error (&error); - g_assert (conn != NULL); - - ok = dbus_bus_register (conn, &error); - assert_no_error (&error); - g_assert (ok); - g_assert (dbus_bus_get_unique_name (conn) != NULL); - - dbus_connection_setup_with_g_main (conn, NULL); - return conn; -} - -/* send a unicast signal to <self> to ensure that no other connection - * listening is the actual recipient for the signal */ -static DBusHandlerResult -sender_send_unicast_to_sender (Fixture *f) -{ - DBusMessage *signal; - - signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, - SENDER_SIGNAL_NAME); - dbus_message_set_destination (signal, dbus_bus_get_unique_name (f->sender)); - - if (signal == NULL) - g_error ("OOM"); - - if (!dbus_connection_send (f->sender, signal, NULL)) - g_error ("OOM"); - - dbus_message_unref (signal); - - return DBUS_HANDLER_RESULT_HANDLED; -} - -/* send a unicast signal to <receiver>, making <politelistener> and - * <eavesdropper> not a actual recipient for it */ -static DBusHandlerResult -sender_send_unicast_to_receiver (Fixture *f) -{ - DBusMessage *signal; - - signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_SIGNAL_NAME); - dbus_message_set_destination (signal, dbus_bus_get_unique_name (f->receiver)); - - if (signal == NULL) - g_error ("OOM"); - - if (!dbus_connection_send (f->sender, signal, NULL)) - g_error ("OOM"); - - dbus_message_unref (signal); - - return DBUS_HANDLER_RESULT_HANDLED; -} - -static DBusHandlerResult -sender_send_broadcast (Fixture *f) -{ - DBusMessage *signal; - - signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_SIGNAL_NAME); - dbus_message_set_destination (signal, NULL); - - if (signal == NULL) - g_error ("OOM"); - - if (!dbus_connection_send (f->sender, signal, NULL)) - g_error ("OOM"); - - dbus_message_unref (signal); - - return DBUS_HANDLER_RESULT_HANDLED; -} - -/* Send special broadcast signal to indicate that the connections can "stop" - * listening and check their results. - * DBus does not re-order messages, so when the three connections have received - * this signal, we are sure that any message sent before it has also been - * dispatched. */ -static DBusHandlerResult -sender_send_stopper (Fixture *f) -{ - DBusMessage *signal; - - signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_STOPPER_NAME); - dbus_message_set_destination (signal, NULL); - - if (signal == NULL) - g_error ("OOM"); - - if (!dbus_connection_send (f->sender, signal, NULL)) - g_error ("OOM"); - - dbus_message_unref (signal); - - return DBUS_HANDLER_RESULT_HANDLED; -} - -/* Ignore NameAcquired, then depending on the signal received: - * - updates f-><conn>_dst based on the destination of the message - * - asserts that <conn> received the stop signal - */ -static DBusHandlerResult -signal_filter (DBusConnection *connection, - DBusMessage *message, - void *user_data) -{ - Fixture *f = user_data; - SignalDst *dst = NULL; - DBusConnection **conn; - dbus_bool_t *got_stopper; - - if (0 == strcmp (dbus_message_get_member (message), "NameAcquired")) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - if (connection == f->receiver) - { - dst = &(f->receiver_dst); - conn = &(f->receiver); - got_stopper = &(f->receiver_got_stopper); - } - else if (connection == f->eavesdropper) - { - dst = &(f->eavesdropper_dst); - conn = &(f->eavesdropper); - got_stopper = &(f->eavesdropper_got_stopper); - } - else if (connection == f->politelistener) - { - dst = &(f->politelistener_dst); - conn = &(f->politelistener); - got_stopper = &(f->politelistener_got_stopper); - } - else - { - g_error ("connection not matching"); - } - - if (0 == strcmp (dbus_message_get_member (message), SENDER_SIGNAL_NAME)) - { - if (dbus_message_get_destination (message) == NULL) - *dst = BROADCAST; - else if (0 == strcmp (dbus_message_get_destination (message), dbus_bus_get_unique_name (*conn))) - *dst = TO_ME; - else /* if (dbus_message_get_destination (message) != NULL) */ - *dst = TO_OTHER; - } - else if (0 == strcmp (dbus_message_get_member (message), SENDER_STOPPER_NAME)) - { - *got_stopper = TRUE; - } - else - { - g_error ("got unknown member from message: %s", - dbus_message_get_member (message)); - } - - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -} - -static void -add_receiver_filter (Fixture *f) -{ - DBusError e = DBUS_ERROR_INIT; - - dbus_bus_add_match (f->receiver, RECEIVER_RULE, &e); - assert_no_error (&e); - dbus_bus_add_match (f->receiver, STOPPER_RULE, &e); - assert_no_error (&e); - - if (!dbus_connection_add_filter (f->receiver, - signal_filter, f, NULL)) - g_error ("OOM"); -} - -static void -add_eavesdropper_filter (Fixture *f) -{ - DBusError e = DBUS_ERROR_INIT; - - dbus_bus_add_match (f->eavesdropper, EAVESDROPPER_RULE, &e); - assert_no_error (&e); - dbus_bus_add_match (f->eavesdropper, STOPPER_RULE, &e); - assert_no_error (&e); - - if (!dbus_connection_add_filter (f->eavesdropper, - signal_filter, f, NULL)) - g_error ("OOM"); -} - -static void -add_politelistener_filter (Fixture *f) -{ - DBusError e = DBUS_ERROR_INIT; - - dbus_bus_add_match (f->politelistener, POLITELISTENER_RULE, &e); - assert_no_error (&e); - dbus_bus_add_match (f->politelistener, STOPPER_RULE, &e); - assert_no_error (&e); - - if (!dbus_connection_add_filter (f->politelistener, - signal_filter, f, NULL)) - g_error ("OOM"); -} - -static void -setup (Fixture *f, - gconstpointer context G_GNUC_UNUSED) -{ - gchar *dbus_daemon; - gchar *config; - gchar *address; - - f->ge = NULL; - dbus_error_init (&f->e); - - dbus_daemon = g_strdup (g_getenv ("DBUS_TEST_DAEMON")); - - if (dbus_daemon == NULL) - dbus_daemon = g_strdup ("dbus-daemon"); - - if (g_getenv ("DBUS_TEST_SYSCONFDIR") != NULL) - { - config = g_strdup_printf ("--config-file=%s/dbus-1/session.conf", - g_getenv ("DBUS_TEST_SYSCONFDIR")); - } - else if (g_getenv ("DBUS_TEST_DATA") != NULL) - { - config = g_strdup_printf ( - "--config-file=%s/valid-config-files/session.conf", - g_getenv ("DBUS_TEST_DATA")); - } - else - { - config = g_strdup ("--session"); - } - - address = spawn_dbus_daemon (dbus_daemon, config, &f->daemon_pid); - - g_free (dbus_daemon); - g_free (config); - - f->sender = connect_to_bus (address); - dbus_bus_request_name (f->sender, SENDER_NAME, DBUS_NAME_FLAG_DO_NOT_QUEUE, - &(f->e)); - f->receiver = connect_to_bus (address); - f->eavesdropper = connect_to_bus (address); - f->politelistener = connect_to_bus (address); - add_receiver_filter (f); - add_politelistener_filter (f); - add_eavesdropper_filter (f); - - g_free (address); -} - -static void -test_eavesdrop_broadcast (Fixture *f, - gconstpointer context G_GNUC_UNUSED) -{ - sender_send_broadcast (f); - sender_send_stopper (f); - - while (!f->receiver_got_stopper || - !f->politelistener_got_stopper || - !f->eavesdropper_got_stopper) - g_main_context_iteration (NULL, TRUE); - - /* all the three connection can receive a broadcast */ - g_assert_cmpint (f->receiver_dst, ==, BROADCAST); - g_assert_cmpint (f->politelistener_dst, ==, BROADCAST); - g_assert_cmpint (f->eavesdropper_dst, ==, BROADCAST); -} - -/* a way to say that none of the listening connection are destination of the - * signal */ -static void -test_eavesdrop_unicast_to_sender (Fixture *f, - gconstpointer context G_GNUC_UNUSED) -{ - sender_send_unicast_to_sender (f); - sender_send_stopper (f); - - while (!f->receiver_got_stopper || - !f->politelistener_got_stopper || - !f->eavesdropper_got_stopper) - g_main_context_iteration (NULL, TRUE); - - /* not directed to it and not broadcasted, they cannot receive it */ - g_assert_cmpint (f->receiver_dst, ==, NONE_YET); - g_assert_cmpint (f->politelistener_dst, ==, NONE_YET); - /* eavesdrop=true, it will receive the signal even though it's not directed - * to it */ - g_assert_cmpint (f->eavesdropper_dst, ==, TO_OTHER); -} - -static void -test_eavesdrop_unicast_to_receiver (Fixture *f, - gconstpointer context G_GNUC_UNUSED) -{ - sender_send_unicast_to_receiver (f); - sender_send_stopper (f); - - while (!f->receiver_got_stopper || - !f->politelistener_got_stopper || - !f->eavesdropper_got_stopper) - g_main_context_iteration (NULL, TRUE); - - /* direct to him */ - g_assert_cmpint (f->receiver_dst, ==, TO_ME); - /* not directed to it and not broadcasted, it cannot receive it */ - g_assert_cmpint (f->politelistener_dst, ==, NONE_YET); - /* eavesdrop=true, it will receive the signal even though it's not directed - * to it */ - g_assert_cmpint (f->eavesdropper_dst, ==, TO_OTHER); -} - -static void -teardown (Fixture *f, - gconstpointer context G_GNUC_UNUSED) -{ - dbus_error_free (&f->e); - g_clear_error (&f->ge); - - if (f->sender != NULL) - { - dbus_connection_close (f->sender); - dbus_connection_unref (f->sender); - f->sender = NULL; - } - - if (f->receiver != NULL) - { - dbus_connection_remove_filter (f->receiver, - signal_filter, f); - - dbus_connection_close (f->receiver); - dbus_connection_unref (f->receiver); - f->receiver = NULL; - } - - if (f->politelistener != NULL) - { - dbus_connection_remove_filter (f->politelistener, - signal_filter, f); - - dbus_connection_close (f->politelistener); - dbus_connection_unref (f->politelistener); - f->politelistener = NULL; - } - - if (f->eavesdropper != NULL) - { - dbus_connection_remove_filter (f->eavesdropper, - signal_filter, f); - - dbus_connection_close (f->eavesdropper); - dbus_connection_unref (f->eavesdropper); - f->eavesdropper = NULL; - } - -#ifdef DBUS_WIN - TerminateProcess (f->daemon_pid, 1); -#else - kill (f->daemon_pid, SIGTERM); -#endif - - g_spawn_close_pid (f->daemon_pid); -} - -int -main (int argc, - char **argv) -{ - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("https://bugs.freedesktop.org/show_bug.cgi?id="); - - g_test_add ("/eavedrop/match_keyword/broadcast", Fixture, NULL, - setup, test_eavesdrop_broadcast, teardown); - g_test_add ("/eavedrop/match_keyword/unicast_to_receiver", Fixture, NULL, - setup, test_eavesdrop_unicast_to_receiver, - teardown); - g_test_add ("/eavedrop/match_keyword/unicast_to_sender", Fixture, NULL, - setup, test_eavesdrop_unicast_to_sender, teardown); - - return g_test_run (); -} |