comparison tests/test-wireproto-command-changesetdata.t @ 39814:d059cb669632

wireprotov2: allow multiple fields to follow revision maps The *data wire protocol commands emit a series of CBOR values. Because revision/delta data may be large, their data is emitted outside the map as a top-level bytestring value. Before this commit, we'd emit a single optional bytestring value after the revision descriptor map. This got the job done. But it was limiting in that we could only send a single field. And, it required the consumer to know that the presence of a key in the map implied the existence of a following bytestring value. This commit changes the encoding strategy so top-level bytestring values in the stream are explicitly denoted in a "fieldsfollowing" key. This key contains an array defining what fields that follow and the expected size of each field. By defining things this way, we can easily send N bytestring values without any ambiguity about their order. In addition, clients only need to know how to parse ``fieldsfollowing`` to know if extra values are present. Because this breaks backwards compatibility, we've bumped the version number of the wire protocol version 2 API endpoint. Differential Revision: https://phab.mercurial-scm.org/D4620
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 20 Sep 2018 12:57:23 -0700
parents 9dffa99f9158
children d3d333ab167a
comparison
equal deleted inserted replaced
39813:c30faea8d02d 39814:d059cb669632
42 $ sendhttpv2peer << EOF 42 $ sendhttpv2peer << EOF
43 > command changesetdata 43 > command changesetdata
44 > EOF 44 > EOF
45 creating http peer for wire protocol version 2 45 creating http peer for wire protocol version 2
46 sending changesetdata command 46 sending changesetdata command
47 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 47 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
48 s> Accept-Encoding: identity\r\n 48 s> Accept-Encoding: identity\r\n
49 s> accept: application/mercurial-exp-framing-0005\r\n 49 s> accept: application/mercurial-exp-framing-0005\r\n
50 s> content-type: application/mercurial-exp-framing-0005\r\n 50 s> content-type: application/mercurial-exp-framing-0005\r\n
51 s> content-length: 28\r\n 51 s> content-length: 28\r\n
52 s> host: $LOCALIP:$HGPORT\r\n (glob) 52 s> host: $LOCALIP:$HGPORT\r\n (glob)
76 > command changesetdata 76 > command changesetdata
77 > noderange eval:[[],[]] 77 > noderange eval:[[],[]]
78 > EOF 78 > EOF
79 creating http peer for wire protocol version 2 79 creating http peer for wire protocol version 2
80 sending changesetdata command 80 sending changesetdata command
81 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 81 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
82 s> Accept-Encoding: identity\r\n 82 s> Accept-Encoding: identity\r\n
83 s> accept: application/mercurial-exp-framing-0005\r\n 83 s> accept: application/mercurial-exp-framing-0005\r\n
84 s> content-type: application/mercurial-exp-framing-0005\r\n 84 s> content-type: application/mercurial-exp-framing-0005\r\n
85 s> content-length: 47\r\n 85 s> content-length: 47\r\n
86 s> host: $LOCALIP:$HGPORT\r\n (glob) 86 s> host: $LOCALIP:$HGPORT\r\n (glob)
110 > command changesetdata 110 > command changesetdata
111 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] 111 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']]
112 > EOF 112 > EOF
113 creating http peer for wire protocol version 2 113 creating http peer for wire protocol version 2
114 sending changesetdata command 114 sending changesetdata command
115 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 115 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
116 s> Accept-Encoding: identity\r\n 116 s> Accept-Encoding: identity\r\n
117 s> accept: application/mercurial-exp-framing-0005\r\n 117 s> accept: application/mercurial-exp-framing-0005\r\n
118 s> content-type: application/mercurial-exp-framing-0005\r\n 118 s> content-type: application/mercurial-exp-framing-0005\r\n
119 s> content-length: 89\r\n 119 s> content-length: 89\r\n
120 s> host: $LOCALIP:$HGPORT\r\n (glob) 120 s> host: $LOCALIP:$HGPORT\r\n (glob)
168 > command changesetdata 168 > command changesetdata
169 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] 169 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']]
170 > EOF 170 > EOF
171 creating http peer for wire protocol version 2 171 creating http peer for wire protocol version 2
172 sending changesetdata command 172 sending changesetdata command
173 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 173 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
174 s> Accept-Encoding: identity\r\n 174 s> Accept-Encoding: identity\r\n
175 s> accept: application/mercurial-exp-framing-0005\r\n 175 s> accept: application/mercurial-exp-framing-0005\r\n
176 s> content-type: application/mercurial-exp-framing-0005\r\n 176 s> content-type: application/mercurial-exp-framing-0005\r\n
177 s> content-length: 89\r\n 177 s> content-length: 89\r\n
178 s> host: $LOCALIP:$HGPORT\r\n (glob) 178 s> host: $LOCALIP:$HGPORT\r\n (glob)
220 > command changesetdata 220 > command changesetdata
221 > nodes eval:[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'] 221 > nodes eval:[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a']
222 > EOF 222 > EOF
223 creating http peer for wire protocol version 2 223 creating http peer for wire protocol version 2
224 sending changesetdata command 224 sending changesetdata command
225 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 225 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
226 s> Accept-Encoding: identity\r\n 226 s> Accept-Encoding: identity\r\n
227 s> accept: application/mercurial-exp-framing-0005\r\n 227 s> accept: application/mercurial-exp-framing-0005\r\n
228 s> content-type: application/mercurial-exp-framing-0005\r\n 228 s> content-type: application/mercurial-exp-framing-0005\r\n
229 s> content-length: 62\r\n 229 s> content-length: 62\r\n
230 s> host: $LOCALIP:$HGPORT\r\n (glob) 230 s> host: $LOCALIP:$HGPORT\r\n (glob)
270 > noderange eval:[[b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] 270 > noderange eval:[[b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']]
271 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] 271 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']
272 > EOF 272 > EOF
273 creating http peer for wire protocol version 2 273 creating http peer for wire protocol version 2
274 sending changesetdata command 274 sending changesetdata command
275 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 275 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
276 s> Accept-Encoding: identity\r\n 276 s> Accept-Encoding: identity\r\n
277 s> accept: application/mercurial-exp-framing-0005\r\n 277 s> accept: application/mercurial-exp-framing-0005\r\n
278 s> content-type: application/mercurial-exp-framing-0005\r\n 278 s> content-type: application/mercurial-exp-framing-0005\r\n
279 s> content-length: 117\r\n 279 s> content-length: 117\r\n
280 s> host: $LOCALIP:$HGPORT\r\n (glob) 280 s> host: $LOCALIP:$HGPORT\r\n (glob)
323 > fields eval:[b'parents'] 323 > fields eval:[b'parents']
324 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] 324 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']
325 > EOF 325 > EOF
326 creating http peer for wire protocol version 2 326 creating http peer for wire protocol version 2
327 sending changesetdata command 327 sending changesetdata command
328 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 328 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
329 s> Accept-Encoding: identity\r\n 329 s> Accept-Encoding: identity\r\n
330 s> accept: application/mercurial-exp-framing-0005\r\n 330 s> accept: application/mercurial-exp-framing-0005\r\n
331 s> content-type: application/mercurial-exp-framing-0005\r\n 331 s> content-type: application/mercurial-exp-framing-0005\r\n
332 s> content-length: 78\r\n 332 s> content-length: 78\r\n
333 s> host: $LOCALIP:$HGPORT\r\n (glob) 333 s> host: $LOCALIP:$HGPORT\r\n (glob)
377 > fields eval:[b'phase'] 377 > fields eval:[b'phase']
378 > nodes eval:[b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'] 378 > nodes eval:[b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']
379 > EOF 379 > EOF
380 creating http peer for wire protocol version 2 380 creating http peer for wire protocol version 2
381 sending changesetdata command 381 sending changesetdata command
382 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 382 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
383 s> Accept-Encoding: identity\r\n 383 s> Accept-Encoding: identity\r\n
384 s> accept: application/mercurial-exp-framing-0005\r\n 384 s> accept: application/mercurial-exp-framing-0005\r\n
385 s> content-type: application/mercurial-exp-framing-0005\r\n 385 s> content-type: application/mercurial-exp-framing-0005\r\n
386 s> content-length: 76\r\n 386 s> content-length: 76\r\n
387 s> host: $LOCALIP:$HGPORT\r\n (glob) 387 s> host: $LOCALIP:$HGPORT\r\n (glob)
428 > fields eval:[b'revision'] 428 > fields eval:[b'revision']
429 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] 429 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']
430 > EOF 430 > EOF
431 creating http peer for wire protocol version 2 431 creating http peer for wire protocol version 2
432 sending changesetdata command 432 sending changesetdata command
433 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 433 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
434 s> Accept-Encoding: identity\r\n 434 s> Accept-Encoding: identity\r\n
435 s> accept: application/mercurial-exp-framing-0005\r\n 435 s> accept: application/mercurial-exp-framing-0005\r\n
436 s> content-type: application/mercurial-exp-framing-0005\r\n 436 s> content-type: application/mercurial-exp-framing-0005\r\n
437 s> content-length: 79\r\n 437 s> content-length: 79\r\n
438 s> host: $LOCALIP:$HGPORT\r\n (glob) 438 s> host: $LOCALIP:$HGPORT\r\n (glob)
449 s> 13\r\n 449 s> 13\r\n
450 s> \x0b\x00\x00\x01\x00\x02\x011 450 s> \x0b\x00\x00\x01\x00\x02\x011
451 s> \xa1FstatusBok 451 s> \xa1FstatusBok
452 s> \r\n 452 s> \r\n
453 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) 453 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
454 s> 7e\r\n 454 s> 8c\r\n
455 s> v\x00\x00\x01\x00\x02\x001 455 s> \x84\x00\x00\x01\x00\x02\x001
456 s> \xa1Jtotalitems\x01\xa2DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Lrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n 456 s> \xa1Jtotalitems\x01\xa2Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n
457 s> test\n 457 s> test\n
458 s> 0 0\n 458 s> 0 0\n
459 s> a\n 459 s> a\n
460 s> \n 460 s> \n
461 s> commit 3 461 s> commit 3
462 s> \r\n 462 s> \r\n
463 received frame(size=118; request=1; stream=2; streamflags=; type=command-response; flags=continuation) 463 received frame(size=132; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
464 s> 8\r\n 464 s> 8\r\n
465 s> \x00\x00\x00\x01\x00\x02\x002 465 s> \x00\x00\x00\x01\x00\x02\x002
466 s> \r\n 466 s> \r\n
467 s> 0\r\n 467 s> 0\r\n
468 s> \r\n 468 s> \r\n
470 response: gen[ 470 response: gen[
471 { 471 {
472 b'totalitems': 1 472 b'totalitems': 1
473 }, 473 },
474 { 474 {
475 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', 475 b'fieldsfollowing': [
476 b'revisionsize': 61 476 [
477 b'revision',
478 61
479 ]
480 ],
481 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11'
477 }, 482 },
478 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' 483 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3'
479 ] 484 ]
480 485
481 Bookmarks key isn't present if no bookmarks data 486 Bookmarks key isn't present if no bookmarks data
485 > fields eval:[b'bookmarks'] 490 > fields eval:[b'bookmarks']
486 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] 491 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']]
487 > EOF 492 > EOF
488 creating http peer for wire protocol version 2 493 creating http peer for wire protocol version 2
489 sending changesetdata command 494 sending changesetdata command
490 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 495 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
491 s> Accept-Encoding: identity\r\n 496 s> Accept-Encoding: identity\r\n
492 s> accept: application/mercurial-exp-framing-0005\r\n 497 s> accept: application/mercurial-exp-framing-0005\r\n
493 s> content-type: application/mercurial-exp-framing-0005\r\n 498 s> content-type: application/mercurial-exp-framing-0005\r\n
494 s> content-length: 107\r\n 499 s> content-length: 107\r\n
495 s> host: $LOCALIP:$HGPORT\r\n (glob) 500 s> host: $LOCALIP:$HGPORT\r\n (glob)
548 > fields eval:[b'bookmarks'] 553 > fields eval:[b'bookmarks']
549 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] 554 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']]
550 > EOF 555 > EOF
551 creating http peer for wire protocol version 2 556 creating http peer for wire protocol version 2
552 sending changesetdata command 557 sending changesetdata command
553 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 558 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
554 s> Accept-Encoding: identity\r\n 559 s> Accept-Encoding: identity\r\n
555 s> accept: application/mercurial-exp-framing-0005\r\n 560 s> accept: application/mercurial-exp-framing-0005\r\n
556 s> content-type: application/mercurial-exp-framing-0005\r\n 561 s> content-type: application/mercurial-exp-framing-0005\r\n
557 s> content-length: 107\r\n 562 s> content-length: 107\r\n
558 s> host: $LOCALIP:$HGPORT\r\n (glob) 563 s> host: $LOCALIP:$HGPORT\r\n (glob)
614 > fields eval:[b'bookmarks', b'revision'] 619 > fields eval:[b'bookmarks', b'revision']
615 > noderange eval:[[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] 620 > noderange eval:[[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']]
616 > EOF 621 > EOF
617 creating http peer for wire protocol version 2 622 creating http peer for wire protocol version 2
618 sending changesetdata command 623 sending changesetdata command
619 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 624 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
620 s> Accept-Encoding: identity\r\n 625 s> Accept-Encoding: identity\r\n
621 s> accept: application/mercurial-exp-framing-0005\r\n 626 s> accept: application/mercurial-exp-framing-0005\r\n
622 s> content-type: application/mercurial-exp-framing-0005\r\n 627 s> content-type: application/mercurial-exp-framing-0005\r\n
623 s> content-length: 137\r\n 628 s> content-length: 137\r\n
624 s> host: $LOCALIP:$HGPORT\r\n (glob) 629 s> host: $LOCALIP:$HGPORT\r\n (glob)
635 s> 13\r\n 640 s> 13\r\n
636 s> \x0b\x00\x00\x01\x00\x02\x011 641 s> \x0b\x00\x00\x01\x00\x02\x011
637 s> \xa1FstatusBok 642 s> \xa1FstatusBok
638 s> \r\n 643 s> \r\n
639 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) 644 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
640 s> 12f\r\n 645 s> 14b\r\n
641 s> \'\x01\x00\x01\x00\x02\x001 646 s> C\x01\x00\x01\x00\x02\x001
642 s> \xa1Jtotalitems\x02\xa2DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Lrevisionsize\x18?X?7f144aea0ba742713887b564d57e9d12f12ff382\n 647 s> \xa1Jtotalitems\x02\xa2Ofieldsfollowing\x81\x82Hrevision\x18?DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1X?7f144aea0ba742713887b564d57e9d12f12ff382\n
643 s> test\n 648 s> test\n
644 s> 0 0\n 649 s> 0 0\n
645 s> a\n 650 s> a\n
646 s> b\n 651 s> b\n
647 s> \n 652 s> \n
648 s> commit 1\xa3Ibookmarks\x81Fbook-1DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddLrevisionsize\x18=X=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n 653 s> commit 1\xa3Ibookmarks\x81Fbook-1Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddX=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n
649 s> test\n 654 s> test\n
650 s> 0 0\n 655 s> 0 0\n
651 s> b\n 656 s> b\n
652 s> \n 657 s> \n
653 s> commit 2\xa2Ibookmarks\x82Fbook-2Fbook-3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11 658 s> commit 2\xa2Ibookmarks\x82Fbook-2Fbook-3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11
654 s> \r\n 659 s> \r\n
655 received frame(size=295; request=1; stream=2; streamflags=; type=command-response; flags=continuation) 660 received frame(size=323; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
656 s> 8\r\n 661 s> 8\r\n
657 s> \x00\x00\x00\x01\x00\x02\x002 662 s> \x00\x00\x00\x01\x00\x02\x002
658 s> \r\n 663 s> \r\n
659 s> 0\r\n 664 s> 0\r\n
660 s> \r\n 665 s> \r\n
662 response: gen[ 667 response: gen[
663 { 668 {
664 b'totalitems': 2 669 b'totalitems': 2
665 }, 670 },
666 { 671 {
667 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', 672 b'fieldsfollowing': [
668 b'revisionsize': 63 673 [
674 b'revision',
675 63
676 ]
677 ],
678 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1'
669 }, 679 },
670 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', 680 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1',
671 { 681 {
672 b'bookmarks': [ 682 b'bookmarks': [
673 b'book-1' 683 b'book-1'
674 ], 684 ],
675 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd', 685 b'fieldsfollowing': [
676 b'revisionsize': 61 686 [
687 b'revision',
688 61
689 ]
690 ],
691 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd'
677 }, 692 },
678 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', 693 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2',
679 { 694 {
680 b'bookmarks': [ 695 b'bookmarks': [
681 b'book-2', 696 b'book-2',
692 > fields eval:[b'parents', b'revision'] 707 > fields eval:[b'parents', b'revision']
693 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] 708 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']
694 > EOF 709 > EOF
695 creating http peer for wire protocol version 2 710 creating http peer for wire protocol version 2
696 sending changesetdata command 711 sending changesetdata command
697 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 712 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
698 s> Accept-Encoding: identity\r\n 713 s> Accept-Encoding: identity\r\n
699 s> accept: application/mercurial-exp-framing-0005\r\n 714 s> accept: application/mercurial-exp-framing-0005\r\n
700 s> content-type: application/mercurial-exp-framing-0005\r\n 715 s> content-type: application/mercurial-exp-framing-0005\r\n
701 s> content-length: 87\r\n 716 s> content-length: 87\r\n
702 s> host: $LOCALIP:$HGPORT\r\n (glob) 717 s> host: $LOCALIP:$HGPORT\r\n (glob)
713 s> 13\r\n 728 s> 13\r\n
714 s> \x0b\x00\x00\x01\x00\x02\x011 729 s> \x0b\x00\x00\x01\x00\x02\x011
715 s> \xa1FstatusBok 730 s> \xa1FstatusBok
716 s> \r\n 731 s> \r\n
717 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) 732 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
718 s> b1\r\n 733 s> bf\r\n
719 s> \xa9\x00\x00\x01\x00\x02\x001 734 s> \xb7\x00\x00\x01\x00\x02\x001
720 s> \xa1Jtotalitems\x01\xa3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Lrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n 735 s> \xa1Jtotalitems\x01\xa3Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n
721 s> test\n 736 s> test\n
722 s> 0 0\n 737 s> 0 0\n
723 s> a\n 738 s> a\n
724 s> \n 739 s> \n
725 s> commit 3 740 s> commit 3
726 s> \r\n 741 s> \r\n
727 received frame(size=169; request=1; stream=2; streamflags=; type=command-response; flags=continuation) 742 received frame(size=183; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
728 s> 8\r\n 743 s> 8\r\n
729 s> \x00\x00\x00\x01\x00\x02\x002 744 s> \x00\x00\x00\x01\x00\x02\x002
730 s> \r\n 745 s> \r\n
731 s> 0\r\n 746 s> 0\r\n
732 s> \r\n 747 s> \r\n
734 response: gen[ 749 response: gen[
735 { 750 {
736 b'totalitems': 1 751 b'totalitems': 1
737 }, 752 },
738 { 753 {
754 b'fieldsfollowing': [
755 [
756 b'revision',
757 61
758 ]
759 ],
739 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', 760 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11',
740 b'parents': [ 761 b'parents': [
741 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', 762 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
742 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 763 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
743 ], 764 ]
744 b'revisionsize': 61
745 }, 765 },
746 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' 766 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3'
747 ] 767 ]
748 768
749 Base nodes have just their metadata (e.g. phase) transferred 769 Base nodes have just their metadata (e.g. phase) transferred
753 > fields eval:[b'phase', b'parents', b'revision'] 773 > fields eval:[b'phase', b'parents', b'revision']
754 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] 774 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']]
755 > EOF 775 > EOF
756 creating http peer for wire protocol version 2 776 creating http peer for wire protocol version 2
757 sending changesetdata command 777 sending changesetdata command
758 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n 778 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n
759 s> Accept-Encoding: identity\r\n 779 s> Accept-Encoding: identity\r\n
760 s> accept: application/mercurial-exp-framing-0005\r\n 780 s> accept: application/mercurial-exp-framing-0005\r\n
761 s> content-type: application/mercurial-exp-framing-0005\r\n 781 s> content-type: application/mercurial-exp-framing-0005\r\n
762 s> content-length: 141\r\n 782 s> content-length: 141\r\n
763 s> host: $LOCALIP:$HGPORT\r\n (glob) 783 s> host: $LOCALIP:$HGPORT\r\n (glob)
774 s> 13\r\n 794 s> 13\r\n
775 s> \x0b\x00\x00\x01\x00\x02\x011 795 s> \x0b\x00\x00\x01\x00\x02\x011
776 s> \xa1FstatusBok 796 s> \xa1FstatusBok
777 s> \r\n 797 s> \r\n
778 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) 798 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
779 s> 239\r\n 799 s> 263\r\n
780 s> 1\x02\x00\x01\x00\x02\x001 800 s> [\x02\x00\x01\x00\x02\x001
781 s> \xa1Jtotalitems\x03\xa2DnodeT3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:EphaseFpublic\xa4DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicLrevisionsize\x18?X?7f144aea0ba742713887b564d57e9d12f12ff382\n 801 s> \xa1Jtotalitems\x03\xa2DnodeT3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:EphaseFpublic\xa4Ofieldsfollowing\x81\x82Hrevision\x18?DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicX?7f144aea0ba742713887b564d57e9d12f12ff382\n
782 s> test\n 802 s> test\n
783 s> 0 0\n 803 s> 0 0\n
784 s> a\n 804 s> a\n
785 s> b\n 805 s> b\n
786 s> \n 806 s> \n
787 s> commit 1\xa4DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddGparents\x82Tu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicLrevisionsize\x18=X=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n 807 s> commit 1\xa4Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddGparents\x82Tu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicX=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n
788 s> test\n 808 s> test\n
789 s> 0 0\n 809 s> 0 0\n
790 s> b\n 810 s> b\n
791 s> \n 811 s> \n
792 s> commit 2\xa4DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseEdraftLrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n 812 s> commit 2\xa4Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseEdraftX=1b74476799ec8318045db759b1b4bcc9b839d0aa\n
793 s> test\n 813 s> test\n
794 s> 0 0\n 814 s> 0 0\n
795 s> a\n 815 s> a\n
796 s> \n 816 s> \n
797 s> commit 3 817 s> commit 3
798 s> \r\n 818 s> \r\n
799 received frame(size=561; request=1; stream=2; streamflags=; type=command-response; flags=continuation) 819 received frame(size=603; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
800 s> 8\r\n 820 s> 8\r\n
801 s> \x00\x00\x00\x01\x00\x02\x002 821 s> \x00\x00\x00\x01\x00\x02\x002
802 s> \r\n 822 s> \r\n
803 s> 0\r\n 823 s> 0\r\n
804 s> \r\n 824 s> \r\n
810 { 830 {
811 b'node': b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', 831 b'node': b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
812 b'phase': b'public' 832 b'phase': b'public'
813 }, 833 },
814 { 834 {
835 b'fieldsfollowing': [
836 [
837 b'revision',
838 63
839 ]
840 ],
815 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', 841 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1',
816 b'parents': [ 842 b'parents': [
817 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', 843 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
818 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 844 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
819 ], 845 ],
820 b'phase': b'public', 846 b'phase': b'public'
821 b'revisionsize': 63
822 }, 847 },
823 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', 848 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1',
824 { 849 {
850 b'fieldsfollowing': [
851 [
852 b'revision',
853 61
854 ]
855 ],
825 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd', 856 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd',
826 b'parents': [ 857 b'parents': [
827 b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', 858 b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1',
828 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 859 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
829 ], 860 ],
830 b'phase': b'public', 861 b'phase': b'public'
831 b'revisionsize': 61
832 }, 862 },
833 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', 863 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2',
834 { 864 {
865 b'fieldsfollowing': [
866 [
867 b'revision',
868 61
869 ]
870 ],
835 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', 871 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11',
836 b'parents': [ 872 b'parents': [
837 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', 873 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:',
838 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 874 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
839 ], 875 ],
840 b'phase': b'draft', 876 b'phase': b'draft'
841 b'revisionsize': 61
842 }, 877 },
843 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' 878 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3'
844 ] 879 ]
845 880
846 $ cat error.log 881 $ cat error.log