You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2022/01/26 20:09:25 UTC
[qpid-dispatch] 02/02: DISPATCH-2312: replace no-op test with credit test
This is an automated email from the ASF dual-hosted git repository.
kgiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
commit 51fb44adb68b67a17cef3d9374b19557bccc180d
Author: Kenneth Giusti <kg...@apache.org>
AuthorDate: Wed Jan 26 14:49:13 2022 -0500
DISPATCH-2312: replace no-op test with credit test
This closes #1497
---
tests/system_tests_one_router.py | 62 +++++++++++++++++++++-------------------
1 file changed, 32 insertions(+), 30 deletions(-)
diff --git a/tests/system_tests_one_router.py b/tests/system_tests_one_router.py
index c36de30..9b74e29 100644
--- a/tests/system_tests_one_router.py
+++ b/tests/system_tests_one_router.py
@@ -399,10 +399,14 @@ class OneRouterTest(TestCase):
test.run()
self.assertIsNone(test.error)
- def test_07_unsettled_undeliverable(self) :
+ def test_07_no_consumer_no_credit(self):
+ """
+ Ensure a sending client never gets credit if there is no
+ consumer present.
+ """
addr = self.address + '/closest/' + str(OneRouterTest.closest_count)
OneRouterTest.closest_count += 1
- test = UsettledUndeliverable(addr, n_messages=10)
+ test = NoConsumerNoCredit(addr)
test.run()
self.assertIsNone(test.error)
@@ -1863,35 +1867,31 @@ class PropagatedDisposition (MessagingHandler) :
dlv.update(Delivery.ACCEPTED)
-class UsettledUndeliverable (MessagingHandler) :
- def __init__(self,
- addr,
- n_messages
- ) :
- super(UsettledUndeliverable, self) . __init__(prefetch=n_messages)
- self.addr = addr
- self.n_messages = n_messages
+class NoConsumerNoCredit(MessagingHandler):
+ def __init__(self, addr):
+ super(NoConsumerNoCredit, self).__init__()
+ self.addr = addr
+ self.test_timer = None
+ self.credit_timer = None
+ self.sender = None
+ self.bailing = False
- self.test_timer = None
- self.sender = None
- self.n_sent = 0
- self.n_received = 0
- self.bailing = False
-
- def run(self) :
+ def run(self):
Container(self).run()
- def bail(self, travail) :
+ def bail(self, travail):
self.bailing = True
self.error = travail
self.send_conn.close()
- self.test_timer.cancel()
+ self.test_timer and self.test_timer.cancel()
+ self.credit_timer and self.credit_timer.cancel()
def timeout(self):
- if self.n_sent > 0 :
- self.bail("Messages sent with no receiver.")
- else :
- self.bail(None)
+ self.bail("Test timed out - should not happen!")
+
+ def on_timer_task(self, event):
+ # no credit arrived: success
+ self.bail(None)
def on_start(self, event):
self.send_conn = event.container.connect(self.addr)
@@ -1899,15 +1899,17 @@ class UsettledUndeliverable (MessagingHandler) :
# Uh-oh. We are not creating a receiver!
self.test_timer = event.reactor.schedule(TIMEOUT, TestTimeout(self))
- def on_sendable(self, event) :
- while self.n_sent < self.n_messages :
- msg = Message(body=self.n_sent)
- dlv = self.sender.send(msg)
- dlv.settle()
- self.n_sent += 1
+ def on_link_opened(self, event):
+ # delay to ensure no credit arrives
+ if event.link == self.sender:
+ self.credit_timer = event.reactor.schedule(1.0, self)
+
+ def on_sendable(self, event):
+ if event.link == self.sender:
+ self.bail("Received credit even though no consumer present")
def on_message(self, event) :
- self.n_received += 1
+ self.bail("on_message should never happen")
class ThreeAck (MessagingHandler) :
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org