D2842: util: don't log low-level I/O calls for HTTP peer
This revision was automatically updated to reflect the committed changes. Closed by commit rHGd3a9036d9ae9: util: dont log low-level I/O calls for HTTP peer (authored by indygreg, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2842?vs=7192=7220 REVISION DETAIL https://phab.mercurial-scm.org/D2842 AFFECTED FILES mercurial/debugcommands.py mercurial/util.py tests/test-http-protocol.t CHANGE DETAILS diff --git a/tests/test-http-protocol.t b/tests/test-http-protocol.t --- a/tests/test-http-protocol.t +++ b/tests/test-http-protocol.t @@ -175,29 +175,21 @@ > command listkeys > namespace namespaces > EOF - s> sendall(*, 0): (glob) s> GET /?cmd=capabilities HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 21: s> Content-Length: *\r\n (glob) - s> readline() -> 2: s> \r\n - s> read(*) -> *: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ (glob) + s> lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ sending listkeys command - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> vary: X-HgArg-1,X-HgProto-1\r\n @@ -208,19 +200,12 @@ s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases @@ -235,28 +220,20 @@ > x-hgarg-1: namespace=namespaces > EOF using raw connection to peer - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> user-agent: mercurial/proto-1.0 (Mercurial 42)\r\n s> x-hgarg-1: namespace=namespaces\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -762,7 +762,8 @@ return makeloggingfileobject(observer.fh, res, observer.name, reads=observer.reads, writes=observer.writes, - logdata=observer.logdata) + logdata=observer.logdata, + logdataapis=observer.logdataapis) def recv(self, *args, **kwargs): return object.__getattribute__(self, r'_observedcall')( @@ -825,29 +826,37 @@ class baseproxyobserver(object): def _writedata(self, data): if not self.logdata: -self.fh.write('\n') -self.fh.flush() +if self.logdataapis: +self.fh.write('\n') +self.fh.flush() return # Simple case writes all data on a single line. if b'\n' not in data: -self.fh.write(': %s\n' % escapedata(data)) +if self.logdataapis: +self.fh.write(': %s\n' % escapedata(data)) +else: +self.fh.write('%s> %s\n' % (self.name, escapedata(data))) self.fh.flush() return # Data with newlines is written to
D2842: util: don't log low-level I/O calls for HTTP peer
indygreg updated this revision to Diff 7192. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2842?vs=7161=7192 REVISION DETAIL https://phab.mercurial-scm.org/D2842 AFFECTED FILES mercurial/debugcommands.py mercurial/util.py tests/test-http-protocol.t CHANGE DETAILS diff --git a/tests/test-http-protocol.t b/tests/test-http-protocol.t --- a/tests/test-http-protocol.t +++ b/tests/test-http-protocol.t @@ -175,29 +175,21 @@ > command listkeys > namespace namespaces > EOF - s> sendall(*, 0): (glob) s> GET /?cmd=capabilities HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 21: s> Content-Length: *\r\n (glob) - s> readline() -> 2: s> \r\n - s> read(*) -> *: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ (glob) + s> lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ sending listkeys command - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> vary: X-HgArg-1,X-HgProto-1\r\n @@ -208,19 +200,12 @@ s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases @@ -235,28 +220,20 @@ > x-hgarg-1: namespace=namespaces > EOF using raw connection to peer - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> user-agent: mercurial/proto-1.0 (Mercurial 42)\r\n s> x-hgarg-1: namespace=namespaces\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -762,7 +762,8 @@ return makeloggingfileobject(observer.fh, res, observer.name, reads=observer.reads, writes=observer.writes, - logdata=observer.logdata) + logdata=observer.logdata, + logdataapis=observer.logdataapis) def recv(self, *args, **kwargs): return object.__getattribute__(self, r'_observedcall')( @@ -825,29 +826,37 @@ class baseproxyobserver(object): def _writedata(self, data): if not self.logdata: -self.fh.write('\n') -self.fh.flush() +if self.logdataapis: +self.fh.write('\n') +self.fh.flush() return # Simple case writes all data on a single line. if b'\n' not in data: -self.fh.write(': %s\n' % escapedata(data)) +if self.logdataapis: +self.fh.write(': %s\n' % escapedata(data)) +else: +self.fh.write('%s> %s\n' % (self.name, escapedata(data))) self.fh.flush() return # Data with newlines is written to multiple lines. -self.fh.write(':\n') +if self.logdataapis: +self.fh.write(':\n') + lines = data.splitlines(True)
D2842: util: don't log low-level I/O calls for HTTP peer
indygreg updated this revision to Diff 7161. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2842?vs=7008=7161 REVISION DETAIL https://phab.mercurial-scm.org/D2842 AFFECTED FILES mercurial/debugcommands.py mercurial/util.py tests/test-http-protocol.t CHANGE DETAILS diff --git a/tests/test-http-protocol.t b/tests/test-http-protocol.t --- a/tests/test-http-protocol.t +++ b/tests/test-http-protocol.t @@ -175,29 +175,21 @@ > command listkeys > namespace namespaces > EOF - s> sendall(*, 0): (glob) s> GET /?cmd=capabilities HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 21: s> Content-Length: *\r\n (glob) - s> readline() -> 2: s> \r\n - s> read(*) -> *: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ (glob) + s> lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ sending listkeys command - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> vary: X-HgArg-1,X-HgProto-1\r\n @@ -208,19 +200,12 @@ s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases @@ -235,28 +220,20 @@ > x-hgarg-1: namespace=namespaces > EOF using raw connection to peer - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> user-agent: mercurial/proto-1.0 (Mercurial 42)\r\n (glob) s> x-hgarg-1: namespace=namespaces\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -762,7 +762,8 @@ return makeloggingfileobject(observer.fh, res, observer.name, reads=observer.reads, writes=observer.writes, - logdata=observer.logdata) + logdata=observer.logdata, + logdataapis=observer.logdataapis) def recv(self, *args, **kwargs): return object.__getattribute__(self, r'_observedcall')( @@ -825,29 +826,37 @@ class baseproxyobserver(object): def _writedata(self, data): if not self.logdata: -self.fh.write('\n') -self.fh.flush() +if self.logdataapis: +self.fh.write('\n') +self.fh.flush() return # Simple case writes all data on a single line. if b'\n' not in data: -self.fh.write(': %s\n' % escapedata(data)) +if self.logdataapis: +self.fh.write(': %s\n' % escapedata(data)) +else: +self.fh.write('%s> %s\n' % (self.name, escapedata(data))) self.fh.flush() return # Data with newlines is written to multiple lines. -self.fh.write(':\n') +if self.logdataapis: +self.fh.write(':\n') + lines =
D2842: util: don't log low-level I/O calls for HTTP peer
durin42 accepted this revision. durin42 added a comment. This revision is now accepted and ready to land. This one needs rebased, but looks good. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D2842 To: indygreg, #hg-reviewers, durin42 Cc: durin42, mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D2842: util: don't log low-level I/O calls for HTTP peer
indygreg updated this revision to Diff 7008. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2842?vs=6996=7008 REVISION DETAIL https://phab.mercurial-scm.org/D2842 AFFECTED FILES mercurial/debugcommands.py mercurial/util.py tests/test-http-protocol.t CHANGE DETAILS diff --git a/tests/test-http-protocol.t b/tests/test-http-protocol.t --- a/tests/test-http-protocol.t +++ b/tests/test-http-protocol.t @@ -175,29 +175,21 @@ > command listkeys > namespace namespaces > EOF - s> sendall(*, 0): (glob) s> GET /?cmd=capabilities HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 21: s> Content-Length: *\r\n (glob) - s> readline() -> 2: s> \r\n - s> read(*) -> *: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ (glob) + s> lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ sending listkeys command - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> vary: X-HgArg-1,X-HgProto-1\r\n @@ -208,19 +200,12 @@ s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases @@ -235,28 +220,20 @@ > x-hgarg-1: namespace=namespaces > EOF using raw connection to peer - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> user-agent: mercurial/proto-1.0 (Mercurial 42)\r\n (glob) s> x-hgarg-1: namespace=namespaces\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -760,7 +760,8 @@ return makeloggingfileobject(observer.fh, res, observer.name, reads=observer.reads, writes=observer.writes, - logdata=observer.logdata) + logdata=observer.logdata, + logdataapis=observer.logdataapis) def recv(self, *args, **kwargs): return object.__getattribute__(self, r'_observedcall')( @@ -823,26 +824,34 @@ class baseproxyobserver(object): def _writedata(self, data): if not self.logdata: -self.fh.write('\n') +if self.logdataapis: +self.fh.write('\n') return # Simple case writes all data on a single line. if b'\n' not in data: -self.fh.write(': %s\n' % escapedata(data)) +if self.logdataapis: +self.fh.write(': %s\n' % escapedata(data)) +else: +self.fh.write('%s> %s\n' % (self.name, escapedata(data))) return # Data with newlines is written to multiple lines. -self.fh.write(':\n') +if self.logdataapis: +self.fh.write(':\n') + lines = data.splitlines(True) for line in lines: self.fh.write('%s> %s\n' % (self.name,
D2842: util: don't log low-level I/O calls for HTTP peer
indygreg created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY `hg debugwireproto` is useful for testing HTTP interactions. Possibly more useful than `get-with-headers.py`. But one thing that makes it annoying for mid-level tests is that it logs all API calls, such as readline(). This makes output - especially headers - overly verbose. This commit teaches our file and socket observers to not log API calls on functions dealing with data. We change the behavior of `hg debugwireproto` to enable this mode by default. --debug can be added to restore the previous behavior. As the test changes demonstrate, this makes tests much easier to read. As a bonus, it also removes some required (glob) over lengths in system call results. One thing that's lacking is knowing which side sent data. But we can fix this in a follow-up once it becomes a problem. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D2842 AFFECTED FILES mercurial/debugcommands.py mercurial/util.py tests/test-http-protocol.t CHANGE DETAILS diff --git a/tests/test-http-protocol.t b/tests/test-http-protocol.t --- a/tests/test-http-protocol.t +++ b/tests/test-http-protocol.t @@ -175,29 +175,21 @@ > command listkeys > namespace namespaces > EOF - s> sendall(*, 0): (glob) s> GET /?cmd=capabilities HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 21: s> Content-Length: *\r\n (glob) - s> readline() -> 2: s> \r\n - s> read(*) -> *: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ (glob) + s> lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx compression=$BUNDLE2_COMPRESSIONS$ sending listkeys command - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> vary: X-HgArg-1,X-HgProto-1\r\n @@ -208,19 +200,12 @@ s> user-agent: mercurial/proto-1.0 (Mercurial *)\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases @@ -235,28 +220,20 @@ > x-hgarg-1: namespace=namespaces > EOF using raw connection to peer - s> sendall(*, 0): (glob) s> GET /?cmd=listkeys HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> accept: application/mercurial-0.1\r\n s> user-agent: mercurial/proto-1.0 (Mercurial 42)\r\n (glob) s> x-hgarg-1: namespace=namespaces\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> readline() -> 36: s> HTTP/1.1 200 Script output follows\r\n - s> readline() -> 28: s> Server: testing stub value\r\n - s> readline() -> *: (glob) s> Date: $HTTP_DATE$\r\n - s> readline() -> 41: s> Content-Type: application/mercurial-0.1\r\n - s> readline() -> 20: s> Content-Length: 30\r\n - s> readline() -> 2: s> \r\n - s> read(30) -> 30: s> bookmarks \n s> namespaces\n s> phases diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -755,7 +755,8 @@ return makeloggingfileobject(observer.fh, res, observer.name, reads=observer.reads, writes=observer.writes, - logdata=observer.logdata) + logdata=observer.logdata, + logdataapis=observer.logdataapis) def recv(self, *args, **kwargs): return object.__getattribute__(self, r'_observedcall')( @@ -818,26 +819,34 @@ class