static gboolean
e_test_server_utils_bootstrap_timeout (FixturePair *pair)
{
- ESource *source = NULL;
+ g_error ("Timed out while waiting for ESource creation from the registry");
+ return FALSE;
+}
+
+static void
+e_test_server_utils_source_added (ESourceRegistry *registry,
+ ESource *source,
+ FixturePair *pair)
+{
GError *error = NULL;
switch (pair->closure->type) {
case E_TEST_SERVER_ADDRESS_BOOK:
- source = e_source_registry_ref_source (pair->fixture->registry, ADDRESS_BOOK_SOURCE_UID);
- if (!source)
- g_error ("Unable to fetch newly created addressbook source from the registry");
+ if (g_strcmp0 (e_source_get_uid (source), ADDRESS_BOOK_SOURCE_UID) != 0)
+ return;
pair->fixture->service.book_client = e_book_client_new (source, &error);
if (!pair->fixture->service.book_client)
break;
case E_TEST_SERVER_DEPRECATED_ADDRESS_BOOK:
- source = e_source_registry_ref_source (pair->fixture->registry, ADDRESS_BOOK_SOURCE_UID);
- if (!source)
- g_error ("Unable to fetch newly created addressbook source from the registry");
+ if (g_strcmp0 (e_source_get_uid (source), ADDRESS_BOOK_SOURCE_UID) != 0)
+ return;
pair->fixture->service.book = e_book_new (source, &error);
if (!pair->fixture->service.book)
break;
case E_TEST_SERVER_CALENDAR:
- source = e_source_registry_ref_source (pair->fixture->registry, CALENDAR_SOURCE_UID);
- if (!source)
- g_error ("Unable to fetch newly created addressbook source from the registry");
+ if (g_strcmp0 (e_source_get_uid (source), CALENDAR_SOURCE_UID) != 0)
+ return;
pair->fixture->service.calendar_client = e_cal_client_new (source,
pair->closure->calendar_source_type,
break;
case E_TEST_SERVER_DEPRECATED_CALENDAR:
- source = e_source_registry_ref_source (pair->fixture->registry, CALENDAR_SOURCE_UID);
- if (!source)
- g_error ("Unable to fetch newly created addressbook source from the registry");
+ if (g_strcmp0 (e_source_get_uid (source), CALENDAR_SOURCE_UID) != 0)
+ return;
pair->fixture->service.calendar = e_cal_new (source, pair->closure->calendar_source_type);
if (!pair->fixture->service.calendar)
break;
case E_TEST_SERVER_NONE:
- break;
+ return;
}
- if (source)
- g_object_unref (source);
-
g_main_loop_quit (pair->fixture->loop);
-
- return FALSE;
}
static gboolean
if (!pair->fixture->registry)
g_error ("Unable to create the test registry: %s", error->message);
+ g_signal_connect (pair->fixture->registry, "source-added",
+ G_CALLBACK (e_test_server_utils_source_added), pair);
+
/* Create an address book */
switch (pair->closure->type) {
case E_TEST_SERVER_ADDRESS_BOOK:
}
if (pair->closure->type != E_TEST_SERVER_NONE)
- g_timeout_add (20, (GSourceFunc) e_test_server_utils_bootstrap_timeout, pair);
+ g_timeout_add (20 * 1000, (GSourceFunc) e_test_server_utils_bootstrap_timeout, pair);
else
g_main_loop_quit (pair->fixture->loop);
g_idle_add ((GSourceFunc) e_test_server_utils_bootstrap_idle, &pair);
g_main_loop_run (fixture->loop);
+ g_signal_handlers_disconnect_by_func (fixture->registry, e_test_server_utils_source_added, &pair);
}
/**
#include "e-test-server-utils.h"
+#define N_CYCLES 10
+
static ETestServerClosure registry_closure = { E_TEST_SERVER_NONE, NULL, 0 };
static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
static ETestServerClosure calendar_closure = { E_TEST_SERVER_CALENDAR, NULL, E_CAL_CLIENT_SOURCE_TYPE_EVENTS };
main (gint argc,
gchar *argv[])
{
+ gchar **registry_keys;
+ gchar **book_keys;
+ gchar **calendar_keys;
+ gchar **deprecated_book_keys;
+ gchar **deprecated_calendar_keys;
+ gint i;
+ gint ret;
+
#if !GLIB_CHECK_VERSION (2, 35, 1)
- g_type_init ();
+ g_type_init ();
#endif
- g_test_init (&argc, &argv, NULL);
-
- /* Test that internal implementations can return all kinds of type through its api */
- g_test_add ("/Fixture/Registry1", ETestServerFixture, ®istry_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Registry2", ETestServerFixture, ®istry_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Registry3", ETestServerFixture, ®istry_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Registry4", ETestServerFixture, ®istry_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
-
- g_test_add ("/Fixture/Book1", ETestServerFixture, &book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Book2", ETestServerFixture, &book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Book3", ETestServerFixture, &book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Book4", ETestServerFixture, &book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
-
- g_test_add ("/Fixture/Calendar1", ETestServerFixture, &calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Calendar2", ETestServerFixture, &calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Calendar3", ETestServerFixture, &calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Calendar4", ETestServerFixture, &calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
-
- g_test_add ("/Fixture/Deprecated/Book1", ETestServerFixture, &deprecated_book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Book2", ETestServerFixture, &deprecated_book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Book3", ETestServerFixture, &deprecated_book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Book4", ETestServerFixture, &deprecated_book_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
-
- g_test_add ("/Fixture/Deprecated/Calendar1", ETestServerFixture, &deprecated_calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Calendar2", ETestServerFixture, &deprecated_calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Calendar3", ETestServerFixture, &deprecated_calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
- g_test_add ("/Fixture/Deprecated/Calendar4", ETestServerFixture, &deprecated_calendar_closure,
- e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
-
- return e_test_server_utils_run ();
+ g_test_init (&argc, &argv, NULL);
+
+ registry_keys = g_new0 (gchar *, N_CYCLES);
+ book_keys = g_new0 (gchar *, N_CYCLES);
+ calendar_keys = g_new0 (gchar *, N_CYCLES);
+ deprecated_book_keys = g_new0 (gchar *, N_CYCLES);
+ deprecated_calendar_keys = g_new0 (gchar *, N_CYCLES);
+
+ for (i = 0; i < N_CYCLES; i++) {
+ registry_keys[i] = g_strdup_printf ("/Fixture/Registry%d", i);
+ g_test_add (registry_keys[i], ETestServerFixture, ®istry_closure,
+ e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
+ }
+
+ for (i = 0; i < N_CYCLES; i++) {
+ book_keys[i] = g_strdup_printf ("/Fixture/Book%d", i);
+ g_test_add (book_keys[i], ETestServerFixture, &book_closure,
+ e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
+ }
+
+ for (i = 0; i < N_CYCLES; i++) {
+ calendar_keys[i] = g_strdup_printf ("/Fixture/Calendar%d", i);
+ g_test_add (calendar_keys[i], ETestServerFixture, &calendar_closure,
+ e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
+ }
+
+ for (i = 0; i < N_CYCLES; i++) {
+ deprecated_book_keys[i] = g_strdup_printf ("/Fixture/Deprecated/Book%d", i);
+ g_test_add (deprecated_book_keys[i], ETestServerFixture, &deprecated_book_closure,
+ e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
+ }
+
+ for (i = 0; i < N_CYCLES; i++) {
+ deprecated_calendar_keys[i] = g_strdup_printf ("/Fixture/Deprecated/Calendar%d", i);
+ g_test_add (deprecated_calendar_keys[i], ETestServerFixture, &deprecated_calendar_closure,
+ e_test_server_utils_setup, empty_test, e_test_server_utils_teardown);
+ }
+
+ ret = e_test_server_utils_run ();
+
+ for (i = 0; i < N_CYCLES; i++) {
+ g_free (registry_keys[i]);
+ g_free (book_keys[i]);
+ g_free (calendar_keys[i]);
+ g_free (deprecated_book_keys[i]);
+ g_free (deprecated_calendar_keys[i]);
+ }
+
+ g_free (registry_keys);
+ g_free (book_keys);
+ g_free (calendar_keys);
+ g_free (deprecated_book_keys);
+ g_free (deprecated_calendar_keys);
+
+ return ret;
}