This is an archive of the discontinued Mercurial Phabricator instance.

wireproto: crude support for version 2 HTTP peer
ClosedPublic

Authored by indygreg on Apr 7 2018, 1:53 AM.

Details

Summary

As part of implementing the server-side bits of the wire protocol
command handlers for version 2, we want a way to easily test those
commands. Currently, we use the "httprequest" action of `hg
debugwireproto`. But this requires explicitly specifying the HTTP
request headers, low-level frame details, and the data structure
to encode with CBOR. That's a lot of boilerplate and a lot of it can
change as the wire protocol evolves.

hg debugwireproto has a mechanism to issue commands via the peer
interface. That is *much* easier to use and we prefer to test with
that going forward.

This commit implements enough parts of the peer API to send basic
requests via the HTTP version 2 transport.

The peer code is super hacky. Again, the goal is to facilitate
server testing, not robustly implement a client. The client code
will receive love at a later time.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

indygreg created this revision.Apr 7 2018, 1:53 AM
yuja accepted this revision.Apr 9 2018, 10:58 AM
This revision is now accepted and ready to land.Apr 9 2018, 10:58 AM
yuja added inline comments.Apr 9 2018, 11:07 AM
mercurial/debugcommands.py
2962

My patch broke this, so fixed in flight. :)

This revision was automatically updated to reflect the committed changes.