[daemon-fix] Fixed sending daemon match rules for kdbus broadcasts
[platform/upstream/dbus.git] / bus / test.c
index 4071fb1..31ef4c8 100644 (file)
@@ -1,10 +1,10 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
 /* test.c  unit test routines
  *
  * Copyright (C) 2003 Red Hat, Inc.
  *
  * Licensed under the Academic Free License version 2.1
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  *
  */
 
 #include <config.h>
 
-#ifdef DBUS_BUILD_TESTS
+#ifdef DBUS_ENABLE_EMBEDDED_TESTS
 #include "test.h"
 #include <dbus/dbus-internals.h>
 #include <dbus/dbus-list.h>
+#include <dbus/dbus-sysdeps.h>
 
 /* The "debug client" watch/timeout handlers don't dispatch messages,
  * as we manually pull them in order to verify them. This is why they
@@ -36,69 +37,38 @@ static DBusList *clients = NULL;
 static DBusLoop *client_loop = NULL;
 
 static dbus_bool_t
-client_watch_callback (DBusWatch     *watch,
-                       unsigned int   condition,
-                       void          *data)
-{
-  /* FIXME this can be done in dbus-mainloop.c
-   * if the code in activation.c for the babysitter
-   * watch handler is fixed.
-   */
-  return dbus_watch_handle (watch, condition);
-}
-
-static dbus_bool_t
 add_client_watch (DBusWatch      *watch,
                   void           *data)
 {
-  DBusConnection *connection = data;
-  
-  return _dbus_loop_add_watch (client_loop,
-                               watch, client_watch_callback, connection,
-                               NULL);
+  return _dbus_loop_add_watch (client_loop, watch);
 }
 
 static void
 remove_client_watch (DBusWatch      *watch,
                      void           *data)
 {
-  DBusConnection *connection = data;
-  
-  _dbus_loop_remove_watch (client_loop,
-                           watch, client_watch_callback, connection);
+  _dbus_loop_remove_watch (client_loop, watch);
 }
 
 static void
-client_timeout_callback (DBusTimeout   *timeout,
-                         void          *data)
+toggle_client_watch (DBusWatch      *watch,
+                     void           *data)
 {
-  DBusConnection *connection = data;
-
-  dbus_connection_ref (connection);
-
-  /* can return FALSE on OOM but we just let it fire again later */
-  dbus_timeout_handle (timeout);
-
-  dbus_connection_unref (connection);
+  _dbus_loop_toggle_watch (client_loop, watch);
 }
 
 static dbus_bool_t
 add_client_timeout (DBusTimeout    *timeout,
                     void           *data)
 {
-  DBusConnection *connection = data;
-  
-  return _dbus_loop_add_timeout (client_loop, timeout, client_timeout_callback, connection, NULL);
+  return _dbus_loop_add_timeout (client_loop, timeout);
 }
 
 static void
 remove_client_timeout (DBusTimeout    *timeout,
                        void           *data)
 {
-  DBusConnection *connection = data;
-  
-  _dbus_loop_remove_timeout (client_loop, timeout, client_timeout_callback, connection);
+  _dbus_loop_remove_timeout (client_loop, timeout);
 }
 
 static DBusHandlerResult
