##// END OF EJS Templates
debugcommands: introduce new debugrequirements command...
debugcommands: introduce new debugrequirements command This for now just prints out the list of current requirements. In future this will be helpful in reading requirements from couple of sources, and checking which requirement comes from where. Differential Revision: https://phab.mercurial-scm.org/D8632

File last commit:

r42237:675775c3 default
r45667:4a28f5e8 default
Show More
test-http-api-httpv2.t
743 lines | 23.7 KiB | text/troff | Tads3Lexer
/ tests / test-http-api-httpv2.t
Kyle Lippincott
tests: mark tests that fail when using chg as #require no-chg...
r38041 #require no-chg
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ . $TESTDIR/wireprotohelpers.sh
$ enabledummycommands
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064 $ hg init server
$ cat > server/.hg/hgrc << EOF
> [experimental]
> web.apiserver = true
> EOF
$ hg -R server serve -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
HTTP v2 protocol not enabled by default
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest GET api/$HTTPV2
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064 > user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> GET /api/exp-http-v2-0003 HTTP/1.1\r\n
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 404 Not Found\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
s> Content-Length: 33\r\n
s> \r\n
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> API exp-http-v2-0003 not enabled\n
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064
Restart server with support for HTTP v2 API
$ killdaemons.py
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ enablehttpv2 server
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
$ cat hg.pid > $DAEMON_PIDS
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 Request to unknown command yields 404
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 > httprequest POST api/$HTTPV2/ro/badcommand
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/badcommand HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 404 Not Found\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
s> Content-Length: 42\r\n
s> \r\n
s> unknown wire protocol command: badcommand\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 GET to read-only command yields a 405
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 > httprequest GET api/$HTTPV2/ro/customreadonly
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> GET /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 405 Method Not Allowed\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Allow: POST\r\n
s> Content-Length: 30\r\n
s> \r\n
s> commands require POST requests
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 Missing Accept header results in 406
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > httprequest POST api/$HTTPV2/ro/customreadonly
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 406 Not Acceptable\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
Gregory Szorc
wireproto: define and implement protocol for issuing requests...
r37069 s> Content-Length: 85\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> \r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> client MUST specify Accept header with value: application/mercurial-exp-framing-0006\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068
Bad Accept header results in 406
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > httprequest POST api/$HTTPV2/ro/customreadonly
> accept: invalid
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> Accept-Encoding: identity\r\n
s> accept: invalid\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 406 Not Acceptable\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
Gregory Szorc
wireproto: define and implement protocol for issuing requests...
r37069 s> Content-Length: 85\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> \r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> client MUST specify Accept header with value: application/mercurial-exp-framing-0006\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068
Bad Content-Type header results in 415
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > httprequest POST api/$HTTPV2/ro/customreadonly
> accept: $MEDIATYPE
> user-agent: test
> content-type: badmedia
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> content-type: badmedia\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 415 Unsupported Media Type\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
Gregory Szorc
wireproto: define and implement protocol for issuing requests...
r37069 s> Content-Length: 88\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> \r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> client MUST send Content-Type header with value: application/mercurial-exp-framing-0006\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068
Request to read-only command works out of the box
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > httprequest POST api/$HTTPV2/ro/customreadonly
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new cbor:{b'name': b'customreadonly'}
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> *\r\n (glob)
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 29\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \x15\x00\x00\x01\x00\x01\x01\x11\xa1DnameNcustomreadonly
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define and implement responses in framing protocol...
r37073 s> Transfer-Encoding: chunked\r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x01\x00\x02\x041X\x1dcustomreadonly bytes response
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
Gregory Szorc
wireproto: define and implement responses in framing protocol...
r37073 s> \r\n
s> 0\r\n
s> \r\n
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068
Gregory Szorc
tests: don't be as verbose in wireprotov2 tests...
r40084 $ sendhttpv2peerverbose << EOF
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 > command customreadonly
> EOF
creating http peer for wire protocol version 2
sending customreadonly command
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
s> content-length: 65\r\n
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> user-agent: Mercurial debugwireproto\r\n
s> \r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> \x1c\x00\x00\x01\x00\x01\x01\x82\xa1Pcontentencodings\x81Hidentity\x15\x00\x00\x01\x00\x01\x00\x11\xa1DnameNcustomreadonly
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> Transfer-Encoding: chunked\r\n
s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92
s> Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \xa1FstatusBok
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x01\x00\x02\x041
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> X\x1dcustomreadonly bytes response
s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
s> \r\n
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501 s> 0\r\n
s> \r\n
Gregory Szorc
wireprotov2peer: stream decoded responses...
r39597 response: gen[
Gregory Szorc
stringutil: teach pprint() to indent...
r39414 b'customreadonly bytes response'
]
Gregory Szorc
httppeer: report http statistics...
r40070 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
Gregory Szorc
wireproto: crude support for version 2 HTTP peer...
r37501
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 Request to read-write command fails because server is read-only by default
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 GET to read-write request yields 405
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest GET api/$HTTPV2/rw/customreadonly
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> GET /api/exp-http-v2-0003/rw/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> HTTP/1.1 405 Method Not Allowed\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> Allow: POST\r\n
s> Content-Length: 30\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> \r\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> commands require POST requests
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065
Even for unknown commands
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest GET api/$HTTPV2/rw/badcommand
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> GET /api/exp-http-v2-0003/rw/badcommand HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> HTTP/1.1 405 Method Not Allowed\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> Allow: POST\r\n
s> Content-Length: 30\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> \r\n
Gregory Szorc
wireproto: require POST for all HTTPv2 requests...
r37066 s> commands require POST requests
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065
SSL required by default
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest POST api/$HTTPV2/rw/customreadonly
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/rw/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 403 ssl required\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Length: 17\r\n
Gregory Szorc
wireproto: support /api/* URL space for exposing APIs...
r37064 s> \r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> permission denied
Restart server to allow non-ssl read-write operations
$ killdaemons.py
$ cat > server/.hg/hgrc << EOF
> [experimental]
> web.apiserver = true
> web.api.http-v2 = true
> [web]
> push_ssl = false
> allow-push = *
> EOF
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 $ cat hg.pid > $DAEMON_PIDS
Authorized request for valid read-write command works
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest POST api/$HTTPV2/rw/customreadonly
> user-agent: test
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > accept: $MEDIATYPE
> content-type: $MEDIATYPE
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new cbor:{b'name': b'customreadonly'}
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/rw/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 29\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \x15\x00\x00\x01\x00\x01\x01\x11\xa1DnameNcustomreadonly
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define and implement responses in framing protocol...
r37073 s> Transfer-Encoding: chunked\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x01\x00\x02\x041X\x1dcustomreadonly bytes response
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
Gregory Szorc
wireproto: define and implement responses in framing protocol...
r37073 s> \r\n
s> 0\r\n
s> \r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065
Authorized request for unknown command is rejected
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > httprequest POST api/$HTTPV2/rw/badcommand
> user-agent: test
Gregory Szorc
wireproto: define content negotiation for HTTPv2...
r37068 > accept: $MEDIATYPE
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/rw/badcommand HTTP/1.1\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: define permissions-based routing of HTTPv2 wire protocol...
r37065 s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 404 Not Found\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
s> Content-Length: 42\r\n
s> \r\n
s> unknown wire protocol command: badcommand\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070
debugreflect isn't enabled by default
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 > httprequest POST api/$HTTPV2/ro/debugreflect
> user-agent: test
> EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/debugreflect HTTP/1.1\r\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> Accept-Encoding: identity\r\n
s> user-agent: test\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
s> makefile('rb', None)
s> HTTP/1.1 404 Not Found\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
s> Content-Length: 34\r\n
s> \r\n
s> debugreflect service not available
Restart server to get debugreflect endpoint
$ killdaemons.py
$ cat > server/.hg/hgrc << EOF
> [experimental]
> web.apiserver = true
> web.api.debugreflect = true
> web.api.http-v2 = true
> [web]
> push_ssl = false
> allow-push = *
> EOF
$ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
Command frames can be reflected via debugreflect
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 > httprequest POST api/$HTTPV2/ro/debugreflect
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new cbor:{b'name': b'command1', b'args': {b'foo': b'val1', b'bar1': b'val'}}
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/debugreflect HTTP/1.1\r\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 47\r\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireprotoframing: use our CBOR module...
r39477 s> \'\x00\x00\x01\x00\x01\x01\x11\xa2Dargs\xa2Dbar1CvalCfooDval1DnameHcommand1
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
Gregory Szorc
wireprotov2: server support for sending content redirects...
r40061 s> Content-Length: 223\r\n
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 s> \r\n
Gregory Szorc
wireprotoframing: use our CBOR module...
r39477 s> received: 1 1 1 \xa2Dargs\xa2Dbar1CvalCfooDval1DnameHcommand1\n
Gregory Szorc
wireprotov2: server support for sending content redirects...
r40061 s> ["runcommand", {"args": {"bar1": "val", "foo": "val1"}, "command": "command1", "data": null, "redirect": null, "requestid": 1}]\n
Gregory Szorc
wireproto: buffer output frames when in half duplex mode...
r37074 s> received: <no frame>\n
s> {"action": "noop"}
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 Multiple requests to regular command URL are not allowed
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > httprequest POST api/$HTTPV2/ro/customreadonly
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new cbor:{b'name': b'customreadonly'}
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/customreadonly HTTP/1.1\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 29\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \x15\x00\x00\x01\x00\x01\x01\x11\xa1DnameNcustomreadonly
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> Transfer-Encoding: chunked\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x01\x00\x02\x041X\x1dcustomreadonly bytes response
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \r\n
s> 0\r\n
s> \r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077
Multiple requests to "multirequest" URL are allowed
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > httprequest POST api/$HTTPV2/ro/multirequest
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new cbor:{b'name': b'customreadonly'}
> frame 3 1 0 command-request new cbor:{b'name': b'customreadonly'}
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/multirequest HTTP/1.1\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> *\r\n (glob)
s> *\r\n (glob)
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 58\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \x15\x00\x00\x01\x00\x01\x01\x11\xa1DnameNcustomreadonly\x15\x00\x00\x03\x00\x01\x00\x11\xa1DnameNcustomreadonly
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Transfer-Encoding: chunked\r\n
s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x01\x00\x02\x041X\x1dcustomreadonly bytes response
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x03\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 27\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x1f\x00\x00\x03\x00\x02\x041X\x1dcustomreadonly bytes response
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x03\x00\x02\x002
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> \r\n
s> 0\r\n
s> \r\n
Interleaved requests to "multirequest" are processed
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > httprequest POST api/$HTTPV2/ro/multirequest
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 > frame 1 1 stream-begin command-request new|more \xa2Dargs\xa1Inamespace
> frame 3 1 0 command-request new|more \xa2Dargs\xa1Inamespace
> frame 3 1 0 command-request continuation JnamespacesDnameHlistkeys
> frame 1 1 0 command-request continuation IbookmarksDnameHlistkeys
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/multirequest HTTP/1.1\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> user-agent: test\r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> content-length: 115\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \x11\x00\x00\x01\x00\x01\x01\x15\xa2Dargs\xa1Inamespace\x11\x00\x00\x03\x00\x01\x00\x15\xa2Dargs\xa1Inamespace\x19\x00\x00\x03\x00\x01\x00\x12JnamespacesDnameHlistkeys\x18\x00\x00\x01\x00\x01\x00\x12IbookmarksDnameHlistkeys
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Content-Type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Transfer-Encoding: chunked\r\n
s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x03\x00\x02\x01\x92Hidentity
s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x03\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 28\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x00\x00\x03\x00\x02\x041\xa3Ibookmarks@Jnamespaces@Fphases@
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x03\x00\x02\x002
Gregory Szorc
wireproto: use CBOR for command requests...
r37308 s> \r\n
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041\xa1FstatusBok
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 9\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x01\x00\x00\x01\x00\x02\x041\xa0
Gregory Szorc
wireprotov2: implement commands as a generator of objects...
r39595 s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> \r\n
s> 0\r\n
s> \r\n
Restart server to disable read-write access
$ killdaemons.py
$ cat > server/.hg/hgrc << EOF
> [experimental]
> web.apiserver = true
> web.api.debugreflect = true
> web.api.http-v2 = true
> [web]
> push_ssl = false
> EOF
$ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
Attempting to run a read-write command via multirequest on read-only URL is not allowed
Gregory Szorc
tests: extract wire protocol shell helpers to standalone file...
r37500 $ sendhttpraw << EOF
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > httprequest POST api/$HTTPV2/ro/multirequest
> accept: $MEDIATYPE
> content-type: $MEDIATYPE
> user-agent: test
Gregory Szorc
wireproto: only expose "getbundle" and "unbundle" to v1 transports...
r37557 > frame 1 1 stream-begin command-request new cbor:{b'name': b'pushkey'}
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 > EOF
using raw connection to peer
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/multirequest HTTP/1.1\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> Accept-Encoding: identity\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> user-agent: test\r\n
Gregory Szorc
wireproto: only expose "getbundle" and "unbundle" to v1 transports...
r37557 s> content-length: 22\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> host: $LOCALIP:$HGPORT\r\n (glob)
s> \r\n
Gregory Szorc
wireproto: only expose "getbundle" and "unbundle" to v1 transports...
r37557 s> \x0e\x00\x00\x01\x00\x01\x01\x11\xa1DnameGpushkey
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> makefile('rb', None)
s> HTTP/1.1 403 Forbidden\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: text/plain\r\n
Gregory Szorc
wireproto: only expose "getbundle" and "unbundle" to v1 transports...
r37557 s> Content-Length: 52\r\n
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077 s> \r\n
Gregory Szorc
wireproto: only expose "getbundle" and "unbundle" to v1 transports...
r37557 s> insufficient permissions to execute command: pushkey
Gregory Szorc
wireproto: service multiple command requests per HTTP request...
r37077
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 Defining an invalid content encoding results in warning
$ hg --config experimental.httppeer.v2-encoder-order=identity,badencoder --verbose debugwireproto --nologhandshake --peer http2 http://$LOCALIP:$HGPORT/ << EOF
> command heads
> EOF
creating http peer for wire protocol version 2
sending heads command
wire protocol version 2 encoder referenced in config (badencoder) is not known; ignoring
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/heads HTTP/1.1\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Accept-Encoding: identity\r\n
s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
s> content-length: 56\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> user-agent: Mercurial debugwireproto\r\n
s> \r\n
s> \x1c\x00\x00\x01\x00\x01\x01\x82\xa1Pcontentencodings\x81Hidentity\x0c\x00\x00\x01\x00\x01\x00\x11\xa1DnameEheads
s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: application/mercurial-exp-framing-0006\r\n
s> Transfer-Encoding: chunked\r\n
s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92
s> Hidentity
s> \r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> 13\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x0b\x00\x00\x01\x00\x02\x041
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> \xa1FstatusBok
s> \r\n
s> 1e\r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> \x16\x00\x00\x01\x00\x02\x041
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> \x81T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
s> \r\n
s> 8\r\n
s> \x00\x00\x00\x01\x00\x02\x002
s> \r\n
s> 0\r\n
s> \r\n
response: [
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
]
(sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
#if zstd
$ hg --verbose debugwireproto --nologhandshake --peer http2 http://$LOCALIP:$HGPORT/ << EOF
> command heads
> EOF
creating http peer for wire protocol version 2
sending heads command
Augie Fackler
tests: give up and make setsockopt() calls optional in the output...
r41643 s> setsockopt(6, 1, 1) -> None (?)
Gregory Szorc
wireprotov2: change how revisions are specified to changesetdata...
r40212 s> POST /api/exp-http-v2-0003/ro/heads HTTP/1.1\r\n
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> Accept-Encoding: identity\r\n
s> accept: application/mercurial-exp-framing-0006\r\n
s> content-type: application/mercurial-exp-framing-0006\r\n
s> content-length: 70\r\n
s> host: $LOCALIP:$HGPORT\r\n (glob)
s> user-agent: Mercurial debugwireproto\r\n
s> \r\n
s> *\x00\x00\x01\x00\x01\x01\x82\xa1Pcontentencodings\x83Hzstd-8mbDzlibHidentity\x0c\x00\x00\x01\x00\x01\x00\x11\xa1DnameEheads
s> makefile('rb', None)
s> HTTP/1.1 200 OK\r\n
s> Server: testing stub value\r\n
s> Date: $HTTP_DATE$\r\n
s> Content-Type: application/mercurial-exp-framing-0006\r\n
s> Transfer-Encoding: chunked\r\n
s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 11\r\n
s> \t\x00\x00\x01\x00\x02\x01\x92
s> Hzstd-8mb
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> \r\n
Gregory Szorc
wireprotov2: send content encoded frames from server...
r40173 s> 25\r\n
s> \x1d\x00\x00\x01\x00\x02\x042
Gregory Szorc
zstandard: vendor python-zstandard 0.11...
r42237 s> (\xb5/\xfd\x00X\xa4\x00\x00p\xa1FstatusBok\x81T\x00\x01\x00\tP\x02
Gregory Szorc
wireprotov2: send protocol settings frame from client...
r40168 s> \r\n
s> 0\r\n
s> \r\n
response: [
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
]
(sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
#endif
Gregory Szorc
wireproto: implement basic frame reading and processing...
r37070 $ cat error.log