pykolab/format

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Wed Feb 22 18:25:38 CET 2012


 pykolab/format/tests/test-thread_safety.py |   62 +++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

New commits:
commit a71a5f5580b4f0dc9622d5312bfb095701074d76
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Feb 22 17:25:24 2012 +0000

    Add a test for thread safety

diff --git a/pykolab/format/tests/test-thread_safety.py b/pykolab/format/tests/test-thread_safety.py
new file mode 100644
index 0000000..531398e
--- /dev/null
+++ b/pykolab/format/tests/test-thread_safety.py
@@ -0,0 +1,62 @@
+import unittest
+
+from kolabformat import DateTime
+from kolabformat import Duration
+from kolabformat import Event
+from kolabformat import RecurrenceRule
+
+from kolabformat import getSerializedUID
+from kolabformat import writeEvent
+
+import threading
+
+class ThreadEvent(threading.Thread):
+    def __init__(self, *args, **kw):
+        threading.Thread.__init__(self, target=self.create_event)
+
+    def create_event(self):
+        self.myevent = Event()
+        # All in UTC.
+        self.myevent.setStart(DateTime(2011,12,31,20,00,00))
+        self.myevent.setEnd(DateTime(2012,01,01,03,00,00))
+
+        # Set the organizer. cal-address first, display name later.
+        self.myevent.setOrganizer("John.Doe at example.org", "John Doe")
+
+        self.myevent.setSummary("New Year's eve")
+
+        self.myevent.setDescription("Celebrate new years eve with some champagne, family and friends")
+
+    def write(self):
+        writeEvent(self.myevent)
+
+    def uid(self):
+        return getSerializedUID()
+
+class TestThreadSafety(unittest.TestCase):
+    def create_threads(self):
+        self.thread1 = ThreadEvent()
+        self.thread1.start()
+
+        self.thread2 = ThreadEvent()
+        self.thread2.start()
+
+    def test_thread_safety(self):
+        self.create_threads()
+
+        self.thread1.write()
+        self.uid1 = self.thread1.uid()
+
+        self.thread2.write()
+        self.uid2 = self.thread2.uid()
+
+        self.uid3 = self.thread1.uid()
+
+    def test_thread_uno_uid_does_not_match_thread_dos_uid(self):
+        self.assertNotEqual(self.uid1, self.uid2)
+
+    def test_thread_uno_uid_after_thread_dos_write_does_not_match_thread_dos_uid(self):
+        self.assertNotEqual(uid3, uid2)
+
+    def test_thread_uno_uid_after_thread_dos_write_matches_thread_uno_uid(self):
+        self.assertEqual(uid1, uid3)





More information about the commits mailing list