##// END OF EJS Templates
hgweb: profile HTTP requests...
hgweb: profile HTTP requests Currently, running `hg serve --profile` doesn't yield anything useful: when the process is terminated the profiling output displays results from the main thread, which typically spends most of its time in select.select(). Furthermore, it has no meaningful results from mercurial.* modules because the threads serving HTTP requests don't actually get profiled. This patch teaches the hgweb wsgi applications to profile individual requests. If profiling is enabled, the profiler kicks in after HTTP/WSGI environment processing but before Mercurial's main request processing. The profile results are printed to the configured profiling output. If running `hg serve` from a shell, they will be printed to stderr, just before the HTTP request line is logged. If profiling to a file, we only write a single profile to the file because the file is not opened in append mode. We could add support for appending to files in a future patch if someone wants it. Per request profiling doesn't work with the statprof profiler because internally that profiler collects samples from the thread that *initially* requested profiling be enabled. I have plans to address this by vendoring Facebook's customized statprof and then improving it.

File last commit:

r28611:6aa17f86 default
r29787:80df0426 default
Show More
test-hgrc.t
239 lines | 6.2 KiB | text/troff | Tads3Lexer
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 hide outer repo
$ hg init
Mads Kiilerich
tests: remove redundant globs...
r12640 Use hgrc within $TESTTMP
$ HGRCPATH=`pwd`/hgrc
$ export HGRCPATH
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 Use an alternate var for scribbling on hgrc to keep check-code from
complaining about the important settings we may be overwriting:
$ HGRC=`pwd`/hgrc
$ export HGRC
Mads Kiilerich
tests: remove redundant globs...
r12640 Basic syntax error
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo "invalid" > $HGRC
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg version
Mads Kiilerich
tests: remove redundant globs...
r12640 hg: parse error at $TESTTMP/hgrc:1: invalid
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 [255]
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo "" > $HGRC
Brodie Rao
tests: unify test-hgrc
r12014
Martin Geisler
tests: added a short description to issue numbers...
r12399 Issue1199: Can't use '%' in hgrc (eg url encoded username)
Brodie Rao
tests: unify test-hgrc
r12014
$ hg init "foo%bar"
$ hg clone "foo%bar" foobar
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd foobar
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ cat .hg/hgrc
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837 # example repository config (see "hg help config" for more info)
[paths]
FUJIWARA Katsunori
tests: add "(glob)" to paths in test-hgrc.t for Windows
r23056 default = $TESTTMP/foo%bar (glob)
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837
# path aliases to other clones of this repo in URLs or filesystem paths
# (see "hg help config.paths" for more info)
#
# default-push = ssh://jdoe@example.net/hg/jdoes-fork
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork
# my-clone = /home/jdoe/jdoes-clone
[ui]
# name and email (local to this repository, optional), e.g.
Augie Fackler
clone: provide sample username = config entry in .hg/hgrc (issue4359)...
r22380 # username = Jane Doe <jdoe@example.com>
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg paths
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 default = $TESTTMP/foo%bar (glob)
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg showconfig
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 bundle.mainreporoot=$TESTTMP/foobar (glob)
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 extensions.chgserver= (?)
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 paths.default=$TESTTMP/foo%bar (glob)
Brodie Rao
tests: unify test-hgrc
r12014 $ cd ..
issue1829: wrong indentation
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo '[foo]' > $HGRC
$ echo ' x = y' >> $HGRC
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg version
Mads Kiilerich
tests: remove redundant globs...
r12640 hg: parse error at $TESTTMP/hgrc:2: x = y
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276 unexpected leading whitespace
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 [255]
Brodie Rao
tests: unify test-hgrc
r12014
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c "print '[foo]\nbar = a\n b\n c \n de\n fg \nbaz = bif cb \n'" \
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 > > $HGRC
Brodie Rao
tests: unify test-hgrc
r12014 $ hg showconfig foo
foo.bar=a\nb\nc\nde\nfg
foo.baz=bif cb
$ FAKEPATH=/path/to/nowhere
$ export FAKEPATH
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo '%include $FAKEPATH/no-such-file' > $HGRC
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg version
Matt Mackall
tests: glob version number in test-hgrc
r14491 Mercurial Distributed SCM (version *) (glob)
Matt Mackall
urls: bulk-change primary website URLs
r26421 (see https://mercurial-scm.org for more information)
Matt Mackall
tests: update for handling of missing hgrc includes
r14489
timeless
copyright: update to 2016
r27925 Copyright (C) 2005-2016 Matt Mackall and others
Matt Mackall
tests: update for handling of missing hgrc includes
r14489 This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Brodie Rao
tests: unify test-hgrc
r12014 $ unset FAKEPATH
Idan Kamara
dispatch: make sure global options on the command line take precedence...
r14992 make sure global options given on the cmdline take precedence
Idan Kamara
dispatch: make sure unspecified global ui options don't override old values
r14748
$ hg showconfig --config ui.verbose=True --quiet
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 bundle.mainreporoot=$TESTTMP
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 extensions.chgserver= (?)
Idan Kamara
dispatch: make sure global options on the command line take precedence...
r14992 ui.verbose=False
ui.debug=False
Idan Kamara
dispatch: make sure unspecified global ui options don't override old values
r14748 ui.quiet=True
Idan Kamara
dispatch: make sure global options on the command line take precedence...
r14992 $ touch foobar/untracked
$ cat >> foobar/.hg/hgrc <<EOF
> [ui]
> verbose=True
> EOF
$ hg -R foobar st -q
Brodie Rao
tests: unify test-hgrc
r12014 username expansion
$ olduser=$HGUSER
$ unset HGUSER
$ FAKEUSER='John Doe'
$ export FAKEUSER
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo '[ui]' > $HGRC
$ echo 'username = $FAKEUSER' >> $HGRC
Brodie Rao
tests: unify test-hgrc
r12014
$ hg init usertest
$ cd usertest
$ touch bar
$ hg commit --addremove --quiet -m "added bar"
$ hg log --template "{author}\n"
John Doe
$ cd ..
Nicolas Dumazet
tests: remove useless sed in test-hgrc
r12109 $ hg showconfig
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 bundle.mainreporoot=$TESTTMP
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 extensions.chgserver= (?)
Brodie Rao
tests: unify test-hgrc
r12014 ui.username=$FAKEUSER
$ unset FAKEUSER
$ HGUSER=$olduser
$ export HGUSER
Brodie Rao
showconfig: don't accept multiple sections and one config item...
r12697 showconfig with multiple arguments
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo "[alias]" > $HGRC
$ echo "log = log -g" >> $HGRC
$ echo "[defaults]" >> $HGRC
$ echo "identify = -n" >> $HGRC
Brodie Rao
showconfig: don't accept multiple sections and one config item...
r12697 $ hg showconfig alias defaults
alias.log=log -g
defaults.identify=-n
$ hg showconfig alias defaults.identify
abort: only one config item permitted
[255]
$ hg showconfig alias.log defaults.identify
abort: only one config item permitted
[255]
Brodie Rao
tests: unify test-hgrc
r12014 HGPLAIN
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo "[ui]" > $HGRC
$ echo "debug=true" >> $HGRC
$ echo "fallbackencoding=ASCII" >> $HGRC
$ echo "quiet=true" >> $HGRC
$ echo "slash=true" >> $HGRC
$ echo "traceback=true" >> $HGRC
$ echo "verbose=true" >> $HGRC
$ echo "style=~/.hgstyle" >> $HGRC
$ echo "logtemplate={node}" >> $HGRC
$ echo "[defaults]" >> $HGRC
$ echo "identify=-n" >> $HGRC
$ echo "[alias]" >> $HGRC
$ echo "log=log -g" >> $HGRC
Brodie Rao
tests: unify test-hgrc
r12014
customized hgrc
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg showconfig
Mads Kiilerich
tests: remove redundant globs...
r12640 read config from: $TESTTMP/hgrc
$TESTTMP/hgrc:13: alias.log=log -g
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 repo: bundle.mainreporoot=$TESTTMP
Mads Kiilerich
tests: remove redundant globs...
r12640 $TESTTMP/hgrc:11: defaults.identify=-n
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 --config: extensions.chgserver= (?)
Mads Kiilerich
tests: remove redundant globs...
r12640 $TESTTMP/hgrc:2: ui.debug=true
$TESTTMP/hgrc:3: ui.fallbackencoding=ASCII
$TESTTMP/hgrc:4: ui.quiet=true
$TESTTMP/hgrc:5: ui.slash=true
$TESTTMP/hgrc:6: ui.traceback=true
$TESTTMP/hgrc:7: ui.verbose=true
$TESTTMP/hgrc:8: ui.style=~/.hgstyle
$TESTTMP/hgrc:9: ui.logtemplate={node}
Brodie Rao
tests: unify test-hgrc
r12014
plain hgrc
$ HGPLAIN=; export HGPLAIN
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg showconfig --config ui.traceback=True --debug
Mads Kiilerich
tests: remove redundant globs...
r12640 read config from: $TESTTMP/hgrc
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 repo: bundle.mainreporoot=$TESTTMP
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 --config: extensions.chgserver= (?)
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 --config: ui.traceback=True
--verbose: ui.verbose=False
--debug: ui.debug=True
--quiet: ui.quiet=False
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849
plain mode with exceptions
$ cat > plain.py <<EOF
Yuya Nishihara
test-hgrc: do not print ui.plain() flag at uisetup()...
r28611 > from mercurial import commands, extensions
> def _config(orig, ui, repo, *values, **opts):
> ui.write('plain: %r\n' % ui.plain())
> return orig(ui, repo, *values, **opts)
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 > def uisetup(ui):
Yuya Nishihara
test-hgrc: do not print ui.plain() flag at uisetup()...
r28611 > extensions.wrapcommand(commands.table, 'config', _config)
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 > EOF
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ echo "[extensions]" >> $HGRC
$ echo "plain=./plain.py" >> $HGRC
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $ HGPLAINEXCEPT=; export HGPLAINEXCEPT
$ hg showconfig --config ui.traceback=True --debug
"Yann E. MORIN"
ui: test plain mode against exceptions...
r14372 plain: True
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 read config from: $TESTTMP/hgrc
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 repo: bundle.mainreporoot=$TESTTMP
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $TESTTMP/hgrc:15: extensions.plain=./plain.py
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 --config: extensions.chgserver= (?)
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 --config: ui.traceback=True
--verbose: ui.verbose=False
--debug: ui.debug=True
--quiet: ui.quiet=False
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $ unset HGPLAIN
$ hg showconfig --config ui.traceback=True --debug
"Yann E. MORIN"
ui: test plain mode against exceptions...
r14372 plain: True
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 read config from: $TESTTMP/hgrc
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 repo: bundle.mainreporoot=$TESTTMP
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $TESTTMP/hgrc:15: extensions.plain=./plain.py
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 --config: extensions.chgserver= (?)
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 --config: ui.traceback=True
--verbose: ui.verbose=False
--debug: ui.debug=True
--quiet: ui.quiet=False
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $ HGPLAINEXCEPT=i18n; export HGPLAINEXCEPT
$ hg showconfig --config ui.traceback=True --debug
"Yann E. MORIN"
ui: test plain mode against exceptions...
r14372 plain: True
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 read config from: $TESTTMP/hgrc
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 repo: bundle.mainreporoot=$TESTTMP
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 $TESTTMP/hgrc:15: extensions.plain=./plain.py
Yuya Nishihara
tests: make config/help tests pass even if chgserver extension is loaded...
r28610 --config: extensions.chgserver= (?)
Mads Kiilerich
config: give a useful hint of source for the most common command line settings...
r20788 --config: ui.traceback=True
--verbose: ui.verbose=False
--debug: ui.debug=True
--quiet: ui.quiet=False
Mads Kiilerich
config: don't set source when no source is specified - don't overwrite with ''...
r20789
source of paths is not mangled
$ cat >> $HGRCPATH <<EOF
> [paths]
> foo = bar
> EOF
$ hg showconfig --debug paths
plain: True
read config from: $TESTTMP/hgrc
FUJIWARA Katsunori
tests: add "(glob)" to paths in test-hgrc.t for Windows
r23056 $TESTTMP/hgrc:17: paths.foo=$TESTTMP/bar (glob)