D12045: test-http-bad-server: refactor the reading logic to avoid early return
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Mon Jan 24 14:46:21 UTC 2022
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Our ultimate goal is to add another way to define the connection needs to be
closed. To do so, we need the "read" code to be more unified.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D12045
AFFECTED FILES
tests/testlib/badserverext.py
CHANGE DETAILS
diff --git a/tests/testlib/badserverext.py b/tests/testlib/badserverext.py
--- a/tests/testlib/badserverext.py
+++ b/tests/testlib/badserverext.py
@@ -157,32 +157,30 @@
bmethod = method.encode('ascii')
func = getattr(orig, method)
- # No read limit. Call original function.
- if not remaining:
- result = func(size)
- obj._writelog(
- b'%s(%d) -> (%d) %s' % (bmethod, size, len(result), result)
- )
- return result
+ requested_size = size
+ actual_size = size
+
+ if remaining:
+ if size < 0:
+ actual_size = remaining
+ else:
+ actual_size = min(remaining, requested_size)
- origsize = size
+ result = func(actual_size)
- if size < 0:
- size = remaining
+ if remaining:
+ remaining -= len(result)
+ self.remaining_recv_bytes = remaining
+
+ if requested_size == actual_size:
+ msg = b'%s(%d) -> (%d) %s'
+ msg %= (bmethod, requested_size, len(result), result)
else:
- size = min(remaining, size)
-
- result = func(size)
- remaining -= len(result)
+ msg = b'%s(%d from %d) -> (%d) %s'
+ msg %= (bmethod, actual_size, requested_size, len(result), result)
+ obj._writelog(msg)
- obj._writelog(
- b'%s(%d from %d) -> (%d) %s'
- % (bmethod, size, origsize, len(result), result)
- )
-
- self.remaining_recv_bytes = remaining
-
- if remaining <= 0:
+ if remaining is not None and remaining <= 0:
obj._writelog(b'read limit reached; closing socket')
obj._cond_close()
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list