Mercurial > hg
annotate tests/test-flagprocessor.t @ 51681:522b4d729e89
mmap: populate the mapping by default
Without pre-population, accessing all data through a mmap can result in many
pagefault, reducing performance significantly. If the mmap is prepopulated, the
performance can no longer get slower than a full read.
(See benchmark number below)
In some cases were very few data is read, prepopulating can be overkill and
slower than populating on access (through page fault). So that behavior can be
controlled when the caller can pre-determine the best behavior.
(See benchmark number below)
In addition, testing with populating in a secondary thread yield great result
combining the best of each approach. This might be implemented in later
changesets.
In all cases, using mmap has a great effect on memory usage when many processes
run in parallel on the same machine.
### Benchmarks
# What did I run
A couple of month back I ran a large benchmark campaign to assess the impact of
various approach for using mmap with the revlog (and other files), it
highlighted a few benchmarks that capture the impact of the changes well. So to
validate this change I checked the following:
- log command displaying various revisions
(read the changelog index)
- log command displaying the patch of listed revisions
(read the changelog index, the manifest index and a few files indexes)
- unbundling a few revisions
(read and write changelog, manifest and few files indexes, and walk the graph
to update some cache)
- pushing a few revisions
(read and write changelog, manifest and few files indexes, walk the graph to
update some cache, performs various accesses locally and remotely during
discovery)
Benchmarks were run using the default module policy (c+py) and the rust one. No
significant difference were found between the two implementation, so we will
present result using the default policy (unless otherwise specified).
I ran them on a few repositories :
- mercurial: a "public changeset only" copy of mercurial from 2018-08-01 using
zstd compression and sparse-revlog
- pypy: a copy of pypy from 2018-08-01 using zstd compression and sparse-revlog
- netbeans: a copy of netbeans from 2018-08-01 using zstd compression and
sparse-revlog
- mozilla-try: a copy of mozilla-try from 2019-02-18 using zstd compression and
sparse-revlog
- mozilla-try persistent-nodemap: Same as the above but with a persistent
nodemap. Used for the log --patch benchmark only
# Results
For the smaller repositories (mercurial, pypy), the impact of mmap is almost
imperceptible, other cost dominating the operation. The impact of prepopulating
is undiscernible in the benchmark we ran.
For larger repositories the benchmark support explanation given above:
On netbeans, the log can be about 1% faster without repopulation (for a
difference < 100ms) but unbundle becomes a bit slower, even when small.
### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog
# benchmark.name = hg.command.unbundle
# benchmark.variants.issue6528 = disabled
# benchmark.variants.reuse-external-delta-parent = yes
# benchmark.variants.revs = any-1-extra-rev
# benchmark.variants.source = unbundle
# benchmark.variants.verbosity = quiet
with-populate: 0.240157
no-populate: 0.265087 (+10.38%, +0.02)
# benchmark.variants.revs = any-100-extra-rev
with-populate: 1.459518
no-populate: 1.481290 (+1.49%, +0.02)
## benchmark.name = hg.command.push
# benchmark.variants.explicit-rev = none
# benchmark.variants.issue6528 = disabled
# benchmark.variants.protocol = ssh
# benchmark.variants.reuse-external-delta-parent = yes
# benchmark.variants.revs = any-1-extra-rev
with-populate: 0.771919
no-populate: 0.792025 (+2.60%, +0.02)
# benchmark.variants.revs = any-100-extra-rev
with-populate: 1.459518
no-populate: 1.481290 (+1.49%, +0.02)
For mozilla-try, the "slow down" from pre-populate for small `hg log` is more
visible, but still small in absolute time. (using rust value for the persistent
nodemap value to be relevant).
### data-env-vars.name = mozilla-try-2019-02-18-ds2-pnm
# benchmark.name = hg.command.log
# bin-env-vars.hg.flavor = rust
# benchmark.variants.patch = yes
# benchmark.variants.limit-rev = 1
with-populate: 0.237813
no-populate: 0.229452 (-3.52%, -0.01)
# benchmark.variants.limit-rev = 10
# benchmark.variants.patch = yes
with-populate: 1.213578
no-populate: 1.205189
### data-env-vars.name = mozilla-try-2019-02-18-zstd-sparse-revlog
# benchmark.variants.limit-rev = 1000
# benchmark.variants.patch = no
# benchmark.variants.rev = tip
with-populate: 0.198607
no-populate: 0.195038 (-1.80%, -0.00)
However pre-populating provide a significant boost on more complex operations
like unbundle or push:
### data-env-vars.name = mozilla-try-2019-02-18-zstd-sparse-revlog
# benchmark.name = hg.command.push
# benchmark.variants.explicit-rev = none
# benchmark.variants.issue6528 = disabled
# benchmark.variants.protocol = ssh
# benchmark.variants.reuse-external-delta-parent = yes
# benchmark.variants.revs = any-1-extra-rev
with-populate: 4.798632
no-populate: 4.953295 (+3.22%, +0.15)
# benchmark.variants.revs = any-100-extra-rev
with-populate: 4.903618
no-populate: 5.014963 (+2.27%, +0.11)
## benchmark.name = hg.command.unbundle
# benchmark.variants.revs = any-1-extra-rev
with-populate: 1.423411
no-populate: 1.585365 (+11.38%, +0.16)
# benchmark.variants.revs = any-100-extra-rev
with-populate: 1.537909
no-populate: 1.688489 (+9.79%, +0.15)
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 11 Apr 2024 00:02:07 +0200 |
parents | 49b00a04028f |
children | 05bb54a3ef26 |
rev | line source |
---|---|
51237
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
1 # Rust index does not support creating new flags dynamically |
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
2 |
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
3 #if no-rust |
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
4 |
30745 | 5 # Create server |
6 $ hg init server | |
7 $ cd server | |
8 $ cat >> .hg/hgrc << EOF | |
9 > [extensions] | |
10 > extension=$TESTDIR/flagprocessorext.py | |
11 > EOF | |
12 $ cd ../ | |
13 | |
14 # Clone server and enable extensions | |
15 $ hg clone -q server client | |
16 $ cd client | |
17 $ cat >> .hg/hgrc << EOF | |
18 > [extensions] | |
19 > extension=$TESTDIR/flagprocessorext.py | |
20 > EOF | |
21 | |
22 # Commit file that will trigger the noop extension | |
23 $ echo '[NOOP]' > noop | |
24 $ hg commit -Aqm "noop" | |
25 | |
26 # Commit file that will trigger the base64 extension | |
27 $ echo '[BASE64]' > base64 | |
28 $ hg commit -Aqm 'base64' | |
29 | |
30 # Commit file that will trigger the gzip extension | |
31 $ echo '[GZIP]' > gzip | |
32 $ hg commit -Aqm 'gzip' | |
33 | |
34 # Commit file that will trigger noop and base64 | |
35 $ echo '[NOOP][BASE64]' > noop-base64 | |
36 $ hg commit -Aqm 'noop+base64' | |
37 | |
38 # Commit file that will trigger noop and gzip | |
39 $ echo '[NOOP][GZIP]' > noop-gzip | |
40 $ hg commit -Aqm 'noop+gzip' | |
41 | |
42 # Commit file that will trigger base64 and gzip | |
43 $ echo '[BASE64][GZIP]' > base64-gzip | |
44 $ hg commit -Aqm 'base64+gzip' | |
45 | |
46 # Commit file that will trigger base64, gzip and noop | |
47 $ echo '[BASE64][GZIP][NOOP]' > base64-gzip-noop | |
48 $ hg commit -Aqm 'base64+gzip+noop' | |
49 | |
50 # TEST: ensure the revision data is consistent | |
51 $ hg cat noop | |
52 [NOOP] | |
53 $ hg debugdata noop 0 | |
54 [NOOP] | |
55 | |
56 $ hg cat -r . base64 | |
57 [BASE64] | |
58 $ hg debugdata base64 0 | |
59 W0JBU0U2NF0K (no-eol) | |
60 | |
61 $ hg cat -r . gzip | |
62 [GZIP] | |
63 $ hg debugdata gzip 0 | |
64 x\x9c\x8bv\x8f\xf2\x0c\x88\xe5\x02\x00\x08\xc8\x01\xfd (no-eol) (esc) | |
65 | |
66 $ hg cat -r . noop-base64 | |
67 [NOOP][BASE64] | |
68 $ hg debugdata noop-base64 0 | |
69 W05PT1BdW0JBU0U2NF0K (no-eol) | |
70 | |
71 $ hg cat -r . noop-gzip | |
72 [NOOP][GZIP] | |
73 $ hg debugdata noop-gzip 0 | |
74 x\x9c\x8b\xf6\xf3\xf7\x0f\x88\x8dv\x8f\xf2\x0c\x88\xe5\x02\x00\x1dH\x03\xf1 (no-eol) (esc) | |
75 | |
76 $ hg cat -r . base64-gzip | |
77 [BASE64][GZIP] | |
78 $ hg debugdata base64-gzip 0 | |
79 eJyLdnIMdjUziY12j/IMiOUCACLBBDo= (no-eol) | |
80 | |
81 $ hg cat -r . base64-gzip-noop | |
82 [BASE64][GZIP][NOOP] | |
83 $ hg debugdata base64-gzip-noop 0 | |
84 eJyLdnIMdjUziY12j/IMiI328/cPiOUCAESjBi4= (no-eol) | |
85 | |
86 # Push to the server | |
87 $ hg push | |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34845
diff
changeset
|
88 pushing to $TESTTMP/server |
30745 | 89 searching for changes |
90 adding changesets | |
91 adding manifests | |
92 adding file changes | |
93 added 7 changesets with 7 changes to 7 files | |
94 | |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
95 Ensure the data got to the server OK |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
96 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
97 $ cd ../server |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
98 $ hg cat -r 6e48f4215d24 noop |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
99 [NOOP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
100 $ hg debugdata noop 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
101 [NOOP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
102 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
103 $ hg cat -r 6e48f4215d24 base64 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
104 [BASE64] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
105 $ hg debugdata base64 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
106 W0JBU0U2NF0K (no-eol) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
107 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
108 $ hg cat -r 6e48f4215d24 gzip |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
109 [GZIP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
110 $ hg debugdata gzip 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
111 x\x9c\x8bv\x8f\xf2\x0c\x88\xe5\x02\x00\x08\xc8\x01\xfd (no-eol) (esc) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
112 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
113 $ hg cat -r 6e48f4215d24 noop-base64 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
114 [NOOP][BASE64] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
115 $ hg debugdata noop-base64 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
116 W05PT1BdW0JBU0U2NF0K (no-eol) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
117 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
118 $ hg cat -r 6e48f4215d24 noop-gzip |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
119 [NOOP][GZIP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
120 $ hg debugdata noop-gzip 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
121 x\x9c\x8b\xf6\xf3\xf7\x0f\x88\x8dv\x8f\xf2\x0c\x88\xe5\x02\x00\x1dH\x03\xf1 (no-eol) (esc) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
122 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
123 $ hg cat -r 6e48f4215d24 base64-gzip |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
124 [BASE64][GZIP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
125 $ hg debugdata base64-gzip 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
126 eJyLdnIMdjUziY12j/IMiOUCACLBBDo= (no-eol) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
127 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
128 $ hg cat -r 6e48f4215d24 base64-gzip-noop |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
129 [BASE64][GZIP][NOOP] |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
130 $ hg debugdata base64-gzip-noop 0 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
131 eJyLdnIMdjUziY12j/IMiI328/cPiOUCAESjBi4= (no-eol) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
132 |
30745 | 133 # Initialize new client (not cloning) and setup extension |
134 $ cd .. | |
135 $ hg init client2 | |
136 $ cd client2 | |
137 $ cat >> .hg/hgrc << EOF | |
138 > [paths] | |
139 > default = $TESTTMP/server | |
140 > [extensions] | |
141 > extension=$TESTDIR/flagprocessorext.py | |
142 > EOF | |
143 | |
144 # Pull from server and update to latest revision | |
145 $ hg pull default | |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
34845
diff
changeset
|
146 pulling from $TESTTMP/server |
30745 | 147 requesting all changes |
148 adding changesets | |
149 adding manifests | |
150 adding file changes | |
151 added 7 changesets with 7 changes to 7 files | |
34661
eb586ed5d8ce
transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
33617
diff
changeset
|
152 new changesets 07b1b9442c5b:6e48f4215d24 |
30745 | 153 (run 'hg update' to get a working copy) |
154 $ hg update | |
155 7 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
156 | |
157 # TEST: ensure the revision data is consistent | |
158 $ hg cat noop | |
159 [NOOP] | |
160 $ hg debugdata noop 0 | |
161 [NOOP] | |
162 | |
163 $ hg cat -r . base64 | |
164 [BASE64] | |
165 $ hg debugdata base64 0 | |
166 W0JBU0U2NF0K (no-eol) | |
167 | |
168 $ hg cat -r . gzip | |
169 [GZIP] | |
170 $ hg debugdata gzip 0 | |
171 x\x9c\x8bv\x8f\xf2\x0c\x88\xe5\x02\x00\x08\xc8\x01\xfd (no-eol) (esc) | |
172 | |
173 $ hg cat -r . noop-base64 | |
174 [NOOP][BASE64] | |
175 $ hg debugdata noop-base64 0 | |
176 W05PT1BdW0JBU0U2NF0K (no-eol) | |
177 | |
178 $ hg cat -r . noop-gzip | |
179 [NOOP][GZIP] | |
180 $ hg debugdata noop-gzip 0 | |
181 x\x9c\x8b\xf6\xf3\xf7\x0f\x88\x8dv\x8f\xf2\x0c\x88\xe5\x02\x00\x1dH\x03\xf1 (no-eol) (esc) | |
182 | |
183 $ hg cat -r . base64-gzip | |
184 [BASE64][GZIP] | |
185 $ hg debugdata base64-gzip 0 | |
186 eJyLdnIMdjUziY12j/IMiOUCACLBBDo= (no-eol) | |
187 | |
188 $ hg cat -r . base64-gzip-noop | |
189 [BASE64][GZIP][NOOP] | |
190 $ hg debugdata base64-gzip-noop 0 | |
191 eJyLdnIMdjUziY12j/IMiI328/cPiOUCAESjBi4= (no-eol) | |
192 | |
193 # TEST: ensure a missing processor is handled | |
194 $ echo '[FAIL][BASE64][GZIP][NOOP]' > fail-base64-gzip-noop | |
195 $ hg commit -Aqm 'fail+base64+gzip+noop' | |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
44120
diff
changeset
|
196 abort: missing processor for flag '0x1' |
46116
17a695357270
errors: use detailed exit code 50 for StorageError
Martin von Zweigbergk <martinvonz@google.com>
parents:
45958
diff
changeset
|
197 [50] |
33614
41081364addb
tests: clarify that duplicate flag processors is not an error
Martin von Zweigbergk <martinvonz@google.com>
parents:
32724
diff
changeset
|
198 $ rm fail-base64-gzip-noop |
30745 | 199 |
200 # TEST: ensure we cannot register several flag processors on the same flag | |
201 $ cat >> .hg/hgrc << EOF | |
202 > [extensions] | |
203 > extension=$TESTDIR/flagprocessorext.py | |
204 > duplicate=$TESTDIR/flagprocessorext.py | |
205 > EOF | |
33615
c6146dd10072
tests: fix test-flagprocessor.t flakiness
Martin von Zweigbergk <martinvonz@google.com>
parents:
33614
diff
changeset
|
206 $ hg debugrebuilddirstate |
34845
78d9a7b7cdb6
extensions: always include traceback when extension setup fails
Martin von Zweigbergk <martinvonz@google.com>
parents:
34661
diff
changeset
|
207 Traceback (most recent call last): |
47842
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
208 File "*/mercurial/extensions.py", line *, in _runextsetup (glob) (no-pyoxidizer !) |
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
209 File "mercurial.extensions", line *, in _runextsetup (glob) (pyoxidizer !) |
34845
78d9a7b7cdb6
extensions: always include traceback when extension setup fails
Martin von Zweigbergk <martinvonz@google.com>
parents:
34661
diff
changeset
|
210 extsetup(ui) |
78d9a7b7cdb6
extensions: always include traceback when extension setup fails
Martin von Zweigbergk <martinvonz@google.com>
parents:
34661
diff
changeset
|
211 File "*/tests/flagprocessorext.py", line *, in extsetup (glob) |
44120
35cd52c4a5cc
py3: conditionalize test-flagprocessor.t on Python 3.8
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43402
diff
changeset
|
212 flagutil.addflagprocessor( (py38 !) |
45958
456c617c8285
test: fix some expect output in a traceback
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45906
diff
changeset
|
213 validatehash, (no-py38 !) |
47842
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
214 File "*/mercurial/revlogutils/flagutil.py", line *, in addflagprocessor (glob) (no-pyoxidizer !) |
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
215 File "mercurial.revlogutils.flagutil", line *, in addflagprocessor (glob) (pyoxidizer !) |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42731
diff
changeset
|
216 insertflagprocessor(flag, processor, flagprocessors) |
47842
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
217 File "*/mercurial/revlogutils/flagutil.py", line *, in insertflagprocessor (glob) (no-pyoxidizer !) |
1cb01c71ba32
pyoxidized: adapt output of test-flagprocessor.t
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46116
diff
changeset
|
218 File "mercurial.revlogutils.flagutil", line *, in insertflagprocessor (glob) (pyoxidizer !) |
34845
78d9a7b7cdb6
extensions: always include traceback when extension setup fails
Martin von Zweigbergk <martinvonz@google.com>
parents:
34661
diff
changeset
|
219 raise error.Abort(msg) |
49876
950c39918bd2
tests: drop `(py3 !)` output matching predicates
Matt Harbison <matt_harbison@yahoo.com>
parents:
48874
diff
changeset
|
220 mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
32724
ea1c2eb7abd3
extensions: catch uisetup and extsetup failures and don't let them break hg
Augie Fackler <augie@google.com>
parents:
31856
diff
changeset
|
221 *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. |
50725
7e5be4a7cda7
tests: use grep -E instead of obsolescent egrep
Mads Kiilerich <mads@kiilerich.com>
parents:
49876
diff
changeset
|
222 $ hg st 2>&1 | grep -E 'cannot register multiple processors|flagprocessorext' |
34845
78d9a7b7cdb6
extensions: always include traceback when extension setup fails
Martin von Zweigbergk <martinvonz@google.com>
parents:
34661
diff
changeset
|
223 File "*/tests/flagprocessorext.py", line *, in extsetup (glob) |
49876
950c39918bd2
tests: drop `(py3 !)` output matching predicates
Matt Harbison <matt_harbison@yahoo.com>
parents:
48874
diff
changeset
|
224 mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
33615
c6146dd10072
tests: fix test-flagprocessor.t flakiness
Martin von Zweigbergk <martinvonz@google.com>
parents:
33614
diff
changeset
|
225 *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. |
c6146dd10072
tests: fix test-flagprocessor.t flakiness
Martin von Zweigbergk <martinvonz@google.com>
parents:
33614
diff
changeset
|
226 File "*/tests/flagprocessorext.py", line *, in b64decode (glob) |
31833
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
227 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
228 $ cd .. |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
229 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
230 # TEST: bundle repo |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
231 $ hg init bundletest |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
232 $ cd bundletest |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
233 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
234 $ cat >> .hg/hgrc << EOF |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
235 > [extensions] |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
236 > flagprocessor=$TESTDIR/flagprocessorext.py |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
237 > EOF |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
238 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
239 $ for i in 0 single two three 4; do |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
240 > echo '[BASE64]a-bit-longer-'$i > base64 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
241 > hg commit -m base64-$i -A base64 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
242 > done |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
243 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
244 $ hg update 2 -q |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
245 $ echo '[BASE64]a-bit-longer-branching' > base64 |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
246 $ hg commit -q -m branching |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
247 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
248 #if repobundlerepo |
31833
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
249 $ hg bundle --base 1 bundle.hg |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
250 4 changesets found |
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
251 $ hg --config extensions.strip= strip -r 2 --no-backup --force -q |
31838
c39e7c4b535c
test-flagprocessor: remove unnecessary greps
Jun Wu <quark@fb.com>
parents:
31837
diff
changeset
|
252 $ hg -R bundle.hg log --stat -T '{rev} {desc}\n' base64 |
31836
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
253 5 branching |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
254 base64 | 2 +- |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
255 1 files changed, 1 insertions(+), 1 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
256 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
257 4 base64-4 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
258 base64 | 2 +- |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
259 1 files changed, 1 insertions(+), 1 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
260 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
261 3 base64-three |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
262 base64 | 2 +- |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
263 1 files changed, 1 insertions(+), 1 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
264 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
265 2 base64-two |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
266 base64 | 2 +- |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
267 1 files changed, 1 insertions(+), 1 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
268 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
269 1 base64-single |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
270 base64 | 2 +- |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
271 1 files changed, 1 insertions(+), 1 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
272 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
273 0 base64-0 |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
274 base64 | 1 + |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
275 1 files changed, 1 insertions(+), 0 deletions(-) |
4598e8f43e20
bundlerepo: fix raw handling in revision()
Jun Wu <quark@fb.com>
parents:
31835
diff
changeset
|
276 |
31833
723c1ab2f77e
test-flagprocessor: add tests about bundlerepo
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
277 |
31838
c39e7c4b535c
test-flagprocessor: remove unnecessary greps
Jun Wu <quark@fb.com>
parents:
31837
diff
changeset
|
278 $ hg bundle -R bundle.hg --base 1 bundle-again.hg -q |
c39e7c4b535c
test-flagprocessor: remove unnecessary greps
Jun Wu <quark@fb.com>
parents:
31837
diff
changeset
|
279 $ hg -R bundle-again.hg log --stat -T '{rev} {desc}\n' base64 |
31837
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
280 5 branching |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
281 base64 | 2 +- |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
282 1 files changed, 1 insertions(+), 1 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
283 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
284 4 base64-4 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
285 base64 | 2 +- |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
286 1 files changed, 1 insertions(+), 1 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
287 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
288 3 base64-three |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
289 base64 | 2 +- |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
290 1 files changed, 1 insertions(+), 1 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
291 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
292 2 base64-two |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
293 base64 | 2 +- |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
294 1 files changed, 1 insertions(+), 1 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
295 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
296 1 base64-single |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
297 base64 | 2 +- |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
298 1 files changed, 1 insertions(+), 1 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
299 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
300 0 base64-0 |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
301 base64 | 1 + |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
302 1 files changed, 1 insertions(+), 0 deletions(-) |
37e793918c07
bundlerepo: use raw revision in revdiff()
Jun Wu <quark@fb.com>
parents:
31836
diff
changeset
|
303 |
31855
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
304 $ rm bundle.hg bundle-again.hg |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35393
diff
changeset
|
305 #endif |
31855
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
306 |
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
307 # TEST: hg status |
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
308 |
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
309 $ hg status |
a418c5837bc0
test-flagprocessor: add a case about hg status
Jun Wu <quark@fb.com>
parents:
31838
diff
changeset
|
310 $ hg diff |
51237
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
311 |
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
312 |
49b00a04028f
rust-index: disabling flagprocessor tests
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents:
50725
diff
changeset
|
313 #endif |