D3181: wireproto: port listkeys commands to wire protocol v2

2018-04-09 Thread indygreg (Gregory Szorc)
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG68915b9f8e96: wireproto: port listkeys commands to wire 
protocol v2 (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3181?vs=7866=7898

REVISION DETAIL
  https://phab.mercurial-scm.org/D3181

AFFECTED FILES
  mercurial/help/internals/wireprotocol.txt
  mercurial/wireproto.py
  tests/test-http-api-httpv2.t
  tests/test-wireproto-command-listkeys.t

CHANGE DETAILS

diff --git a/tests/test-wireproto-command-listkeys.t 
b/tests/test-wireproto-command-listkeys.t
new file mode 100644
--- /dev/null
+++ b/tests/test-wireproto-command-listkeys.t
@@ -0,0 +1,125 @@
+  $ . $TESTDIR/wireprotohelpers.sh
+
+  $ hg init server
+  $ enablehttpv2 server
+  $ cd server
+  $ hg debugdrawdag << EOF
+  > C D
+  > |/
+  > B
+  > |
+  > A
+  > EOF
+
+  $ hg phase --public -r C
+  $ hg book -r C @
+
+  $ hg log -T '{rev}:{node} {desc}\n'
+  3:be0ef73c17ade3fc89dc41701eb9fc3a91b58282 D
+  2:26805aba1e600a82e93661149f2313866a221a7b C
+  1:112478962961147124edd43549aedd1a335e44bf B
+  0:426bada5c67598ca65036d57d9e4b64b0c1ce7a0 A
+
+  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
+  $ cat hg.pid > $DAEMON_PIDS
+
+Request for namespaces works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace namespaces
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 50\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\x11\xa2Dargs\xa1InamespaceJnamespacesDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 28\r\n
+  s>  \x00\x00\x01\x00\x02\x01F
+  s> \xa3Fphases@Ibookmarks@Jnamespaces@
+  s> \r\n
+  received frame(size=32; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  response: [{b'bookmarks': b'', b'namespaces': b'', b'phases': b''}]
+
+Request for phases works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace phases
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 46\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\x11\xa2Dargs\xa1InamespaceFphasesDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 45\r\n
+  s> =\x00\x00\x01\x00\x02\x01F
+  s> \xa2JpublishingDTrueX(be0ef73c17ade3fc89dc41701eb9fc3a91b58282A1
+  s> \r\n
+  received frame(size=61; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  response: [{b'be0ef73c17ade3fc89dc41701eb9fc3a91b58282': b'1', 
b'publishing': b'True'}]
+
+Request for bookmarks works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace bookmarks
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 49\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\x11\xa2Dargs\xa1InamespaceIbookmarksDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 35\r\n
+  s> -\x00\x00\x01\x00\x02\x01F
+  s> \xa1A@X(26805aba1e600a82e93661149f2313866a221a7b
+  s> \r\n
+  received frame(size=45; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  

D3181: wireproto: port listkeys commands to wire protocol v2

2018-04-09 Thread yuja (Yuya Nishihara)
yuja added inline comments.

INLINE COMMENTS

> wireproto.py:1231
> +def listkeysv2(repo, proto, namespace=None):
> +keys = repo.listkeys(encoding.tolocal(namespace))
> +keys = {encoding.fromlocal(k): encoding.fromlocal(v)

Nit: if `namespace` could be `None`, this would crash.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3181

To: indygreg, #hg-reviewers, yuja
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D3181: wireproto: port listkeys commands to wire protocol v2

2018-04-06 Thread indygreg (Gregory Szorc)
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3181

AFFECTED FILES
  mercurial/help/internals/wireprotocol.txt
  mercurial/wireproto.py
  tests/test-http-api-httpv2.t
  tests/test-wireproto-command-listkeys.t

CHANGE DETAILS

diff --git a/tests/test-wireproto-command-listkeys.t 
b/tests/test-wireproto-command-listkeys.t
new file mode 100644
--- /dev/null
+++ b/tests/test-wireproto-command-listkeys.t
@@ -0,0 +1,125 @@
+  $ . $TESTDIR/wireprotohelpers.sh
+
+  $ hg init server
+  $ enablehttpv2 server
+  $ cd server
+  $ hg debugdrawdag << EOF
+  > C D
+  > |/
+  > B
+  > |
+  > A
+  > EOF
+
+  $ hg phase --public -r C
+  $ hg book -r C @
+
+  $ hg log -T '{rev}:{node} {desc}\n'
+  3:be0ef73c17ade3fc89dc41701eb9fc3a91b58282 D
+  2:26805aba1e600a82e93661149f2313866a221a7b C
+  1:112478962961147124edd43549aedd1a335e44bf B
+  0:426bada5c67598ca65036d57d9e4b64b0c1ce7a0 A
+
+  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
+  $ cat hg.pid > $DAEMON_PIDS
+
+Request for namespaces works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace namespaces
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 50\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\x11\xa2Dargs\xa1InamespaceJnamespacesDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 28\r\n
+  s>  \x00\x00\x01\x00\x02\x01F
+  s> \xa3Fphases@Ibookmarks@Jnamespaces@
+  s> \r\n
+  received frame(size=32; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  response: [{b'bookmarks': b'', b'namespaces': b'', b'phases': b''}]
+
+Request for phases works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace phases
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 46\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\x11\xa2Dargs\xa1InamespaceFphasesDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 45\r\n
+  s> =\x00\x00\x01\x00\x02\x01F
+  s> \xa2JpublishingDTrueX(be0ef73c17ade3fc89dc41701eb9fc3a91b58282A1
+  s> \r\n
+  received frame(size=61; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  response: [{b'be0ef73c17ade3fc89dc41701eb9fc3a91b58282': b'1', 
b'publishing': b'True'}]
+
+Request for bookmarks works
+
+  $ sendhttpv2peer << EOF
+  > command listkeys
+  > namespace bookmarks
+  > EOF
+  creating http peer for wire protocol version 2
+  sending listkeys command
+  s> POST /api/exp-http-v2-0001/ro/listkeys HTTP/1.1\r\n
+  s> Accept-Encoding: identity\r\n
+  s> accept: application/mercurial-exp-framing-0003\r\n
+  s> content-type: application/mercurial-exp-framing-0003\r\n
+  s> content-length: 49\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\x11\xa2Dargs\xa1InamespaceIbookmarksDnameHlistkeys
+  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-0003\r\n
+  s> Transfer-Encoding: chunked\r\n
+  s> \r\n
+  s> 35\r\n
+  s> -\x00\x00\x01\x00\x02\x01F
+  s> \xa1A@X(26805aba1e600a82e93661149f2313866a221a7b
+  s> \r\n
+  received frame(size=45; request=1; stream=2; streamflags=stream-begin; 
type=bytes-response; flags=eos|cbor)
+  s> 0\r\n
+  s> \r\n
+  response: [{b'@': b'26805aba1e600a82e93661149f2313866a221a7b'}]
+
+  $ cat error.log
diff --git a/tests/test-http-api-httpv2.t b/tests/test-http-api-httpv2.t
---