diff options
Diffstat (limited to 'tests/dbus/test-tpl-log-walker.c')
-rw-r--r-- | tests/dbus/test-tpl-log-walker.c | 463 |
1 files changed, 0 insertions, 463 deletions
diff --git a/tests/dbus/test-tpl-log-walker.c b/tests/dbus/test-tpl-log-walker.c deleted file mode 100644 index b924a12..0000000 --- a/tests/dbus/test-tpl-log-walker.c +++ /dev/null @@ -1,463 +0,0 @@ -#include "config.h" - -#include <string.h> - -#include "lib/simple-account.h" -#include "lib/util.h" - -#include "telepathy-logger/call-event.h" -#include "telepathy-logger/debug-internal.h" -#include "telepathy-logger/log-manager.h" -#include "telepathy-logger/text-event.h" - -#include <telepathy-glib/telepathy-glib.h> -#include <telepathy-glib/telepathy-glib-dbus.h> -#include <glib.h> - -#define DEBUG_FLAG TPL_DEBUG_TESTSUITE - - -typedef struct -{ - GList *events; - GMainLoop *main_loop; - TplLogManager *manager; - TpAccount *account; - TpDBusDaemon *bus; - TpClientFactory *factory; - TpTestsSimpleAccount *account_service; -} WalkerTestCaseFixture; - - -static void -account_prepare_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - WalkerTestCaseFixture *fixture = user_data; - GError *error = NULL; - - tp_proxy_prepare_finish (source, result, &error); - g_assert_no_error (error); - - g_main_loop_quit (fixture->main_loop); -} - - -static void -setup (WalkerTestCaseFixture* fixture, - gconstpointer user_data) -{ - GArray *features; - GError *error = NULL; - GHashTable *params = (GHashTable *) user_data; - GValue *boxed_params; - const gchar *account_path; - - fixture->main_loop = g_main_loop_new (NULL, FALSE); - g_assert (fixture->main_loop != NULL); - - fixture->manager = tpl_log_manager_dup_singleton (); - - fixture->bus = tp_tests_dbus_daemon_dup_or_die (); - g_assert (fixture->bus != NULL); - - tp_dbus_daemon_request_name (fixture->bus, - TP_ACCOUNT_MANAGER_BUS_NAME, - FALSE, - &error); - g_assert_no_error (error); - - /* Create service-side Account object with the passed parameters */ - fixture->account_service = g_object_new (TP_TESTS_TYPE_SIMPLE_ACCOUNT, - NULL); - g_assert (fixture->account_service != NULL); - - /* account-path will be set-up as parameter as well, this is not an issue */ - account_path = tp_asv_get_string (params, "account-path"); - g_assert (account_path != NULL); - - boxed_params = tp_g_value_slice_new_boxed (TP_HASH_TYPE_STRING_VARIANT_MAP, - params); - g_object_set_property (G_OBJECT (fixture->account_service), - "parameters", - boxed_params); - tp_g_value_slice_free (boxed_params); - - tp_dbus_daemon_register_object (fixture->bus, - account_path, - fixture->account_service); - - fixture->factory = tp_client_factory_new (fixture->bus); - g_assert (fixture->factory != NULL); - - fixture->account = tp_client_factory_ensure_account (fixture->factory, - tp_asv_get_string (params, "account-path"), - params, - &error); - g_assert_no_error (error); - g_assert (fixture->account != NULL); - - features = tp_client_factory_dup_account_features (fixture->factory, - fixture->account); - - tp_proxy_prepare_async (fixture->account, - (GQuark *) features->data, - account_prepare_cb, - fixture); - g_free (features->data); - g_array_free (features, FALSE); - - g_main_loop_run (fixture->main_loop); - - tp_debug_divert_messages (g_getenv ("TPL_LOGFILE")); - -#ifdef ENABLE_DEBUG - _tpl_debug_set_flags_from_env (); -#endif /* ENABLE_DEBUG */ -} - - -static void -teardown (WalkerTestCaseFixture *fixture, - gconstpointer user_data) -{ - GError *error = NULL; - - tp_dbus_daemon_release_name (fixture->bus, - TP_ACCOUNT_MANAGER_BUS_NAME, - &error); - g_assert_no_error (error); - - g_clear_object (&fixture->account); - g_clear_object (&fixture->factory); - - tp_dbus_daemon_unregister_object (fixture->bus, fixture->account_service); - g_clear_object (&fixture->account_service); - - g_clear_object (&fixture->bus); - g_clear_object (&fixture->manager); - g_main_loop_unref (fixture->main_loop); -} - - -static gboolean -filter_events (TplEvent *event, gpointer user_data) -{ - const gchar *message; - - message = tpl_text_event_get_message (TPL_TEXT_EVENT (event)); - return strstr (message, "'") == NULL; -} - - -static void -rewind_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - WalkerTestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_walker_rewind_finish (TPL_LOG_WALKER (source), - result, - &error); - g_assert_no_error (error); - - g_main_loop_quit (fixture->main_loop); -} - - -static void -rewind (WalkerTestCaseFixture *fixture, - TplLogWalker *walker, - guint num_events) -{ - tpl_log_walker_rewind_async (walker, num_events, rewind_cb, fixture); - g_main_loop_run (fixture->main_loop); -} - - -static void -get_events_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - WalkerTestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_walker_get_events_finish (TPL_LOG_WALKER (source), - result, - &fixture->events, - &error); - g_assert_no_error (error); - - g_main_loop_quit (fixture->main_loop); -} - - -static void -get_events (WalkerTestCaseFixture *fixture, - TplLogWalker *walker, - guint num_events) -{ - tpl_log_walker_get_events_async (walker, num_events, get_events_cb, fixture); - g_main_loop_run (fixture->main_loop); -} - - -static void -test_get_events_call (WalkerTestCaseFixture *fixture, - TplLogWalker *walker, - guint num_events, - gint64 timestamp, - GTimeSpan duration) -{ - GList *events; - - get_events (fixture, walker, num_events); - - events = fixture->events; - g_assert (events != NULL); - g_assert_cmpuint (g_list_length (events), ==, num_events); - g_assert_cmpint (tpl_event_get_timestamp (TPL_EVENT (events->data)), - ==, - timestamp); - g_assert_cmpint (tpl_call_event_get_duration (TPL_CALL_EVENT (events->data)), - ==, - duration); - g_list_free_full (events, g_object_unref); -} - - -static void -test_get_events_text (WalkerTestCaseFixture *fixture, - TplLogWalker *walker, - guint num_events, - gint64 timestamp, - const gchar *message) -{ - GList *events; - - get_events (fixture, walker, num_events); - - events = fixture->events; - g_assert (events != NULL); - g_assert_cmpuint (g_list_length (events), ==, num_events); - g_assert_cmpint (tpl_event_get_timestamp (TPL_EVENT (events->data)), - ==, - timestamp); - g_assert_cmpstr (tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)), - ==, - message); - g_list_free_full (events, g_object_unref); -} - - -static void -test_get_events (WalkerTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *events; - TplEntity *user5; - TplLogWalker *walker; - - user5 = tpl_entity_new ("user5@collabora.co.uk", TPL_ENTITY_CONTACT, - "User5", ""); - - /* Both text and call events without a filter */ - walker = tpl_log_manager_walk_filtered_events (fixture->manager, - fixture->account, - user5, - TPL_EVENT_MASK_ANY, - NULL, - NULL); - - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 2, 1263427264, "L''"); - test_get_events_text (fixture, walker, 5, 1263427262, "J"); - test_get_events_text (fixture, walker, 1, 1263427261, "I'''"); - test_get_events_text (fixture, walker, 5, 1263427205, "12"); - test_get_events_text (fixture, walker, 2, 1263427202, "11'"); - test_get_events_call (fixture, walker, 4, 1263404881, 1); - test_get_events_text (fixture, walker, 4, 1263254401, "5''"); - test_get_events_text (fixture, walker, 2, 1263254401, "5"); - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 3, 1263168066, "H'"); - test_get_events_text (fixture, walker, 3, 1263168065, "G''"); - test_get_events_text (fixture, walker, 6, 1263168063, "E"); - test_get_events_text (fixture, walker, 1, 1263168062, "D''"); - test_get_events_text (fixture, walker, 2, 1263168062, "D"); - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 4, 1263168005, "4"); - test_get_events_text (fixture, walker, 2, 1263168003, "2"); - test_get_events_text (fixture, walker, 4, 1263081661, "A"); - - tpl_log_walker_get_events_async (walker, 2, get_events_cb, fixture); - g_main_loop_run (fixture->main_loop); - - events = fixture->events; - g_assert (events == NULL); - - g_object_unref (walker); - - /* Only text events with a filter */ - walker = tpl_log_manager_walk_filtered_events (fixture->manager, - fixture->account, - user5, - TPL_EVENT_MASK_TEXT, - filter_events, - NULL); - - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 2, 1263427263, "K"); - test_get_events_text (fixture, walker, 5, 1263427202, "11"); - test_get_events_text (fixture, walker, 1, 1263427201, "10"); - test_get_events_text (fixture, walker, 5, 1263254401, "5"); - test_get_events_text (fixture, walker, 2, 1263168065, "G"); - test_get_events_text (fixture, walker, 4, 1263168061, "C"); - test_get_events_text (fixture, walker, 2, 1263168004, "3"); - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 3, 1263168001, "0"); - test_get_events_text (fixture, walker, 2, 1263081661, "A"); - - tpl_log_walker_get_events_async (walker, 2, get_events_cb, fixture); - g_main_loop_run (fixture->main_loop); - - events = fixture->events; - g_assert (events == NULL); - - g_object_unref (walker); - g_object_unref (user5); -} - - -static void -test_rewind (WalkerTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *user5; - TplLogWalker *walker; - - user5 = tpl_entity_new ("user5@collabora.co.uk", TPL_ENTITY_CONTACT, - "User5", ""); - - /* Both text and call events without a filter */ - walker = tpl_log_manager_walk_filtered_events (fixture->manager, - fixture->account, - user5, - TPL_EVENT_MASK_ANY, - NULL, - NULL); - - rewind (fixture, walker, 8); - get_events (fixture, walker, 0); - rewind (fixture, walker, 8); - get_events (fixture, walker, 2); - rewind (fixture, walker, 8); - test_get_events_text (fixture, walker, 8, 1263427261, "I'''"); - rewind (fixture, walker, 3); - test_get_events_text (fixture, walker, 5, 1263427261, "I'"); - rewind (fixture, walker, 1); - test_get_events_text (fixture, walker, 7, 1263427202, "11"); - rewind (fixture, walker, 2); - test_get_events_call (fixture, walker, 5, 1263404881, 1); - rewind (fixture, walker, 2); - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 1, 1263404950, "9"); - rewind (fixture, walker, 0); - test_get_events_text (fixture, walker, 5, 1263254401, "5''"); - rewind (fixture, walker, 1); - test_get_events_text (fixture, walker, 8, 1263168065, "G'''"); - rewind (fixture, walker, 7); - test_get_events_text (fixture, walker, 7, 1263168065, "G'''"); - test_get_events_text (fixture, walker, 7, 1263168063, "E"); - rewind (fixture, walker, 2); - test_get_events_text (fixture, walker, 6, 1263168061, "C"); - rewind (fixture, walker, 10); - rewind (fixture, walker, 0); - rewind (fixture, walker, 5); - test_get_events_text (fixture, walker, 16, 1263168005, "4''"); - rewind (fixture, walker, 3); - test_get_events_text (fixture, walker, 6, 1263168004, "3"); - rewind (fixture, walker, 1); - test_get_events_text (fixture, walker, 6, 1263081661, "A"); - - tpl_log_walker_get_events_async (walker, 2, get_events_cb, fixture); - g_main_loop_run (fixture->main_loop); - g_assert (fixture->events == NULL); - - g_object_unref (walker); - - /* Only text events with a filter */ - walker = tpl_log_manager_walk_filtered_events (fixture->manager, - fixture->account, - user5, - TPL_EVENT_MASK_TEXT, - filter_events, - NULL); - - rewind (fixture, walker, 8); - get_events (fixture, walker, 0); - rewind (fixture, walker, 8); - get_events (fixture, walker, 2); - rewind (fixture, walker, 8); - test_get_events_text (fixture, walker, 8, 1263427201, "10"); - rewind (fixture, walker, 3); - test_get_events_text (fixture, walker, 5, 1263254406, "8"); - rewind (fixture, walker, 1); - test_get_events_text (fixture, walker, 7, 1263168064, "F"); - rewind (fixture, walker, 2); - test_get_events_text (fixture, walker, 5, 1263168061, "C"); - rewind (fixture, walker, 2); - get_events (fixture, walker, 0); - test_get_events_text (fixture, walker, 1, 1263168062, "D"); - rewind (fixture, walker, 0); - test_get_events_text (fixture, walker, 5, 1263168002, "1"); - rewind (fixture, walker, 1); - test_get_events_text (fixture, walker, 4, 1263081661, "A"); - - tpl_log_walker_get_events_async (walker, 2, get_events_cb, fixture); - g_main_loop_run (fixture->main_loop); - g_assert (fixture->events == NULL); - - g_object_unref (walker); - g_object_unref (user5); -} - - -gint main (gint argc, gchar **argv) -{ - GHashTable *params; - gint retval; - - g_type_init (); - - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - params = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_assert (params != NULL); - - g_hash_table_insert (params, "account", - tp_g_value_slice_new_static_string ("user@collabora.co.uk")); - g_hash_table_insert (params, "account-path", - tp_g_value_slice_new_static_string ( - TP_ACCOUNT_OBJECT_PATH_BASE - "gabble/jabber/user_40collabora_2eco_2euk")); - - g_test_add ("/log-walker/get-events", - WalkerTestCaseFixture, params, - setup, test_get_events, teardown); - - g_test_add ("/log-walker/rewind", - WalkerTestCaseFixture, params, - setup, test_rewind, teardown); - - retval = g_test_run (); - - g_hash_table_unref (params); - - return retval; -} |