tests/test-chg.t
author Matt Harbison <matt_harbison@yahoo.com>
Tue, 14 Jan 2020 19:42:24 -0500
changeset 44085 0ee0a3f6a990
parent 43860 5e0f6451e2d2
child 44261 04a3ae7aba14
child 44325 5cd2d91eeebd
permissions -rw-r--r--
lfs: check content length after downloading content Adapted from the Facebook repo[1]. The intent is to distinguish between the connection dying and getting served a corrupt blob. The original message: HTTP makes no provision to tell your client that you failed halfway through producing your response and won't have the answer they're looking for. So, if a LFS server fails while producing a response, then we'll report an OID mismatch. We can do a little better and disambiguate between "the server sent us the wrong blob" (very scary) and "the server crashed" (merely annoying) by looking at the content length of the response we got back. If it's not what was advertised, we can reasonably safely assume the server crashed. [1] https://github.com/facebookexperimental/eden/commit/2a4a6fab4e882ed89b948bfc1e7d56d7c3c99dd2 Differential Revision: https://phab.mercurial-scm.org/D7881
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29274
148a9a5379f0 test-chg: run only with chg
Yuya Nishihara <yuya@tcha.org>
parents: 29088
diff changeset
     1
#require chg
148a9a5379f0 test-chg: run only with chg
Yuya Nishihara <yuya@tcha.org>
parents: 29088
diff changeset
     2
40827
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
     3
  $ mkdir log
40999
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
     4
  $ cp $HGRCPATH $HGRCPATH.unconfigured
40826
1617aa916d88 commandserver: expand log path for convenience
Yuya Nishihara <yuya@tcha.org>
parents: 40825
diff changeset
     5
  $ cat <<'EOF' >> $HGRCPATH
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
     6
  > [cmdserver]
40827
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
     7
  > log = $TESTTMP/log/server.log
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
     8
  > max-log-files = 1
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
     9
  > max-log-size = 10 kB
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    10
  > EOF
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
    11
  $ cp $HGRCPATH $HGRCPATH.orig
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
    12
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    13
  $ filterlog () {
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    14
  >   sed -e 's!^[0-9/]* [0-9:]* ([0-9]*)>!YYYY/MM/DD HH:MM:SS (PID)>!' \
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    15
  >       -e 's!\(setprocname\|received fds\|setenv\): .*!\1: ...!' \
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    16
  >       -e 's!\(confighash\|mtimehash\) = [0-9a-f]*!\1 = ...!g' \
40999
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
    17
  >       -e 's!\(in \)[0-9.]*s\b!\1 ...s!g' \
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    18
  >       -e 's!\(pid\)=[0-9]*!\1=...!g' \
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    19
  >       -e 's!\(/server-\)[0-9a-f]*!\1...!g'
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    20
  > }
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    21
28516
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    22
init repo
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    23
29274
148a9a5379f0 test-chg: run only with chg
Yuya Nishihara <yuya@tcha.org>
parents: 29088
diff changeset
    24
  $ chg init foo
28516
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    25
  $ cd foo
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    26
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    27
ill-formed config
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    28
29274
148a9a5379f0 test-chg: run only with chg
Yuya Nishihara <yuya@tcha.org>
parents: 29088
diff changeset
    29
  $ chg status
28516
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    30
  $ echo '=brokenconfig' >> $HGRCPATH
29274
148a9a5379f0 test-chg: run only with chg
Yuya Nishihara <yuya@tcha.org>
parents: 29088
diff changeset
    31
  $ chg status
28516
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    32
  hg: parse error at * (glob)
3bf2892f685f chgserver: handle ParseError during validate
Jun Wu <quark@fb.com>
parents:
diff changeset
    33
  [255]
29088
983353035cec chgserver: remove _clearenvaliases
Jun Wu <quark@fb.com>
parents: 28516
diff changeset
    34
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
    35
  $ cp $HGRCPATH.orig $HGRCPATH
