test-profile.t
163 lines
| 3.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-profile.t
Matt Mackall
|
r12478 | test --time | ||
Martin Geisler
|
r16933 | $ hg --time help -q help 2>&1 | grep time > /dev/null | ||
Matt Mackall
|
r12478 | $ hg init a | ||
$ cd a | ||||
Mads Kiilerich
|
r16898 | |||
Matt Mackall
|
r12478 | test --profile | ||
r32787 | $ hg st --profile 2>&1 | grep Sample | |||
Sample count: \d+ (re) | ||||
Abreviated version | ||||
$ hg st --prof 2>&1 | grep Sample | ||||
Sample count: \d+ (re) | ||||
In alias | ||||
$ hg --config "alias.profst=status --profile" profst 2>&1 | grep Sample | ||||
Sample count: \d+ (re) | ||||
#if lsprof | ||||
Gregory Szorc
|
r30259 | $ prof='hg --config profiling.type=ls --profile' | ||
$ $prof st 2>../out | ||||
Mads Kiilerich
|
r16898 | $ grep CallCount ../out > /dev/null || cat ../out | ||
Gregory Szorc
|
r30259 | $ $prof --config profiling.output=../out st | ||
Mads Kiilerich
|
r16898 | $ grep CallCount ../out > /dev/null || cat ../out | ||
Gregory Szorc
|
r30259 | $ $prof --config profiling.output=blackbox --config extensions.blackbox= st | ||
Durham Goode
|
r26191 | $ grep CallCount .hg/blackbox.log > /dev/null || cat .hg/blackbox.log | ||
Gregory Szorc
|
r30259 | $ $prof --config profiling.format=text st 2>../out | ||
Mads Kiilerich
|
r16898 | $ grep CallCount ../out > /dev/null || cat ../out | ||
$ echo "[profiling]" >> $HGRCPATH | ||||
$ echo "format=kcachegrind" >> $HGRCPATH | ||||
Gregory Szorc
|
r30259 | $ $prof st 2>../out | ||
Mads Kiilerich
|
r16898 | $ grep 'events: Ticks' ../out > /dev/null || cat ../out | ||
Gregory Szorc
|
r30259 | $ $prof --config profiling.output=../out st | ||
Mads Kiilerich
|
r16898 | $ grep 'events: Ticks' ../out > /dev/null || cat ../out | ||
#endif | ||||
Mads Kiilerich
|
r16913 | |||
Gregory Szorc
|
r29787 | #if lsprof serve | ||
Profiling of HTTP requests works | ||||
Gregory Szorc
|
r30259 | $ $prof --config profiling.format=text --config profiling.output=../profile.log serve -d -p $HGPORT --pid-file ../hg.pid -A ../access.log | ||
Gregory Szorc
|
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
|
r30316 | Install an extension that can sleep and guarantee a profiler has time to run | ||
$ cat >> sleepext.py << EOF | ||||
> import time | ||||
Yuya Nishihara
|
r32337 | > from mercurial import registrar, commands | ||
Gregory Szorc
|
r30316 | > cmdtable = {} | ||
Yuya Nishihara
|
r32337 | > command = registrar.command(cmdtable) | ||
Gregory Szorc
|
r30316 | > @command('sleep', [], 'hg sleep') | ||
> def sleep(ui, *args, **kwargs): | ||||
> time.sleep(0.1) | ||||
> EOF | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [extensions] | ||||
> sleep = `pwd`/sleepext.py | ||||
> EOF | ||||
statistical profiler works | ||||
Gregory Szorc
|
r30317 | $ hg --profile sleep 2>../out | ||
Gregory Szorc
|
r30316 | $ grep Sample ../out | ||
Sample count: \d+ (re) | ||||
Various statprof formatters work | ||||
Gregory Szorc
|
r30317 | $ hg --profile --config profiling.statformat=byline sleep 2>../out | ||
Gregory Szorc
|
r30316 | $ head -n 1 ../out | ||
% cumulative self | ||||
$ grep Sample ../out | ||||
Sample count: \d+ (re) | ||||
Gregory Szorc
|
r30317 | $ hg --profile --config profiling.statformat=bymethod sleep 2>../out | ||
Gregory Szorc
|
r30316 | $ head -n 1 ../out | ||
% cumulative self | ||||
$ grep Sample ../out | ||||
Sample count: \d+ (re) | ||||
Gregory Szorc
|
r30317 | $ hg --profile --config profiling.statformat=hotpath sleep 2>../out | ||
Gregory Szorc
|
r30316 | $ grep Sample ../out | ||
Sample count: \d+ (re) | ||||
Gregory Szorc
|
r30317 | $ hg --profile --config profiling.statformat=json sleep 2>../out | ||
Gregory Szorc
|
r30316 | $ cat ../out | ||
Yuya Nishihara
|
r32060 | \[\[-?\d+.* (re) | ||
Gregory Szorc
|
r30316 | |||
Gregory Szorc
|
r30845 | statprof can be used as a standalone module | ||
$ $PYTHON -m mercurial.statprof hotpath | ||||
must specify --file to load | ||||
[1] | ||||
Mads Kiilerich
|
r16913 | $ cd .. | ||
Jun Wu
|
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): | ||||
> ui.write('fooprof: loaded\n') | ||||
> EOF | ||||
$ cat > otherextension.py <<EOF | ||||
> from __future__ import absolute_import | ||||
> def extsetup(ui): | ||||
> ui.write('otherextension: loaded\n') | ||||
> 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 | ||||
$TESTTMP/b (glob) | ||||
$ HGPROF=fooprof hg root --profile | ||||
fooprof: loaded | ||||
fooprof: start profile | ||||
otherextension: loaded | ||||
$TESTTMP/b (glob) | ||||
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 .. | ||||