Mercurial > hg
annotate tests/test-issue2137.t @ 32783:4483696dacee
profile: upgrade the "profile" context manager to a full class
So far we have been able to use a simple decorator for this. However using the
current context manager makes the scope of the profiling in dispatch
constrainted and the time frame to decide to enable profiling quite limited
(using "maybeprofile")
This is the first step toward the ability to enable the profiling from within
the profiling scope. eg::
with maybeprofiling(ui) as profiler:
...
bar.foo():
...
if options['profile']:
profiler.start()
...
fooz()
...
My target usecase is adding support for "--profile" to alias definitions with
effect. These are to be used with "profiling.output=blackbox" to gather data
about operation that get slow from time to time (eg: pull being minutes instead
of seconds from time to time).
Of course, in such case, the scope of the profiling would be smaller since
profiler would be started after running extensions 'reposetup' (and other
potentially costly logic), but these are not relevant for my target usecase
(multiple second commits, multiple tens of seconds pull).
Currently adding '--profile' to a command through alias requires to re-spin a
Mercurial binary (using "!$HG" in alias), which as a significant performance
impact, especially in context where startup performance is being worked on...
An alternative approach would be to stop using the context manager in dispatch
and move back to a try/finally setup.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 08 Jun 2017 01:38:48 +0100 |
parents | 2fc86d92c4a9 |
children | c4ccc73f9d49 |
rev | line source |
---|---|
26420
2fc86d92c4a9
urls: bulk-change BTS urls to new location
Matt Mackall <mpm@selenic.com>
parents:
17802
diff
changeset
|
1 https://bz.mercurial-scm.org/2137 |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
2 |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
3 Setup: |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
4 |
12328
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12204
diff
changeset
|
5 create a little extension that has 3 side-effects: |
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12204
diff
changeset
|
6 1) ensure changelog data is not inlined |
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12204
diff
changeset
|
7 2) make revlog to use lazyparser |
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12204
diff
changeset
|
8 3) test that repo.lookup() works |
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12204
diff
changeset
|
9 1 and 2 are preconditions for the bug; 3 is the bug. |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
10 |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
11 $ cat > commitwrapper.py <<EOF |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
12 > from mercurial import extensions, node, revlog |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
13 > |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
14 > def reposetup(ui, repo): |
17802
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
15 > class wraprepo(repo.__class__): |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
16 > def commit(self, *args, **kwargs): |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
17 > result = super(wraprepo, self).commit(*args, **kwargs) |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
18 > tip1 = node.short(repo.changelog.tip()) |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
19 > tip2 = node.short(repo.lookup(tip1)) |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
20 > assert tip1 == tip2 |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
21 > ui.write('new tip: %s\n' % tip1) |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
22 > return result |
a421459b83c0
test: use proper subclassing in `test-issue2137.t`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16913
diff
changeset
|
23 > repo.__class__ = wraprepo |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
24 > |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
25 > def extsetup(ui): |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
26 > revlog._maxinline = 8 # split out 00changelog.d early |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
27 > revlog._prereadsize = 8 # use revlog.lazyparser |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
28 > EOF |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
29 |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
30 $ cat >> $HGRCPATH <<EOF |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
31 > [extensions] |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
32 > commitwrapper = `pwd`/commitwrapper.py |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
33 > EOF |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
34 |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
35 $ hg init repo1 |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
36 $ cd repo1 |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
37 $ echo a > a |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
38 $ hg commit -A -m'add a with a long commit message to make the changelog a bit bigger' |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
39 adding a |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
40 new tip: 553596fad57b |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
41 |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
42 Test that new changesets are visible to repo.lookup(): |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
43 |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
44 $ echo a >> a |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
45 $ hg commit -m'one more commit to demonstrate the bug' |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
46 new tip: 799ae3599e0e |
10914
b7ca37b90762
revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
Greg Ward <greg-hg@gerg.ca>
parents:
diff
changeset
|
47 |
12204
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
48 $ hg tip |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
49 changeset: 1:799ae3599e0e |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
50 tag: tip |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
51 user: test |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
52 date: Thu Jan 01 00:00:00 1970 +0000 |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
53 summary: one more commit to demonstrate the bug |
c55d69c5fb77
tests: unify test-issue1438 and test-issue2137
Adrian Buehlmann <adrian@cadifra.com>
parents:
11072
diff
changeset
|
54 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12328
diff
changeset
|
55 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12328
diff
changeset
|
56 $ cd .. |