##// END OF EJS Templates
debugcommands: introduce new debugrequirements command...
debugcommands: introduce new debugrequirements command This for now just prints out the list of current requirements. In future this will be helpful in reading requirements from couple of sources, and checking which requirement comes from where. Differential Revision: https://phab.mercurial-scm.org/D8632

File last commit:

r41985:688fc33e default
r45667:4a28f5e8 default
Show More
test-sparse-revlog.t
147 lines | 4.9 KiB | text/troff | Tads3Lexer
/ tests / test-sparse-revlog.t
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 ====================================
Test delta choice with sparse revlog
====================================
Sparse-revlog usually shows the most gain on Manifest. However, it is simpler
to general an appropriate file, so we test with a single file instead. The
goal is to observe intermediate snapshot being created.
We need a large enough file. Part of the content needs to be replaced
repeatedly while some of it changes rarely.
$ bundlepath="$TESTDIR/artifacts/cache/big-file-churn.hg"
$ expectedhash=`cat "$bundlepath".md5`
test: generate the `test-sparse-revlog` artifact when slow-test is allowed...
r41970
#if slow
$ if [ ! -f "$bundlepath" ]; then
> "$TESTDIR"/artifacts/scripts/generate-churning-bundle.py > /dev/null
> fi
#else
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 $ if [ ! -f "$bundlepath" ]; then
> echo 'skipped: missing artifact, run "'"$TESTDIR"'/artifacts/scripts/generate-churning-bundle.py"'
> exit 80
> fi
test: generate the `test-sparse-revlog` artifact when slow-test is allowed...
r41970
#endif
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 $ currenthash=`f -M "$bundlepath" | cut -d = -f 2`
$ if [ "$currenthash" != "$expectedhash" ]; then
> echo 'skipped: outdated artifact, md5 "'"$currenthash"'" expected "'"$expectedhash"'" run "'"$TESTDIR"'/artifacts/scripts/generate-churning-bundle.py"'
> exit 80
> fi
$ cat >> $HGRCPATH << EOF
> [format]
> sparse-revlog = yes
Boris Feld
sparse-revlog: set max delta chain length to on thousand...
r39542 > maxchainlen = 15
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 > [storage]
> revlog.optimize-delta-parent-choice = yes
storage: introduce a `revlog.reuse-external-delta` config...
r41985 > revlog.reuse-external-delta = no
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 > EOF
$ hg init sparse-repo
$ cd sparse-repo
$ hg unbundle $bundlepath
adding changesets
adding manifests
adding file changes
added 5001 changesets with 5001 changes to 1 files (+89 heads)
new changesets 9706f5af64f4:d9032adc8114 (5001 drafts)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "d9032adc8114: commit #5000"
89 other heads for branch "default"
$ hg log --stat -r 0:3
changeset: 0:9706f5af64f4
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial commit
SPARSE-REVLOG-TEST-FILE | 10500 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 10500 insertions(+), 0 deletions(-)
changeset: 1:724907deaa5e
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commit #1
SPARSE-REVLOG-TEST-FILE | 1068 +++++++++++++++++++++++-----------------------
1 files changed, 534 insertions(+), 534 deletions(-)
changeset: 2:62c41bce3e5d
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commit #2
SPARSE-REVLOG-TEST-FILE | 1068 +++++++++++++++++++++++-----------------------
1 files changed, 534 insertions(+), 534 deletions(-)
changeset: 3:348a9cbd6959
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commit #3
SPARSE-REVLOG-TEST-FILE | 1068 +++++++++++++++++++++++-----------------------
1 files changed, 534 insertions(+), 534 deletions(-)
$ f -s .hg/store/data/*.d
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 .hg/store/data/_s_p_a_r_s_e-_r_e_v_l_o_g-_t_e_s_t-_f_i_l_e.d: size=63327412
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 $ hg debugrevlog *
format : 1
flags : generaldelta
revisions : 5001
merges : 625 (12.50%)
normal : 4376 (87.50%)
revisions : 5001
empty : 0 ( 0.00%)
text : 0 (100.00%)
delta : 0 (100.00%)
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 snapshot : 383 ( 7.66%)
lvl-0 : 3 ( 0.06%)
lvl-1 : 20 ( 0.40%)
lvl-2 : 68 ( 1.36%)
lvl-3 : 112 ( 2.24%)
lvl-4 : 180 ( 3.60%)
deltas : 4618 (92.34%)
revision size : 63327412
snapshot : 9886710 (15.61%)
lvl-0 : 603104 ( 0.95%)
lvl-1 : 1559991 ( 2.46%)
lvl-2 : 2295592 ( 3.62%)
lvl-3 : 2531199 ( 4.00%)
lvl-4 : 2896824 ( 4.57%)
deltas : 53440702 (84.39%)
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527
chunks : 5001
0x78 (x) : 5001 (100.00%)
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 chunks size : 63327412
0x78 (x) : 63327412 (100.00%)
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527
Boris Feld
sparse-revlog: set max delta chain length to on thousand...
r39542 avg chain length : 9
max chain length : 15
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 max chain reach : 28248745
compression ratio : 27
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527
uncompressed data size (min/max/avg) : 346468 / 346472 / 346471
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 full revision size (min/max/avg) : 201008 / 201050 / 201034
inter-snapshot size (min/max/avg) : 11596 / 168150 / 24430
level-1 (min/max/avg) : 16653 / 168150 / 77999
level-2 (min/max/avg) : 12951 / 85595 / 33758
level-3 (min/max/avg) : 11608 / 43029 / 22599
level-4 (min/max/avg) : 11596 / 21632 / 16093
delta size (min/max/avg) : 10649 / 107163 / 11572
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 deltas against prev : 3910 (84.67%)
where prev = p1 : 3910 (100.00%)
Boris Feld
sparse-revlog: add a test checking revlog deltas for a churning file...
r39527 where prev = p2 : 0 ( 0.00%)
test: update test-sparse-revlog.t output...
r41962 other : 0 ( 0.00%)
test: don't trust delta bases from the bundle in test-sparse-revlog.t...
r41963 deltas against p1 : 648 (14.03%)
deltas against p2 : 60 ( 1.30%)
deltas against other : 0 ( 0.00%)