30677
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    36
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    37
long socket path
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    38
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    39
  $ sockpath=$TESTTMP/this/path/should/be/longer/than/one-hundred-and-seven/characters/where/107/is/the/typical/size/limit/of/unix-domain-socket
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    40
  $ mkdir -p $sockpath
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    41
  $ bakchgsockname=$CHGSOCKNAME
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    42
  $ CHGSOCKNAME=$sockpath/server
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    43
  $ export CHGSOCKNAME
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    44
  $ chg root
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    45
  $TESTTMP/foo
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    46
  $ rm -rf $sockpath
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    47
  $ CHGSOCKNAME=$bakchgsockname
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    48
  $ export CHGSOCKNAME
c80c16a8a0b0 chg: support long socket path
Jun Wu <quark@fb.com>
parents: 30620
diff changeset
    49
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
    50
  $ cd ..
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
    51
31107
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    52
editor
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    53
------
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    54
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    55
  $ cat >> pushbuffer.py <<EOF
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    56
  > def reposetup(ui, repo):
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    57
  >     repo.ui.pushbuffer(subproc=True)
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    58
  > EOF
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    59
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    60
  $ chg init editor
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    61
  $ cd editor
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    62
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    63
by default, system() should be redirected to the client:
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    64
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    65
  $ touch foo
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    66
  $ CHGDEBUG= HGEDITOR=cat chg ci -Am channeled --edit 2>&1 \
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    67
  > | egrep "HG:|run 'cat"
34309
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
    68
  chg: debug: * run 'cat "*"' at '$TESTTMP/editor' (glob)
31107
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    69
  HG: Enter commit message.  Lines beginning with 'HG:' are removed.
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    70
  HG: Leave message empty to abort commit.
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    71
  HG: --
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    72
  HG: user: test
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    73
  HG: branch 'default'
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    74
  HG: added foo
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    75
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    76
but no redirection should be made if output is captured:
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    77
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    78
  $ touch bar
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    79
  $ CHGDEBUG= HGEDITOR=cat chg ci -Am bufferred --edit \
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    80
  > --config extensions.pushbuffer="$TESTTMP/pushbuffer.py" 2>&1 \
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    81
  > | egrep "HG:|run 'cat"
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    82
  [1]
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    83
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    84
check that commit commands succeeded:
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    85
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    86
  $ hg log -T '{rev}:{desc}\n'
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    87
  1:bufferred
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    88
  0:channeled
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    89
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    90
  $ cd ..
fbce78c58f1e chg: refactor ui.system() to be partly overridden
Yuya Nishihara <yuya@tcha.org>
parents: 30847
diff changeset
    91
30847
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    92
pager
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    93
-----
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    94
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    95
  $ cat >> fakepager.py <<EOF
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    96
  > import sys
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    97
  > for line in sys.stdin:
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    98
  >     sys.stdout.write('paged! %r\n' % line)
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
    99
  > EOF
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   100
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   101
enable pager extension globally, but spawns the master server with no tty:
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   102
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   103
  $ chg init pager
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   104
  $ cd pager
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   105
  $ cat >> $HGRCPATH <<EOF
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   106
  > [extensions]
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   107
  > pager =
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   108
  > [pager]
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 34309
diff changeset
   109
  > pager = "$PYTHON" $TESTTMP/fakepager.py
30847
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   110
  > EOF
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   111
  $ chg version > /dev/null
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   112
  $ touch foo
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   113
  $ chg ci -qAm foo
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   114
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   115
pager should be enabled if the attached client has a tty:
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   116
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   117
  $ chg log -l1 -q --config ui.formatted=True
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   118
  paged! '0:1f7b0de80e11\n'
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   119
  $ chg log -l1 -q --config ui.formatted=False
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   120
  0:1f7b0de80e11
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   121
31890
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   122
chg waits for pager if runcommand raises
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   123
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   124
  $ cat > $TESTTMP/crash.py <<EOF
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 31890
diff changeset
   125
  > from mercurial import registrar
31890
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   126
  > cmdtable = {}
32337
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 31890
diff changeset
   127
  > command = registrar.command(cmdtable)
