Mercurial > hg
annotate tests/common-pattern.py @ 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 | e3ed64dfd8ff |
children | 73a43fe3e6fd |
rev | line source |
---|---|
35070
3abdd7da33bd
test-pattern: substitute common compression list
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
1 # common patterns in test at can safely be replaced |
3abdd7da33bd
test-pattern: substitute common compression list
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
2 |
35449
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
3 import os |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
4 |
35070
3abdd7da33bd
test-pattern: substitute common compression list
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
5 substitutions = [ |
3abdd7da33bd
test-pattern: substitute common compression list
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
6 # list of possible compressions |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
7 (br'(zstd,)?zlib,none,bzip2', br'$USUAL_COMPRESSIONS$'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
8 (br'=(zstd,)?zlib', br'=$BUNDLE2_COMPRESSIONS$'), |
35071
b4767ae63b32
test-pattern: register current the bundlecaps string
Boris Feld <boris.feld@octobus.net>
parents:
35070
diff
changeset
|
9 # capabilities sent through http |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
10 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
11 br'bundlecaps=HG20%2Cbundle2%3DHG20%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
12 br'bookmarks%250A' |
50381
2cf264e9aa75
configitems: enable changegroup3 by default (unless using infinitepush)
Matt Harbison <matt_harbison@yahoo.com>
parents:
49524
diff
changeset
|
13 br'changegroup%253D01%252C02%252C03%250A' |
44412
edc8504bc26b
exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
43076
diff
changeset
|
14 br'checkheads%253Drelated%250A' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
15 br'digests%253Dmd5%252Csha1%252Csha512%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
16 br'error%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
17 br'hgtagsfnodes%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
18 br'listkeys%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
19 br'phases%253Dheads%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
20 br'pushkey%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
21 br'remote-changegroup%253Dhttp%252Chttps%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
22 br'stream%253Dv2', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
23 # (the replacement patterns) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
24 br'$USUAL_BUNDLE_CAPS$', |
35071
b4767ae63b32
test-pattern: register current the bundlecaps string
Boris Feld <boris.feld@octobus.net>
parents:
35070
diff
changeset
|
25 ), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
26 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
27 br'bundlecaps=HG20%2Cbundle2%3DHG20%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
28 br'bookmarks%250A' |
50381
2cf264e9aa75
configitems: enable changegroup3 by default (unless using infinitepush)
Matt Harbison <matt_harbison@yahoo.com>
parents:
49524
diff
changeset
|
29 br'changegroup%253D01%252C02%252C03%250A' |
44412
edc8504bc26b
exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
43076
diff
changeset
|
30 br'checkheads%3Drelated%0A' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
31 br'digests%253Dmd5%252Csha1%252Csha512%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
32 br'error%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
33 br'hgtagsfnodes%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
34 br'listkeys%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
35 br'phases%253Dheads%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
36 br'pushkey%250A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
37 br'remote-changegroup%253Dhttp%252Chttps', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
38 # (the replacement patterns) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
39 br'$USUAL_BUNDLE_CAPS_SERVER$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
40 ), |
35072
c4ec72a10798
test-pattern: register the current the bundle2 capabilities string
Boris Feld <boris.feld@octobus.net>
parents:
35071
diff
changeset
|
41 # bundle2 capabilities sent through ssh |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
42 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
43 br'bundle2=HG20%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
44 br'bookmarks%0A' |
50381
2cf264e9aa75
configitems: enable changegroup3 by default (unless using infinitepush)
Matt Harbison <matt_harbison@yahoo.com>
parents:
49524
diff
changeset
|
45 br'changegroup%3D01%2C02%2C03%0A' |
44412
edc8504bc26b
exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
43076
diff
changeset
|
46 br'checkheads%3Drelated%0A' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
47 br'digests%3Dmd5%2Csha1%2Csha512%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
48 br'error%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
49 br'hgtagsfnodes%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
50 br'listkeys%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
51 br'phases%3Dheads%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
52 br'pushkey%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
53 br'remote-changegroup%3Dhttp%2Chttps%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
54 br'stream%3Dv2', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
55 # (replacement patterns) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
56 br'$USUAL_BUNDLE2_CAPS$', |
35792
1d118f9f4f57
bundle2: always advertise client support for stream parts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35449
diff
changeset
|
57 ), |
1d118f9f4f57
bundle2: always advertise client support for stream parts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35449
diff
changeset
|
58 # bundle2 capabilities advertised by the server |
38728
88be288e8ac1
tests: refactor common bundle2 capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37477
diff
changeset
|
59 ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
60 br'bundle2=HG20%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
61 br'bookmarks%0A' |
50381
2cf264e9aa75
configitems: enable changegroup3 by default (unless using infinitepush)
Matt Harbison <matt_harbison@yahoo.com>
parents:
49524
diff
changeset
|
62 br'changegroup%3D01%2C02%2C03%0A' |
44412
edc8504bc26b
exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
43076
diff
changeset
|
63 br'checkheads%3Drelated%0A' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
64 br'digests%3Dmd5%2Csha1%2Csha512%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
65 br'error%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
66 br'hgtagsfnodes%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
67 br'listkeys%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
68 br'phases%3Dheads%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
69 br'pushkey%0A' |
46633
7015b0232c5e
exchange: stop advertising rev-branch-cache bundle capability
Joerg Sonnenberger <joerg@bec.de>
parents:
44412
diff
changeset
|
70 br'remote-changegroup%3Dhttp%2Chttps', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
71 # (replacement patterns) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
72 br'$USUAL_BUNDLE2_CAPS_SERVER$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
73 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
74 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
75 br'bundle2=HG20%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
76 br'bookmarks%0A' |
50381
2cf264e9aa75
configitems: enable changegroup3 by default (unless using infinitepush)
Matt Harbison <matt_harbison@yahoo.com>
parents:
49524
diff
changeset
|
77 br'changegroup%3D01%2C02%2C03%0A' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
78 br'digests%3Dmd5%2Csha1%2Csha512%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
79 br'error%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
80 br'hgtagsfnodes%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
81 br'listkeys%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
82 br'pushkey%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
83 br'remote-changegroup%3Dhttp%2Chttps%0A' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
84 br'stream%3Dv2', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
85 # (replacement patterns) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
86 br'$USUAL_BUNDLE2_CAPS_NO_PHASES$', |
38728
88be288e8ac1
tests: refactor common bundle2 capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37477
diff
changeset
|
87 ), |
37477
28e8c5949109
tests: add a substitution pattern for HTTP error log dates
Matt Harbison <matt_harbison@yahoo.com>
parents:
37008
diff
changeset
|
88 # HTTP access log dates |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
89 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
90 br' - - \[\d\d/.../2\d\d\d \d\d:\d\d:\d\d] "(GET|PUT|POST)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
91 lambda m: br' - - [$LOGDATE$] "' + m.group(1), |
35073
7f0c9e28a816
test-pattern: substitute the HTTP log timestamp too
Boris Feld <boris.feld@octobus.net>
parents:
35072
diff
changeset
|
92 ), |
37477
28e8c5949109
tests: add a substitution pattern for HTTP error log dates
Matt Harbison <matt_harbison@yahoo.com>
parents:
37008
diff
changeset
|
93 # HTTP error log dates |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
94 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
95 br' - - \[\d\d/.../2\d\d\d \d\d:\d\d:\d\d] (HG error:|Exception)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
96 lambda m: br' - - [$ERRDATE$] ' + m.group(1), |
37477
28e8c5949109
tests: add a substitution pattern for HTTP error log dates
Matt Harbison <matt_harbison@yahoo.com>
parents:
37008
diff
changeset
|
97 ), |
36924
03368431f014
tests: add a substitution pattern for dates in HTTP headers and LFS payload
Matt Harbison <matt_harbison@yahoo.com>
parents:
36385
diff
changeset
|
98 # HTTP header dates- RFC 1123 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
99 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
100 br'([Dd]ate): [A-Za-z]{3}, \d\d [A-Za-z]{3} \d{4} \d\d:\d\d:\d\d GMT', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
101 lambda m: br'%s: $HTTP_DATE$' % m.group(1), |
36924
03368431f014
tests: add a substitution pattern for dates in HTTP headers and LFS payload
Matt Harbison <matt_harbison@yahoo.com>
parents:
36385
diff
changeset
|
102 ), |
03368431f014
tests: add a substitution pattern for dates in HTTP headers and LFS payload
Matt Harbison <matt_harbison@yahoo.com>
parents:
36385
diff
changeset
|
103 # LFS expiration value |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
104 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
105 br'"expires_at": "\d{4}-\d\d-\d\dT\d\d:\d\d:\d\dZ"', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
106 br'"expires_at": "$ISO_8601_DATE_TIME$"', |
36924
03368431f014
tests: add a substitution pattern for dates in HTTP headers and LFS payload
Matt Harbison <matt_harbison@yahoo.com>
parents:
36385
diff
changeset
|
107 ), |
35446
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
108 # Windows has an extra '/' in the following lines that get globbed away: |
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
109 # pushing to file:/*/$TESTTMP/r2 (glob) |
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
110 # comparing with file:/*/$TESTTMP/r2 (glob) |
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
111 # sub/maybelarge.dat: largefile 34..9c not available from |
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
112 # file:/*/$TESTTMP/largefiles-repo (glob) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
113 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
114 br'(.*file:/)/?(/\$TESTTMP.*)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
115 lambda m: m.group(1) + b'*' + m.group(2) + b' (glob)', |
35446
991e4404e910
tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
Matt Harbison <matt_harbison@yahoo.com>
parents:
35259
diff
changeset
|
116 ), |
50428
59fda8516774
tests: automatically glob the discovery timing information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50402
diff
changeset
|
117 # `discovery debug output |
59fda8516774
tests: automatically glob the discovery timing information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50402
diff
changeset
|
118 ( |
59fda8516774
tests: automatically glob the discovery timing information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50402
diff
changeset
|
119 br'\b(\d+) total queries in \d.\d\d\d\ds\b', |
59fda8516774
tests: automatically glob the discovery timing information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50402
diff
changeset
|
120 lambda m: (br'%s total queries in *.????s (glob)' % m.group(1)), |
59fda8516774
tests: automatically glob the discovery timing information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50402
diff
changeset
|
121 ), |
51281
8f1983318455
common-pattern: cover "elapsed time" line
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51149
diff
changeset
|
122 ( |
8f1983318455
common-pattern: cover "elapsed time" line
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51149
diff
changeset
|
123 br'\belapsed time: \d+.\d{6} seconds\b', |
8f1983318455
common-pattern: cover "elapsed time" line
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51149
diff
changeset
|
124 br'elapsed time: *.?????? seconds (glob)', |
8f1983318455
common-pattern: cover "elapsed time" line
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51149
diff
changeset
|
125 ), |
35070
3abdd7da33bd
test-pattern: substitute common compression list
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
126 ] |
35230
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
127 |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
128 # Various platform error strings, keyed on a common replacement string |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
129 _errors = { |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
130 br'$ENOENT$': ( |
42329
c7652f7440d9
rust-filepatterns: call new Rust implementations from Python
Raphaël Gomès <rgomes@octobus.net>
parents:
40881
diff
changeset
|
131 # IOError in Python does not have the same error message |
c7652f7440d9
rust-filepatterns: call new Rust implementations from Python
Raphaël Gomès <rgomes@octobus.net>
parents:
40881
diff
changeset
|
132 # than in Rust, and automatic conversion is not possible |
c7652f7440d9
rust-filepatterns: call new Rust implementations from Python
Raphaël Gomès <rgomes@octobus.net>
parents:
40881
diff
changeset
|
133 # because of module member privacy. |
c7652f7440d9
rust-filepatterns: call new Rust implementations from Python
Raphaël Gomès <rgomes@octobus.net>
parents:
40881
diff
changeset
|
134 br'No such file or directory \(os error 2\)', |
35230
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
135 # strerror() |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
136 br'No such file or directory', |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
137 # FormatMessage(ERROR_FILE_NOT_FOUND) |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
138 br'The system cannot find the file specified', |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
139 ), |
50292
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49524
diff
changeset
|
140 br'$EACCES$': ( |
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49524
diff
changeset
|
141 br'Permission denied \(os error 13\)', |
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49524
diff
changeset
|
142 # strerror |
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49524
diff
changeset
|
143 br'Permission denied', |
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49524
diff
changeset
|
144 ), |
35231
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
145 br'$ENOTDIR$': ( |
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
146 # strerror() |
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
147 br'Not a directory', |
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
148 # FormatMessage(ERROR_PATH_NOT_FOUND) |
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
149 br'The system cannot find the path specified', |
b33d4cf38666
tests: add a substitution for ENOTDIR/ERROR_PATH_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35230
diff
changeset
|
150 ), |
35232
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
151 br'$ECONNRESET$': ( |
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
152 # strerror() |
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
153 br'Connection reset by peer', |
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
154 # FormatMessage(WSAECONNRESET) |
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
155 br'An existing connection was forcibly closed by the remote host', |
a037b6647d8c
tests: add a substitution for ECONNRESET/WSAECONNRESET messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35231
diff
changeset
|
156 ), |
35233
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
157 br'$EADDRINUSE$': ( |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
158 # strerror() |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
159 br'Address already in use', |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
160 # FormatMessage(WSAEADDRINUSE) |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
161 br'Only one usage of each socket address' |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
162 br' \(protocol/network address/port\) is normally permitted', |
1b22d325089c
tests: add a substitution for EADDRINUSE/WSAEADDRINUSE messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35232
diff
changeset
|
163 ), |
40881
8695fbe17f7c
tests: update network related errors for Debian 9
Boris Feld <boris.feld@octobus.net>
parents:
39722
diff
changeset
|
164 br'$EADDRNOTAVAIL$': ( |
8695fbe17f7c
tests: update network related errors for Debian 9
Boris Feld <boris.feld@octobus.net>
parents:
39722
diff
changeset
|
165 # strerror() |
8695fbe17f7c
tests: update network related errors for Debian 9
Boris Feld <boris.feld@octobus.net>
parents:
39722
diff
changeset
|
166 br'Cannot assign requested address', |
49524
45268599f55e
tests: add another variation of EADDRNOTAVAIL message (e.g. from NetBSD)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
167 br'Can\'t assign requested address', |
40881
8695fbe17f7c
tests: update network related errors for Debian 9
Boris Feld <boris.feld@octobus.net>
parents:
39722
diff
changeset
|
168 # FormatMessage(WSAEADDRNOTAVAIL) |
51149
e2632d9d1b6e
tests: fill in the Windows pattern for `$EADDRNOTAVAIL$` matching
Matt Harbison <matt_harbison@yahoo.com>
parents:
50428
diff
changeset
|
169 br'The requested address is not valid in its context', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
170 ), |
35230
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
171 } |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
172 |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
173 for replace, msgs in _errors.items(): |
feecfefeba25
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
35073
diff
changeset
|
174 substitutions.extend((m, replace) for m in msgs) |
35449
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
175 |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
176 # Output lines on Windows that can be autocorrected for '\' vs '/' path |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
177 # differences. |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
178 _winpathfixes = [ |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
179 # cloning subrepo s\ss from $TESTTMP/t/s/ss |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
180 # cloning subrepo foo\bar from http://localhost:$HGPORT/foo/bar |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
181 br'(?m)^cloning subrepo \S+\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
182 # pulling from $TESTTMP\issue1852a |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
183 br'(?m)^pulling from \$TESTTMP\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
184 # pushing to $TESTTMP\a |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
185 br'(?m)^pushing to \$TESTTMP\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
186 # pushing subrepo s\ss to $TESTTMP/t/s/ss |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
187 br'(?m)^pushing subrepo \S+\\\S+ to.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
188 # moving d1\d11\a1 to d3/d11/a1 |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
189 br'(?m)^moving \S+\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
190 # d1\a: not recording move - dummy does not exist |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
191 br'\S+\\\S+: not recording move .+', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
192 # reverting s\a |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
193 br'(?m)^reverting (?!subrepo ).*\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
194 # saved backup bundle to |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
195 # $TESTTMP\test\.hg\strip-backup/443431ffac4f-2fc5398a-backup.hg |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
196 br'(?m)^saved backup bundle to \$TESTTMP.*\.hg', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
197 # no changes made to subrepo s\ss since last push to ../tcc/s/ss |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
198 br'(?m)^no changes made to subrepo \S+\\\S+ since.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
199 # changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
200 # $TESTTMP\largefiles-repo-hg\.hg\largefiles\76..38 |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
201 br'(?m)^changeset .* references (corrupted|missing) \$TESTTMP\\.*', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
202 # stuff/maybelarge.dat: largefile 76..38 not available from |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
203 # file:/*/$TESTTMP\largefiles-repo (glob) |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
204 br'.*: largefile \S+ not available from file:/\*/.+', |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
205 ] |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
206 |
24528dba0e64
run-tests: add substitution patterns for common '\' path output on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
35446
diff
changeset
|
207 if os.name == 'nt': |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
208 substitutions.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
209 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
210 (s, lambda match: match.group().replace(b'\\', b'/')) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
211 for s in _winpathfixes |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
212 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42329
diff
changeset
|
213 ) |