diff options
| author | Ken Giusti <kgiusti@apache.org> | 2011-05-05 21:41:40 +0000 |
|---|---|---|
| committer | Ken Giusti <kgiusti@apache.org> | 2011-05-05 21:41:40 +0000 |
| commit | 2e6c312e97a679187802272defcd873c87a9004d (patch) | |
| tree | 3a52b1c902a87f3ec888bb2963c967e894600c7b /cpp/src/tests/queue_flow_limit_tests.py | |
| parent | 9a752cf0eaf17a607b1ac3dd498a835cf2ab690f (diff) | |
| download | qpid-python-2e6c312e97a679187802272defcd873c87a9004d.tar.gz | |
QPID-3244: unit test for the fix.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1099979 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/queue_flow_limit_tests.py')
| -rw-r--r-- | cpp/src/tests/queue_flow_limit_tests.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cpp/src/tests/queue_flow_limit_tests.py b/cpp/src/tests/queue_flow_limit_tests.py index d761bde40d..dec7cfb3af 100644 --- a/cpp/src/tests/queue_flow_limit_tests.py +++ b/cpp/src/tests/queue_flow_limit_tests.py @@ -325,5 +325,47 @@ class QueueFlowLimitTests(TestBase010): self.verify_limit(TestQ(oid)) + def test_blocked_queue_delete(self): + """ Verify that blocked senders are unblocked when a queue that is flow + controlled is deleted. + """ + + class BlockedSender(Thread): + def __init__(self, tester, queue, count, capacity=10): + self.tester = tester + self.queue = queue + self.count = count + self.capacity = capacity + Thread.__init__(self) + self.done = False + self.start() + def run(self): + # spawn qpid-send + p = self.tester._start_qpid_send(self.queue, + self.count, + self.capacity) + p.close() # waits for qpid-send to complete + self.done = True + + self.startQmf(); + oid = self._create_queue("kill-q", stop_size=10, resume_size=2) + q = self.qmf.getObjects(_objectId=oid)[0] + self.failIf(q.flowStopped) + + sender = BlockedSender(self, "kill-q", count=100) + # wait for flow control + deadline = time() + 10 + while (not q.flowStopped) and time() < deadline: + q.update() + + self.failUnless(q.flowStopped) + self.failIf(sender.done) # sender blocked + + self._delete_queue("kill-q") + sender.join(5) + self.failIf(sender.isAlive()) + self.failUnless(sender.done) + + |
