D3334: wireprotoframing: record when new stream is encountered
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Fri Apr 13 18:21:55 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGe6870bca1f47: wireprotoframing: record when new stream is encountered (authored by indygreg, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D3334?vs=8157&id=8192
REVISION DETAIL
https://phab.mercurial-scm.org/D3334
AFFECTED FILES
mercurial/wireprotoframing.py
tests/test-wireproto-clientreactor.py
CHANGE DETAILS
diff --git a/tests/test-wireproto-clientreactor.py b/tests/test-wireproto-clientreactor.py
--- a/tests/test-wireproto-clientreactor.py
+++ b/tests/test-wireproto-clientreactor.py
@@ -105,6 +105,26 @@
'unhandled frame type'):
sendframe(reactor, ffs(b'1 0 stream-begin text-output 0 foo'))
+class StreamTests(unittest.TestCase):
+ def testmultipleresponseframes(self):
+ reactor = framing.clientreactor(buffersends=False)
+
+ request, action, meta = reactor.callcommand(b'foo', {})
+
+ self.assertEqual(action, 'sendframes')
+ for f in meta['framegen']:
+ pass
+
+ action, meta = sendframe(
+ reactor,
+ ffs(b'%d 0 stream-begin 4 0 foo' % request.requestid))
+ self.assertEqual(action, 'responsedata')
+
+ action, meta = sendframe(
+ reactor,
+ ffs(b'%d 0 0 4 eos bar' % request.requestid))
+ self.assertEqual(action, 'responsedata')
+
if __name__ == '__main__':
import silenttestrunner
silenttestrunner.main(__name__)
diff --git a/mercurial/wireprotoframing.py b/mercurial/wireprotoframing.py
--- a/mercurial/wireprotoframing.py
+++ b/mercurial/wireprotoframing.py
@@ -1029,6 +1029,8 @@
'without beginning of stream flag set'),
}
+ self._incomingstreams[frame.streamid] = stream(frame.streamid)
+
if frame.streamflags & STREAM_FLAG_ENCODING_APPLIED:
raise error.ProgrammingError('support for decoding stream '
'payloads not yet implemneted')
To: indygreg, #hg-reviewers, durin42
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list