tests/test-revlog-mmapindex.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 26 Mar 2024 18:55:40 +0000
changeset 51547 8e2a68e10f5c
parent 51181 dcaa2df1f688
permissions -rw-r--r--
stream: in v3, skip the "size" fast path if the entries as some unknown size We are about to prefetch size during the lock less in the v3 case. So we need to avoid trying to use that prefetched size when it is not available. See next changeset for the motivation.

create verbosemmap.py
  $ cat << EOF > verbosemmap.py
  > # extension to make util.mmapread verbose
  > 
  > 
  > from mercurial import (
  >     extensions,
  >     pycompat,
  >     util,
  > )
  > 
  > def extsetup(ui):
  >     def mmapread(orig, fp, *args):
  >         ui.write(b"mmapping %s\n" % pycompat.bytestr(fp.name))
  >         ui.flush()
  >         return orig(fp, *args)
  > 
  >     extensions.wrapfunction(util, 'mmapread', mmapread)
  > EOF

setting up base repo
  $ hg init a
  $ cd a
  $ touch a
  $ hg add a
  $ hg commit -qm base
  $ for i in `$TESTDIR/seq.py 1 100` ; do
  > echo $i > a
  > hg commit -qm $i
  > done

set up verbosemmap extension
  $ cat << EOF >> $HGRCPATH
  > [extensions]
  > verbosemmap=$TESTTMP/verbosemmap.py
  > EOF

mmap index which is now more than 4k long
  $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=4k
  mmapping $TESTTMP/a/.hg/store/00changelog.i
  mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !)
  100
  99
  98
  97
  96

do not mmap index which is still less than 32k
  $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=32k
  mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !)
  100
  99
  98
  97
  96

  $ cd ..