test: add a test about cache warming
This test reveal that multiple cache are not saved to disk after discovery
(firstmerge, stablesort).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-discovery-obshashrange-cache.t Fri Aug 17 13:31:35 2018 +0200
@@ -0,0 +1,163 @@
+==============================
+Test cache warming strategy
+test for range based discovery
+==============================
+
+ $ . $TESTDIR/testlib/pythonpath.sh
+
+ $ cat << EOF >> $HGRCPATH
+ > [extensions]
+ > hgext3rd.evolve =
+ > blackbox =
+ > [defaults]
+ > blackbox = -l 100
+ > [experimental]
+ > obshashrange=1
+ > verbose-obsolescence-exchange=1
+ > [ui]
+ > logtemplate = "{rev} {node|short} {desc} {tags}\n"
+ > ssh=python "$RUNTESTDIR/dummyssh"
+ > [alias]
+ > debugobsolete=debugobsolete -d '0 0'
+ > [ui]
+ > ssh=$PYTHON "$RUNTESTDIR/dummyssh"
+ > EOF
+
+ $ hg init main
+
+ $ hg -R main debugbuilddag '.+7'
+
+ $ for node in `hg -R main log -T '{node}\n'`; do
+ > echo -n $node | grep -o . | sort |tr -d "\n" > ancfile
+ > anc=`cat ancfile`
+ > rm ancfile
+ > echo "marking $anc as predecessors of $node"
+ > hg -R main debugobsolete $anc $node
+ > done
+ marking 000011223334456677789aaaaabbbbcccddddeef as predecessors of 4de32a90b66cd083ebf3c00b41277aa7abca51dd
+ marking 012234455555666699aaaaabbbccccccefffffff as predecessors of f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23
+ marking 00001122233445555777778889999abbcccddeef as predecessors of c8d03c1b5e94af74b772900c58259d2e08917735
+ marking 0011222445667777889999aabbbbcddddeeeeeee as predecessors of bebd167eb94d257ace0e814aeb98e6972ed2970d
+ marking 000011222223344555566778899aaaabccddefff as predecessors of 2dc09a01254db841290af0538aa52f6f52c776e3
+ marking 01111222223333444455555566999abbbbcceeef as predecessors of 01241442b3c2bf3211e593b549c655ea65b295e3
+ marking 01122444445555566677888aabbcccddddefffff as predecessors of 66f7d451a68b85ed82ff5fcc254daf50c74144bd
+ marking 000111111234444467777889999aaaabcdeeeeff as predecessors of 1ea73414a91b0920940797d8fc6a11e447f8ea1e
+
+ $ hg debugobsolete -R main
+ 000011223334456677789aaaaabbbbcccddddeef 4de32a90b66cd083ebf3c00b41277aa7abca51dd 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 012234455555666699aaaaabbbccccccefffffff f69452c5b1af6cbaaa56ef50cf94fff5bcc6ca23 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 00001122233445555777778889999abbcccddeef c8d03c1b5e94af74b772900c58259d2e08917735 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 0011222445667777889999aabbbbcddddeeeeeee bebd167eb94d257ace0e814aeb98e6972ed2970d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 000011222223344555566778899aaaabccddefff 2dc09a01254db841290af0538aa52f6f52c776e3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 01111222223333444455555566999abbbbcceeef 01241442b3c2bf3211e593b549c655ea65b295e3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 01122444445555566677888aabbcccddddefffff 66f7d451a68b85ed82ff5fcc254daf50c74144bd 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+ 000111111234444467777889999aaaabcdeeeeff 1ea73414a91b0920940797d8fc6a11e447f8ea1e 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+
+Cache mode is "auto" so local commit did not warm the cache yet
+
+ $ f -s main/.hg/cache/evoext*
+ main/.hg/cache/evoext-obscache-00: size=72
+
+Initial push
+------------
+
+ $ hg init server
+ $ hg -R main push ssh://user@dummy/server
+ pushing to ssh://user@dummy/server
+ searching for changes
+ OBSEXC: computing relevant nodes
+ OBSEXC: looking for common markers in 8 nodes
+ OBSEXC: computing markers relevant to 8 nodes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 8 changesets with 0 changes to 0 files
+ remote: 8 new obsolescence markers
+
+sever cash is warm
+
+ $ f -s server/.hg/cache/evoext*
+ server/.hg/cache/evoext-depthcache-00: size=88
+ server/.hg/cache/evoext-firstmerge-00: size=88
+ server/.hg/cache/evoext-obscache-00: size=72
+ server/.hg/cache/evoext-stablesortcache-00: size=92
+ server/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob)
+ server/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob)
+
+client cash is warm
+
+ $ f -s main/.hg/cache/evoext*
+ main/.hg/cache/evoext-depthcache-00: size=88
+ main/.hg/cache/evoext-obscache-00: size=72
+ main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob)
+ main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob)
+
+initial pull
+------------
+
+ $ rm -rf main
+ $ hg init main
+ $ hg -R main pull ssh://user@dummy/server
+ pulling from ssh://user@dummy/server
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 8 changesets with 0 changes to 0 files
+ 8 new obsolescence markers
+ new changesets 1ea73414a91b:4de32a90b66c
+ (run 'hg update' to get a working copy)
+
+client cache is empty because the discovery was empty
+
+ $ f -s main/.hg/cache/evoext*
+ main/.hg/cache/evoext-obscache-00: size=72
+
+no op pull
+------------
+
+clear cache
+
+ $ rm -rf main/.hg/cache/evoext
+
+pull nothing
+
+ $ hg -R main pull ssh://user@dummy/server
+ pulling from ssh://user@dummy/server
+ searching for changes
+ no changes found
+ OBSEXC: looking for common markers in 8 nodes
+
+client cash is warm
+
+ $ f -s main/.hg/cache/evoext*
+ main/.hg/cache/evoext-depthcache-00: size=88
+ main/.hg/cache/evoext-obscache-00: size=72
+ main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob)
+ main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob)
+
+no op push
+------------
+
+clear cache
+
+ $ rm -rf main/.hg/cache/evoext
+
+push nothing
+
+ $ hg -R main push ssh://user@dummy/server
+ pushing to ssh://user@dummy/server
+ searching for changes
+ OBSEXC: computing relevant nodes
+ OBSEXC: looking for common markers in 8 nodes
+ OBSEXC: markers already in sync
+ no changes found
+ [1]
+
+client cash is warm
+
+ $ f -s main/.hg/cache/evoext*
+ main/.hg/cache/evoext-depthcache-00: size=88
+ main/.hg/cache/evoext-obscache-00: size=72
+ main/.hg/cache/evoext_obshashrange_v2.sqlite: size=?* (glob)
+ main/.hg/cache/evoext_stablerange_v2.sqlite: size=?* (glob)