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