33097
fce4ed2912bb py3: make sure commands name are bytes in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
   128
  > @command(b'crash')
31890
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   129
  > def pagercrash(ui, repo, *pats, **opts):
43154
f05d10ef42e3 py3: add a missing b'' prefix in test extension for chg
Martin von Zweigbergk <martinvonz@google.com>
parents: 40999
diff changeset
   130
  >     ui.write(b'going to crash\n')
31890
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   131
  >     raise Exception('.')
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   132
  > EOF
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   133
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   134
  $ cat > $TESTTMP/fakepager.py <<EOF
33949
0d0cec9602c3 tests: update test-chg to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33097
diff changeset
   135
  > from __future__ import absolute_import
0d0cec9602c3 tests: update test-chg to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33097
diff changeset
   136
  > import sys
0d0cec9602c3 tests: update test-chg to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33097
diff changeset
   137
  > import time
31890
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   138
  > for line in iter(sys.stdin.readline, ''):
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   139
  >     if 'crash' in line: # only interested in lines containing 'crash'
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   140
  >         # if chg exits when pager is sleeping (incorrectly), the output
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   141
  >         # will be captured by the next test case
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   142
  >         time.sleep(1)
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   143
  >         sys.stdout.write('crash-pager: %s' % line)
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   144
  > EOF
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   145
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   146
  $ cat >> .hg/hgrc <<EOF
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   147
  > [extensions]
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   148
  > crash = $TESTTMP/crash.py
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   149
  > EOF
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   150
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   151
  $ chg crash --pager=on --config ui.formatted=True 2>/dev/null
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   152
  crash-pager: going to crash
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   153
  [255]
ca7af5d15b21 chg: always wait for pager
Jun Wu <quark@fb.com>
parents: 31107
diff changeset
   154
30847
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   155
  $ cd ..
e12553cfd0a4 pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents: 30677
diff changeset
   156
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   157
server lifecycle
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   158
----------------
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   159
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   160
chg server should be restarted on code change, and old server will shut down
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   161
automatically. In this test, we use the following time parameters:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   162
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   163
 - "sleep 1" to make mtime different
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   164
 - "sleep 2" to notice mtime change (polling interval is 1 sec)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   165
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   166
set up repository with an extension:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   167
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   168
  $ chg init extreload
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   169
  $ cd extreload
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   170
  $ touch dummyext.py
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   171
  $ cat <<EOF >> .hg/hgrc
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   172
  > [extensions]
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   173
  > dummyext = dummyext.py
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   174
  > EOF
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   175
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   176
isolate socket directory for stable result:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   177
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   178
  $ OLDCHGSOCKNAME=$CHGSOCKNAME
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   179
  $ mkdir chgsock
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   180
  $ CHGSOCKNAME=`pwd`/chgsock/server
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   181
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   182
warm up server:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   183
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   184
  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
34309
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
   185
  chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob)
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   186
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   187
new server should be started if extension modified:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   188
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   189
  $ sleep 1
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   190
  $ touch dummyext.py
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   191
  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
34309
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
   192
  chg: debug: * instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob)
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
   193
  chg: debug: * instruction: reconnect (glob)
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
   194
  chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob)
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   195
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   196
old server will shut down, while new server should still be reachable:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   197
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   198
  $ sleep 2
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   199
  $ CHGDEBUG= chg log 2>&1 | (egrep 'instruction|start' || true)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   200
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   201
socket file should never be unlinked by old server:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   202
(simulates unowned socket by updating mtime, which makes sure server exits
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   203
at polling cycle)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   204
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   205
  $ ls chgsock/server-*
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   206
  chgsock/server-* (glob)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   207
  $ touch chgsock/server-*
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   208
  $ sleep 2
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   209
  $ ls chgsock/server-*
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   210
  chgsock/server-* (glob)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   211
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   212
since no server is reachable from socket file, new server should be started:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   213
(this test makes sure that old server shut down automatically)
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   214
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   215
  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
