tests/test-wireproto-exchangev2.t
changeset 48526 04688c51f81f
parent 48525 d6c53b40b078
child 48527 bf5dc156bb4c
--- a/tests/test-wireproto-exchangev2.t	Thu Dec 30 13:25:44 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1392 +0,0 @@
-Tests for wire protocol version 2 exchange.
-Tests in this file should be folded into existing tests once protocol
-v2 has enough features that it can be enabled via #testcase in existing
-tests.
-
-  $ . $TESTDIR/wireprotohelpers.sh
-  $ enablehttpv2client
-
-  $ hg init server-simple
-  $ enablehttpv2 server-simple
-  $ cd server-simple
-  $ cat >> .hg/hgrc << EOF
-  > [phases]
-  > publish = false
-  > EOF
-  $ echo a0 > a
-  $ echo b0 > b
-  $ hg -q commit -A -m 'commit 0'
-
-  $ echo a1 > a
-  $ hg commit -m 'commit 1'
-  $ hg phase --public -r .
-  $ echo a2 > a
-  $ hg commit -m 'commit 2'
-
-  $ hg -q up -r 0
-  $ echo b1 > b
-  $ hg -q commit -m 'head 2 commit 1'
-  $ echo b2 > b
-  $ hg -q commit -m 'head 2 commit 2'
-
-  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
-  $ cat hg.pid > $DAEMON_PIDS
-
-  $ cd ..
-
-Test basic clone
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug clone -U http://localhost:$HGPORT client-simple > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset 4432d83626e8
-  add changeset cd2534766bec
-  add changeset e96ae20f4188
-  add changeset caa2a465451d
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8',
-      '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
-      '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
-      '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
-          '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:caa2a465451d (3 drafts)
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=941; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=992; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=901; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-All changesets should have been transferred
-
-  $ hg -R client-simple debugindex -c
-     rev linkrev nodeid       p1           p2
-       0       0 3390ef850073 000000000000 000000000000
-       1       1 4432d83626e8 3390ef850073 000000000000
-       2       2 cd2534766bec 4432d83626e8 000000000000
-       3       3 e96ae20f4188 3390ef850073 000000000000
-       4       4 caa2a465451d e96ae20f4188 000000000000
-
-  $ hg -R client-simple log -G -T '{rev} {node} {phase}\n'
-  o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
-  |
-  o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
-  |
-  | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
-  | |
-  | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
-  |/
-  o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
-  
-
-All manifests should have been transferred
-
-  $ hg -R client-simple debugindex -m
-     rev linkrev nodeid       p1           p2
-       0       0 992f4779029a 000000000000 000000000000
-       1       1 a988fb43583e 992f4779029a 000000000000
-       2       2 ec804e488c20 a988fb43583e 000000000000
-       3       3 045c7f3927da 992f4779029a 000000000000
-       4       4 379cb0c2e664 045c7f3927da 000000000000
-
-Cloning only a specific revision works
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug clone -U -r 4432d83626e8 http://localhost:$HGPORT client-singlehead > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  sending 1 commands
-  sending command lookup: {
-    'key': '4432d83626e8'
-  }
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset 4432d83626e8
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:4432d83626e8
-  updating the branch cache
-  (sent 6 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=21; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=381; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=404; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=439; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-  $ cd client-singlehead
-
-  $ hg log -G -T '{rev} {node} {phase}\n'
-  o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
-  |
-  o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
-  
-
-  $ hg debugindex -m
-     rev linkrev nodeid       p1           p2
-       0       0 992f4779029a 000000000000 000000000000
-       1       1 a988fb43583e 992f4779029a 000000000000
-
-Incremental pull works
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug pull > pull-output
-
-  $ cat pull-output | grep -v "received frame"
-  pulling from http://localhost:$HGPORT/
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': [
-      'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
-    ]
-  }
-  searching for changes
-  all local changesets known remotely
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'roots': [
-          'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0'
-        ],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset cd2534766bec
-  add changeset e96ae20f4188
-  add changeset caa2a465451d
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
-      '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
-      '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'revisions': [
-      {
-        'nodes': [
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
-          '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets cd2534766bec:caa2a465451d (3 drafts)
-  (run 'hg update' to get a working copy)
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat pull-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=573; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=601; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=527; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm pull-output
-
-  $ hg log -G -T '{rev} {node} {phase}\n'
-  o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
-  |
-  o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
-  |
-  | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
-  | |
-  | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
-  |/
-  o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
-  
-
-  $ hg debugindex -m
-     rev linkrev nodeid       p1           p2
-       0       0 992f4779029a 000000000000 000000000000
-       1       1 a988fb43583e 992f4779029a 000000000000
-       2       2 ec804e488c20 a988fb43583e 000000000000
-       3       3 045c7f3927da 992f4779029a 000000000000
-       4       4 379cb0c2e664 045c7f3927da 000000000000
-
-Phase-only update works
-TODO this doesn't work
-
-  $ hg -R ../server-simple phase --public -r caa2a465451dd
-  $ hg --debug pull
-  pulling from http://localhost:$HGPORT/
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': [
-      '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
-      '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
-    ]
-  }
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=3; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  searching for changes
-  all remote heads known locally
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'roots': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  checking for updated bookmarks
-  (run 'hg update' to get a working copy)
-  (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ hg log -G -T '{rev} {node} {phase}\n'
-  o  4 caa2a465451dd1facda0f5b12312c355584188a1 draft
-  |
-  o  3 e96ae20f4188487b9ae4ef3941c27c81143146e5 draft
-  |
-  | o  2 cd2534766bece138c7c1afdc6825302f0f62d81f draft
-  | |
-  | o  1 4432d83626e8a98655f062ec1f2a43b07f7fbbb0 public
-  |/
-  o  0 3390ef850073fbc2f0dfff2244342c8e9229013a public
-  
-
-  $ cd ..
-
-Bookmarks are transferred on clone
-
-  $ hg -R server-simple bookmark -r 3390ef850073fbc2f0dfff2244342c8e9229013a book-1
-  $ hg -R server-simple bookmark -r cd2534766bece138c7c1afdc6825302f0f62d81f book-2
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug clone -U http://localhost:$HGPORT/ client-bookmarks > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset 4432d83626e8
-  add changeset cd2534766bec
-  add changeset e96ae20f4188
-  add changeset caa2a465451d
-  checking for updated bookmarks
-  adding remote bookmark book-1
-  adding remote bookmark book-2
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8',
-      '\xec\x80NH\x8c \x88\xc25\t\x9a\x10 u\x13\xbe\xcd\xc3\xdd\xa5',
-      '\x04\\\x7f9\'\xda\x13\xe7Z\xf8\xf0\xe4\xf0HI\xe4a\xa9x\x0f',
-      '7\x9c\xb0\xc2\xe6d\\y\xdd\xc5\x9a\x1dG\'\xa9\xfb\x83\n\xeb&'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          'D2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
-          '\xe9j\xe2\x0fA\x88H{\x9a\xe4\xef9A\xc2|\x81\x141F\xe5',
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:caa2a465451d (1 drafts)
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=979; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=992; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=901; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-  $ hg -R client-bookmarks bookmarks
-     book-1                    0:3390ef850073
-     book-2                    2:cd2534766bec
-
-Server-side bookmark moves are reflected during `hg pull`
-
-  $ hg -R server-simple bookmark -r cd2534766bece138c7c1afdc6825302f0f62d81f book-1
-  moving bookmark 'book-1' forward from 3390ef850073
-
-Output is flaky, save it in a file and check part independently
-  $ hg -R client-bookmarks --debug pull > pull-output
-
-  $ cat pull-output | grep -v "received frame"
-  pulling from http://localhost:$HGPORT/
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': [
-      '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f',
-      '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1'
-    ]
-  }
-  searching for changes
-  all remote heads known locally
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'roots': [
-          '\xca\xa2\xa4eE\x1d\xd1\xfa\xcd\xa0\xf5\xb1#\x12\xc3UXA\x88\xa1',
-          '\xcd%4vk\xec\xe18\xc7\xc1\xaf\xdch%0/\x0fb\xd8\x1f'
-        ],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  checking for updated bookmarks
-  updating bookmark book-1
-  (run 'hg update' to get a working copy)
-  (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat pull-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=43; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=3; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=65; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm pull-output
-
-  $ hg -R client-bookmarks bookmarks
-     book-1                    2:cd2534766bec
-     book-2                    2:cd2534766bec
-
-  $ killdaemons.py
-
-Let's set up a slightly more complicated server
-
-  $ hg init server-2
-  $ enablehttpv2 server-2
-  $ cd server-2
-  $ mkdir dir0 dir1
-  $ echo a0 > a
-  $ echo b0 > b
-  $ hg -q commit -A -m 'commit 0'
-  $ echo c0 > dir0/c
-  $ echo d0 > dir0/d
-  $ hg -q commit -A -m 'commit 1'
-  $ echo e0 > dir1/e
-  $ echo f0 > dir1/f
-  $ hg -q commit -A -m 'commit 2'
-  $ echo c1 > dir0/c
-  $ echo e1 > dir1/e
-  $ hg commit -m 'commit 3'
-  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
-  $ cat hg.pid > $DAEMON_PIDS
-
-  $ cd ..
-
-Narrow clone only fetches some files
-
-Output is flaky, save it in a file and check part independently
-  $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --include dir0/ http://localhost:$HGPORT/ client-narrow-0 > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset b709380892b1
-  add changeset 47fe012ab237
-  add changeset 97765fc3cd62
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
-      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
-      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'pathfilter': {
-      'include': [
-        'path:dir0'
-      ]
-    },
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
-          'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:97765fc3cd62
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=449; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-#if reporevlogstore
-  $ find client-narrow-0/.hg/store -type f -name '*.i' | sort
-  client-narrow-0/.hg/store/00changelog.i
-  client-narrow-0/.hg/store/00manifest.i
-  client-narrow-0/.hg/store/data/dir0/c.i
-  client-narrow-0/.hg/store/data/dir0/d.i
-#endif
-
---exclude by itself works
-
-Output is flaky, save it in a file and check part independently
-  $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --exclude dir0/ http://localhost:$HGPORT/ client-narrow-1 > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset b709380892b1
-  add changeset 47fe012ab237
-  add changeset 97765fc3cd62
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
-      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
-      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'pathfilter': {
-      'exclude': [
-        'path:dir0'
-      ],
-      'include': [
-        'path:.'
-      ]
-    },
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
-          'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:97765fc3cd62
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=709; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-#if reporevlogstore
-  $ find client-narrow-1/.hg/store -type f -name '*.i' | sort
-  client-narrow-1/.hg/store/00changelog.i
-  client-narrow-1/.hg/store/00manifest.i
-  client-narrow-1/.hg/store/data/a.i
-  client-narrow-1/.hg/store/data/b.i
-  client-narrow-1/.hg/store/data/dir1/e.i
-  client-narrow-1/.hg/store/data/dir1/f.i
-#endif
-
-Mixing --include and --exclude works
-
-Output is flaky, save it in a file and check part independently
-  $ hg --config extensions.pullext=$TESTDIR/pullext.py --debug clone -U --include dir0/ --exclude dir0/c http://localhost:$HGPORT/ client-narrow-2 > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset b709380892b1
-  add changeset 47fe012ab237
-  add changeset 97765fc3cd62
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
-      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
-      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'pathfilter': {
-      'exclude': [
-        'path:dir0/c'
-      ],
-      'include': [
-        'path:dir0'
-      ]
-    },
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
-          'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  new changesets 3390ef850073:97765fc3cd62
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=160; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-#if reporevlogstore
-  $ find client-narrow-2/.hg/store -type f -name '*.i' | sort
-  client-narrow-2/.hg/store/00changelog.i
-  client-narrow-2/.hg/store/00manifest.i
-  client-narrow-2/.hg/store/data/dir0/d.i
-#endif
-
---stream will use rawfiledata to transfer changelog and manifestlog, then
-fall through to get files data
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug clone --stream -U http://localhost:$HGPORT client-stream-0 > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  sending 1 commands
-  sending command rawstorefiledata: {
-    'files': [
-      'changelog',
-      'manifestlog'
-    ]
-  }
-  updating the branch cache
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': [
-      '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-    ]
-  }
-  searching for changes
-  all remote heads known locally
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  checking for updated bookmarks
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
-          'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !)
-  received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1133; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
---stream + --include/--exclude will only obtain some files
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug --config extensions.pullext=$TESTDIR/pullext.py clone --stream --include dir0/ -U http://localhost:$HGPORT client-stream-2 > clone-output
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  sending 1 commands
-  sending command rawstorefiledata: {
-    'files': [
-      'changelog',
-      'manifestlog'
-    ]
-  }
-  updating the branch cache
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': [
-      '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-    ]
-  }
-  searching for changes
-  all remote heads known locally
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  checking for updated bookmarks
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'pathfilter': {
-      'include': [
-        'path:dir0'
-      ]
-    },
-    'revisions': [
-      {
-        'nodes': [
-          '3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
-          '\xb7\t8\x08\x92\xb1\x93\xc1\t\x1d:\x81\x7fp`R\xe3F\x82\x1b',
-          'G\xfe\x01*\xb27\xa8\xc7\xfc\x0cx\xf9\xf2mXf\xee\xf3\xf8%',
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  updating the branch cache
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !)
-  received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=13; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=449; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-#if reporevlogstore
-  $ find client-stream-2/.hg/store -type f -name '*.i' | sort
-  client-stream-2/.hg/store/00changelog.i
-  client-stream-2/.hg/store/00manifest.i
-  client-stream-2/.hg/store/data/dir0/c.i
-  client-stream-2/.hg/store/data/dir0/d.i
-#endif
-
-Shallow clone doesn't work with revlogs
-
-Output is flaky, save it in a file and check part independently
-  $ hg --debug --config extensions.pullext=$TESTDIR/pullext.py clone --depth 1 -U http://localhost:$HGPORT client-shallow-revlogs > clone-output
-  transaction abort!
-  rollback completed
-  abort: revlog storage does not support missing parents write mode
-  [255]
-
-  $ cat clone-output | grep -v "received frame"
-  using http://localhost:$HGPORT/
-  sending capabilities command
-  query 1; heads
-  sending 2 commands
-  sending command heads: {}
-  sending command known: {
-    'nodes': []
-  }
-  sending 1 commands
-  sending command changesetdata: {
-    'fields': set([
-      'bookmarks',
-      'parents',
-      'phase',
-      'revision'
-    ]),
-    'revisions': [
-      {
-        'heads': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'roots': [],
-        'type': 'changesetdagrange'
-      }
-    ]
-  }
-  add changeset 3390ef850073
-  add changeset b709380892b1
-  add changeset 47fe012ab237
-  add changeset 97765fc3cd62
-  checking for updated bookmarks
-  sending 1 commands
-  sending command manifestdata: {
-    'fields': set([
-      'parents',
-      'revision'
-    ]),
-    'haveparents': True,
-    'nodes': [
-      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
-      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
-      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
-      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
-    ],
-    'tree': ''
-  }
-  sending 1 commands
-  sending command filesdata: {
-    'fields': set([
-      'linknode',
-      'parents',
-      'revision'
-    ]),
-    'haveparents': False,
-    'revisions': [
-      {
-        'nodes': [
-          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
-        ],
-        'type': 'changesetexplicit'
-      }
-    ]
-  }
-  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
-
-  $ cat clone-output | grep "received frame"
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
-  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=1005; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
-  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
-
-  $ rm clone-output
-
-  $ killdaemons.py
-
-Repo with 2 DAG branches introducing same filenode, to test linknode adjustment
-
-  $ hg init server-linknode
-  $ enablehttpv2 server-linknode
-  $ cd server-linknode
-  $ touch foo
-  $ hg -q commit -Am initial
-  $ echo foo > dupe-file
-  $ hg commit -Am 'dupe 1'
-  adding dupe-file
-  $ hg -q up -r 0
-  $ echo foo > dupe-file
-  $ hg commit -Am 'dupe 2'
-  adding dupe-file
-  created new head
-  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
-  $ cat hg.pid > $DAEMON_PIDS
-  $ cd ..
-
-Perform an incremental pull of both heads and ensure linkrev is written out properly
-
-  $ hg clone -r 96ee1d7354c4 http://localhost:$HGPORT client-linknode-1
-  new changesets 96ee1d7354c4
-  updating to branch default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ cd client-linknode-1
-  $ touch extra
-  $ hg commit -Am extra
-  adding extra
-  $ cd ..
-
-  $ hg clone -r 96ee1d7354c4 http://localhost:$HGPORT client-linknode-2
-  new changesets 96ee1d7354c4
-  updating to branch default
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ cd client-linknode-2
-  $ touch extra
-  $ hg commit -Am extra
-  adding extra
-  $ cd ..
-
-  $ hg -R client-linknode-1 pull -r 1681c33f9f80
-  pulling from http://localhost:$HGPORT/
-  searching for changes
-  new changesets 1681c33f9f80
-  (run 'hg update' to get a working copy)
-
-#if reporevlogstore
-  $ hg -R client-linknode-1 debugrevlogindex dupe-file
-     rev linkrev nodeid       p1           p2
-       0       2 2ed2a3912a0b 000000000000 000000000000
-#endif
-
-  $ hg -R client-linknode-2 pull -r 639c8990d6a5
-  pulling from http://localhost:$HGPORT/
-  searching for changes
-  new changesets 639c8990d6a5
-  (run 'hg update' to get a working copy)
-
-#if reporevlogstore
-  $ hg -R client-linknode-2 debugrevlogindex dupe-file
-     rev linkrev nodeid       p1           p2
-       0       2 2ed2a3912a0b 000000000000 000000000000
-#endif