Commit f59b4f92 authored by Simon McVittie's avatar Simon McVittie

test-utils: Separate failable and non-failable functions

test_object_try_whatever() now has libdbus-like OOM handling,
while test_object_whatever() has GLib-like OOM handling. This is
because an overwhelming majority of the callers of these functions
either didn't check for OOM anyway, or checked for it but then
aborted. In the uncommon case where we do care, we can use the _try_
version.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=100317Reviewed-by: Philip Withnall's avatarPhilip Withnall <withnall@endlessm.com>
Signed-off-by: Simon McVittie's avatarSimon McVittie <smcv@collabora.com>
parent 38ff6bd2
......@@ -196,8 +196,7 @@ setup (Fixture *f,
f->right_conn = dbus_bus_get_private (DBUS_BUS_SESSION, &f->e);
test_assert_no_error (&f->e);
if (!test_connection_setup (f->ctx, f->right_conn))
g_error ("OOM");
test_connection_setup (f->ctx, f->right_conn);
}
else
{
......
......@@ -251,8 +251,7 @@ setup_connection (Fixture *f,
dbus_server_set_new_connection_function (f->server,
new_conn_cb, f, NULL);
if (!test_server_setup (f->loop, f->server))
g_error ("failed to set up server");
test_server_setup (f->loop, f->server);
address = dbus_server_get_address (f->server);
g_assert (address != NULL);
......@@ -261,8 +260,7 @@ setup_connection (Fixture *f,
g_assert (f->connection != NULL);
dbus_free (address);
if (!test_connection_setup (f->loop, f->connection))
g_error ("failed to set up connection");
test_connection_setup (f->loop, f->connection);
while (f->server_connection == NULL)
_dbus_loop_iterate (f->loop, TRUE);
......
......@@ -29,7 +29,7 @@ new_connection_callback (DBusServer *server,
{
TestServiceData *testdata = data;
if (!test_connection_setup (testdata->loop, new_connection))
if (!test_connection_try_setup (testdata->loop, new_connection))
dbus_connection_close (new_connection);
}
......@@ -114,8 +114,7 @@ main (int argc, char *argv[])
dbus_server_set_new_connection_function (server, new_connection_callback,
testdata, NULL);
if (!test_server_setup (loop, server))
die ("server setup failed");
test_server_setup (loop, server);
fprintf (stderr, "server running mainloop\n");
_dbus_loop_run (loop);
......
......@@ -38,8 +38,7 @@ open_destroy_shared_session_bus_connection (void)
if (loop == NULL)
die ("No memory\n");
if (!test_connection_setup (loop, connection))
die ("No memory\n");
test_connection_setup (loop, connection);
test_connection_shutdown (loop, connection);
......
......@@ -64,8 +64,7 @@ main (int argc,
if (loop == NULL)
die ("No memory\n");
if (!test_connection_setup (loop, connection))
die ("No memory\n");
test_connection_setup (loop, connection);
TestName(connection, "org.freedesktop.DBus.Test", TRUE);
TestName(connection, "org.freedesktop.DBus.Test-2", TRUE);
......
......@@ -452,9 +452,8 @@ main (int argc,
loop = _dbus_loop_new ();
if (loop == NULL)
die ("No memory\n");
if (!test_connection_setup (loop, connection))
die ("No memory\n");
test_connection_setup (loop, connection);
if (!dbus_connection_add_filter (connection,
filter_func, NULL, NULL))
......
......@@ -145,9 +145,8 @@ main (int argc,
loop = _dbus_loop_new ();
if (loop == NULL)
die ("No memory\n");
if (!test_connection_setup (loop, connection))
die ("No memory\n");
test_connection_setup (loop, connection);
if (!dbus_connection_add_filter (connection,
filter_func, NULL, NULL))
......
......@@ -346,7 +346,7 @@ test_try_connect_to_bus (TestMainContext *ctx,
g_assert (dbus_bus_get_unique_name (conn) != NULL);
if (!test_connection_setup (ctx, conn))
if (!test_connection_try_setup (ctx, conn))
{
_DBUS_SET_OOM (&error);
goto fail;
......
......@@ -98,8 +98,8 @@ cdata_new (DBusLoop *loop,
}
dbus_bool_t
test_connection_setup (TestMainContext *ctx,
DBusConnection *connection)
test_connection_try_setup (TestMainContext *ctx,
DBusConnection *connection)
{
DBusLoop *loop = ctx;
CData *cd;
......@@ -165,6 +165,14 @@ die (const char *message)
exit (1);
}
void
test_connection_setup (TestMainContext *ctx,
DBusConnection *connection)
{
if (!test_connection_try_setup (ctx, connection))
die ("Not enough memory to set up connection");
}
void
test_connection_shutdown (TestMainContext *ctx,
DBusConnection *connection)
......@@ -268,8 +276,8 @@ remove_server_timeout (DBusTimeout *timeout,
}
dbus_bool_t
test_server_setup (TestMainContext *ctx,
DBusServer *server)
test_server_try_setup (TestMainContext *ctx,
DBusServer *server)
{
DBusLoop *loop = ctx;
ServerData *sd;
......@@ -311,6 +319,14 @@ test_server_setup (TestMainContext *ctx,
return FALSE;
}
void
test_server_setup (TestMainContext *ctx,
DBusServer *server)
{
if (!test_server_try_setup (ctx, server))
die ("Not enough memory to set up server");
}
void
test_server_shutdown (TestMainContext *ctx,
DBusServer *server)
......@@ -332,6 +348,17 @@ test_server_shutdown (TestMainContext *ctx,
TestMainContext *
test_main_context_get (void)
{
TestMainContext *ret = _dbus_loop_new ();
if (ret == NULL)
die ("Out of memory");
return ret;
}
TestMainContext *
test_main_context_try_get (void)
{
return _dbus_loop_new ();
}
......
......@@ -10,18 +10,27 @@
#include <dbus/dbus-internals.h>
typedef DBusLoop TestMainContext;
_DBUS_GNUC_WARN_UNUSED_RESULT
TestMainContext *test_main_context_get (void);
_DBUS_GNUC_WARN_UNUSED_RESULT
TestMainContext *test_main_context_try_get (void);
TestMainContext *test_main_context_ref (TestMainContext *ctx);
void test_main_context_unref (TestMainContext *ctx);
void test_main_context_iterate (TestMainContext *ctx,
dbus_bool_t may_block);
dbus_bool_t test_connection_setup (TestMainContext *ctx,
_DBUS_GNUC_WARN_UNUSED_RESULT
dbus_bool_t test_connection_try_setup (TestMainContext *ctx,
DBusConnection *connection);
void test_connection_setup (TestMainContext *ctx,
DBusConnection *connection);
void test_connection_shutdown (TestMainContext *ctx,
DBusConnection *connection);
dbus_bool_t test_server_setup (TestMainContext *ctx,
_DBUS_GNUC_WARN_UNUSED_RESULT
dbus_bool_t test_server_try_setup (TestMainContext *ctx,
DBusServer *server);
void test_server_setup (TestMainContext *ctx,
DBusServer *server);
void test_server_shutdown (TestMainContext *ctx,
DBusServer *server);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment