##// END OF EJS Templates
scmutil: make shortest() respect disambiguation revset...
scmutil: make shortest() respect disambiguation revset The previous patch would let you use a shorter prefix if the prefix is unique within a configured revset. However, that's not very useful if there's no simple way of knowing what that shorter prefix is. This patch adapts the shortest() template function to use the shorter prefixes for nodes in the configured revset. This is currently extremely slow, because it calculates the revset for each call to shortest(). To make this faster, the next patch will start caching the revset instance. Ideally we'd cache a prefix tree instance instead. Differential Revision: https://phab.mercurial-scm.org/D4038

File last commit:

r38086:fd8eedcc default
r38879:6f7c9527 default
Show More
test-profile.t
162 lines | 3.8 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: unify test-profile
r12478 test --time
Martin Geisler
dispatch: lowercase --time message
r16933 $ hg --time help -q help 2>&1 | grep time > /dev/null
Matt Mackall
tests: unify test-profile
r12478 $ hg init a
$ cd a
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 Function to check that statprof ran
$ statprofran () {
> egrep 'Sample count:|No samples recorded' > /dev/null
> }
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898
Matt Mackall
tests: unify test-profile
r12478 test --profile
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ hg st --profile 2>&1 | statprofran
profile: support --profile in alias and abbreviated version (--prof)...
r32787
Abreviated version
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ hg st --prof 2>&1 | statprofran
profile: support --profile in alias and abbreviated version (--prof)...
r32787
In alias
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ hg --config "alias.profst=status --profile" profst 2>&1 | statprofran
profile: support --profile in alias and abbreviated version (--prof)...
r32787
#if lsprof
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ prof='hg --config profiling.type=ls --profile'
$ $prof st 2>../out
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898 $ grep CallCount ../out > /dev/null || cat ../out
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof --config profiling.output=../out st
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898 $ grep CallCount ../out > /dev/null || cat ../out
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof --config profiling.output=blackbox --config extensions.blackbox= st
Durham Goode
profiling: allow logging profile to the blackbox...
r26191 $ grep CallCount .hg/blackbox.log > /dev/null || cat .hg/blackbox.log
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof --config profiling.format=text st 2>../out
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898 $ grep CallCount ../out > /dev/null || cat ../out
$ echo "[profiling]" >> $HGRCPATH
$ echo "format=kcachegrind" >> $HGRCPATH
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof st 2>../out
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898 $ grep 'events: Ticks' ../out > /dev/null || cat ../out
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof --config profiling.output=../out st
Mads Kiilerich
tests: change odd uses of 'if hghave' to #if
r16898 $ grep 'events: Ticks' ../out > /dev/null || cat ../out
#endif
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Gregory Szorc
hgweb: profile HTTP requests...
r29787 #if lsprof serve
Profiling of HTTP requests works
Gregory Szorc
tests: explicitly use ls profiler...
r30259 $ $prof --config profiling.format=text --config profiling.output=../profile.log serve -d -p $HGPORT --pid-file ../hg.pid -A ../access.log
Gregory Szorc
hgweb: profile HTTP requests...
r29787 $ cat ../hg.pid >> $DAEMON_PIDS
$ hg -q clone -U http://localhost:$HGPORT ../clone
A single profile is logged because file logging doesn't append
$ grep CallCount ../profile.log | wc -l
\s*1 (re)
#endif
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 Install an extension that can sleep and guarantee a profiler has time to run
$ cat >> sleepext.py << EOF
> import time
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > from mercurial import registrar, commands
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 > cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > command = registrar.command(cmdtable)
Pulkit Goyal
py3: add b'' prefixes in tests/test-profile.t...
r38086 > @command(b'sleep', [], b'hg sleep')
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 > def sleep(ui, *args, **kwargs):
> time.sleep(0.1)
> EOF
$ cat >> $HGRCPATH << EOF
> [extensions]
> sleep = `pwd`/sleepext.py
> EOF
statistical profiler works
Gregory Szorc
profiling: make statprof the default profiler (BC)...
r30317 $ hg --profile sleep 2>../out
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ cat ../out | statprofran
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316
Various statprof formatters work
Gregory Szorc
profiling: make statprof the default profiler (BC)...
r30317 $ hg --profile --config profiling.statformat=byline sleep 2>../out
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 $ head -n 1 ../out
% cumulative self
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ cat ../out | statprofran
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316
Gregory Szorc
profiling: make statprof the default profiler (BC)...
r30317 $ hg --profile --config profiling.statformat=bymethod sleep 2>../out
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 $ head -n 1 ../out
% cumulative self
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ cat ../out | statprofran
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316
Gregory Szorc
profiling: make statprof the default profiler (BC)...
r30317 $ hg --profile --config profiling.statformat=hotpath sleep 2>../out
Martin von Zweigbergk
tests: make test-profile.t pass if statprof didn't collect samples...
r33611 $ cat ../out | statprofran
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316
Gregory Szorc
profiling: make statprof the default profiler (BC)...
r30317 $ hg --profile --config profiling.statformat=json sleep 2>../out
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 $ cat ../out
Yuya Nishihara
test-profile: allow negative time in JSON output (issue5542)...
r32060 \[\[-?\d+.* (re)
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316
Gregory Szorc
statprof: require input file...
r30845 statprof can be used as a standalone module
$ $PYTHON -m mercurial.statprof hotpath
must specify --file to load
[1]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417
Jun Wu
test-profile: gate chg-incompatible part with '#if chg'...
r34446 #if no-chg
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 profiler extension could be loaded before other extensions
$ cat > fooprof.py <<EOF
> from __future__ import absolute_import
> import contextlib
> @contextlib.contextmanager
> def profile(ui, fp):
> print('fooprof: start profile')
> yield
> print('fooprof: end profile')
> def extsetup(ui):
Pulkit Goyal
py3: add b'' prefixes in tests/test-profile.t...
r38086 > ui.write(b'fooprof: loaded\n')
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 > EOF
$ cat > otherextension.py <<EOF
> from __future__ import absolute_import
> def extsetup(ui):
Pulkit Goyal
py3: add b'' prefixes in tests/test-profile.t...
r38086 > ui.write(b'otherextension: loaded\n')
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 > EOF
$ hg init b
$ cd b
$ cat >> .hg/hgrc <<EOF
> [extensions]
> other = $TESTTMP/otherextension.py
> fooprof = $TESTTMP/fooprof.py
> EOF
$ hg root
otherextension: loaded
fooprof: loaded
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/b
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 $ HGPROF=fooprof hg root --profile
fooprof: loaded
fooprof: start profile
otherextension: loaded
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/b
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 fooprof: end profile
$ HGPROF=other hg root --profile 2>&1 | head -n 2
otherextension: loaded
unrecognized profiler 'other' - ignored
$ HGPROF=unknown hg root --profile 2>&1 | head -n 1
unrecognized profiler 'unknown' - ignored
$ cd ..
Jun Wu
test-profile: gate chg-incompatible part with '#if chg'...
r34446 #endif