diff options
Diffstat (limited to 'tests/dbus')
-rw-r--r-- | tests/dbus/Makefile.am | 84 | ||||
-rw-r--r-- | tests/dbus/dbus-1/session.conf.in | 30 | ||||
-rw-r--r-- | tests/dbus/test-entity.c | 171 | ||||
-rw-r--r-- | tests/dbus/test-log-manager.c | 807 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-iter-pidgin.c | 849 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-iter-xml.c | 446 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-store-pidgin.c | 622 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-store-sqlite.c | 40 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-store-xml.c | 1120 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-walker.c | 463 | ||||
-rw-r--r-- | tests/dbus/test-tpl-observer.c | 35 |
11 files changed, 0 insertions, 4667 deletions
diff --git a/tests/dbus/Makefile.am b/tests/dbus/Makefile.am deleted file mode 100644 index 36c39d0..0000000 --- a/tests/dbus/Makefile.am +++ /dev/null @@ -1,84 +0,0 @@ -noinst_PROGRAMS = \ - test-entity \ - test-log-manager \ - test-tpl-log-store-pidgin \ - test-tpl-log-iter-pidgin \ - test-tpl-log-store-sqlite \ - test-tpl-log-store-xml \ - test-tpl-log-iter-xml \ - test-tpl-log-walker \ - test-tpl-observer \ - $(NULL) - -TESTS = $(noinst_PROGRAMS) - -LDADD = \ - $(top_builddir)/tests/lib/libtp-logger-tests.la \ - $(top_builddir)/telepathy-logger/libtelepathy-logger-1.la \ - $(TPL_LIBS) \ - $(NULL) - -test_entity_LDADD = \ - $(top_builddir)/tests/lib/libtp-logger-tests.la \ - $(LDADD) \ - $(NULL) - -check_c_sources = *.c -include $(top_srcdir)/tools/check-coding-style.mk -check-local: check-coding-style - -AM_CFLAGS = \ - $(ERROR_CFLAGS) \ - $(TPL_CFLAGS) \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - -I$(top_srcdir)/tests - $(NULL) - -TESTS_ENVIRONMENT = \ - abs_top_builddir=@abs_top_builddir@ \ - TPL_TEST_MODE=true \ - TPL_TEST_LOG_DIR=@abs_top_srcdir@/tests/logs \ - GSETTINGS_SCHEMA_DIR=@abs_srcdir@/data \ - XDG_DATA_HOME=@abs_top_builddir@/tests/logs \ - XDG_DATA_DIRS=@abs_srcdir@ \ - G_SLICE=debug-blocks \ - TPL_DEBUG=all \ - G_DEBUG=fatal_warnings,fatal_criticals$(maybe_gc_friendly) \ - $(top_srcdir)/tools/test-wrapper.sh \ - sh $(top_srcdir)/tools/with-session-bus.sh \ - --config-file=dbus-1/session.conf -- \ - $(EXTRA_TESTS_ENVIRONMENT) - -EXTRA_TESTS_ENVIRONMENT = - -check-valgrind: - $(MAKE) check-TESTS \ - maybe_gc_friendly=,gc-friendly \ - TESTS_ENVIRONMENT="$(VALGRIND_TESTS_ENVIRONMENT)" - -include $(top_srcdir)/tools/valgrind.mk - -VALGRIND_TESTS_ENVIRONMENT = \ - $(TESTS_ENVIRONMENT) \ - env G_SLICE=always-malloc CHECK_VERBOSE=1 \ - $(top_builddir)/libtool --mode=execute \ - $(VALGRIND) --suppressions=$(top_srcdir)/tests/suppressions/tpl.supp $(VALGRIND_FLAGS) - -BUILT_SOURCES = \ - dbus-1/session.conf \ - $(NULL) - -CLEANFILES = $(BUILT_SOURCES) - -distclean-local: - rm -f capture-*.log - rm -rf _gen - -EXTRA_DIST = \ - dbus-1/session.conf.in \ - $(NULL) - -dbus-1/%.conf: $(srcdir)/dbus-1/%.conf.in - $(AM_V_at)$(mkdir_p) dbus-1 - $(AM_V_GEN)sed -e "s|[@]abs_top_builddir[@]|@abs_top_builddir@|g" $< > $@ diff --git a/tests/dbus/dbus-1/session.conf.in b/tests/dbus/dbus-1/session.conf.in deleted file mode 100644 index b934b1d..0000000 --- a/tests/dbus/dbus-1/session.conf.in +++ /dev/null @@ -1,30 +0,0 @@ -<!-- Copied from telepathy-gabble (which doubtless copied it from somewhere - else) and modified. - This configuration file controls the per-user-login-session message bus. - Add a session-local.conf and edit that rather than changing this - file directly. --> - -<!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> - - <servicedir>@abs_top_builddir@/tests/dbus/dbus-1/services/</servicedir> - - <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> - - <!-- This is included last so local configuration can override what's - in this standard file --> - - -</busconfig> diff --git a/tests/dbus/test-entity.c b/tests/dbus/test-entity.c deleted file mode 100644 index b345b5e..0000000 --- a/tests/dbus/test-entity.c +++ /dev/null @@ -1,171 +0,0 @@ -#include "config.h" - -#include <glib.h> -#include <glib/gprintf.h> -#include <telepathy-logger/entity.h> -#include <telepathy-logger/entity-internal.h> - -#include "lib/util.h" -#include "lib/contacts-conn.h" - -static void -test_entity_instantiation (void) -{ - TplEntity *entity; - - entity = tpl_entity_new ("my-identifier", TPL_ENTITY_CONTACT, - "my-alias", "my-token"); - - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "my-identifier"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT); - g_assert_cmpstr (tpl_entity_get_alias (entity), ==, "my-alias"); - g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, "my-token"); - - g_object_unref (entity); - - /* Check that identifier is copied in absence of ID */ - entity = tpl_entity_new ("my-identifier", TPL_ENTITY_CONTACT, - NULL, NULL); - - g_assert_cmpstr (tpl_entity_get_alias (entity), ==, "my-identifier"); - g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, ""); - - g_object_unref (entity); -} - -static void -test_entity_instantiation_from_room_id (void) -{ - TplEntity *entity; - - entity = tpl_entity_new_from_room_id ("my-room-id"); - - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "my-room-id"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_ROOM); - g_assert_cmpstr (tpl_entity_get_alias (entity), ==, "my-room-id"); - g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, ""); - - g_object_unref (entity); -} - -typedef struct { - TpContact *contact; - GMainLoop *loop; -} Result; - -static void -ensure_contact_cb (GObject *source, - GAsyncResult *op_result, - gpointer user_data) -{ - Result *result = user_data; - GError *error = NULL; - - result->contact = tp_client_factory_ensure_contact_by_id_finish ( - TP_CLIENT_FACTORY (source), op_result, &error); - - g_assert_no_error (error); - g_assert (TP_IS_CONTACT (result->contact)); - - g_main_loop_quit (result->loop); -} - -static void -test_entity_instantiation_from_tp_contact (void) -{ - TpBaseConnection *base_connection; - TpConnection *client_connection; - TpTestsContactsConnection *connection; - TpHandleRepoIface *repo; - TpHandle handles[2]; - const char *alias[] = {"Alice in Wonderland", "Bob the builder"}; - const char *avatar_tokens[] = {"alice-token", NULL}; - Result result; - TplEntity *entity; - TpContact *alice, *bob; - TpClientFactory *factory; - - tp_tests_create_and_connect_conn (TP_TESTS_TYPE_CONTACTS_CONNECTION, - "me@test.com", &base_connection, &client_connection); - - connection = TP_TESTS_CONTACTS_CONNECTION (base_connection); - - repo = tp_base_connection_get_handles (base_connection, - TP_HANDLE_TYPE_CONTACT); - - handles[0] = tp_handle_ensure (repo, "alice", NULL, NULL); - g_assert (handles[0] != 0); - - handles[1] = tp_handle_ensure (repo, "bob", NULL, NULL); - g_assert (handles[1] != 0); - - tp_tests_contacts_connection_change_aliases (connection, 2, handles, - alias); - tp_tests_contacts_connection_change_avatar_tokens (connection, 2, handles, - avatar_tokens); - - factory = tp_proxy_get_factory (client_connection); - tp_client_factory_add_contact_features_varargs (factory, - TP_CONTACT_FEATURE_ALIAS, - TP_CONTACT_FEATURE_AVATAR_TOKEN, - 0); - - result.loop = g_main_loop_new (NULL, FALSE); - - tp_client_factory_ensure_contact_by_id_async (factory, - client_connection, "alice", ensure_contact_cb, &result); - g_main_loop_run (result.loop); - alice = result.contact; - - tp_client_factory_ensure_contact_by_id_async (factory, - client_connection, "bob", ensure_contact_cb, &result); - g_main_loop_run (result.loop); - bob = result.contact; - - entity = tpl_entity_new_from_tp_contact (alice, TPL_ENTITY_SELF); - - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "alice"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_SELF); - g_assert_cmpstr (tpl_entity_get_alias (entity), ==, alias[0]); - g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, avatar_tokens[0]); - g_object_unref (entity); - - entity = tpl_entity_new_from_tp_contact (bob, TPL_ENTITY_CONTACT); - - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "bob"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT); - g_assert_cmpstr (tpl_entity_get_alias (entity), ==, alias[1]); - g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, ""); - g_object_unref (entity); - - g_object_unref (alice); - g_object_unref (bob); - g_main_loop_unref (result.loop); - - tp_base_connection_change_status (base_connection, - TP_CONNECTION_STATUS_DISCONNECTED, - TP_CONNECTION_STATUS_REASON_REQUESTED); - tp_base_connection_finish_shutdown (base_connection); - - g_object_unref (base_connection); - g_object_unref (client_connection); -} - -int main (int argc, - char **argv) -{ - g_test_init (&argc, &argv, NULL); - - g_type_init (); - - g_test_add_func ("/entity/instantiation", - test_entity_instantiation); - - g_test_add_func ("/entity/instantiation-from-room-id", - test_entity_instantiation_from_room_id); - - g_test_add_func ("/entity/instantiation-from-tp-contact", - test_entity_instantiation_from_tp_contact); - - return g_test_run (); -} diff --git a/tests/dbus/test-log-manager.c b/tests/dbus/test-log-manager.c deleted file mode 100644 index 6bd7b66..0000000 --- a/tests/dbus/test-log-manager.c +++ /dev/null @@ -1,807 +0,0 @@ -#include "config.h" - -#include "telepathy-logger/log-manager.c" - -#include "lib/util.h" -#include "lib/simple-account.h" -#include "lib/simple-account-manager.h" -#include "lib/logger-test-helper.h" - -#include "telepathy-logger/debug-internal.h" -#include "telepathy-logger/log-manager-internal.h" -#include "telepathy-logger/log-store-internal.h" -#include <telepathy-logger/text-event.h> -#include <telepathy-logger/client-factory-internal.h> - -#include <telepathy-glib/telepathy-glib.h> - -/* it was defined in telepathy-logger/log-manager.c */ -#undef DEBUG_FLAG -#define DEBUG_FLAG TPL_DEBUG_TESTSUITE - -#define ACCOUNT_PATH_JABBER TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/user_40collabora_2eco_2euk" -#define MY_ID "user@collabora.co.uk" -#define ID "user2@collabora.co.uk" - -typedef struct -{ - GMainLoop *main_loop; - - TpDBusDaemon *dbus; - TpAccount *account; - TpTestsSimpleAccount *account_service; - TpClientFactory *factory; - - GList *ret; - - gchar *tmp_basedir; - - TplLogManager *manager; -} TestCaseFixture; - - - -#ifdef ENABLE_DEBUG -static TpDebugSender *debug_sender = NULL; -static gboolean stamp_logs = FALSE; - - -static void -log_to_debug_sender (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *string) -{ - GTimeVal now; - - g_return_if_fail (TP_IS_DEBUG_SENDER (debug_sender)); - - g_get_current_time (&now); - - tp_debug_sender_add_message (debug_sender, &now, log_domain, log_level, - string); -} - - -static void -log_handler (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer user_data) -{ - if (stamp_logs) - { - GTimeVal now; - gchar now_str[32]; - gchar *tmp; - struct tm tm; - - g_get_current_time (&now); - localtime_r (&(now.tv_sec), &tm); - strftime (now_str, 32, "%Y-%m-%d %H:%M:%S", &tm); - tmp = g_strdup_printf ("%s.%06ld: %s", - now_str, now.tv_usec, message); - - g_log_default_handler (log_domain, log_level, tmp, NULL); - - g_free (tmp); - } - else - { - g_log_default_handler (log_domain, log_level, message, NULL); - } - - log_to_debug_sender (log_domain, log_level, message); -} -#endif /* ENABLE_DEBUG */ - - -static void -teardown_service (TestCaseFixture* fixture, - gconstpointer user_data) -{ - GError *error = NULL; - - g_assert (user_data != NULL); - - if (fixture->account != NULL) - { - /* FIXME is it useful in this suite */ - tp_tests_proxy_run_until_dbus_queue_processed (fixture->account); - - g_object_unref (fixture->account); - fixture->account = NULL; - } - - tp_dbus_daemon_unregister_object (fixture->dbus, fixture->account_service); - g_object_unref (fixture->account_service); - fixture->account_service = NULL; - - tp_dbus_daemon_release_name (fixture->dbus, TP_ACCOUNT_MANAGER_BUS_NAME, - &error); - g_assert_no_error (error); - - g_object_unref (fixture->dbus); - fixture->dbus = NULL; - - g_clear_object (&fixture->factory); -} - -static void -teardown (TestCaseFixture* fixture, - gconstpointer user_data) -{ - if (fixture->tmp_basedir != NULL) - { - gchar *command = g_strdup_printf ("rm -rf %s", fixture->tmp_basedir); - - if (system (command) == -1) - g_warning ("Failed to cleanup tempory test log dir: %s", - fixture->tmp_basedir); - - g_free (fixture->tmp_basedir); - } - - g_object_unref (fixture->manager); - fixture->manager = NULL; - - if (user_data != NULL) - teardown_service (fixture, user_data); - - g_main_loop_unref (fixture->main_loop); - fixture->main_loop = NULL; -} - - -static void -account_prepare_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *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_service (TestCaseFixture* fixture, - gconstpointer user_data) -{ - GQuark account_features[] = { TP_ACCOUNT_FEATURE_CORE, 0 }; - const gchar *account_path; - GValue *boxed_params; - GHashTable *params = (GHashTable *) user_data; - GError *error = NULL; - - g_assert (params != NULL); - - fixture->dbus = tp_tests_dbus_daemon_dup_or_die (); - g_assert (fixture->dbus != NULL); - - tp_dbus_daemon_request_name (fixture->dbus, - 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 = g_value_get_string ( - (const GValue *) g_hash_table_lookup (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_dbus_daemon_register_object (fixture->dbus, account_path, - fixture->account_service); - - fixture->factory = _tpl_client_factory_dup (fixture->dbus); - - fixture->account = tp_client_factory_ensure_account (fixture->factory, - account_path, NULL, NULL); - g_assert (fixture->account != NULL); - - tp_proxy_prepare_async (fixture->account, account_features, - account_prepare_cb, fixture); - g_main_loop_run (fixture->main_loop); - - g_assert (tp_proxy_is_prepared (fixture->account, TP_ACCOUNT_FEATURE_CORE)); - - tp_g_value_slice_free (boxed_params); -} - - -static void -setup (TestCaseFixture* fixture, - gconstpointer user_data) -{ - DEBUG ("setting up"); - - fixture->main_loop = g_main_loop_new (NULL, FALSE); - g_assert (fixture->main_loop != NULL); - - fixture->manager = tpl_log_manager_dup_singleton (); - - if (user_data != NULL) - setup_service (fixture, user_data); - - DEBUG ("set up finished"); -} - -static void -setup_for_writing (TestCaseFixture *fixture, - gconstpointer user_data) -{ - gchar *readonly_dir; - gchar *writable_dir; - - readonly_dir = g_build_path (G_DIR_SEPARATOR_S, - g_getenv ("TPL_TEST_LOG_DIR"), "TpLogger", "logs", NULL); - - writable_dir = g_build_path (G_DIR_SEPARATOR_S, - g_get_tmp_dir (), "logger-test-logs", NULL); - - tp_tests_copy_dir (readonly_dir, writable_dir); - fixture->tmp_basedir = writable_dir; - g_setenv ("TPL_TEST_LOG_DIR", writable_dir, TRUE); - g_free (readonly_dir); - - setup (fixture, user_data); -} - -static void -setup_debug (void) -{ - tp_debug_divert_messages (g_getenv ("TPL_LOGFILE")); - -#ifdef ENABLE_DEBUG - _tpl_debug_set_flags_from_env (); - - stamp_logs = (g_getenv ("TPL_TIMING") != NULL); - debug_sender = tp_debug_sender_dup (); - - g_log_set_default_handler (log_handler, NULL); -#endif /* ENABLE_DEBUG */ -} - - -static void -test_exists (TestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *entity; - TplEntity *no_entity; - - entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL); - no_entity = tpl_entity_new ("unknown", TPL_ENTITY_CONTACT, NULL, NULL); - - g_assert (tpl_log_manager_exists (fixture->manager, fixture->account, - entity, TPL_EVENT_MASK_ANY)); - - g_assert (!tpl_log_manager_exists (fixture->manager, fixture->account, - no_entity, TPL_EVENT_MASK_ANY)); - - g_object_unref (entity); - g_object_unref (no_entity); -} - - -static void -get_dates_async_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_get_dates_finish (TPL_LOG_MANAGER (object), - result, &fixture->ret, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - -static void -test_get_dates (TestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *loc; - TplEntity *entity; - - entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL); - - tpl_log_manager_get_dates_async (fixture->manager, - fixture->account, entity, TPL_EVENT_MASK_ANY, - get_dates_async_cb, fixture); - g_main_loop_run (fixture->main_loop); - - g_object_unref (entity); - - /* it includes 1 date from libpurple logs, 5 from TpLogger. Empathy - * log-store date are the same of the TpLogger store, and wont' be present, - * being duplicates */ - g_assert_cmpint (g_list_length (fixture->ret), ==, 6); - - /* we do not want duplicates, dates are suppose to be ordered */ - fixture->ret = g_list_sort (fixture->ret, (GCompareFunc) g_date_compare); - for (loc = fixture->ret; loc != NULL; loc = g_list_next (loc)) - if (loc->next) - g_assert (g_date_compare (loc->data, loc->next->data) != 0); - - g_list_foreach (fixture->ret, (GFunc) g_date_free, NULL); - g_list_free (fixture->ret); -} - - -static void -get_events_for_date_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_get_events_for_date_finish (TPL_LOG_MANAGER (object), - result, &fixture->ret, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - - -static void -test_get_events_for_date (TestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *entity; - GDate *date; - - entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL); - date = g_date_new_dmy (13, 1, 2010); - - tpl_log_manager_get_events_for_date_async (fixture->manager, - fixture->account, - entity, - TPL_EVENT_MASK_TEXT, - date, - get_events_for_date_cb, - fixture); - g_main_loop_run (fixture->main_loop); - - g_object_unref (entity); - g_date_free (date); - - /* We got 6 events in old Empathy and 6 in new TpLogger storage */ - g_assert_cmpint (g_list_length (fixture->ret), ==, 12); - - g_list_foreach (fixture->ret, (GFunc) g_object_unref, NULL); - g_list_free (fixture->ret); -} - -static void -test_get_events_for_date_account_unprepared (TestCaseFixture *fixture, - gconstpointer user_data) -{ - GHashTable *params = (GHashTable *) user_data; - TplEntity *entity; - GDate *date; - TpAccount *account; - const gchar *account_path; - - g_clear_object (&fixture->account); - - account_path = g_value_get_string ( - (const GValue *) g_hash_table_lookup (params, "account-path")); - - account = tp_client_factory_ensure_account (fixture->factory, - account_path, NULL, NULL); - g_assert (!tp_proxy_is_prepared (account, TP_ACCOUNT_FEATURE_CORE)); - - entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL); - date = g_date_new_dmy (13, 1, 2010); - - tpl_log_manager_get_events_for_date_async (fixture->manager, - account, - entity, - TPL_EVENT_MASK_TEXT, - date, - get_events_for_date_cb, - fixture); - g_main_loop_run (fixture->main_loop); - - g_object_unref (entity); - g_date_free (date); - - /* We got 6 events in old Empathy and 6 in new TpLogger storage */ - g_assert_cmpint (g_list_length (fixture->ret), ==, 12); - - g_list_foreach (fixture->ret, (GFunc) g_object_unref, NULL); - g_list_free (fixture->ret); - g_object_unref (account); -} - -static void -get_filtered_events_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_get_filtered_events_finish (TPL_LOG_MANAGER (object), - result, &fixture->ret, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - - -static gboolean -events_filter (TplEvent *event, - gpointer user_data) -{ - gboolean keep; - GDateTime *timestamp; - GDate *date = user_data; - - timestamp = g_date_time_new_from_unix_utc (tpl_event_get_timestamp (event)); - - keep = g_date_time_get_year (timestamp) == g_date_get_year (date) - && g_date_time_get_month (timestamp) == (gint) g_date_get_month (date) - && g_date_time_get_day_of_month (timestamp) == g_date_get_day (date); - - g_date_time_unref (timestamp); - - return keep; -} - - -static void -test_get_filtered_events (TestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *entity; - GDate *date; - - entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL); - date = g_date_new_dmy (13, 1, 2010); - - tpl_log_manager_get_filtered_events_async (fixture->manager, - fixture->account, - entity, - TPL_EVENT_MASK_TEXT, - 11, - events_filter, - date, - get_filtered_events_cb, - fixture); - g_main_loop_run (fixture->main_loop); - - g_object_unref (entity); - g_date_free (date); - - /* We got 6 events in old Empathy and 6 in new TpLogger storage, - * but we limited to 11 */ - g_assert_cmpint (g_list_length (fixture->ret), ==, 11); - - g_list_foreach (fixture->ret, (GFunc) g_object_unref, NULL); - g_list_free (fixture->ret); -} - - -static void -get_entities_37288_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_get_entities_finish (TPL_LOG_MANAGER (object), result, - NULL, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - - -static void -get_entities_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_get_entities_finish (TPL_LOG_MANAGER (object), result, - &fixture->ret, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - - -static void -test_get_entities (TestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *loc; - - tpl_log_manager_get_entities_async (fixture->manager, fixture->account, - get_entities_cb, fixture); - g_main_loop_run (fixture->main_loop); - - g_assert_cmpint (g_list_length (fixture->ret), ==, 5); - - /* we do not want duplicates */ - fixture->ret = g_list_sort (fixture->ret, (GCompareFunc) _tpl_entity_compare); - for (loc = fixture->ret; loc != NULL; loc = g_list_next (loc)) - if (loc->next) - g_assert (_tpl_entity_compare (loc->data, loc->next->data) != 0); - - g_list_foreach (fixture->ret, (GFunc) g_object_unref, NULL); - g_list_free (fixture->ret); - - /* Check that the GSimpleAsyncResult res_gpointer's GDestroyNotify func - * is the appropriate one. - * Reproduces: https://bugs.freedesktop.org/show_bug.cgi?id=37288 */ - tpl_log_manager_get_entities_async (fixture->manager, fixture->account, - get_entities_37288_cb, fixture); - g_main_loop_run (fixture->main_loop); -} - - -static void -search_cb (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - TestCaseFixture *fixture = user_data; - GError *error = NULL; - - tpl_log_manager_search_finish (TPL_LOG_MANAGER (object), - result, &fixture->ret, &error); - - g_assert_no_error (error); - g_main_loop_quit (fixture->main_loop); -} - - -static void -test_search (TestCaseFixture *fixture, - gconstpointer user_data) -{ - tpl_log_manager_search_async (fixture->manager, - "user2@collabora.co.uk", - TPL_EVENT_MASK_TEXT, - search_cb, - fixture); - g_main_loop_run (fixture->main_loop); - - /* We got 4 events in old Empathy, 4 in new TpLogger and - * 2 in Pidgin storage */ - g_assert_cmpint (g_list_length (fixture->ret), ==, 10); - - tpl_log_manager_search_free (fixture->ret); - fixture->ret = NULL; -} - -static gboolean -check_ignored_messages (TestCaseFixture *fixture, - TplTextEvent *event, - gboolean should_exist) -{ - TplEntity *entity; - GList *iter; - GDate *date; - - g_object_get (event, "sender", &entity, NULL); - date = g_date_new_dmy (1, 1, 1970); - tpl_log_manager_get_events_for_date_async ( - fixture->manager, - fixture->account, - entity, - TPL_EVENT_MASK_ANY, - date, - get_events_for_date_cb, - fixture); - g_main_loop_run (fixture->main_loop); - - for (iter = fixture->ret; iter; iter = g_list_next (iter)) { - TplEvent *found_event = iter->data; - gchar *result_token, *ref_token; - gboolean exists; - - g_object_get (G_OBJECT (found_event), "message-token", &result_token, NULL); - g_object_get (G_OBJECT (event), "message-token", &ref_token, NULL); - exists = (g_strcmp0 (result_token, ref_token) == 0); - - if (should_exist != exists) { - g_list_free_full (fixture->ret, g_object_unref); - return FALSE; - } - } - - g_list_free_full (fixture->ret, g_object_unref); - - return TRUE; -} - -static void -test_ignorelist (TestCaseFixture *fixture, - gconstpointer user_data) -{ - TplTextEvent *event1, *event2; - TplEntity *receiver, *sender; - TplConf *conf; - gboolean passed; - - receiver = tpl_entity_new ("ignoreduser1@collabora.co.uk", TPL_ENTITY_CONTACT, "Me", "no-avatar"); - sender = tpl_entity_new ("ignoreduser2@collabora.co.uk", TPL_ENTITY_CONTACT, "Someone Else", "no-avatar"); - - event1 = g_object_new (TPL_TYPE_TEXT_EVENT, - "account", fixture->account, - "channel-path", "im.telepathy1.channel.path", - "receiver", receiver, - "sender", sender, - "timestamp", (gint64) 1, - "message-token", "1234", - "supersedes-token", "5678", - "edit-timestamp", 0, - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "Test 1", - NULL); - - event2 = g_object_new (TPL_TYPE_TEXT_EVENT, - "account", fixture->account, - "channel-path", "im.telepathy1.channel.path", - "receiver", sender, - "sender", receiver, - "timestamp", (gint64) 2, - "message-token", "5678", - "supersedes-token", "9012", - "edit-timestamp", 0, - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "Test 2", - NULL); - - conf = _tpl_conf_dup (); - - /* Ignore messages from both */ - tpl_log_manager_disable_for_entity (fixture->manager, fixture->account, receiver); - tpl_log_manager_disable_for_entity (fixture->manager, fixture->account, sender); - g_assert (tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, receiver)); - g_assert (tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, sender)); - - _tpl_log_manager_add_event (fixture->manager, TPL_EVENT (event1), NULL); - _tpl_log_manager_add_event (fixture->manager, TPL_EVENT (event2), NULL); - - passed = check_ignored_messages (fixture, event1, FALSE); - if (!passed) { - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, sender); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, receiver); - g_assert (passed); - } - - passed = check_ignored_messages (fixture, event2, FALSE); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, sender); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, receiver); - if (!passed) { - g_assert (passed); - } - - /* Ignore message only from ignoreduser1 */ - tpl_log_manager_enable_for_entity (fixture->manager, fixture->account, sender); - g_assert (!tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, sender)); - g_assert (tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, receiver)); - _tpl_log_manager_add_event (fixture->manager, TPL_EVENT (event1), NULL); - _tpl_log_manager_add_event (fixture->manager, TPL_EVENT (event2), NULL); - - passed = check_ignored_messages (fixture, event1, FALSE); - if (!passed) { - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, sender); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, receiver); - g_assert (passed); - } - - passed = check_ignored_messages (fixture, event2, TRUE); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, sender); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, receiver); - if (!passed) { - g_assert (passed); - } - - /* Don't ignore any message */ - tpl_log_manager_enable_for_entity (fixture->manager, fixture->account, receiver); - g_assert (!tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, sender)); - g_assert (!tpl_log_manager_is_disabled_for_entity (fixture->manager, fixture->account, receiver)); - _tpl_log_manager_add_event (fixture->manager, TPL_EVENT (event1), NULL); - - passed = check_ignored_messages (fixture, event1, TRUE); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, sender); - _tpl_log_manager_clear_entity (fixture->manager, fixture->account, receiver); - if (!passed) { - g_assert (passed); - } - - g_object_unref (conf); - g_object_unref (event1); - g_object_unref (event2); - g_object_unref (sender); - g_object_unref (receiver); -} - -int -main (int argc, char **argv) -{ - GHashTable *params = NULL; - GList *l = NULL; - int retval; - - g_type_init (); - - setup_debug (); - - /* no account tests */ - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - /* account related tests */ - params = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_assert (params != NULL); - - l = g_list_prepend (l, params); - - g_hash_table_insert (params, "account", - tp_g_value_slice_new_static_string (MY_ID)); - g_hash_table_insert (params, "account-path", - tp_g_value_slice_new_static_string (ACCOUNT_PATH_JABBER)); - - g_test_add ("/log-manager/exists", - TestCaseFixture, params, - setup, test_exists, teardown); - - g_test_add ("/log-manager/get-dates", - TestCaseFixture, params, - setup, test_get_dates, teardown); - - g_test_add ("/log-manager/get-events-for-date", - TestCaseFixture, params, - setup, test_get_events_for_date, teardown); - - g_test_add ("/log-manager/get-events-for-date-account-unprepared", - TestCaseFixture, params, - setup, test_get_events_for_date_account_unprepared, teardown); - - g_test_add ("/log-manager/get-filtered-events", - TestCaseFixture, params, - setup, test_get_filtered_events, teardown); - - g_test_add ("/log-manager/get-entities", - TestCaseFixture, params, - setup, test_get_entities, teardown); - - g_test_add ("/log-manager/search", - TestCaseFixture, params, - setup, test_search, teardown); - - g_test_add ("/log-manager/ignorelist", - TestCaseFixture, params, - setup_for_writing, test_ignorelist, teardown); - - retval = g_test_run (); - - g_list_foreach (l, (GFunc) g_hash_table_unref, NULL); - - return retval; -} diff --git a/tests/dbus/test-tpl-log-iter-pidgin.c b/tests/dbus/test-tpl-log-iter-pidgin.c deleted file mode 100644 index 11e1b5e..0000000 --- a/tests/dbus/test-tpl-log-iter-pidgin.c +++ /dev/null @@ -1,849 +0,0 @@ -#include "config.h" - -#include "lib/simple-account.h" -#include "lib/util.h" - -#include "telepathy-logger/debug-internal.h" -#include "telepathy-logger/log-iter-internal.h" -#include "telepathy-logger/log-iter-pidgin-internal.h" -#include "telepathy-logger/log-store-pidgin-internal.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 -{ - GMainLoop *main_loop; - TplLogStore *store; - TpAccount *account; - TpDBusDaemon *bus; - TpClientFactory *factory; - TpTestsSimpleAccount *account_service; -} PidginTestCaseFixture; - - -static void -account_prepare_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - PidginTestCaseFixture *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 (PidginTestCaseFixture* 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->store = g_object_new (TPL_TYPE_LOG_STORE_PIDGIN, - "testmode", TRUE, - NULL); - - 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 (PidginTestCaseFixture *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->store); - g_main_loop_unref (fixture->main_loop); -} - - -static void -test_get_events (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *room; - TplLogIter *iter; - GList *events; - GError *error = NULL; - const gchar *message; - gint64 timestamp; - - room = tpl_entity_new_from_room_id ("#telepathy"); - - iter = tpl_log_iter_pidgin_new (fixture->store, fixture->account, room, - TPL_EVENT_MASK_ANY); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291133254); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "tbh it's not necessarily too niche to have in telepathy-spec"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291133097); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "I think that's better than modifying the client libraries"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291133035); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "oh right I thought by "alongside" you meant in o.fd.T.AM"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 7, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 7); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291132904); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "you're just moving the incompatibility into the client libraries"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291132892); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "if the libraries hide those accounts by default, that's no more " - "compatible than changing the D-Bus API"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291132838); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "alternative possibly less-beating-worthy proposals include just " - "adding the flag to the account and then modifying tp-{glib,qt4,...} " - "to hide 'em by default"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131885); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "wjt: hrm, can you disco remote servers for their jud and does gabble " - "do that if needed or does it rely on the given server being the jud?"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131667); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "one of whose possible values is the dreaded NetworkError"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131614); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "nod"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131587); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "ejabberd isn't even telling me why it's disconnecting some " - "test accounts"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "Heh"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 7, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 7); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131502); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "if the server provides <text/>, use that; otherwise, use a " - "locally-supplied debug string"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131493); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "MattJ: what language is the <text> in btw?"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131480); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "hey"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131383); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "Good :)"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131350); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "that's mostly fixed though"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131335); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "\\o\\ /o/"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131288); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "Good that a proper register interface is getting higher on the todo " - "list"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 7, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 7); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130982); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "no biscuit."); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130967); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "no gitorious merge request."); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130885); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "pessi: Hi, I fixed some bugs in ring: " - "http://git.collabora.co.uk/?p=user/jonny/telepathy-ring.git;a=" - "shortlog;h=refs/heads/trivia"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130110); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "i guess the collabora xmpp server does privacy list-based " - "invisibility, so it's only doing what i asked"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130015); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "MattJ: so about that xep-0186 support? ;-)"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291129872); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "Oh, i noticed that our iq request queue somethings fill up and then " - "doesn't seem to get unstuck"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291129805); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "huh"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291128926); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "kkszysiu, heya; i seem to remember you were hacking on a " - "im-via-web-using-telepathy stuff? how's that going? i'd be " - "interested in doing something along the same lines"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 7, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 7); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291126346); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "invisible's a good idea. we do implement xmpp ping"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291126340); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "oh yeah, dwd implemented google:queue in M-Link"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291126290); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "not sure if we implement this one"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 8, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 8); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291123078); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "those who like contact lists: " - "https://bugs.freedesktop.org/show_bug.cgi?id=31997"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - g_object_unref (room); -} - - -static void -test_rewind (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *room; - TplLogIter *iter; - GList *events; - GError *error = NULL; - const gchar *message; - gint64 timestamp; - - room = tpl_entity_new_from_room_id ("#telepathy"); - - iter = tpl_log_iter_pidgin_new (fixture->store, fixture->account, room, - TPL_EVENT_MASK_ANY); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 0, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291133254); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "tbh it's not necessarily too niche to have in telepathy-spec"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 5, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291133254); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "tbh it's not necessarily too niche to have in telepathy-spec"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 20, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 20); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291132137); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "wjt: we should probably cope with both cases.. i wonder if jud server " - "correctly indicate in a disco response that they're the jud " - "server"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 7, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 17, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 17); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131655); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "the primary thing to present is a D-Bus error code which UIs are " - "expected to localize"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 7, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 13, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 13); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131595); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "There are vague errors like "bad-request" or " - ""not-authorized" where Prosody usually gives more specific " - "information about why the error occured"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 17, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 33, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 33); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131445); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "dear ejabberd, why are you not showing your xep 55 in your disco " - "response"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 5, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131401); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "the UI doesn't show it though"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 25, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131537); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "well, s/you/this channel/"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 25, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 25); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291131335); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "\\o\\ /o/"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 3, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 15, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 15); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130885); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "pessi: Hi, I fixed some bugs in ring: " - "http://git.collabora.co.uk/?p=user/jonny/telepathy-ring.git;a=" - "shortlog;h=refs/heads/trivia"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 1, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291130210); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "wjt, how can you test if you are actually invisible? The account " - "presence is always sync with your real status?"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 7, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 20, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 20); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291129805); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "huh"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 23, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 20, &error); - events = events; - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 20); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291129872); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "Oh, i noticed that our iq request queue somethings fill up and then " - "doesn't seem to get unstuck"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 3, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 20, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 20); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291126206); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "invisible is a good one"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 3, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 9, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 9); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1291123078); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, - ==, - "those who like contact lists: " - "https://bugs.freedesktop.org/show_bug.cgi?id=31997"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - g_object_unref (room); -} - - -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")); - g_hash_table_insert (params, "server", - tp_g_value_slice_new_static_string ("irc.freenode.net")); - g_hash_table_insert (params, "account-path", - tp_g_value_slice_new_static_string ( - TP_ACCOUNT_OBJECT_PATH_BASE "foo/irc/baz")); - - g_test_add ("/log-iter-xml/get-events", - PidginTestCaseFixture, params, - setup, test_get_events, teardown); - - g_test_add ("/log-iter-xml/rewind", - PidginTestCaseFixture, params, - setup, test_rewind, teardown); - - retval = g_test_run (); - - g_hash_table_unref (params); - - return retval; -} diff --git a/tests/dbus/test-tpl-log-iter-xml.c b/tests/dbus/test-tpl-log-iter-xml.c deleted file mode 100644 index 9053f7d..0000000 --- a/tests/dbus/test-tpl-log-iter-xml.c +++ /dev/null @@ -1,446 +0,0 @@ -#include "config.h" - -#include "lib/logger-test-helper.h" -#include "lib/util.h" - -#include "telepathy-logger/call-event.h" -#include "telepathy-logger/debug-internal.h" -#include "telepathy-logger/log-iter-internal.h" -#include "telepathy-logger/log-iter-xml-internal.h" -#include "telepathy-logger/log-store-xml-internal.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 -{ - GMainLoop *main_loop; - TplLogStore *store; - TpAccount *account; - TpDBusDaemon *bus; - TpClientFactory *factory; - TpTestsSimpleAccount *account_service; -} XmlTestCaseFixture; - - -static void -setup (XmlTestCaseFixture* fixture, - gconstpointer user_data) -{ - GError *error = NULL; - - fixture->main_loop = g_main_loop_new (NULL, FALSE); - - fixture->store = g_object_new (TPL_TYPE_LOG_STORE_XML, - "testmode", TRUE, - NULL); - - 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); - - fixture->factory = tp_client_factory_new (fixture->bus); - g_assert (fixture->factory != NULL); - - tpl_test_create_and_prepare_account (fixture->bus, fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/user_40collabora_2eco_2euk", - &fixture->account, &fixture->account_service); - - tp_debug_divert_messages (g_getenv ("TPL_LOGFILE")); - -#ifdef ENABLE_DEBUG - _tpl_debug_set_flags_from_env (); -#endif /* ENABLE_DEBUG */ -} - - -static void -teardown (XmlTestCaseFixture *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); - - tpl_test_release_account (fixture->bus, fixture->account, - fixture->account_service); - - g_clear_object (&fixture->factory); - g_clear_object (&fixture->bus); - g_clear_object (&fixture->store); -} - - -static void -test_get_events (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *user2, *user4; - TplLogIter *iter; - GList *events; - GError *error = NULL; - GTimeSpan duration; - const gchar *message; - gint64 timestamp; - - user2 = tpl_entity_new ("user2@collabora.co.uk", TPL_ENTITY_CONTACT, - "User2", ""); - - user4 = tpl_entity_new ("user4@collabora.co.uk", TPL_ENTITY_CONTACT, - "User4", ""); - - /* Text events spanning multiple days */ - iter = tpl_log_iter_xml_new (fixture->store, fixture->account, user2, - TPL_EVENT_MASK_ANY); - - events = tpl_log_iter_get_events (iter, 5, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "4"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425572); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "3"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "5"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 7, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 7); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266414451); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "1"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266335850); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "bar"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266335556); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "1"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263405178); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "5"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404877); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "1"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - - /* A mix of call and text events */ - iter = tpl_log_iter_xml_new (fixture->store, fixture->account, user4, - TPL_EVENT_MASK_ANY); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404881); - duration = tpl_call_event_get_duration (TPL_CALL_EVENT (events->data)); - g_assert_cmpint (duration, ==, 1); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404881); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "8"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 1); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404877); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "7"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - - g_object_unref (user2); - g_object_unref (user4); -} - - -static void -test_rewind (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplEntity *user2, *user4; - TplLogIter *iter; - GList *events; - GError *error = NULL; - GTimeSpan duration; - const gchar *message; - gint64 timestamp; - - user2 = tpl_entity_new ("user2@collabora.co.uk", TPL_ENTITY_CONTACT, - "User2", ""); - - user4 = tpl_entity_new ("user4@collabora.co.uk", TPL_ENTITY_CONTACT, - "User4", ""); - - /* Text events spanning multiple days */ - iter = tpl_log_iter_xml_new (fixture->store, fixture->account, user2, - TPL_EVENT_MASK_ANY); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 0, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 5, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "4"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "5"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 3, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 5, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "3"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 1, &error); - g_assert_no_error (error); - - tpl_log_iter_rewind (iter, 9, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266425566); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "3"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266329628); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "123"); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 13, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1266335803); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "a"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 10, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 10); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263405203); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "6"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 5, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 5); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404877); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "1"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 3, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - - /* A mix of call and text events */ - iter = tpl_log_iter_xml_new (fixture->store, fixture->account, user4, - TPL_EVENT_MASK_ANY); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 0, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404881); - duration = tpl_call_event_get_duration (TPL_CALL_EVENT (events->data)); - g_assert_cmpint (duration, ==, 1); - g_list_free_full (events, g_object_unref); - - tpl_log_iter_rewind (iter, 8, &error); - g_assert_no_error (error); - - events = tpl_log_iter_get_events (iter, 4, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 4); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404881); - duration = tpl_call_event_get_duration (TPL_CALL_EVENT (events->data)); - g_assert_cmpint (duration, ==, 1); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 2, &error); - g_assert_no_error (error); - g_assert (events != NULL); - g_assert_cmpint (g_list_length (events), ==, 2); - timestamp = tpl_event_get_timestamp (TPL_EVENT (events->data)); - g_assert_cmpint (timestamp, ==, 1263404877); - message = tpl_text_event_get_message (TPL_TEXT_EVENT (events->data)); - g_assert_cmpstr (message, ==, "7"); - g_list_free_full (events, g_object_unref); - - events = tpl_log_iter_get_events (iter, 1, &error); - g_assert_no_error (error); - g_assert (events == NULL); - - g_object_unref (iter); - - g_object_unref (user2); - g_object_unref (user4); -} - - -gint main (gint argc, gchar **argv) -{ - g_type_init (); - - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - g_test_add ("/log-iter-xml/get-events", - XmlTestCaseFixture, NULL, - setup, test_get_events, teardown); - - g_test_add ("/log-iter-xml/rewind", - XmlTestCaseFixture, NULL, - setup, test_rewind, teardown); - - return g_test_run (); -} diff --git a/tests/dbus/test-tpl-log-store-pidgin.c b/tests/dbus/test-tpl-log-store-pidgin.c deleted file mode 100644 index edd3ddb..0000000 --- a/tests/dbus/test-tpl-log-store-pidgin.c +++ /dev/null @@ -1,622 +0,0 @@ -#include "config.h" - -/* FIXME: hugly kludge: we need to include all the declarations which are used - * by the GInterface and thus not in the -internal.h */ -#include "telepathy-logger/log-store-pidgin.c" - - -#include "lib/util.h" -#include "lib/simple-account.h" -#include "lib/simple-account-manager.h" - -#include <telepathy-logger/log-store-pidgin-internal.h> -#include <telepathy-logger/text-event-internal.h> -#include <telepathy-logger/client-factory-internal.h> - -#include <telepathy-glib/telepathy-glib.h> - -/* it was defined in telepathy-logger/log-store-pidgin.c */ -#undef DEBUG_FLAG -#define DEBUG_FLAG TPL_DEBUG_TESTSUITE -#include <telepathy-logger/debug-internal.h> - -#include <glib.h> - -#define ACCOUNT_PATH_JABBER TP_ACCOUNT_OBJECT_PATH_BASE "foo/jabber/baz" -#define ACCOUNT_PATH_IRC TP_ACCOUNT_OBJECT_PATH_BASE "foo/irc/baz" -#define ACCOUNT_PATH_ICQ TP_ACCOUNT_OBJECT_PATH_BASE "foo/icq/baz" - -typedef struct -{ - gchar *basedir; - - GMainLoop *main_loop; - - TpDBusDaemon *dbus; - TpAccount *account; - TpTestsSimpleAccount *account_service; - TpClientFactory *factory; - - TplLogStorePidgin *store; - TplEntity *room; - TplEntity *irc_room; - TplEntity *contact; -} PidginTestCaseFixture; - -#ifdef ENABLE_DEBUG -static TpDebugSender *debug_sender = NULL; -static gboolean stamp_logs = FALSE; - - -static void -log_to_debug_sender (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *string) -{ - GTimeVal now; - - g_return_if_fail (TP_IS_DEBUG_SENDER (debug_sender)); - - g_get_current_time (&now); - - tp_debug_sender_add_message (debug_sender, &now, log_domain, log_level, - string); -} - - -static void -log_handler (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer user_data) -{ - if (stamp_logs) - { - GTimeVal now; - gchar now_str[32]; - gchar *tmp; - struct tm tm; - - g_get_current_time (&now); - localtime_r (&(now.tv_sec), &tm); - strftime (now_str, 32, "%Y-%m-%d %H:%M:%S", &tm); - tmp = g_strdup_printf ("%s.%06ld: %s", - now_str, now.tv_usec, message); - - g_log_default_handler (log_domain, log_level, tmp, NULL); - - g_free (tmp); - } - else - { - g_log_default_handler (log_domain, log_level, message, NULL); - } - - log_to_debug_sender (log_domain, log_level, message); -} -#endif /* ENABLE_DEBUG */ - - -static void -account_prepare_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - PidginTestCaseFixture *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_service (PidginTestCaseFixture* fixture, - gconstpointer user_data) -{ - GQuark account_features[] = { TP_ACCOUNT_FEATURE_CORE, 0 }; - const gchar *account_path; - GValue *boxed_params; - GHashTable *params = (GHashTable *) user_data; - GError *error = NULL; - - g_assert (params != NULL); - - fixture->dbus = tp_tests_dbus_daemon_dup_or_die (); - g_assert (fixture->dbus != NULL); - - tp_dbus_daemon_request_name (fixture->dbus, - 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 = g_value_get_string ( - (const GValue *) g_hash_table_lookup (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_dbus_daemon_register_object (fixture->dbus, account_path, - fixture->account_service); - - fixture->factory = _tpl_client_factory_dup (fixture->dbus); - - fixture->account = tp_client_factory_ensure_account (fixture->factory, - account_path, NULL, NULL); - g_assert (fixture->account != NULL); - - tp_proxy_prepare_async (fixture->account, account_features, - account_prepare_cb, fixture); - g_main_loop_run (fixture->main_loop); - - g_assert (tp_proxy_is_prepared (fixture->account, TP_ACCOUNT_FEATURE_CORE)); - - tp_g_value_slice_free (boxed_params); -} - -static void -setup (PidginTestCaseFixture* fixture, - gconstpointer user_data) -{ - DEBUG ("setting up"); - - fixture->main_loop = g_main_loop_new (NULL, FALSE); - g_assert (fixture->main_loop != NULL); - - fixture->basedir = g_build_path (G_DIR_SEPARATOR_S, - g_getenv ("TPL_TEST_LOG_DIR"), "purple", NULL); - DEBUG ("basedir is %s", fixture->basedir); - - fixture->store = g_object_new (TPL_TYPE_LOG_STORE_PIDGIN, - "testmode", TRUE, - NULL); - - fixture->room = tpl_entity_new_from_room_id ( - "test@conference.collabora.co.uk"); - - fixture->irc_room = tpl_entity_new_from_room_id ("#telepathy"); - - fixture->contact = tpl_entity_new ("user2@collabora.co.uk", - TPL_ENTITY_CONTACT, NULL, NULL); - - if (user_data != NULL) - setup_service (fixture, user_data); - - DEBUG ("set up finished"); -} - -static void -teardown_service (PidginTestCaseFixture* fixture, - gconstpointer user_data) -{ - GError *error = NULL; - - g_assert (user_data != NULL); - - if (fixture->account != NULL) - { - /* FIXME is it useful in this suite */ - tp_tests_proxy_run_until_dbus_queue_processed (fixture->account); - - g_object_unref (fixture->account); - fixture->account = NULL; - } - - tp_dbus_daemon_unregister_object (fixture->dbus, fixture->account_service); - g_object_unref (fixture->account_service); - fixture->account_service = NULL; - - tp_dbus_daemon_release_name (fixture->dbus, TP_ACCOUNT_MANAGER_BUS_NAME, - &error); - g_assert_no_error (error); - - g_object_unref (fixture->dbus); - fixture->dbus = NULL; - - g_clear_object (&fixture->factory); -} - -static void -teardown (PidginTestCaseFixture* fixture, - gconstpointer user_data) -{ - g_free (fixture->basedir); - fixture->basedir = NULL; - - g_object_unref (fixture->store); - fixture->store = NULL; - - g_object_unref (fixture->room); - g_object_unref (fixture->irc_room); - g_object_unref (fixture->contact); - - if (user_data != NULL) - teardown_service (fixture, user_data); - - g_main_loop_unref (fixture->main_loop); - fixture->main_loop = NULL; -} - -static void -test_basedir (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - TplLogStorePidgin *store; - gchar *dir; - - g_assert_cmpstr (log_store_pidgin_get_basedir (fixture->store), ==, - fixture->basedir); - - /* try to instantiate the default store, without passing basedir, it has to - * match the real libpurple basedir */ - store = g_object_new (TPL_TYPE_LOG_STORE_PIDGIN, NULL); - dir = g_build_path (G_DIR_SEPARATOR_S, g_get_home_dir (), ".purple", - "logs", NULL); - g_assert_cmpstr (log_store_pidgin_get_basedir (store), ==, dir); - - g_object_unref (store); - g_free (dir); -} - -static void -test_get_dates_jabber (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *dates = NULL; - GDate *date = NULL; - - /* Chatroom messages */ - dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store), - fixture->account, fixture->room, TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (dates), ==, 2); - - date = g_list_nth_data (dates, 0); - g_assert_cmpint (0, ==, - g_date_compare (date, g_date_new_dmy (12, G_DATE_APRIL, 2010))); - - g_date_free (date); - - date = g_list_nth_data (dates, 1); - g_assert_cmpint (0, ==, - g_date_compare (date, g_date_new_dmy (29, G_DATE_APRIL, 2010))); - - g_date_free (date); - g_list_free (dates); - - /* 1-1 messages */ - dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store), - fixture->account, fixture->contact, TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (dates), ==, 1); - - date = g_list_nth_data (dates, 0); - g_assert_cmpint (0, ==, - g_date_compare (date, g_date_new_dmy (10, G_DATE_DECEMBER, 2010))); - - g_date_free (date); - g_list_free (dates); -} - -static void -test_get_dates_irc (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *dates = NULL; - GDate *date = NULL; - - dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store), - fixture->account, - fixture->irc_room, - TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (dates), ==, 1); - - date = g_list_nth_data (dates, 0); - g_assert_cmpint (0, ==, - g_date_compare (date, g_date_new_dmy (30, G_DATE_NOVEMBER, 2010))); - - g_list_foreach (dates, (GFunc) g_date_free, NULL); - g_list_free (dates); -} - -static void -test_get_time (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GDate *date; - - date = log_store_pidgin_get_time ("2010-04-29.140346+0100BST.html"); - - g_assert_cmpint (g_date_get_day (date), ==, 29); - g_assert_cmpint (g_date_get_month (date), ==, G_DATE_APRIL); - g_assert_cmpint (g_date_get_year (date), ==, 2010); - - g_date_free (date); -} - -static void -test_get_name (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - const gchar *name; - - name = _tpl_log_store_get_name (TPL_LOG_STORE (fixture->store)); - - g_assert_cmpstr (name, ==, "Pidgin"); -} - -static void -test_get_events_for_date_jabber (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *l; - TplTextEvent *msg = NULL; - GDate *date = g_date_new_dmy (12, G_DATE_APRIL, 2010); - - /* chatroom messages */ - l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store), - fixture->account, - fixture->room, - TPL_EVENT_MASK_ANY, - date); - - g_assert_cmpint (g_list_length (l), ==, 6); - - msg = g_list_nth_data (l, 0); - g_assert (_tpl_event_target_is_room (TPL_EVENT (msg)) == TRUE); - g_assert_cmpstr (tpl_text_event_get_message (msg), ==, "1"); - - g_list_foreach (l, (GFunc) g_object_unref, NULL); - g_list_free (l); - - /* 1-1 messages */ - g_date_set_dmy (date, 10, G_DATE_DECEMBER, 2010); - l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store), - fixture->account, - fixture->contact, - TPL_EVENT_MASK_ANY, - date); - - g_assert_cmpint (g_list_length (l), ==, 2); - - msg = g_list_nth_data (l, 0); - g_assert (_tpl_event_target_is_room (TPL_EVENT (msg)) == FALSE); - g_assert_cmpstr (tpl_text_event_get_message (msg), ==, "hi"); - - g_list_foreach (l, (GFunc) g_object_unref, NULL); - g_list_free (l); - - g_date_free (date); -} - -static int -cmp_entities (gconstpointer a, - gconstpointer b) -{ - return -1 * g_strcmp0 ( - tpl_entity_get_identifier (TPL_ENTITY (a)), - tpl_entity_get_identifier (TPL_ENTITY (b))); -} - -static void -test_get_entities_jabber (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *l = NULL; - TplEntity *entity; - - l = log_store_pidgin_get_entities (TPL_LOG_STORE (fixture->store), - fixture->account); - - g_assert_cmpint (g_list_length (l), ==, 3); - - /* sort the entities, since their ordering depends on the file order */ - l = g_list_sort (l, cmp_entities); - - entity = g_list_nth_data (l, 0); - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, - "user5@collabora.co.uk"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT); - - entity = g_list_nth_data (l, 1); - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, - "user2@collabora.co.uk"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT); - - entity = g_list_nth_data (l, 2); - g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, - "test@conference.collabora.co.uk"); - g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_ROOM); - - g_list_foreach (l, (GFunc) g_object_unref, NULL); - g_list_free (l); -} - -static void -test_search_new (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *l = NULL; - - /* empty search */ - l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store), - "I do not exist in this log store data base!", - TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (l), ==, 0); - - tpl_log_manager_search_free (l); - - /* non empty search matching 1-1 */ - l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store), - "hey you", - TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (l), ==, 1); - - tpl_log_manager_search_free (l); - - /* non empty search, checking chatrooms are also searched */ - l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store), - "disco remote servers", - TPL_EVENT_MASK_ANY); - - g_assert_cmpint (g_list_length (l), ==, 1); - - tpl_log_manager_search_free (l); -} - -static void -test_get_events_for_empty_file (PidginTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *l = NULL; - TplEntity *entity; - GDate *date; - - entity = tpl_entity_new ("87654321", TPL_ENTITY_CONTACT, NULL, NULL); - - /* Check with empty file */ - date = g_date_new_dmy (7, 2, 2010); - - l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store), - fixture->account, entity, TPL_EVENT_MASK_ANY, date); - - g_assert_cmpint (g_list_length (l), ==, 0); - g_date_free (date); - - /* Check with file that contains null bytes */ - date = g_date_new_dmy (6, 2, 2010); - - l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store), - fixture->account, entity, TPL_EVENT_MASK_ANY, date); - - g_assert_cmpint (g_list_length (l), ==, 0); - g_date_free (date); - - g_object_unref (entity); -} - -static void -setup_debug (void) -{ - tp_debug_divert_messages (g_getenv ("TPL_LOGFILE")); - -#ifdef ENABLE_DEBUG - _tpl_debug_set_flags_from_env (); - - stamp_logs = (g_getenv ("TPL_TIMING") != NULL); - debug_sender = tp_debug_sender_dup (); - - g_log_set_default_handler (log_handler, NULL); -#endif /* ENABLE_DEBUG */ -} - - -int -main (int argc, char **argv) -{ - GHashTable *params = NULL; - GList *l = NULL; - int retval; - - g_type_init (); - - setup_debug (); - - /* no account tests */ - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - g_test_add ("/log-store-pidgin/get-name", - PidginTestCaseFixture, NULL, - setup, test_get_name, teardown); - - g_test_add ("/log-store-pidgin/get-time", - PidginTestCaseFixture, NULL, - setup, test_get_time, teardown); - - /* this searches all over the account in the log stores */ - g_test_add ("/log-store-pidgin/search-new", - PidginTestCaseFixture, NULL, - setup, test_search_new, teardown); - - /* jabber account tests */ - params = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_assert (params != NULL); - - l = g_list_prepend (l, params); - - 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 (ACCOUNT_PATH_JABBER)); - - g_test_add ("/log-store-pidgin/basedir", - PidginTestCaseFixture, params, - setup, test_basedir, teardown); - - g_test_add ("/log-store-pidgin/get-dates-jabber", - PidginTestCaseFixture, params, - setup, test_get_dates_jabber, teardown); - - g_test_add ("/log-store-pidgin/get-events-for-date-jabber", - PidginTestCaseFixture, params, - setup, test_get_events_for_date_jabber, teardown); - - g_test_add ("/log-store-pidgin/get-entities-jabber", - PidginTestCaseFixture, params, - setup, test_get_entities_jabber, teardown); - - /* IRC account tests */ - params = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_assert (params != NULL); - - l = g_list_prepend (l, params); - - g_hash_table_insert (params, "account", - tp_g_value_slice_new_static_string ("user")); - g_hash_table_insert (params, "server", - tp_g_value_slice_new_static_string ("irc.freenode.net")); - g_hash_table_insert (params, "account-path", - tp_g_value_slice_new_static_string (ACCOUNT_PATH_IRC)); - - g_test_add ("/log-store-pidgin/get-dates-irc", - PidginTestCaseFixture, params, - setup, test_get_dates_irc, teardown); - - /* Empty file */ - params = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_assert (params != NULL); - - l = g_list_prepend (l, params); - - g_hash_table_insert (params, "account", - tp_g_value_slice_new_static_string ("12345678")); - g_hash_table_insert (params, "account-path", - tp_g_value_slice_new_static_string (ACCOUNT_PATH_ICQ)); - - g_test_add ("/log-store-pidgin/get-event-for-empty-file", - PidginTestCaseFixture, params, - setup, test_get_events_for_empty_file, teardown); - - retval = g_test_run (); - - g_list_foreach (l, (GFunc) g_hash_table_unref, NULL); - - return retval; -} diff --git a/tests/dbus/test-tpl-log-store-sqlite.c b/tests/dbus/test-tpl-log-store-sqlite.c deleted file mode 100644 index c65718a..0000000 --- a/tests/dbus/test-tpl-log-store-sqlite.c +++ /dev/null @@ -1,40 +0,0 @@ -#include "config.h" - -#include <telepathy-logger/log-store-sqlite-internal.h> -#include <telepathy-logger/debug-internal.h> -#include <telepathy-logger/client-factory-internal.h> - -int -main (int argc, char **argv) -{ - TplLogStore *store; - TpDBusDaemon *bus; - TpAccount *account; - GError *error = NULL; - TpClientFactory* factory; - - g_type_init (); - - _tpl_debug_set_flags_from_env (); - - bus = tp_dbus_daemon_dup (&error); - g_assert_no_error (error); - - factory = _tpl_client_factory_dup (bus); - - account = tp_client_factory_ensure_account (factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/danielle_2emadeley_40collabora_2eco_2euk0", - NULL, &error); - g_assert_no_error (error); - - store = _tpl_log_store_sqlite_dup (); - - g_print ("freq = %g\n", - _tpl_log_store_sqlite_get_frequency (TPL_LOG_STORE_SQLITE (store), - account, "dannielle.meyer@gmail.com")); - - g_object_unref (store); - g_object_unref (account); - g_object_unref (bus); - g_object_unref (factory); -} diff --git a/tests/dbus/test-tpl-log-store-xml.c b/tests/dbus/test-tpl-log-store-xml.c deleted file mode 100644 index 22c6d9c..0000000 --- a/tests/dbus/test-tpl-log-store-xml.c +++ /dev/null @@ -1,1120 +0,0 @@ -#include "config.h" - -#include "telepathy-logger/log-store-xml.c" - -#include "lib/logger-test-helper.h" -#include "lib/util.h" - -#include "telepathy-logger/debug-internal.h" -#include "telepathy-logger/log-manager-internal.h" -#include "telepathy-logger/log-store-internal.h" -#include <telepathy-logger/client-factory-internal.h> - -#include <telepathy-glib/telepathy-glib.h> -#include <glib.h> - -/* it was defined in telepathy-logger/log-store-xml.c */ -#undef DEBUG_FLAG -#define DEBUG_FLAG TPL_DEBUG_TESTSUITE - - -typedef struct -{ - GMainLoop *main_loop; - gchar *tmp_basedir; - TplLogStore *store; - TpDBusDaemon *bus; - TpClientFactory *factory; -} XmlTestCaseFixture; - - -static void -setup (XmlTestCaseFixture* fixture, - gconstpointer user_data) -{ - GError *error = NULL; - - fixture->main_loop = g_main_loop_new (NULL, FALSE); - - fixture->store = g_object_new (TPL_TYPE_LOG_STORE_XML, - "testmode", TRUE, - NULL); - - if (fixture->tmp_basedir != NULL) - log_store_xml_set_basedir (TPL_LOG_STORE_XML (fixture->store), - fixture->tmp_basedir); - - 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); - - fixture->factory = _tpl_client_factory_dup (fixture->bus); - - tp_debug_divert_messages (g_getenv ("TPL_LOGFILE")); - -#ifdef ENABLE_DEBUG - _tpl_debug_set_flags_from_env (); -#endif /* ENABLE_DEBUG */ -} - - -static void -setup_for_writing (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - gchar *readonly_dir; - gchar *writable_dir; - - readonly_dir = g_build_path (G_DIR_SEPARATOR_S, - g_getenv ("TPL_TEST_LOG_DIR"), "TpLogger", "logs", NULL); - - writable_dir = g_build_path (G_DIR_SEPARATOR_S, - g_get_tmp_dir (), "logger-test-logs", NULL); - - tp_tests_copy_dir (readonly_dir, writable_dir); - fixture->tmp_basedir = writable_dir; - g_free (readonly_dir); - - setup (fixture, user_data); -} - - -static void -teardown (XmlTestCaseFixture *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); - - if (fixture->tmp_basedir != NULL) - { - gchar *command = g_strdup_printf ("rm -rf %s", fixture->tmp_basedir); - - if (system (command) == -1) - g_warning ("Failed to cleanup tempory test log dir: %s", - fixture->tmp_basedir); - - g_free (fixture->tmp_basedir); - } - - if (fixture->store == NULL) - g_object_unref (fixture->store); - - g_clear_object (&fixture->factory); -} - - -static void -test_clear (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *hits; - hits = _tpl_log_store_search_new (fixture->store, - "user@collabora.co.uk", - TPL_EVENT_MASK_TEXT); - - g_assert (hits != NULL); - g_assert_cmpint (g_list_length (hits), ==, 4); - - tpl_log_manager_search_free (hits); - - _tpl_log_store_clear (fixture->store); - - hits = _tpl_log_store_search_new (fixture->store, - "user@collabora.co.uk", - TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 0); -} - - -static void -test_clear_account (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - GList *hits; - TpAccount *account; - GError *error = NULL; - const gchar *kept = "user2@collabora.co.uk"; - const gchar *cleared = "test2@collabora.co.uk"; - - hits = _tpl_log_store_search_new (fixture->store, - kept, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 4); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, - cleared, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 1); - - tpl_log_manager_search_free (hits); - - account = tp_client_factory_ensure_account (fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/test2_40collabora_2eco_2euk0", - NULL, &error); - - g_assert_no_error (error); - g_assert (account != NULL); - - _tpl_log_store_clear_account (fixture->store, account); - g_object_unref (account); - - hits = _tpl_log_store_search_new (fixture->store, kept, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 4); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, cleared, - TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 0); -} - - -static void -test_clear_entity (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - gboolean is_room = GPOINTER_TO_INT (user_data); - GList *hits; - TpAccount *account; - TplEntity *entity; - GError *error = NULL; - const gchar *always_kept, *kept, *cleared; - - always_kept = "user2@collabora.co.uk"; - - if (is_room) - { - kept = "Hey, Just generating logs"; - cleared = "meego@conference.collabora.co.uk/test2@collabora.co.uk"; - } - else - { - kept = "meego@conference.collabora.co.uk/test2@collabora.co.uk"; - cleared = "Hey, Just generating logs"; - } - - hits = _tpl_log_store_search_new (fixture->store, always_kept, - TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 4); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, kept, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 1); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, cleared, - TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 1); - - tpl_log_manager_search_free (hits); - - account = tp_client_factory_ensure_account (fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/test2_40collabora_2eco_2euk0", - NULL, &error); - - g_assert_no_error (error); - g_assert (account != NULL); - - if (is_room) - entity = tpl_entity_new_from_room_id ("meego@conference.collabora.co.uk"); - else - entity = tpl_entity_new ("derek.foreman@collabora.co.uk", - TPL_ENTITY_CONTACT, NULL, NULL); - - _tpl_log_store_clear_entity (fixture->store, account, entity); - g_object_unref (account); - g_object_unref (entity); - - hits = _tpl_log_store_search_new (fixture->store, - always_kept, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 4); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, kept, TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 1); - - tpl_log_manager_search_free (hits); - - hits = _tpl_log_store_search_new (fixture->store, cleared, - TPL_EVENT_MASK_TEXT); - - g_assert_cmpint (g_list_length (hits), ==, 0); -} - - -static void -assert_cmp_text_event (TplEvent *event, - TplEvent *stored_event) -{ - TplEntity *sender, *stored_sender; - TplEntity *receiver, *stored_receiver; - - g_assert (TPL_IS_TEXT_EVENT (event)); - g_assert (TPL_IS_TEXT_EVENT (stored_event)); - g_assert_cmpstr (tpl_event_get_account_path (event), ==, - tpl_event_get_account_path (stored_event)); - - sender = tpl_event_get_sender (event); - stored_sender = tpl_event_get_sender (stored_event); - - g_assert (_tpl_entity_compare (sender, stored_sender) == 0); - g_assert_cmpstr (tpl_entity_get_alias (sender), ==, - tpl_entity_get_alias (stored_sender)); - g_assert_cmpstr (tpl_entity_get_avatar_token (sender), ==, - tpl_entity_get_avatar_token (stored_sender)); - - receiver = tpl_event_get_receiver (event); - stored_receiver = tpl_event_get_receiver (stored_event); - - g_assert (_tpl_entity_compare (receiver, stored_receiver) == 0); - /* No support for receiver alias/token */ - - g_assert_cmpstr (tpl_text_event_get_message (TPL_TEXT_EVENT (event)), - ==, tpl_text_event_get_message (TPL_TEXT_EVENT (stored_event))); - g_assert_cmpint (tpl_text_event_get_message_type (TPL_TEXT_EVENT (event)), - ==, tpl_text_event_get_message_type (TPL_TEXT_EVENT (stored_event))); - g_assert_cmpstr (tpl_text_event_get_message_token (TPL_TEXT_EVENT (event)), - ==, tpl_text_event_get_message_token (TPL_TEXT_EVENT (stored_event))); - g_assert_cmpint (tpl_event_get_timestamp (event), ==, - tpl_event_get_timestamp (stored_event)); - g_assert_cmpint (tpl_text_event_get_edit_timestamp (TPL_TEXT_EVENT (event)), - ==, tpl_text_event_get_edit_timestamp (TPL_TEXT_EVENT (stored_event))); -} - - -static void -test_add_text_event (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TpAccount *account; - TplEntity *me, *contact, *room; - TplEvent *event; - GError *error = NULL; - GList *events; - gint64 timestamp = time (NULL); - TpTestsSimpleAccount *account_service; - - tpl_test_create_and_prepare_account (fixture->bus, fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "idle/irc/me", - &account, &account_service); - - me = tpl_entity_new ("bob.mcbadgers@example.com", TPL_ENTITY_SELF, - "my-alias", "my-avatar"); - contact = tpl_entity_new ("contact", TPL_ENTITY_CONTACT, "contact-alias", - "contact-token"); - room = tpl_entity_new_from_room_id ("room"); - - - /* 1. Outgoing message to a contact */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp, - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "my message 1", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_TEXT_EVENT (events->data)); - - assert_cmp_text_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 2. Incoming message from contact (a /me action) */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", contact, - "receiver", me, - "timestamp", timestamp, - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, - "message", "my message 1", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_TEXT_EVENT (events->data)); - - assert_cmp_text_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 3. Outgoing message to a room */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", room, - "timestamp", timestamp, - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "my message 1", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, room, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_TEXT_EVENT (events->data)); - - assert_cmp_text_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 4. Incoming message from a room that hit some network lag. */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", contact, - "receiver", room, - "timestamp", timestamp - 1, - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "my message 1", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, room, - TPL_EVENT_MASK_TEXT, 2, NULL, NULL); - - /* Events appear in their dbus-order for the most part - * (ignoring timestamps). */ - g_assert_cmpint (g_list_length (events), ==, 2); - g_assert (TPL_IS_TEXT_EVENT (g_list_last (events)->data)); - - assert_cmp_text_event (event, g_list_last (events)->data); - - g_object_unref (event); - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* 5. Delayed delivery of incoming message from a room */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", contact, - "receiver", room, - "timestamp", timestamp - (60 * 60 * 24), - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "my message 1", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - /* Ask for all of the events to this room... */ - events = _tpl_log_store_get_filtered_events (fixture->store, account, room, - TPL_EVENT_MASK_ANY, 1000000, NULL, NULL); - - /* ... but there are only 3. */ - g_assert_cmpint (g_list_length (events), ==, 3); - g_assert (TPL_IS_TEXT_EVENT (events->data)); - /* Also, because of the day discrepancy, this event will not appear in the - * order it arrived (note that the order is actually undefined (the only - * invariant is that we don't lose the message), so don't cry if you break - * this assertion, as long as you don't break message edits). */ - assert_cmp_text_event (event, events->data); - - tpl_test_release_account (fixture->bus, account, account_service); - g_object_unref (event); - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); -} - -static void -test_add_superseding_event (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TpAccount *account; - TplEntity *me, *contact; - TplEvent *event; - TplTextEvent *new_event; - TplTextEvent *new_new_event; - TplTextEvent *late_event; - TplTextEvent *early_event; - GError *error = NULL; - GList *events; - GList *superseded; - gint64 timestamp = time (NULL); - TpTestsSimpleAccount *account_service; - - tpl_test_create_and_prepare_account (fixture->bus, fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "idle/irc/me", - &account, &account_service); - - me = tpl_entity_new ("me", TPL_ENTITY_SELF, "my-alias", "my-avatar"); - contact = tpl_entity_new ("contact", TPL_ENTITY_CONTACT, "contact-alias", - "contact-token"); - - /* 1. Outgoing message to a contact. */ - event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "message-token", "OMGCOMPLETELYRANDOMSTRING1", - "timestamp", timestamp, - /* TplTextEvent */ - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "my message 1", - NULL); - - /* add and re-retrieve the event */ - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_TEXT_EVENT (events->data)); - - assert_cmp_text_event (event, events->data); - - g_object_unref (events->data); - g_list_free (events); - - /* 2. Edit message 1. */ - new_event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp, - /* TplTextEvent */ - "edit-timestamp", timestamp + 1, - "message-token", "OMGCOMPLETELYRANDOMSTRING2", - "supersedes-token", "OMGCOMPLETELYRANDOMSTRING1", - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "My message 1 [FIXED]", - NULL); - - /* add and re-retrieve the event */ - _tpl_log_store_add_event (fixture->store, TPL_EVENT (new_event), &error); - g_assert_no_error (error); - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - assert_cmp_text_event (TPL_EVENT (new_event), events->data); - - /* Check that the two events are linked */ - superseded = tpl_text_event_get_supersedes (events->data); - g_assert (superseded != NULL); - assert_cmp_text_event (event, superseded->data); - g_assert (tpl_text_event_get_supersedes (superseded->data) == NULL); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* 3. Edit it again. - * Note that the (broken) edit-timestamp should not make any - * difference to the message processing, but it should be preserved.*/ - new_new_event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp, - /* TplTextEvent */ - "edit-timestamp", timestamp + (60 * 60 * 24), - "message-token", "OMGCOMPLETELYRANDOMSTRING3", - "supersedes-token", "OMGCOMPLETELYRANDOMSTRING1", - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "My Message 1 [FIXED] [FIXED]", - NULL); - - /* add and re-retrieve the event */ - _tpl_log_store_add_event (fixture->store, TPL_EVENT (new_new_event), &error); - g_assert_no_error (error); - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - assert_cmp_text_event (TPL_EVENT (new_new_event), events->data); - - /* Check that the three events are linked */ - superseded = tpl_text_event_get_supersedes (events->data); - g_assert (superseded != NULL); - assert_cmp_text_event (TPL_EVENT (new_event), superseded->data); - g_assert (superseded->next != NULL); - assert_cmp_text_event (event, superseded->next->data); - g_assert (tpl_text_event_get_supersedes (superseded->next->data) == NULL); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* Also note that the superseding events *replace* the old ones. */ - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1000000, NULL, NULL); - g_assert_cmpint (g_list_length (events), == , 1); - assert_cmp_text_event (TPL_EVENT (new_new_event), events->data); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* 4. Edit comes in with the wrong timestamp. - * Note that the (also broken) edit-timestamp should not make any - * difference to the message processing, but it should be preserved.*/ - late_event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp + (60 * 60 * 24), - /* TplTextEvent */ - "edit-timestamp", timestamp - (60 * 60 * 24), - "message-token", "OMGCOMPLETELYRANDOMSTRING4", - "supersedes-token", "OMGCOMPLETELYRANDOMSTRING1", - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "My Message 1 [FIXED_LATE]", - NULL); - - /* add and re-retrieve the event */ - _tpl_log_store_add_event (fixture->store, TPL_EVENT (late_event), &error); - g_assert_no_error (error); - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1, NULL, NULL); - assert_cmp_text_event (TPL_EVENT (late_event), events->data); - - /* Check that the events are not linked (and a dummy was inserted instead) - * because the timestamp was wrong. */ - superseded = tpl_text_event_get_supersedes (events->data); - g_assert (superseded != NULL); - g_assert_cmpstr (tpl_text_event_get_message (superseded->data), ==, ""); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* And if we ask for all of the events, there will be 2 there. */ - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1000000, NULL, NULL); - g_assert_cmpint (g_list_length (events), == , 2); - assert_cmp_text_event (TPL_EVENT (new_new_event), events->data); - assert_cmp_text_event (TPL_EVENT (late_event), g_list_last (events)->data); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* 5. If we have an event that is broken in the other direction then it will - * also come out as a separate event (since each day is parsed on its own). - * Even though we don't currently omit edit-timestamp, we might as well - * see what happens if we forget it. */ - early_event = g_object_new (TPL_TYPE_TEXT_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp - (60 * 60 * 24), - /* TplTextEvent */ - "message-token", "OMGCOMPLETELYRANDOMSTRING5", - "supersedes-token", "OMGCOMPLETELYRANDOMSTRING1", - "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - "message", "My Message 1 [FIXED_EARLY]", - NULL); - - /* And if we ask for all of the events, there will be 3 there. */ - _tpl_log_store_add_event (fixture->store, TPL_EVENT (early_event), &error); - g_assert_no_error (error); - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_TEXT, 1000000, NULL, NULL); - g_assert_cmpint (g_list_length (events), ==, 3); - assert_cmp_text_event (TPL_EVENT (early_event), events->data); - assert_cmp_text_event (TPL_EVENT (new_new_event), events->next->data); - assert_cmp_text_event (TPL_EVENT (late_event), g_list_last (events)->data); - - tpl_test_release_account (fixture->bus, account, account_service); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - g_object_unref (event); - g_object_unref (new_event); - g_object_unref (new_new_event); - g_object_unref (late_event); - g_object_unref (early_event); -} - -static void -assert_cmp_call_event (TplEvent *event, - TplEvent *stored_event) -{ - TplEntity *sender, *stored_sender; - TplEntity *receiver, *stored_receiver; - TplEntity *actor, *stored_actor; - - g_assert (TPL_IS_CALL_EVENT (event)); - g_assert (TPL_IS_CALL_EVENT (stored_event)); - g_assert_cmpstr (tpl_event_get_account_path (event), ==, - tpl_event_get_account_path (stored_event)); - - sender = tpl_event_get_sender (event); - stored_sender = tpl_event_get_sender (stored_event); - - g_assert (_tpl_entity_compare (sender, stored_sender) == 0); - g_assert_cmpstr (tpl_entity_get_alias (sender), ==, - tpl_entity_get_alias (stored_sender)); - g_assert_cmpstr (tpl_entity_get_avatar_token (sender), ==, - tpl_entity_get_avatar_token (stored_sender)); - - receiver = tpl_event_get_receiver (event); - stored_receiver = tpl_event_get_receiver (stored_event); - - g_assert (_tpl_entity_compare (receiver, stored_receiver) == 0); - /* No support for receiver alias/token */ - - g_assert_cmpint (tpl_event_get_timestamp (event), ==, - tpl_event_get_timestamp (stored_event)); - - g_assert_cmpint (tpl_call_event_get_duration (TPL_CALL_EVENT (event)), - ==, tpl_call_event_get_duration (TPL_CALL_EVENT (stored_event))); - - actor = tpl_call_event_get_end_actor (TPL_CALL_EVENT (event)); - stored_actor = tpl_call_event_get_end_actor (TPL_CALL_EVENT (stored_event)); - - g_assert (_tpl_entity_compare (actor, stored_actor) == 0); - g_assert_cmpstr (tpl_entity_get_alias (actor), ==, - tpl_entity_get_alias (stored_actor)); - g_assert_cmpstr (tpl_entity_get_avatar_token (actor), ==, - tpl_entity_get_avatar_token (stored_actor)); - g_assert_cmpstr ( - tpl_call_event_get_detailed_end_reason (TPL_CALL_EVENT (event)), - ==, - tpl_call_event_get_detailed_end_reason (TPL_CALL_EVENT (stored_event))); -} - - -static void -test_add_call_event (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TpAccount *account; - TplEntity *me, *contact, *room; - TplEvent *event; - GError *error = NULL; - GList *events; - gint64 timestamp = time (NULL); - TpTestsSimpleAccount *account_service; - - tpl_test_create_and_prepare_account (fixture->bus, fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/me", - &account, &account_service); - - me = tpl_entity_new ("bob.mcbadgers@example.com", TPL_ENTITY_SELF, - "my-alias", "my-avatar"); - contact = tpl_entity_new ("contact", TPL_ENTITY_CONTACT, "contact-alias", - "contact-token"); - room = tpl_entity_new_from_room_id ("room"); - - /* 1. Outgoing call to a contact */ - event = g_object_new (TPL_TYPE_CALL_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", contact, - "timestamp", timestamp, - /* TplCallEvent */ - "duration", (gint64) 1234, - "end-actor", me, - "end-reason", TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - "detailed-end-reason", TP_ERROR_STR_CANCELLED, - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_CALL, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_CALL_EVENT (events->data)); - - assert_cmp_call_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 2. Incoming call from contact */ - event = g_object_new (TPL_TYPE_CALL_EVENT, - /* TplEvent */ - "account", account, - "sender", contact, - "receiver", me, - "timestamp", timestamp, - /* TplCallEvent */ - "duration", (gint64) 2345, - "end-actor", contact, - "end-reason", TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - "detailed-end-reason", TP_ERROR_STR_TERMINATED, - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, - TPL_EVENT_MASK_CALL, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_CALL_EVENT (events->data)); - - assert_cmp_call_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 3. Outgoing call to a room */ - event = g_object_new (TPL_TYPE_CALL_EVENT, - /* TplEvent */ - "account", account, - "sender", me, - "receiver", room, - "timestamp", timestamp, - /* TplCallEvent */ - "duration", (gint64) 3456, - "end-actor", room, - "end-reason", TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - "detailed-end-reason", TP_ERROR_STR_CHANNEL_KICKED, - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, room, - TPL_EVENT_MASK_CALL, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_CALL_EVENT (events->data)); - - assert_cmp_call_event (event, events->data); - - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); - - /* 4. Incoming missed call from a room */ - event = g_object_new (TPL_TYPE_CALL_EVENT, - /* TplEvent */ - "account", account, - "sender", contact, - "receiver", room, - "timestamp", timestamp, - /* TplCallEvent */ - "duration", (gint64) -1, - "end-actor", room, - "end-reason", TP_CALL_STATE_CHANGE_REASON_NO_ANSWER, - "detailed-end-reason", "", - NULL); - - _tpl_log_store_add_event (fixture->store, event, &error); - g_assert_no_error (error); - - events = _tpl_log_store_get_filtered_events (fixture->store, account, room, - TPL_EVENT_MASK_CALL, 1, NULL, NULL); - - g_assert_cmpint (g_list_length (events), ==, 1); - g_assert (TPL_IS_CALL_EVENT (events->data)); - - assert_cmp_call_event (event, events->data); - - tpl_test_release_account (fixture->bus, account, account_service); - g_object_unref (event); - g_object_unref (events->data); - g_list_free (events); -} - -static void -test_exists (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TpAccount *account1, *account2; - TplEntity *user2, *user3; - GError *error = NULL; - - account1 = tp_client_factory_ensure_account (fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/test2_40collabora_2eco_2euk0", - NULL, &error); - g_assert_no_error (error); - g_assert (account1 != NULL); - - account2 = tp_client_factory_ensure_account (fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/user_40collabora_2eco_2euk", - NULL, &error); - g_assert_no_error (error); - g_assert (account1 != NULL); - - user2 = tpl_entity_new ("user2@collabora.co.uk", TPL_ENTITY_CONTACT, - "User2", ""); - - user3 = tpl_entity_new ("user3@collabora.co.uk", TPL_ENTITY_CONTACT, - "User3", ""); - - g_assert (_tpl_log_store_exists (fixture->store, account1, NULL, TPL_EVENT_MASK_ANY)); - g_assert (_tpl_log_store_exists (fixture->store, account1, NULL, TPL_EVENT_MASK_TEXT)); - g_assert (!_tpl_log_store_exists (fixture->store, account1, NULL, TPL_EVENT_MASK_CALL)); - - g_assert (_tpl_log_store_exists (fixture->store, account2, NULL, TPL_EVENT_MASK_ANY)); - g_assert (_tpl_log_store_exists (fixture->store, account2, NULL, TPL_EVENT_MASK_TEXT)); - g_assert (_tpl_log_store_exists (fixture->store, account2, NULL, TPL_EVENT_MASK_CALL)); - - g_assert (!_tpl_log_store_exists (fixture->store, account1, user2, TPL_EVENT_MASK_ANY)); - g_assert (!_tpl_log_store_exists (fixture->store, account1, user2, TPL_EVENT_MASK_TEXT)); - g_assert (!_tpl_log_store_exists (fixture->store, account1, user2, TPL_EVENT_MASK_CALL)); - - g_assert (_tpl_log_store_exists (fixture->store, account2, user2, TPL_EVENT_MASK_ANY)); - g_assert (_tpl_log_store_exists (fixture->store, account2, user2, TPL_EVENT_MASK_TEXT)); - g_assert (!_tpl_log_store_exists (fixture->store, account2, user2, TPL_EVENT_MASK_CALL)); - - g_assert (_tpl_log_store_exists (fixture->store, account2, user3, TPL_EVENT_MASK_ANY)); - - g_assert (!_tpl_log_store_exists (fixture->store, account2, user3, TPL_EVENT_MASK_TEXT)); - g_assert (_tpl_log_store_exists (fixture->store, account2, user3, TPL_EVENT_MASK_CALL)); - - g_object_unref (account1); - g_object_unref (account2); - g_object_unref (user2); - g_object_unref (user3); -} - - -static void -test_get_events_for_date (XmlTestCaseFixture *fixture, - gconstpointer user_data) -{ - TpAccount *account; - TplEntity *user2, *user3, *user4, *user5; - GList *events; - GDate *date; - gint idx; - TpTestsSimpleAccount *account_service; - - tpl_test_create_and_prepare_account (fixture->bus, fixture->factory, - TP_ACCOUNT_OBJECT_PATH_BASE "gabble/jabber/user_40collabora_2eco_2euk", - &account, &account_service); - - date = g_date_new_dmy (13, 1, 2010); - - user2 = tpl_entity_new ("user2@collabora.co.uk", TPL_ENTITY_CONTACT, - "User2", ""); - - user3 = tpl_entity_new ("user3@collabora.co.uk", TPL_ENTITY_CONTACT, - "User3", ""); - - user4 = tpl_entity_new ("user4@collabora.co.uk", TPL_ENTITY_CONTACT, - "User4", ""); - - user5 = tpl_entity_new ("user5@collabora.co.uk", TPL_ENTITY_CONTACT, - "User5", ""); - - /* Check that text event and call event are merged properly, call events - * should come after any older or same timestamp event. */ - events = _tpl_log_store_get_events_for_date (fixture->store, account, user4, - TPL_EVENT_MASK_ANY, date); - - g_assert_cmpint (g_list_length (events), ==, 6); - idx = -1; - - g_assert (TPL_IS_TEXT_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpstr ( - tpl_text_event_get_message (TPL_TEXT_EVENT (g_list_nth_data (events, idx))), - ==, "7"); - - g_assert (TPL_IS_TEXT_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpstr ( - tpl_text_event_get_message (TPL_TEXT_EVENT (g_list_nth_data (events, idx))), - ==, "8"); - - g_assert (TPL_IS_CALL_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpint ( - tpl_call_event_get_duration (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, 1); - g_assert_cmpint ( - tpl_call_event_get_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED); - g_assert_cmpstr (tpl_call_event_get_detailed_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_ERROR_STR_CANCELLED); - - g_assert (TPL_IS_CALL_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpint ( - tpl_call_event_get_duration (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, 2); - g_assert_cmpint ( - tpl_call_event_get_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED); - g_assert_cmpstr (tpl_call_event_get_detailed_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_ERROR_STR_CANCELLED); - - g_assert (TPL_IS_CALL_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpint ( - tpl_call_event_get_duration (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, 3); - g_assert_cmpint ( - tpl_call_event_get_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED); - g_assert_cmpstr (tpl_call_event_get_detailed_end_reason (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, TP_ERROR_STR_CANCELLED); - - g_assert (TPL_IS_TEXT_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpstr ( - tpl_text_event_get_message (TPL_TEXT_EVENT (g_list_nth_data (events, idx))), - ==, "9"); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* Check that a call older then any text event is sorted first */ - events = _tpl_log_store_get_events_for_date (fixture->store, account, user5, - TPL_EVENT_MASK_ANY, date); - - g_assert_cmpint (g_list_length (events), ==, 2); - idx = -1; - - g_assert (TPL_IS_CALL_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpint ( - tpl_call_event_get_duration (TPL_CALL_EVENT (g_list_nth_data (events, idx))), - ==, 1); - - g_assert (TPL_IS_TEXT_EVENT (g_list_nth_data (events, ++idx))); - g_assert_cmpstr ( - tpl_text_event_get_message (TPL_TEXT_EVENT (g_list_nth_data (events, idx))), - ==, "9"); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* Check that call mask work */ - events = _tpl_log_store_get_events_for_date (fixture->store, account, user4, - TPL_EVENT_MASK_CALL, date); - - g_assert_cmpint (g_list_length (events), ==, 3); - g_assert (TPL_IS_CALL_EVENT (g_list_nth_data (events, 0))); - g_assert_cmpint ( - tpl_call_event_get_duration (TPL_CALL_EVENT (g_list_nth_data (events, 0))), - ==, 1); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* Check that text mask work */ - events = _tpl_log_store_get_events_for_date (fixture->store, account, user4, - TPL_EVENT_MASK_TEXT, date); - - g_assert_cmpint (g_list_length (events), ==, 3); - - g_assert (TPL_IS_TEXT_EVENT (g_list_nth_data (events, 0))); - g_assert_cmpstr ( - tpl_text_event_get_message (TPL_TEXT_EVENT (g_list_nth_data (events, 0))), - ==, "7"); - - g_list_foreach (events, (GFunc) g_object_unref, NULL); - g_list_free (events); - - /* Check that getting empty list is working */ - events = _tpl_log_store_get_events_for_date (fixture->store, account, user2, - TPL_EVENT_MASK_CALL, date); - g_assert_cmpint (g_list_length (events), ==, 0); - - events = _tpl_log_store_get_events_for_date (fixture->store, account, user3, - TPL_EVENT_MASK_TEXT, date); - g_assert_cmpint (g_list_length (events), ==, 0); - - tpl_test_release_account (fixture->bus, account, account_service); - g_object_unref (user2); - g_object_unref (user3); - g_object_unref (user4); - g_object_unref (user5); - g_date_free (date); -} - - -gint main (gint argc, gchar **argv) -{ - g_type_init (); - - g_test_init (&argc, &argv, NULL); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - g_test_add ("/log-store-xml/clear", - XmlTestCaseFixture, NULL, - setup_for_writing, test_clear, teardown); - - g_test_add ("/log-store-xml/clear-account", - XmlTestCaseFixture, NULL, - setup_for_writing, test_clear_account, teardown); - - g_test_add ("/log-store-xml/clear-entity", - XmlTestCaseFixture, GINT_TO_POINTER (FALSE), - setup_for_writing, test_clear_entity, teardown); - - g_test_add ("/log-store-xml/clear-entity-room", - XmlTestCaseFixture, GINT_TO_POINTER (TRUE), - setup_for_writing, test_clear_entity, teardown); - - g_test_add ("/log-store-xml/add-text-event", - XmlTestCaseFixture, NULL, - setup_for_writing, test_add_text_event, teardown); - - g_test_add ("/log-store-xml/add-superseding-event", - XmlTestCaseFixture, NULL, - setup_for_writing, test_add_superseding_event, teardown); - - g_test_add ("/log-store-xml/add-call-event", - XmlTestCaseFixture, NULL, - setup_for_writing, test_add_call_event, teardown); - - g_test_add ("/log-store-xml/exists", - XmlTestCaseFixture, NULL, - setup, test_exists, teardown); - - g_test_add ("/log-store-xml/get-events-for-date", - XmlTestCaseFixture, NULL, - setup, test_get_events_for_date, teardown); - - return g_test_run (); -} 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; -} diff --git a/tests/dbus/test-tpl-observer.c b/tests/dbus/test-tpl-observer.c deleted file mode 100644 index b1c687d..0000000 --- a/tests/dbus/test-tpl-observer.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "config.h" - -#include <telepathy-logger/observer-internal.h> - -int -main (int argc, char **argv) -{ - TplObserver *obs, *obs2; - - g_type_init (); - - obs = _tpl_observer_dup (NULL); - - /* TplObserver is a singleton, be sure both references point to the same - * memory address */ - obs2 = _tpl_observer_dup (NULL); - g_assert (obs == obs2); - - /* unref the second singleton pointer and check that the it is still - * valid: checking correct object ref-counting after each _dup () call */ - g_object_unref (obs2); - g_assert (TPL_IS_OBSERVER (obs)); - - /* it points to the same mem area, it should be still valid */ - g_assert (TPL_IS_OBSERVER (obs2)); - - - /* FIXME: This test does not actually test anything useful */ - - /* proper disposal for the singleton when no references are present */ - g_object_unref (obs); - - return 0; -} - |