You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2018/03/27 19:49:13 UTC
qpid-dispatch git commit: DISPATCH-947 - Modified test_11_three_ack,
no messenger
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 0402e4c80 -> 4a596b712
DISPATCH-947 - Modified test_11_three_ack, no messenger
system_tests_two_routers.TwoRouterTest.test_11_three_ack
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/4a596b71
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/4a596b71
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/4a596b71
Branch: refs/heads/master
Commit: 4a596b71262032abd8a429d42bc2e881ac71d88c
Parents: 0402e4c
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Mar 27 15:48:11 2018 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Tue Mar 27 15:49:09 2018 -0400
----------------------------------------------------------------------
tests/system_tests_two_routers.py | 100 ++++++++++++++++-----------------
1 file changed, 48 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4a596b71/tests/system_tests_two_routers.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_two_routers.py b/tests/system_tests_two_routers.py
index 7a32b3f..f976ffa 100644
--- a/tests/system_tests_two_routers.py
+++ b/tests/system_tests_two_routers.py
@@ -180,58 +180,8 @@ class TwoRouterTest(TestCase):
test.run()
def test_11_three_ack(self):
- addr = "amqp:/three_ack/1"
- M1 = self.messenger()
- M2 = self.messenger()
-
- M1.route("amqp:/*", self.routers[0].addresses[0]+"/$1")
- M2.route("amqp:/*", self.routers[1].addresses[0]+"/$1")
-
- M1.outgoing_window = 5
- M2.incoming_window = 5
-
- M1.start()
- M2.start()
- M2.subscribe(addr)
- self.routers[0].wait_address("three_ack/1", 0, 1)
-
- tm = Message()
- rm = Message()
-
- tm.address = addr
- tm.body = {'number': 200}
-
- tx_tracker = M1.put(tm)
- M1.send(0)
- M2.recv(1)
- rx_tracker = M2.get(rm)
- self.assertEqual(200, rm.body['number'])
- self.assertEqual(PENDING, M1.status(tx_tracker))
-
- M2.accept(rx_tracker)
-
- M2.flush()
- M1.flush()
-
- self.assertEqual(ACCEPTED, M1.status(tx_tracker))
-
- M1.settle(tx_tracker)
-
- M1.flush()
- M2.flush()
-
- ##
- ## We need a way to verify on M2 (receiver) that the tracker has been
- ## settled on the M1 (sender). [ See PROTON-395 ]
- ##
-
- M2.settle(rx_tracker)
-
- M2.flush()
- M1.flush()
-
- M1.stop()
- M2.stop()
+ test = ThreeAck(self, self.routers[0].addresses[0], self.routers[1].addresses[0])
+ test.run()
def test_12_excess_deliveries_released(self):
"""
@@ -1269,6 +1219,52 @@ class PropagatedDisposition(MessagingHandler):
self.test.assertEqual(['accept', 'reject'], self.settled)
+class ThreeAck(MessagingHandler):
+ def __init__(self, test, address1, address2):
+ super(ThreeAck, self).__init__(auto_accept=False, auto_settle=False)
+ self.addrs = [address1, address2]
+ self.settled = []
+ self.test = test
+ self.phase = 0
+
+ def on_start(self, event):
+ connections = [event.container.connect(a) for a in self.addrs]
+ addr = "three_ack/1"
+ self.sender = event.container.create_sender(connections[0], addr)
+ self.receiver = event.container.create_receiver(connections[1], addr)
+ self.receiver.flow(1)
+ self.tracker = self.sender.send(Message('hello'))
+
+ def on_message(self, event):
+ self.test.assertEqual(0, self.phase)
+ self.phase = 1
+ self.test.assertFalse(event.delivery.settled)
+ self.test.assertEqual(0, self.tracker.local_state)
+ self.test.assertEqual(0, self.tracker.remote_state)
+ event.delivery.update(Delivery.ACCEPTED)
+ # NOTE: we don't settle yet for 3-ack
+
+ def on_accepted(self, event):
+ self.test.assertTrue(event.sender)
+ self.test.assertEqual(1, self.phase)
+ self.phase = 2
+ self.test.assertEqual(Delivery.ACCEPTED, event.delivery.remote_state)
+ self.test.assertFalse(event.delivery.settled)
+ self.test.assertEqual(0, event.delivery.local_state)
+ event.delivery.settle()
+ self.test.assertFalse(event.delivery.settled)
+ event.connection.close()
+
+ def on_settled(self, event):
+ self.test.assertTrue(event.receiver)
+ self.test.assertEqual(2, self.phase)
+ self.phase = 3
+ event.connection.close()
+
+ def run(self):
+ Container(self).run()
+ self.test.assertEqual(3, self.phase)
+
if __name__ == '__main__':
unittest.main(main_module())
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org