##// END OF EJS Templates
tests: finally fix up test-fuzz-targets.t...
tests: finally fix up test-fuzz-targets.t It's been failing on my workstation for a while, since I have a new enough LLVM that I had the fuzzer goo, but not so new that I actually had FuzzedDataProvider. This is a better solution all around in my opinion. I _believe_ this should let us run these tests on most systems, even those using GCC instead of clang. That said, my one attempt to test this on my macOS laptop failed miserably, and I don't feel like doing more work on this right now. Differential Revision: https://phab.mercurial-scm.org/D7566

File last commit:

r40675:43752021 merge default
r44267:19da643d default
Show More
test-profile.t
167 lines | 4.0 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
Matt Harbison
py3: fix module imports in tests, as flagged by test-check-module-imports.t...
r40405 > from mercurial import registrar
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
Augie Fackler
tests: add some helpful `|| cat` bits to test-profile.t...
r40517 $ hg --profile --config profiling.statformat=byline sleep 2>../out || cat ../out
Pulkit Goyal
test: show more profile lines in test-profile.t...
r40416 $ head -n 3 ../out
Gregory Szorc
profiling: use vendored statprof and upstream enhancements (BC)...
r30316 % cumulative self
Pulkit Goyal
statprof: update the name as the i increases (issue6003)...
r40417 time seconds seconds name
Augie Fackler
tests: allow for 100% of profiled time in sleep in test-profile.t...
r40673 * sleepext.py:*:sleep (glob)
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
Augie Fackler
tests: add some helpful `|| cat` bits to test-profile.t...
r40517 $ hg --profile --config profiling.statformat=bymethod sleep 2>../out || cat ../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
Augie Fackler
tests: add some helpful `|| cat` bits to test-profile.t...
r40517 $ hg --profile --config profiling.statformat=hotpath sleep 2>../out || cat ../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
Augie Fackler
tests: add some helpful `|| cat` bits to test-profile.t...
r40517 $ hg --profile --config profiling.statformat=json sleep 2>../out || cat ../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
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" -m mercurial.statprof hotpath
Gregory Szorc
statprof: require input file...
r30845 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
Gregory Szorc
py3: flush stdout...
r40236 > import sys
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 > @contextlib.contextmanager
> def profile(ui, fp):
> print('fooprof: start profile')
Gregory Szorc
py3: flush stdout...
r40236 > sys.stdout.flush()
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 > yield
> print('fooprof: end profile')
Gregory Szorc
py3: flush stdout...
r40236 > sys.stdout.flush()
Jun Wu
profiling: allow loading profiling extension before everything else...
r32417 > 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