# HG changeset patch # User Pierre-Yves David # Date 1642760156 -3600 # Node ID 3efc8644dd00c70defd34fcc9362701a5c3cc3d7 # Parent b060e305d79fc83d732cf36c4469699972f7c71a test-http-bad-server: refactor the reading logic to avoid early return 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. Differential Revision: https://phab.mercurial-scm.org/D12045 diff -r b060e305d79f -r 3efc8644dd00 tests/testlib/badserverext.py --- a/tests/testlib/badserverext.py Fri Jan 21 03:05:43 2022 +0100 +++ b/tests/testlib/badserverext.py Fri Jan 21 11:15:56 2022 +0100 @@ -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()