Mercurial > hg
annotate tests/test-profile.t @ 51925:3a90a6fd710d
dirstate: subclass the new dirstate Protocol class
Behold the chaos that ensues. We'll use the generated *.pyi files to apply type
annotations to the interface, and see how much agrees with the documentation.
Since the CamelCase name was used to try to work around pytype issues with zope
interfaces and is a new innovation this cycle (see c1d7ac70980b), drop the
CamelCase name. I think the Protocol classes *should* be CamelCase, but that
can be done later in one pass. For now, the CamelCase alias is extra noise in
the *.pyi files.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 26 Sep 2024 18:52:46 -0400 |
parents | 102770bbf270 |
children |
rev | line source |
---|---|
12478 | 1 test --time |
5099
105d4cf7ec24
Test --time, --profile and --lsprof
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
2 |
16933
30143c3dd102
dispatch: lowercase --time message
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
3 $ hg --time help -q help 2>&1 | grep time > /dev/null |
12478 | 4 $ hg init a |
5 $ cd a | |
8022
4f3fdfaa3874
profiling: Adding profiling.output config variable
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8021
diff
changeset
|
6 |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
7 Function to check that statprof ran |
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
8 $ statprofran () { |
50725
7e5be4a7cda7
tests: use grep -E instead of obsolescent egrep
Mads Kiilerich <mads@kiilerich.com>
parents:
48876
diff
changeset
|
9 > grep -E 'Sample count:|No samples recorded' > /dev/null |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
10 > } |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
11 |
12478 | 12 test --profile |
8022
4f3fdfaa3874
profiling: Adding profiling.output config variable
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8021
diff
changeset
|
13 |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
14 $ hg st --profile 2>&1 | statprofran |
32787
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
15 |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
16 Abreviated version |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
17 |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
18 $ hg st --prof 2>&1 | statprofran |
32787
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
19 |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
20 In alias |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
21 |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
22 $ hg --config "alias.profst=status --profile" profst 2>&1 | statprofran |
32787
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
23 |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
24 #if lsprof |
545f69cd6042
profile: support --profile in alias and abbreviated version (--prof)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32417
diff
changeset
|
25 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
26 $ prof () { |
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
27 > hg --config profiling.type=ls --profile $@ |
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
28 > } |
30259
d06c049695e6
tests: explicitly use ls profiler
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29787
diff
changeset
|
29 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
30 $ prof st 2>../out |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
31 $ grep CallCount ../out > /dev/null || cat ../out |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
32 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
33 $ prof --config profiling.output=../out st |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
34 $ grep CallCount ../out > /dev/null || cat ../out |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
35 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
36 $ prof --config profiling.output=blackbox --config extensions.blackbox= st |
26191
39a0b11158d8
profiling: allow logging profile to the blackbox
Durham Goode <durham@fb.com>
parents:
18765
diff
changeset
|
37 $ grep CallCount .hg/blackbox.log > /dev/null || cat .hg/blackbox.log |
39a0b11158d8
profiling: allow logging profile to the blackbox
Durham Goode <durham@fb.com>
parents:
18765
diff
changeset
|
38 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
39 $ prof --config profiling.format=text st 2>../out |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
40 $ grep CallCount ../out > /dev/null || cat ../out |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
41 |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
42 $ echo "[profiling]" >> $HGRCPATH |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
43 $ echo "format=kcachegrind" >> $HGRCPATH |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
44 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
45 $ prof st 2>../out |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
46 $ grep 'events: Ticks' ../out > /dev/null || cat ../out |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
47 |
47562
17fde6763286
windows: use shell function instead of variable substitution
Raphaël Gomès <rgomes@octobus.net>
parents:
46018
diff
changeset
|
48 $ prof --config profiling.output=../out st |
16898
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
49 $ grep 'events: Ticks' ../out > /dev/null || cat ../out |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
50 |
bb91c602d4ad
tests: change odd uses of 'if hghave' to #if
Mads Kiilerich <mads@kiilerich.com>
parents:
12478
diff
changeset
|
51 #endif |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16898
diff
changeset
|
52 |
51841
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
53 #if serve |
29787
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
54 |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
55 Profiling of HTTP requests works |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
56 |
51841
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
57 $ stats_prof () { |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
58 > hg --config profiling.type=stat --profile $@ |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
59 > } |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
60 |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
61 $ stats_prof \ |
51839
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
62 > --config profiling.format=text \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
63 > --config profiling.output=../profile.log \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
64 > serve -d \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
65 > -p $HGPORT \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
66 > --pid-file ../hg.pid \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
67 > -A ../access.log \ |
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
68 > --errorlog ../error.log |
29787
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
69 $ cat ../hg.pid >> $DAEMON_PIDS |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
70 $ hg -q clone -U http://localhost:$HGPORT ../clone |
51839
17e2d5c46716
test: display server error log in test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50725
diff
changeset
|
71 $ cat ../error.log |
29787
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
72 |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
73 A single profile is logged because file logging doesn't append |
51841
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
74 $ grep 'Sample count:' ../profile.log | wc -l |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
75 \s*1 (re) |
102770bbf270
profiling: use "stat" profiler to profile individual request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51839
diff
changeset
|
76 $ grep 'Total time:' ../profile.log | wc -l |
29787
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
77 \s*1 (re) |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
78 |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
79 #endif |
80df04266a16
hgweb: profile HTTP requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26191
diff
changeset
|
80 |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
81 Install an extension that can sleep and guarantee a profiler has time to run |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
82 |
46018
8b0a3ff5ed12
statprof: separate functions and "line", assume 4 digit line numbers
Kyle Lippincott <spectral@google.com>
parents:
46017
diff
changeset
|
83 $ cat >> sleepext_with_a_long_filename.py << EOF |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
84 > import time |
40369
ef6cab7930b3
py3: fix module imports in tests, as flagged by test-check-module-imports.t
Matt Harbison <matt_harbison@yahoo.com>
parents:
40200
diff
changeset
|
85 > from mercurial import registrar |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
86 > cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32060
diff
changeset
|
87 > command = registrar.command(cmdtable) |
38075
fd8eedcc3fd2
py3: add b'' prefixes in tests/test-profile.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35393
diff
changeset
|
88 > @command(b'sleep', [], b'hg sleep') |
46018
8b0a3ff5ed12
statprof: separate functions and "line", assume 4 digit line numbers
Kyle Lippincott <spectral@google.com>
parents:
46017
diff
changeset
|
89 > def sleep_for_at_least_one_stat_cycle(ui, *args, **kwargs): |
47563
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
90 > t = time.time() # don't use time.sleep because we need CPU time |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
91 > while time.time() - t < 0.5: |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
92 > pass |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
93 > EOF |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
94 |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
95 $ cat >> $HGRCPATH << EOF |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
96 > [extensions] |
46018
8b0a3ff5ed12
statprof: separate functions and "line", assume 4 digit line numbers
Kyle Lippincott <spectral@google.com>
parents:
46017
diff
changeset
|
97 > sleep = `pwd`/sleepext_with_a_long_filename.py |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
98 > EOF |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
99 |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
100 statistical profiler works |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
101 |
30317
3fd53cc1aad8
profiling: make statprof the default profiler (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30316
diff
changeset
|
102 $ hg --profile sleep 2>../out |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
103 $ cat ../out | statprofran |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
104 |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
105 Various statprof formatters work |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
106 |
40483
4e6ffcb5b9fc
tests: add some helpful `|| cat` bits to test-profile.t
Augie Fackler <augie@google.com>
parents:
40381
diff
changeset
|
107 $ hg --profile --config profiling.statformat=byline sleep 2>../out || cat ../out |
45631
ede4a1bf14bd
test: try to unflaky test-profile.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
40639
diff
changeset
|
108 $ grep -v _path_stat ../out | head -n 3 |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
109 % cumulative self |
40381
4613f9274fc0
statprof: update the name as the i increases (issue6003)
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
40380
diff
changeset
|
110 time seconds seconds name |
46018
8b0a3ff5ed12
statprof: separate functions and "line", assume 4 digit line numbers
Kyle Lippincott <spectral@google.com>
parents:
46017
diff
changeset
|
111 * sleepext_with_a_long_filename.py:*:sleep_for_at_least_one_stat_cycle (glob) |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
112 $ cat ../out | statprofran |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
113 |
40483
4e6ffcb5b9fc
tests: add some helpful `|| cat` bits to test-profile.t
Augie Fackler <augie@google.com>
parents:
40381
diff
changeset
|
114 $ hg --profile --config profiling.statformat=bymethod sleep 2>../out || cat ../out |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
115 $ head -n 1 ../out |
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
116 % cumulative self |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
117 $ cat ../out | statprofran |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
118 |
47563
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
119 Windows real time tracking is broken, only use CPU |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
120 |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
121 #if no-windows |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
122 $ hg --profile --config profiling.time-track=real --config profiling.statformat=hotpath sleep 2>../out || cat ../out |
33609
a72b2db1a6a9
tests: make test-profile.t pass if statprof didn't collect samples
Martin von Zweigbergk <martinvonz@google.com>
parents:
33097
diff
changeset
|
123 $ cat ../out | statprofran |
47563
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
124 $ grep sleepext_with_a_long_filename.py ../out | head -n 1 |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
125 .* [0-9.]+% [0-9.]+s sleepext_with_a_long_filename.py:\s*sleep_for_at_least_one_stat_cycle, line \d+:\s+(while|pass).* (re) |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
126 #endif |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
127 |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
128 $ hg --profile --config profiling.time-track=cpu --config profiling.statformat=hotpath sleep 2>../out || cat ../out |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
129 $ cat ../out | statprofran |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
130 $ grep sleepext_with_a_long_filename.py ../out | head -n 1 |
dc3f7aa15423
windows: use cpu-intensive task instead of real time in test
Raphaël Gomès <rgomes@octobus.net>
parents:
47562
diff
changeset
|
131 .* [0-9.]+% [0-9.]+s sleepext_with_a_long_filename.py:\s*sleep_for_at_least_one_stat_cycle, line \d+:\s+(while|pass).* (re) |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
132 |
40483
4e6ffcb5b9fc
tests: add some helpful `|| cat` bits to test-profile.t
Augie Fackler <augie@google.com>
parents:
40381
diff
changeset
|
133 $ hg --profile --config profiling.statformat=json sleep 2>../out || cat ../out |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
134 $ cat ../out |
32060
49145a2b2fb0
test-profile: allow negative time in JSON output (issue5542)
Yuya Nishihara <yuya@tcha.org>
parents:
30845
diff
changeset
|
135 \[\[-?\d+.* (re) |
30316
faf1b8923da2
profiling: use vendored statprof and upstream enhancements (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30259
diff
changeset
|
136 |
30845
262c2be8ea5a
statprof: require input file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30317
diff
changeset
|
137 statprof can be used as a standalone module |
262c2be8ea5a
statprof: require input file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30317
diff
changeset
|
138 |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
38075
diff
changeset
|
139 $ "$PYTHON" -m mercurial.statprof hotpath |
30845
262c2be8ea5a
statprof: require input file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30317
diff
changeset
|
140 must specify --file to load |
262c2be8ea5a
statprof: require input file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30317
diff
changeset
|
141 [1] |
262c2be8ea5a
statprof: require input file
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30317
diff
changeset
|
142 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16898
diff
changeset
|
143 $ cd .. |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
144 |
34445
5b19f0442043
test-profile: gate chg-incompatible part with '#if chg'
Jun Wu <quark@fb.com>
parents:
33609
diff
changeset
|
145 #if no-chg |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
146 profiler extension could be loaded before other extensions |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
147 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
148 $ cat > fooprof.py <<EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
149 > import contextlib |
40200
9cc411952ab9
py3: flush stdout
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39707
diff
changeset
|
150 > import sys |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
151 > @contextlib.contextmanager |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
152 > def profile(ui, fp): |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
153 > print('fooprof: start profile') |
40200
9cc411952ab9
py3: flush stdout
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39707
diff
changeset
|
154 > sys.stdout.flush() |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
155 > yield |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
156 > print('fooprof: end profile') |
40200
9cc411952ab9
py3: flush stdout
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39707
diff
changeset
|
157 > sys.stdout.flush() |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
158 > def extsetup(ui): |
38075
fd8eedcc3fd2
py3: add b'' prefixes in tests/test-profile.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35393
diff
changeset
|
159 > ui.write(b'fooprof: loaded\n') |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
160 > EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
161 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
162 $ cat > otherextension.py <<EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
163 > def extsetup(ui): |
38075
fd8eedcc3fd2
py3: add b'' prefixes in tests/test-profile.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35393
diff
changeset
|
164 > ui.write(b'otherextension: loaded\n') |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
165 > EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
166 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
167 $ hg init b |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
168 $ cd b |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
169 $ cat >> .hg/hgrc <<EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
170 > [extensions] |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
171 > other = $TESTTMP/otherextension.py |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
172 > fooprof = $TESTTMP/fooprof.py |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
173 > EOF |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
174 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
175 $ hg root |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
176 otherextension: loaded |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
177 fooprof: loaded |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34445
diff
changeset
|
178 $TESTTMP/b |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
179 $ HGPROF=fooprof hg root --profile |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
180 fooprof: loaded |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
181 fooprof: start profile |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
182 otherextension: loaded |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34445
diff
changeset
|
183 $TESTTMP/b |
32417
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
184 fooprof: end profile |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
185 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
186 $ HGPROF=other hg root --profile 2>&1 | head -n 2 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
187 otherextension: loaded |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
188 unrecognized profiler 'other' - ignored |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
189 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
190 $ HGPROF=unknown hg root --profile 2>&1 | head -n 1 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
191 unrecognized profiler 'unknown' - ignored |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
192 |
f40dc6f7c12f
profiling: allow loading profiling extension before everything else
Jun Wu <quark@fb.com>
parents:
32337
diff
changeset
|
193 $ cd .. |
34445
5b19f0442043
test-profile: gate chg-incompatible part with '#if chg'
Jun Wu <quark@fb.com>
parents:
33609
diff
changeset
|
194 #endif |