tests/wireprotohelpers.sh
author Martin von Zweigbergk <martinvonz@google.com>
Sun, 29 Apr 2018 10:07:40 -0700
changeset 38894 7848f284b211
parent 37785 b4d85bc122bd
child 39098 b3c6c194f33a
permissions -rw-r--r--
revisions: allow "x123" to refer to nodeid prefix "123" When resolving "123" to a revision, we try to interpret it as revnum before we try to interpret it as a nodeid hex prefix. This can lead to the shortest valid prefix being longer than necessary. This patch lets us write such nodeids in a shorter form by prefixing them with "x" instead of adding more hex digits until they're longer than the longest decimal revnum. On my hg repo with almost 69k revisions, turning this feature on saves on average 0.4% on the average nodeid length. That clearly doesn't justify this patch. However, it becomes more usefule when combined with the earlier patches in this series that let you disambiguate nodeid prefixes within a configured revset. Note that we attempt to resolve symbols as nodeid prefixes after we've exhausted all other posibilities, so this is a backwards compatible change (only queries that would previously fail may now succeed). I've still hidden this feature behind an experiemntal config option so we can roll it back if needed. Differential Revision: https://phab.mercurial-scm.org/D4041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     1
HTTPV2=exp-http-v2-0001
37725
3ea8323d6f95 wireprotov2: change command response protocol to include a leading map
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37722
diff changeset
     2
MEDIATYPE=application/mercurial-exp-framing-0005
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     3
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     4
sendhttpraw() {
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     5
  hg --verbose debugwireproto --peer raw http://$LOCALIP:$HGPORT/
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     6
}
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     7
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37482
diff changeset
     8
sendhttpv2peer() {
37718
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37540
diff changeset
     9
  hg --verbose debugwireproto --nologhandshake --peer http2 http://$LOCALIP:$HGPORT/
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37540
diff changeset
    10
}
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37540
diff changeset
    11
ad1c07008e0b debugcommands: ability to suppress logging of handshake
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37540
diff changeset
    12
sendhttpv2peerhandshake() {
37483
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37482
diff changeset
    13
  hg --verbose debugwireproto --peer http2 http://$LOCALIP:$HGPORT/
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37482
diff changeset
    14
}
61e405fb6372 wireproto: crude support for version 2 HTTP peer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37482
diff changeset
    15
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    16
cat > dummycommands.py << EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    17
from mercurial import (
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    18
    wireprototypes,
37785
b4d85bc122bd wireproto: rename wireproto to wireprotov1server (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37780
diff changeset
    19
    wireprotov1server,
37780
8acd3a9ac4fd wireproto: make version 2 @wireprotocommand an independent function
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37725
diff changeset
    20
    wireprotov2server,
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    21
)
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    22
37785
b4d85bc122bd wireproto: rename wireproto to wireprotov1server (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37780
diff changeset
    23
@wireprotov1server.wireprotocommand('customreadonly', permission='pull')
37540
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    24
def customreadonlyv1(repo, proto):
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    25
    return wireprototypes.bytesresponse(b'customreadonly bytes response')
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    26
37780
8acd3a9ac4fd wireproto: make version 2 @wireprotocommand an independent function
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37725
diff changeset
    27
@wireprotov2server.wireprotocommand('customreadonly', permission='pull')
37540
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    28
def customreadonlyv2(repo, proto):
37722
89a16704114c wireprotov2: define response data as CBOR
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37718
diff changeset
    29
    return wireprototypes.cborresponse(b'customreadonly bytes response')
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    30
37785
b4d85bc122bd wireproto: rename wireproto to wireprotov1server (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37780
diff changeset
    31
@wireprotov1server.wireprotocommand('customreadwrite', permission='push')
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    32
def customreadwrite(repo, proto):
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    33
    return wireprototypes.bytesresponse(b'customreadwrite bytes response')
37540
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    34
37780
8acd3a9ac4fd wireproto: make version 2 @wireprotocommand an independent function
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37725
diff changeset
    35
@wireprotov2server.wireprotocommand('customreadwrite', permission='push')
37540
693cb3768943 wireproto: make @wireprotocommand version 1 only by default
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37483
diff changeset
    36
def customreadwritev2(repo, proto):
37722
89a16704114c wireprotov2: define response data as CBOR
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37718
diff changeset
    37
    return wireprototypes.cborresponse(b'customreadwrite bytes response')
37482
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    38
EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    39
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    40
cat >> $HGRCPATH << EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    41
[extensions]
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    42
drawdag = $TESTDIR/drawdag.py
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    43
EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    44
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    45
enabledummycommands() {
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    46
  cat >> $HGRCPATH << EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    47
[extensions]
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    48
dummycommands = $TESTTMP/dummycommands.py
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    49
EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    50
}
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    51
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    52
enablehttpv2() {
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    53
  cat >> $1/.hg/hgrc << EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    54
[experimental]
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    55
web.apiserver = true
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    56
web.api.http-v2 = true
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    57
EOF
fa9faf58959d tests: extract wire protocol shell helpers to standalone file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    58
}