[folks] tests: Add a test case for bgo#665728
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [folks] tests: Add a test case for bgo#665728
- Date: Fri, 9 Dec 2011 08:53:59 +0000 (UTC)
commit 04b30abb398bb269d29701da833315f9f04e0818
Author: Philip Withnall <philip tecnocode co uk>
Date: Thu Dec 8 16:44:51 2011 +0000
tests: Add a test case for bgo#665728
Ported from a C test case by Guillaume Desmottes
<guillaume desmottes collabora co uk>.
See: bgo#665728
tests/folks/Makefile.am | 6 +++
tests/folks/init.vala | 99 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+), 0 deletions(-)
---
diff --git a/tests/folks/Makefile.am b/tests/folks/Makefile.am
index b8b97f7..5a4852f 100644
--- a/tests/folks/Makefile.am
+++ b/tests/folks/Makefile.am
@@ -50,6 +50,7 @@ noinst_PROGRAMS = \
aggregation \
avatar-cache \
object-cache \
+ init \
$(NULL)
SESSION_CONF = $(top_builddir)/tests/lib/telepathy/contactlist/session.conf
@@ -91,6 +92,10 @@ object_cache_SOURCES = \
object-cache.vala \
$(NULL)
+init_SOURCES = \
+ init.vala \
+ $(NULL)
+
CLEANFILES = \
*.pid \
*.address \
@@ -105,6 +110,7 @@ MAINTAINERCLEANFILES = \
utils_vala.stamp \
avatar_cache_vala.stamp \
object_cache_vala.stamp \
+ init_vala.stamp \
$(NULL)
EXTRA_DIST = \
diff --git a/tests/folks/init.vala b/tests/folks/init.vala
new file mode 100644
index 0000000..be0090c
--- /dev/null
+++ b/tests/folks/init.vala
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Guillaume Desmottes <guillaume desmottes collabora co uk>
+ */
+
+using Gee;
+using Folks;
+
+public class InitTests : Folks.TestCase
+{
+ private KfTest.Backend _kf_backend;
+ private TpTest.Backend _tp_backend;
+ private int _test_timeout = 5;
+
+ public InitTests ()
+ {
+ base ("Init");
+
+ this._kf_backend = new KfTest.Backend ();
+ this._tp_backend = new TpTest.Backend ();
+
+ /* Set up the tests */
+ this.add_test ("looped", this.test_looped);
+ }
+
+ public override void set_up ()
+ {
+ this._tp_backend.set_up ();
+ }
+
+ public override void tear_down ()
+ {
+ this._tp_backend.tear_down ();
+ }
+
+ /* Prepare a load of aggregators in a tight loop, without waiting for any of
+ * the prepare() calls to finish. Since the aggregators share a common
+ * BackendStore, this tests the mutual exclusion of prepare() methods in the
+ * backends. See: bgo#665728. */
+ public void test_looped ()
+ {
+ var main_loop = new GLib.MainLoop (null, false);
+
+ this._kf_backend.set_up ("");
+
+ void* account1_handle = this._tp_backend.add_account ("protocol",
+ "me example com", "cm", "account");
+ void* account2_handle = this._tp_backend.add_account ("protocol",
+ "me2 example com", "cm", "account2");
+
+ /* Wreak havoc. */
+ for (uint i = 0; i < 10; i++)
+ {
+ var aggregator = new IndividualAggregator ();
+ aggregator.prepare (); /* Note: We don't yield for this to complete */
+ aggregator = null;
+ }
+
+ /* Kill the main loop after a few seconds. */
+ Timeout.add_seconds (this._test_timeout, () =>
+ {
+ main_loop.quit ();
+ return false;
+ });
+
+ main_loop.run ();
+
+ /* Clean up for the next test */
+ this._tp_backend.remove_account (account2_handle);
+ this._tp_backend.remove_account (account1_handle);
+ this._kf_backend.tear_down ();
+ }
+}
+
+public int main (string[] args)
+{
+ Test.init (ref args);
+
+ TestSuite root = TestSuite.get_root ();
+ root.add_suite (new InitTests ().get_suite ());
+
+ Test.run ();
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]