view tests/test-revlog-mmapindex.t @ 51711:832a1aeb576f

pytype: only try the hacky way of finding PYTHON if not provided This allows us to work in more environments, like when using pyenv. This syntax is compatible with all POSIX shells.
author Raphaël Gomès <rgomes@octobus.net>
date Tue, 23 Jul 2024 12:10:31 +0200
parents c10fa6388dbf
children
line wrap: on
line source

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 storage.revlog.mmap.index=yes \
  >     --config storage.revlog.mmap.index:size-threshold=4k
  mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !)
  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 storage.revlog.mmap.index=yes \
  >     --config storage.revlog.mmap.index:size-threshold=32k
  mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !)
  100
  99
  98
  97
  96

  $ cd ..