test-profile.t
167 lines
| 4.0 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 | ||||
Martin von Zweigbergk
|
r33611 | Function to check that statprof ran | ||
$ statprofran () { | ||||
> egrep 'Sample count:|No samples recorded' > /dev/null | ||||
> } | ||||
Mads Kiilerich
|
r16898 | |||
Matt Mackall
|
r12478 | test --profile | ||
Martin von Zweigbergk
|
r33611 | $ hg st --profile 2>&1 | statprofran | ||
r32787 | ||||
Abreviated version | ||||
Martin von Zweigbergk
|
r33611 | $ hg st --prof 2>&1 | statprofran | ||
r32787 | ||||
In alias | ||||
Martin von Zweigbergk
|
r33611 | $ hg --config "alias.profst=status --profile" profst 2>&1 | statprofran | ||
r32787 | ||||
#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 | ||||
Matt Harbison
|
r40405 | > from mercurial import registrar | ||
Gregory Szorc
|
r30316 | > cmdtable = {} | ||
Yuya Nishihara
|
r32337 | > command = registrar.command(cmdtable) | ||
Pulkit Goyal
|
r38086 | > @command(b'sleep', [], b'hg sleep') | ||
Gregory Szorc
|
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
|
r30317 | $ hg --profile sleep 2>../out | ||
Martin von Zweigbergk
|
r33611 | $ cat ../out | statprofran | ||
Gregory Szorc
|
r30316 | |||
Various statprof formatters work | ||||
Augie Fackler
|
r40517 | $ hg --profile --config profiling.statformat=byline sleep 2>../out || cat ../out | ||
r46208 | $ grep -v _path_stat ../out | head -n 3 | |||
Gregory Szorc
|
r30316 | % cumulative self | ||
Pulkit Goyal
|
r40417 | time seconds seconds name | ||
Augie Fackler
|
r40673 | * sleepext.py:*:sleep (glob) | ||
Martin von Zweigbergk
|
r33611 | $ cat ../out | statprofran | ||
Gregory Szorc
|
r30316 | |||
Augie Fackler
|
r40517 | $ hg --profile --config profiling.statformat=bymethod sleep 2>../out || cat ../out | ||
Gregory Szorc
|
r30316 | $ head -n 1 ../out | ||
% cumulative self | ||||
Martin von Zweigbergk
|
r33611 | $ cat ../out | statprofran | ||
Gregory Szorc
|
r30316 | |||
Augie Fackler
|
r40517 | $ hg --profile --config profiling.statformat=hotpath sleep 2>../out || cat ../out | ||
Martin von Zweigbergk
|
r33611 | $ cat ../out | statprofran | ||
Gregory Szorc
|
r30316 | |||
Augie Fackler
|
r40517 | $ hg --profile --config profiling.statformat=json sleep 2>../out || cat ../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 | ||
Matt Harbison
|
r39743 | $ "$PYTHON" -m mercurial.statprof hotpath | ||
Gregory Szorc
|
r30845 | must specify --file to load | ||
[1] | ||||
Mads Kiilerich
|
r16913 | $ cd .. | ||
Jun Wu
|
r32417 | |||
Jun Wu
|
r34446 | #if no-chg | ||
Jun Wu
|
r32417 | profiler extension could be loaded before other extensions | ||
$ cat > fooprof.py <<EOF | ||||
> from __future__ import absolute_import | ||||
> import contextlib | ||||
Gregory Szorc
|
r40236 | > import sys | ||
Jun Wu
|
r32417 | > @contextlib.contextmanager | ||
> def profile(ui, fp): | ||||
> print('fooprof: start profile') | ||||
Gregory Szorc
|
r40236 | > sys.stdout.flush() | ||
Jun Wu
|
r32417 | > yield | ||
> print('fooprof: end profile') | ||||
Gregory Szorc
|
r40236 | > sys.stdout.flush() | ||
Jun Wu
|
r32417 | > def extsetup(ui): | ||
Pulkit Goyal
|
r38086 | > ui.write(b'fooprof: loaded\n') | ||
Jun Wu
|
r32417 | > EOF | ||
$ cat > otherextension.py <<EOF | ||||
> from __future__ import absolute_import | ||||
> def extsetup(ui): | ||||
Pulkit Goyal
|
r38086 | > ui.write(b'otherextension: loaded\n') | ||
Jun Wu
|
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
|
r35394 | $TESTTMP/b | ||
Jun Wu
|
r32417 | $ HGPROF=fooprof hg root --profile | ||
fooprof: loaded | ||||
fooprof: start profile | ||||
otherextension: loaded | ||||
Matt Harbison
|
r35394 | $TESTTMP/b | ||
Jun Wu
|
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
|
r34446 | #endif | ||