451 remote: 1 |
451 remote: 1 |
452 url: ssh://user@dummy/server |
452 url: ssh://user@dummy/server |
453 local: no |
453 local: no |
454 pushable: yes |
454 pushable: yes |
455 |
455 |
|
456 Enable version 2 support on server. We need to do this in hgrc because we can't |
|
457 use --config with `hg serve --stdio`. |
|
458 |
|
459 $ cat >> server/.hg/hgrc << EOF |
|
460 > [experimental] |
|
461 > sshserver.support-v2 = true |
|
462 > EOF |
|
463 |
456 Send an upgrade request to a server that supports upgrade |
464 Send an upgrade request to a server that supports upgrade |
457 |
465 |
458 $ SSHSERVERMODE=upgradev2 hg -R server serve --stdio << EOF |
466 $ hg -R server serve --stdio << EOF |
459 > upgrade this-is-some-token proto=exp-ssh-v2-0001 |
467 > upgrade this-is-some-token proto=exp-ssh-v2-0001 |
460 > hello |
468 > hello |
461 > between |
469 > between |
462 > pairs 81 |
470 > pairs 81 |
463 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
471 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
464 > EOF |
472 > EOF |
465 upgraded this-is-some-token exp-ssh-v2-0001 |
473 upgraded this-is-some-token exp-ssh-v2-0001 |
466 383 |
474 383 |
467 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
475 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
468 |
476 |
469 $ SSHSERVERMODE=upgradev2 hg --config experimental.sshpeer.advertise-v2=true --debug debugpeer ssh://user@dummy/server |
477 $ hg --config experimental.sshpeer.advertise-v2=true --debug debugpeer ssh://user@dummy/server |
470 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !) |
478 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !) |
471 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !) |
479 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !) |
472 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) |
480 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) |
473 devel-peer-request: hello |
481 devel-peer-request: hello |
474 sending hello command |
482 sending hello command |
480 local: no |
488 local: no |
481 pushable: yes |
489 pushable: yes |
482 |
490 |
483 Verify the peer has capabilities |
491 Verify the peer has capabilities |
484 |
492 |
485 $ SSHSERVERMODE=upgradev2 hg --config experimental.sshpeer.advertise-v2=true --debug debugcapabilities ssh://user@dummy/server |
493 $ hg --config experimental.sshpeer.advertise-v2=true --debug debugcapabilities ssh://user@dummy/server |
486 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !) |
494 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !) |
487 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !) |
495 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !) |
488 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) |
496 sending upgrade request: * proto=exp-ssh-v2-0001 (glob) |
489 devel-peer-request: hello |
497 devel-peer-request: hello |
490 sending hello command |
498 sending hello command |
525 heads |
533 heads |
526 pushkey |
534 pushkey |
527 remote-changegroup |
535 remote-changegroup |
528 http |
536 http |
529 https |
537 https |
|
538 |
|
539 Command after upgrade to version 2 is processed |
|
540 |
|
541 $ hg -R server serve --stdio << EOF |
|
542 > upgrade this-is-some-token proto=exp-ssh-v2-0001 |
|
543 > hello |
|
544 > between |
|
545 > pairs 81 |
|
546 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000hello |
|
547 > EOF |
|
548 upgraded this-is-some-token exp-ssh-v2-0001 |
|
549 383 |
|
550 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
|
551 384 |
|
552 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
|
553 |
|
554 Multiple upgrades is not allowed |
|
555 |
|
556 $ hg -R server serve --stdio << EOF |
|
557 > upgrade this-is-some-token proto=exp-ssh-v2-0001 |
|
558 > hello |
|
559 > between |
|
560 > pairs 81 |
|
561 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000upgrade another-token proto=irrelevant |
|
562 > hello |
|
563 > EOF |
|
564 upgraded this-is-some-token exp-ssh-v2-0001 |
|
565 383 |
|
566 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
|
567 cannot upgrade protocols multiple times |
|
568 - |
|
569 |
|
570 |
|
571 Malformed upgrade request line (not exactly 3 space delimited tokens) |
|
572 |
|
573 $ hg -R server serve --stdio << EOF |
|
574 > upgrade |
|
575 > EOF |
|
576 0 |
|
577 |
|
578 $ hg -R server serve --stdio << EOF |
|
579 > upgrade token |
|
580 > EOF |
|
581 0 |
|
582 |
|
583 $ hg -R server serve --stdio << EOF |
|
584 > upgrade token foo=bar extra-token |
|
585 > EOF |
|
586 0 |
|
587 |
|
588 Upgrade request to unsupported protocol is ignored |
|
589 |
|
590 $ hg -R server serve --stdio << EOF |
|
591 > upgrade this-is-some-token proto=unknown1,unknown2 |
|
592 > hello |
|
593 > between |
|
594 > pairs 81 |
|
595 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
|
596 > EOF |
|
597 0 |
|
598 384 |
|
599 capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN |
|
600 1 |
|
601 |
|
602 |
|
603 Upgrade request must be followed by hello + between |
|
604 |
|
605 $ hg -R server serve --stdio << EOF |
|
606 > upgrade token proto=exp-ssh-v2-0001 |
|
607 > invalid |
|
608 > EOF |
|
609 malformed handshake protocol: missing hello |
|
610 - |
|
611 |
|
612 |
|
613 $ hg -R server serve --stdio << EOF |
|
614 > upgrade token proto=exp-ssh-v2-0001 |
|
615 > hello |
|
616 > invalid |
|
617 > EOF |
|
618 malformed handshake protocol: missing between |
|
619 - |
|
620 |
|
621 |
|
622 $ hg -R server serve --stdio << EOF |
|
623 > upgrade token proto=exp-ssh-v2-0001 |
|
624 > hello |
|
625 > between |
|
626 > invalid |
|
627 > EOF |
|
628 malformed handshake protocol: missing pairs 81 |
|
629 - |
|
630 |