34309
b94db1780365 chg: show timestamp with debug messages
Jun Wu <quark@fb.com>
parents: 33949
diff changeset
   216
  chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob)
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   217
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   218
shut down servers and restore environment:
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   219
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   220
  $ rm -R chgsock
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   221
  $ sleep 2
29275
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   222
  $ CHGSOCKNAME=$OLDCHGSOCKNAME
e53f961ac75f test-chg: add basic tests for server lifecycle
Yuya Nishihara <yuya@tcha.org>
parents: 29274
diff changeset
   223
  $ cd ..
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   224
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   225
check that server events are recorded:
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   226
40827
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   227
  $ ls log
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   228
  server.log
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   229
  server.log.1
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   230
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   231
print only the last 10 lines, since we aren't sure how many records are
43800
fe94af4e3dc9 tests: fix test-chg.t to work with py3 (no setprocname)
Kyle Lippincott <spectral@google.com>
parents: 43154
diff changeset
   232
preserved (since setprocname isn't available on py3, the 10th-most-recent line
fe94af4e3dc9 tests: fix test-chg.t to work with py3 (no setprocname)
Kyle Lippincott <spectral@google.com>
parents: 43154
diff changeset
   233
is different when using py3):
40827
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   234
d23fd01cc115 commandserver: add config knob for various logging options
Yuya Nishihara <yuya@tcha.org>
parents: 40826
diff changeset
   235
  $ cat log/server.log.1 log/server.log | tail -10 | filterlog
43800
fe94af4e3dc9 tests: fix test-chg.t to work with py3 (no setprocname)
Kyle Lippincott <spectral@google.com>
parents: 43154
diff changeset
   236
  YYYY/MM/DD HH:MM:SS (PID)> confighash = ... mtimehash = ... (py3 !)
40999
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   237
  YYYY/MM/DD HH:MM:SS (PID)> forked worker process (pid=...)
43800
fe94af4e3dc9 tests: fix test-chg.t to work with py3 (no setprocname)
Kyle Lippincott <spectral@google.com>
parents: 43154
diff changeset
   238
  YYYY/MM/DD HH:MM:SS (PID)> setprocname: ... (no-py3 !)
40825
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   239
  YYYY/MM/DD HH:MM:SS (PID)> received fds: ...
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   240
  YYYY/MM/DD HH:MM:SS (PID)> chdir to '$TESTTMP/extreload'
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   241
  YYYY/MM/DD HH:MM:SS (PID)> setumask 18
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   242
  YYYY/MM/DD HH:MM:SS (PID)> setenv: ...
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   243
  YYYY/MM/DD HH:MM:SS (PID)> confighash = ... mtimehash = ...
eaabcb689747 commandserver: switch logging facility to ui.log() interface
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
   244
  YYYY/MM/DD HH:MM:SS (PID)> validate: []
40828
25e9089c7686 commandserver: turn server debug messages into logs
Yuya Nishihara <yuya@tcha.org>
parents: 40827
diff changeset
   245
  YYYY/MM/DD HH:MM:SS (PID)> worker process exited (pid=...)
25e9089c7686 commandserver: turn server debug messages into logs
Yuya Nishihara <yuya@tcha.org>
parents: 40827
diff changeset
   246
  YYYY/MM/DD HH:MM:SS (PID)> $TESTTMP/extreload/chgsock/server-... is not owned, exiting.
