Patchwork D12045: test-http-bad-server: refactor the reading logic to avoid early return

login
register
mail settings
Submitter phabricator
Date Jan. 24, 2022, 2:46 p.m.
Message ID <differential-rev-PHID-DREV-rs5c7zwfqq7m6o44rj4p-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50370/
State New
Headers show

Comments

phabricator - Jan. 24, 2022, 2:46 p.m.
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




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

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()