Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_queue.py @ 38664:7619216bbc19 2.4
Bug #1502728: Correctly link against librt library on HP-UX.
(backport from rev. 46743)
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Thu, 08 Jun 2006 12:54:16 +0000 |
| parents | eab21fbf9a70 |
| children | f731859e9b3b bed3f52f0dc6 |
| rev | line source |
|---|---|
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
1 # Some simple Queue module tests, plus some failure conditions |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
2 # to ensure the Queue locks remain stable. |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
3 import Queue |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
4 import sys |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
5 import threading |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
6 import time |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
7 |
|
24364
aa0d2d51fbde
Get rid of relative imports in all unittests. Now anything that
Barry Warsaw <barry@python.org>
parents:
23160
diff
changeset
|
8 from test.test_support import verify, TestFailed, verbose |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
9 |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
10 QUEUE_SIZE = 5 |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
11 |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
12 # A thread to run a function that unclogs a blocked Queue. |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
13 class _TriggerThread(threading.Thread): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
14 def __init__(self, fn, args): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
15 self.fn = fn |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
16 self.args = args |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
17 self.startedEvent = threading.Event() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
18 threading.Thread.__init__(self) |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
19 |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
20 def run(self): |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
21 # The sleep isn't necessary, but is intended to give the blocking |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
22 # function in the main thread a chance at actually blocking before |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
23 # we unclog it. But if the sleep is longer than the timeout-based |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
24 # tests wait in their blocking functions, those tests will fail. |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
25 # So we give them much longer timeout values compared to the |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
26 # sleep here (I aimed at 10 seconds for blocking functions -- |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
27 # they should never actually wait that long - they should make |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
28 # progress as soon as we call self.fn()). |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
29 time.sleep(0.1) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
30 self.startedEvent.set() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
31 self.fn(*self.args) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
32 |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
33 # Execute a function that blocks, and in a separate thread, a function that |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
34 # triggers the release. Returns the result of the blocking function. |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
35 # Caution: block_func must guarantee to block until trigger_func is |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
36 # called, and trigger_func must guarantee to change queue state so that |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
37 # block_func can make enough progress to return. In particular, a |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
38 # block_func that just raises an exception regardless of whether trigger_func |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
39 # is called will lead to timing-dependent sporadic failures, and one of |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
40 # those went rarely seen but undiagnosed for years. Now block_func |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
41 # must be unexceptional. If block_func is supposed to raise an exception, |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
42 # call _doExceptionalBlockingTest() instead. |
|
26250
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
43 def _doBlockingTest(block_func, block_args, trigger_func, trigger_args): |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
44 t = _TriggerThread(trigger_func, trigger_args) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
45 t.start() |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
46 result = block_func(*block_args) |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
47 # If block_func returned before our thread made the call, we failed! |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
48 if not t.startedEvent.isSet(): |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
49 raise TestFailed("blocking function '%r' appeared not to block" % |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
50 block_func) |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
51 t.join(10) # make sure the thread terminates |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
52 if t.isAlive(): |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
53 raise TestFailed("trigger function '%r' appeared to not return" % |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
54 trigger_func) |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
55 return result |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
56 |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
57 # Call this instead if block_func is supposed to raise an exception. |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
58 def _doExceptionalBlockingTest(block_func, block_args, trigger_func, |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
59 trigger_args, expected_exception_class): |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
60 t = _TriggerThread(trigger_func, trigger_args) |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
61 t.start() |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
62 try: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
63 try: |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
64 block_func(*block_args) |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
65 except expected_exception_class: |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
66 raise |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
67 else: |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
68 raise TestFailed("expected exception of kind %r" % |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
69 expected_exception_class) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
70 finally: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
71 t.join(10) # make sure the thread terminates |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
72 if t.isAlive(): |
|
26250
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
73 raise TestFailed("trigger function '%r' appeared to not return" % |
|
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
74 trigger_func) |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
75 if not t.startedEvent.isSet(): |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
76 raise TestFailed("trigger thread ended but event never set") |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
77 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
78 # A Queue subclass that can provoke failure at a moment's notice :) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
79 class FailingQueueException(Exception): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
80 pass |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
81 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
82 class FailingQueue(Queue.Queue): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
83 def __init__(self, *args): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
84 self.fail_next_put = False |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
85 self.fail_next_get = False |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
86 Queue.Queue.__init__(self, *args) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
87 def _put(self, item): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
88 if self.fail_next_put: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
89 self.fail_next_put = False |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
90 raise FailingQueueException, "You Lose" |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
91 return Queue.Queue._put(self, item) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
92 def _get(self): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
93 if self.fail_next_get: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
94 self.fail_next_get = False |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
95 raise FailingQueueException, "You Lose" |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
96 return Queue.Queue._get(self) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
97 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
98 def FailingQueueTest(q): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
99 if not q.empty(): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
100 raise RuntimeError, "Call this function with an empty queue" |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
101 for i in range(QUEUE_SIZE-1): |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
102 q.put(i) |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
103 # Test a failing non-blocking put. |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
104 q.fail_next_put = True |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
105 try: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
106 q.put("oops", block=0) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
107 raise TestFailed("The queue didn't fail when it should have") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
108 except FailingQueueException: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
109 pass |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
110 q.fail_next_put = True |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
111 try: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
112 q.put("oops", timeout=0.1) |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
113 raise TestFailed("The queue didn't fail when it should have") |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
114 except FailingQueueException: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
115 pass |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
116 q.put("last") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
117 verify(q.full(), "Queue should be full") |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
118 # Test a failing blocking put |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
119 q.fail_next_put = True |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
120 try: |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
121 _doBlockingTest(q.put, ("full",), q.get, ()) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
122 raise TestFailed("The queue didn't fail when it should have") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
123 except FailingQueueException: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
124 pass |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
125 # Check the Queue isn't damaged. |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
126 # put failed, but get succeeded - re-add |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
127 q.put("last") |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
128 # Test a failing timeout put |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
129 q.fail_next_put = True |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
130 try: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
131 _doExceptionalBlockingTest(q.put, ("full", True, 10), q.get, (), |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
132 FailingQueueException) |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
133 raise TestFailed("The queue didn't fail when it should have") |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
134 except FailingQueueException: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
135 pass |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
136 # Check the Queue isn't damaged. |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
137 # put failed, but get succeeded - re-add |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
138 q.put("last") |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
139 verify(q.full(), "Queue should be full") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
140 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
141 verify(not q.full(), "Queue should not be full") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
142 q.put("last") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
143 verify(q.full(), "Queue should be full") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
144 # Test a blocking put |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
145 _doBlockingTest( q.put, ("full",), q.get, ()) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
146 # Empty it |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
147 for i in range(QUEUE_SIZE): |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
148 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
149 verify(q.empty(), "Queue should be empty") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
150 q.put("first") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
151 q.fail_next_get = True |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
152 try: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
153 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
154 raise TestFailed("The queue didn't fail when it should have") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
155 except FailingQueueException: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
156 pass |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
157 verify(not q.empty(), "Queue should not be empty") |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
158 q.fail_next_get = True |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
159 try: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
160 q.get(timeout=0.1) |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
161 raise TestFailed("The queue didn't fail when it should have") |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
162 except FailingQueueException: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
163 pass |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
164 verify(not q.empty(), "Queue should not be empty") |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
165 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
166 verify(q.empty(), "Queue should be empty") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
167 q.fail_next_get = True |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
168 try: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
169 _doExceptionalBlockingTest(q.get, (), q.put, ('empty',), |
|
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
170 FailingQueueException) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
171 raise TestFailed("The queue didn't fail when it should have") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
172 except FailingQueueException: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
173 pass |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
174 # put succeeded, but get failed. |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
175 verify(not q.empty(), "Queue should not be empty") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
176 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
177 verify(q.empty(), "Queue should be empty") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
178 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
179 def SimpleQueueTest(q): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
180 if not q.empty(): |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
181 raise RuntimeError, "Call this function with an empty queue" |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
182 # I guess we better check things actually queue correctly a little :) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
183 q.put(111) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
184 q.put(222) |
|
26250
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
185 verify(q.get() == 111 and q.get() == 222, |
|
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
186 "Didn't seem to queue the correct data!") |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
187 for i in range(QUEUE_SIZE-1): |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
188 q.put(i) |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
189 verify(not q.empty(), "Queue should not be empty") |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
190 verify(not q.full(), "Queue should not be full") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
191 q.put("last") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
192 verify(q.full(), "Queue should be full") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
193 try: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
194 q.put("full", block=0) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
195 raise TestFailed("Didn't appear to block with a full queue") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
196 except Queue.Full: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
197 pass |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
198 try: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
199 q.put("full", timeout=0.01) |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
200 raise TestFailed("Didn't appear to time-out with a full queue") |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
201 except Queue.Full: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
202 pass |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
203 # Test a blocking put |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
204 _doBlockingTest(q.put, ("full",), q.get, ()) |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
205 _doBlockingTest(q.put, ("full", True, 10), q.get, ()) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
206 # Empty it |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
207 for i in range(QUEUE_SIZE): |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
208 q.get() |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
209 verify(q.empty(), "Queue should be empty") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
210 try: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
211 q.get(block=0) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
212 raise TestFailed("Didn't appear to block with an empty queue") |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
213 except Queue.Empty: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
214 pass |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
215 try: |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
216 q.get(timeout=0.01) |
|
25796
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
217 raise TestFailed("Didn't appear to time-out with an empty queue") |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
218 except Queue.Empty: |
|
3eafbde56b21
Patch #572628: Optional timeouts for put and get.
Martin v. Löwis <martin@v.loewis.de>
parents:
24364
diff
changeset
|
219 pass |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
220 # Test a blocking get |
|
26250
02d48ed447a8
Style guide reformats. I saw this test fail on a very heavily loaded
Tim Peters <tim.peters@gmail.com>
parents:
25796
diff
changeset
|
221 _doBlockingTest(q.get, (), q.put, ('empty',)) |
|
33203
eab21fbf9a70
Stab at SF 1010777: test_queue fails occasionally
Tim Peters <tim.peters@gmail.com>
parents:
33202
diff
changeset
|
222 _doBlockingTest(q.get, (True, 10), q.put, ('empty',)) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
223 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
224 def test(): |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
225 q = Queue.Queue(QUEUE_SIZE) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
226 # Do it a couple of times on the same queue |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
227 SimpleQueueTest(q) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
228 SimpleQueueTest(q) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
229 if verbose: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
230 print "Simple Queue tests seemed to work" |
|
33202
1d0f4c0357d0
Semantic-neutral format and comment changes.
Tim Peters <tim.peters@gmail.com>
parents:
26250
diff
changeset
|
231 q = FailingQueue(QUEUE_SIZE) |
|
23160
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
232 FailingQueueTest(q) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
233 FailingQueueTest(q) |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
234 if verbose: |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
235 print "Failing Queue tests seemed to work" |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
236 |
|
c548e726b3bc
Fix bug 544473 - "Queue module can deadlock".
Mark Hammond <mhammond@skippinet.com.au>
parents:
diff
changeset
|
237 test() |