@@ -107,30 +77,30 @@ client_disconnect_filter (DBusConnection     *connection,
                           void               *user_data)
 {
   if (!dbus_message_is_signal (message,
-                               DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL,
+                               DBUS_INTERFACE_LOCAL,
                                "Disconnected"))
     return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-    
+
   _dbus_verbose ("Removing client %p in disconnect handler\n",
                  connection);
-  
+
   _dbus_list_remove (&clients, connection);
 
   dbus_connection_unref (connection);
-  
+
   if (clients == NULL)
     {
       _dbus_loop_unref (client_loop);
       client_loop = NULL;
     }
-  
+
   return DBUS_HANDLER_RESULT_HANDLED;
 }
 
 dbus_bool_t
 bus_setup_debug_client (DBusConnection *connection)
 {
-  dbus_bool_t retval;  
+  dbus_bool_t retval;
 
   if (!dbus_connection_add_filter (connection,
                                    client_disconnect_filter,
@@ -145,15 +115,15 @@ bus_setup_debug_client (DBusConnection *connection)
       if (client_loop == NULL)
         goto out;
     }
-  
+
   if (!dbus_connection_set_watch_functions (connection,
                                             add_client_watch,
                                             remove_client_watch,
-                                            NULL,
+                                            toggle_client_watch,
                                             connection,
                                             NULL))
     goto out;
-      
+
   if (!dbus_connection_set_timeout_functions (connection,
                                               add_client_timeout,
                                               remove_client_timeout,
@@ -163,16 +133,16 @@ bus_setup_debug_client (DBusConnection *connection)
 
   if (!_dbus_list_append (&clients, connection))
     goto out;
-  
+
   retval = TRUE;
-  
+
  out:
   if (!retval)
     {
       dbus_connection_remove_filter (connection,
                                      client_disconnect_filter,
                                      NULL);
-      
+
       dbus_connection_set_watch_functions (connection,
                                            NULL, NULL, NULL, NULL, NULL);
       dbus_connection_set_timeout_functions (connection,
@@ -186,7 +156,7 @@ bus_setup_debug_client (DBusConnection *connection)
           client_loop = NULL;
         }
     }
-      
+
   return retval;
 }
 
@@ -195,7 +165,7 @@ bus_test_clients_foreach (BusConnectionForeachFunction  function,
                           void                         *data)
 {
   DBusList *link;
-  
+
   link = _dbus_list_get_first_link (&clients);
   while (link != NULL)
     {
@@ -204,7 +174,7 @@ bus_test_clients_foreach (BusConnectionForeachFunction  function,
 
       if (!(* function) (connection, data))
         break;
-      
+
       link = next;
     }
 }
@@ -213,7 +183,7 @@ dbus_bool_t
 bus_test_client_listed (DBusConnection *connection)
 {
   DBusList *link;
-  
+
   link = _dbus_list_get_first_link (&clients);
   while (link != NULL)
     {
@@ -222,7 +192,7 @@ bus_test_client_listed (DBusConnection *connection)
 
       if (c == connection)
         return TRUE;
-      
+
       link = next;
     }
 
@@ -235,11 +205,13 @@ bus_test_run_clients_loop (dbus_bool_t block_once)
   if (client_loop == NULL)
     return;
 
+  _dbus_verbose ("---> Dispatching on \"client side\"\n");
+
   /* dispatch before we block so pending dispatches
    * won't make our block return early
    */
   _dbus_loop_dispatch (client_loop);
-  
+
   /* Do one blocking wait, since we're expecting data */
   if (block_once)
     {
@@ -250,17 +222,21 @@ bus_test_run_clients_loop (dbus_bool_t block_once)
   /* Then mop everything up */
   while (_dbus_loop_iterate (client_loop, FALSE))
     ;
+
+  _dbus_verbose ("---> Done dispatching on \"client side\"\n");
 }
 
 void
 bus_test_run_bus_loop (BusContext *context,
                        dbus_bool_t block_once)
 {
+  _dbus_verbose ("---> Dispatching on \"server side\"\n");
+
   /* dispatch before we block so pending dispatches
    * won't make our block return early
    */
   _dbus_loop_dispatch (bus_context_get_loop (context));
-  
+
   /* Do one blocking wait, since we're expecting data */
   if (block_once)
     {
@@ -271,6 +247,8 @@ bus_test_run_bus_loop (BusContext *context,
   /* Then mop everything up */
   while (_dbus_loop_iterate (bus_context_get_loop (context), FALSE))
     ;
+
+  _dbus_verbose ("---> Done dispatching on \"server side\"\n");
 }
 
 void
@@ -289,7 +267,7 @@ bus_context_new_test (const DBusString *test_data_dir,
   DBusString config_file;
   DBusString relative;
   BusContext *context;
-  
+
   if (!_dbus_string_init (&config_file))
     {
       _dbus_warn ("No memory\n");
@@ -312,25 +290,25 @@ bus_context_new_test (const DBusString *test_data_dir,
       _dbus_string_free (&config_file);
       return NULL;
     }
-  
+
   dbus_error_init (&error);
-  context = bus_context_new (&config_file, FALSE, -1, -1, &error);
+  context = bus_context_new (&config_file, BUS_CONTEXT_FLAG_NONE, NULL, NULL, NULL, &error);
   if (context == NULL)
     {
       _DBUS_ASSERT_ERROR_IS_SET (&error);
-      
+
       _dbus_warn ("Failed to create debug bus context from configuration file %s: %s\n",
                   filename, error.message);
 
       dbus_error_free (&error);
-      
+
       _dbus_string_free (&config_file);
-      
+
       return NULL;
     }
 
   _dbus_string_free (&config_file);
-  
+
   return context;
 }