telepathy-logger: tests: Add a test for log-iter-xml/get-events

Nicolas Dufresne nicolasd at kemper.freedesktop.org
Tue Aug 28 13:01:07 PDT 2012


Module: telepathy-logger
Branch: master
Commit: f933eddd65b7c1104630a6c628eb7bd67bff6ac0
URL:    http://cgit.freedesktop.org/telepathy/telepathy-logger/commit/?id=f933eddd65b7c1104630a6c628eb7bd67bff6ac0

Author: Debarshi Ray <debarshir at freedesktop.org>
Date:   Tue Jul 31 16:31:24 2012 +0200

tests: Add a test for log-iter-xml/get-events

... to cover text events spanning multiple days, and a mix of call and
text events.

Fixes: https://bugs.freedesktop.org/41772

---

 tests/dbus/Makefile.am             |    1 +
 tests/dbus/test-tpl-log-iter-xml.c |  233 ++++++++++++++++++++++++++++++++++++
 2 files changed, 234 insertions(+), 0 deletions(-)

diff --git a/tests/dbus/Makefile.am b/tests/dbus/Makefile.am
index 1cca85d..c2358e8 100644
--- a/tests/dbus/Makefile.am
+++ b/tests/dbus/Makefile.am
@@ -4,6 +4,7 @@ noinst_PROGRAMS = \
 	test-tpl-log-store-pidgin 	\
 	test-tpl-log-store-sqlite	\
 	test-tpl-log-store-xml 		\
+	test-tpl-log-iter-xml		\
 	test-tpl-observer		\
 	$(NULL)
 
diff --git a/tests/dbus/test-tpl-log-iter-xml.c b/tests/dbus/test-tpl-log-iter-xml.c
new file mode 100644
index 0000000..0762eeb
--- /dev/null
+++ b/tests/dbus/test-tpl-log-iter-xml.c
@@ -0,0 +1,233 @@
+#include "lib/util.h"
+
+#include "telepathy-logger/call-event.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 <glib.h>
+
+#define DEBUG_FLAG TPL_DEBUG_TESTSUITE
+
+
+typedef struct
+{
+  TplLogStore *store;
+  TpAccount *account;
+  TpDBusDaemon *bus;
+  TpSimpleClientFactory *factory;
+} XmlTestCaseFixture;
+
+
+static void
+setup (XmlTestCaseFixture* fixture,
+    gconstpointer user_data)
+{
+  GError *error = NULL;
+
+  fixture->store = g_object_new (TPL_TYPE_LOG_STORE_XML,
+      "name", "testcase",
+      "testmode", TRUE,
+      NULL);
+
+  fixture->bus = tp_tests_dbus_daemon_dup_or_die ();
+  g_assert (fixture->bus != NULL);
+
+  fixture->factory = tp_simple_client_factory_new (fixture->bus);
+  g_assert (fixture->factory != NULL);
+
+  /* We can get away without preparing the account */
+  fixture->account = tp_simple_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 (fixture->account != NULL);
+
+  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)
+{
+  g_clear_object (&fixture->account);
+  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 at collabora.co.uk", TPL_ENTITY_CONTACT,
+      "User2", "");
+
+  user4 = tpl_entity_new ("user4 at 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, NULL, NULL);
+
+  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, NULL, NULL);
+
+  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);
+}
+
+
+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);
+
+  return g_test_run ();
+}



More information about the telepathy-commits mailing list