Mercurial > hg
view tests/test-extensions-afterloaded.t @ 35767:5f5fb279fd39
streamclone: also stream caches to the client
When stream clone is used over bundle2, relevant cache files are also streamed.
This is expected to be a massive performance win for clone since no important
cache will have to be recomputed.
Some performance numbers:
(All times are wall-clock times in seconds, 2 attempts per case.)
# Mozilla-Central
## Clone over ssh over lan
V1 streaming: 234.3 239.6
V2 streaming: 248.4 243.7
## Clone over ssh over Internet
V1 streaming: 175.5 110.9
V2 streaming: 109.1 111.0
## Clone over HTTP over lan
V1 streaming: 105.3 105.6
V2 streaming: 112.7 111.4
## Clone over HTTP over internet
V1 streaming: 105.6 114.6
V2 streaming: 226.7 225.9
## Hg tags
V1 streaming (no cache): 1.084 1.071
V2 streaming (cache): 0.312 0.325
## Hg branches
V1 streaming (no cache): 14.047 14.148
V2 streaming (with cache): 0.312 0.333
# Pypy
## Clone over ssh over internet
V1 streaming: 29.4 30.1
V2 streaming: 31.2 30.1
## Clone over http over internet
V1 streaming: 29.7 29.7
V2 streaming: 75.2 72.9
(since ssh and lan are not affected, there seems to be an issue with how we
read/write the http stream on connection with latency, unrelated to the format)
## Hg tags
V1 streaming (no cache): 1.752 1.664
V2 streaming (with cache): 0.274 0.260
## Hg branches
V1 streaming (no cache): 4.469 4.728
V2 streaming (with cache): 0.318 0.321
# Private repository:
* 500K revision revisions
* 11K topological heads
* 28K branch heads
## hg tags
no cache: 1543.332
with cache: 4.900
## hg branches
no cache: 91.828
with cache: 2.955
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Thu, 18 Jan 2018 00:50:12 +0100 |
parents | 80a5d237a4ae |
children | d1a49a94c324 |
line wrap: on
line source
Test the extensions.afterloaded() function $ cat > foo.py <<EOF > from mercurial import extensions > def uisetup(ui): > ui.write("foo.uisetup\\n") > ui.flush() > def bar_loaded(loaded): > ui.write("foo: bar loaded: %r\\n" % (loaded,)) > ui.flush() > extensions.afterloaded('bar', bar_loaded) > EOF $ cat > bar.py <<EOF > def uisetup(ui): > ui.write("bar.uisetup\\n") > ui.flush() > EOF $ basepath=`pwd` $ hg init basic $ cd basic $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ echo "bar = $basepath/bar.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' foo.uisetup foo: bar loaded: True bar.uisetup 0 Test afterloaded with the opposite extension load order $ cd .. $ hg init basic_reverse $ cd basic_reverse $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "bar = $basepath/bar.py" >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' bar.uisetup foo.uisetup foo: bar loaded: True 0 Test the extensions.afterloaded() function when the requested extension is not loaded $ cd .. $ hg init notloaded $ cd notloaded $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' foo.uisetup foo: bar loaded: False 0 Test the extensions.afterloaded() function when the requested extension is not configured but fails the minimum version check $ cd .. $ cat > minvers.py <<EOF > minimumhgversion = '9999.9999' > def uisetup(ui): > ui.write("minvers.uisetup\\n") > ui.flush() > EOF $ hg init minversion $ cd minversion $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ echo "bar = $basepath/minvers.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' (third party extension bar requires version 9999.9999 or newer of Mercurial; disabling) foo.uisetup foo: bar loaded: False 0 Test the extensions.afterloaded() function when the requested extension is not configured but fails the minimum version check, using the opposite load order for the two extensions. $ cd .. $ hg init minversion_reverse $ cd minversion_reverse $ echo foo > file $ hg add file $ hg commit -m 'add file' $ echo '[extensions]' >> .hg/hgrc $ echo "bar = $basepath/minvers.py" >> .hg/hgrc $ echo "foo = $basepath/foo.py" >> .hg/hgrc $ hg log -r. -T'{rev}\n' (third party extension bar requires version 9999.9999 or newer of Mercurial; disabling) foo.uisetup foo: bar loaded: False 0