summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/semaphore_test.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/semaphore_test.py b/tests/semaphore_test.py
index 1316330..ced9136 100644
--- a/tests/semaphore_test.py
+++ b/tests/semaphore_test.py
@@ -45,5 +45,24 @@ class TestSemaphore(LimitedTestCase):
self.assertRaises(ValueError, sem.acquire, blocking=False, timeout=1)
+def test_semaphore_contention():
+ g_mutex = semaphore.Semaphore()
+ counts = [0, 0]
+
+ def worker(no):
+ while min(counts) < 200:
+ with g_mutex:
+ counts[no - 1] += 1
+ eventlet.sleep(0.001)
+
+ t1 = eventlet.spawn(worker, no=1)
+ t2 = eventlet.spawn(worker, no=2)
+ eventlet.sleep(0.5)
+ t1.kill()
+ t2.kill()
+
+ assert abs(counts[0] - counts[1]) < int(min(counts) * 0.1), counts
+
+
if __name__ == '__main__':
- unittest.main()
+ unittest.main() \ No newline at end of file