MCPcopy Create free account
hub / github.com/apache/qpid-proton / testDrainOrder

Method testDrainOrder

python/tests/proton_tests/engine.py:1674–1767  ·  view source on GitHub ↗

Verify drain/drained works regardless of ordering. See PROTON-401

(self)

Source from the content-addressed store, hash-verified

1672 assert drained == 10
1673
1674 def testDrainOrder(self):
1675 """ Verify drain/drained works regardless of ordering. See PROTON-401
1676 """
1677 assert self.snd.credit == 0
1678 assert self.rcv.credit == 0
1679 assert self.rcv.queued == 0
1680
1681 # self.rcv.session.connection.transport.trace(Transport.TRACE_FRM)
1682 # self.snd.session.connection.transport.trace(Transport.TRACE_FRM)
1683
1684 # verify that a sender that has reached the drain state will respond
1685 # promptly to a drain issued by the peer.
1686 self.rcv.flow(10)
1687 self.pump()
1688 assert self.snd.credit == 10, self.snd.credit
1689 assert self.rcv.credit == 10, self.rcv.credit
1690
1691 sd = self.snd.delivery("tagA")
1692 assert sd
1693 n = self.snd.send(b"A")
1694 assert n == 1
1695 self.pump()
1696 self.snd.advance()
1697
1698 # done sending, so signal that we are drained:
1699 self.snd.drained()
1700 self.pump()
1701 assert self.snd.credit == 9, self.snd.credit
1702 assert self.rcv.credit == 10, self.rcv.credit
1703
1704 self.rcv.drain(0)
1705 self.pump()
1706 assert self.snd.credit == 9, self.snd.credit
1707 assert self.rcv.credit == 10, self.rcv.credit
1708
1709 data = self.rcv.recv(10)
1710 assert data == b"A", data
1711 self.rcv.advance()
1712 self.pump()
1713 assert self.snd.credit == 9, self.snd.credit
1714 assert self.rcv.credit == 9, self.rcv.credit
1715
1716 self.snd.drained()
1717 self.pump()
1718 assert self.snd.credit == 0, self.snd.credit
1719 assert self.rcv.credit == 0, self.rcv.credit
1720
1721 # verify that a drain requested by the peer is not "acknowledged" until
1722 # after the sender has completed sending its pending messages
1723
1724 self.rcv.flow(10)
1725 self.pump()
1726 assert self.snd.credit == 10, self.snd.credit
1727 assert self.rcv.credit == 10, self.rcv.credit
1728
1729 sd = self.snd.delivery("tagB")
1730 assert sd
1731 n = self.snd.send(b"B")

Callers

nothing calls this directly

Calls 8

advanceMethod · 0.80
drainedMethod · 0.80
flowMethod · 0.45
pumpMethod · 0.45
deliveryMethod · 0.45
sendMethod · 0.45
drainMethod · 0.45
recvMethod · 0.45

Tested by

no test coverage detected