40999
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   247
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   248
repository cache
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   249
----------------
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   250
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   251
  $ rm log/server.log*
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   252
  $ cp $HGRCPATH.unconfigured $HGRCPATH
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   253
  $ cat <<'EOF' >> $HGRCPATH
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   254
  > [cmdserver]
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   255
  > log = $TESTTMP/log/server.log
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   256
  > max-repo-cache = 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   257
  > track-log = command, repocache
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   258
  > EOF
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   259
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   260
isolate socket directory for stable result:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   261
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   262
  $ OLDCHGSOCKNAME=$CHGSOCKNAME
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   263
  $ mkdir chgsock
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   264
  $ CHGSOCKNAME=`pwd`/chgsock/server
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   265
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   266
create empty repo and cache it:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   267
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   268
  $ hg init cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   269
  $ hg id -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   270
  000000000000 tip
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   271
  $ sleep 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   272
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   273
modify repo (and cache will be invalidated):
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   274
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   275
  $ touch cached/a
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   276
  $ hg ci -R cached -Am 'add a'
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   277
  adding a
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   278
  $ sleep 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   279
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   280
read cached repo:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   281
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   282
  $ hg log -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   283
  changeset:   0:ac82d8b1f7c4
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   284
  tag:         tip
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   285
  user:        test
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   286
  date:        Thu Jan 01 00:00:00 1970 +0000
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   287
  summary:     add a
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   288
  
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   289
  $ sleep 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   290
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   291
discard cached from LRU cache:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   292
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   293
  $ hg clone cached cached2
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   294
  updating to branch default
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   295
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   296
  $ hg id -R cached2
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   297
  ac82d8b1f7c4 tip
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   298
  $ sleep 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   299
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   300
read uncached repo:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   301
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   302
  $ hg log -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   303
  changeset:   0:ac82d8b1f7c4
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   304
  tag:         tip
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   305
  user:        test
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   306
  date:        Thu Jan 01 00:00:00 1970 +0000
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   307
  summary:     add a
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   308
  
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   309
  $ sleep 1
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   310
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   311
shut down servers and restore environment:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   312
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   313
  $ rm -R chgsock
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   314
  $ sleep 2
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   315
  $ CHGSOCKNAME=$OLDCHGSOCKNAME
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   316
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   317
check server log:
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   318
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   319
  $ cat log/server.log | filterlog
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   320
  YYYY/MM/DD HH:MM:SS (PID)> init cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   321
  YYYY/MM/DD HH:MM:SS (PID)> id -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   322
  YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   323
  YYYY/MM/DD HH:MM:SS (PID)> repo from cache: $TESTTMP/cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   324
  YYYY/MM/DD HH:MM:SS (PID)> ci -R cached -Am 'add a'
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   325
  YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   326
  YYYY/MM/DD HH:MM:SS (PID)> repo from cache: $TESTTMP/cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   327
  YYYY/MM/DD HH:MM:SS (PID)> log -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   328
  YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   329
  YYYY/MM/DD HH:MM:SS (PID)> clone cached cached2
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   330
  YYYY/MM/DD HH:MM:SS (PID)> id -R cached2
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   331
  YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached2 (in  ...s)
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   332
  YYYY/MM/DD HH:MM:SS (PID)> log -R cached
dcac24ec935b commandserver: preload repository in master server and reuse its file cache
Yuya Nishihara <yuya@tcha.org>
parents: 40998
diff changeset
   333
  YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
43860
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   334
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   335
Test that chg works even when python "coerces" the locale (py3.7+, which is done
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   336
by default if none of LC_ALL, LC_CTYPE, or LANG are set in the environment)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   337
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   338
  $ cat > $TESTTMP/debugenv.py <<EOF
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   339
  > from mercurial import encoding
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   340
  > from mercurial import registrar
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   341
  > cmdtable = {}
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   342
  > command = registrar.command(cmdtable)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   343
  > @command(b'debugenv', [], b'', norepo=True)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   344
  > def debugenv(ui):
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   345
  >     for k in [b'LC_ALL', b'LC_CTYPE', b'LANG']:
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   346
  >         v = encoding.environ.get(k)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   347
  >         if v is not None:
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   348
  >             ui.write(b'%s=%s\n' % (k, encoding.environ[k]))
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   349
  > EOF
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   350
  $ LANG= LC_ALL= LC_CTYPE= chg \
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   351
  >    --config extensions.debugenv=$TESTTMP/debugenv.py debugenv
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   352
  LC_ALL=
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   353
  LC_CTYPE=C.UTF-8 (py37 !)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   354
  LC_CTYPE= (no-py37 !)
5e0f6451e2d2 chg: fix chg to work with py3.7+ "coercing" the locale
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   355
  LANG=