tests/test-revlog-mmapindex.t
author Matt Harbison <matt_harbison@yahoo.com>
Thu, 12 Sep 2024 12:53:00 -0400
changeset 51861 f81e0ce5103a
parent 51682 c10fa6388dbf
permissions -rw-r--r--
typing: simplify archive.gz writing and drop a few pytype suppressions I was waiting until 3.8 to use `Literal` to fix this, but there's also the ":" and "|" characters that are passed along here, meant only for the non-gz archive types. But manipulating what the local caller passes is silly- we know we're writing, so just open it for writing. As an added bonus, PyCharm stops flagging the call too (since it doesn't know about pytype suppression comments).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34296
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     1
create verbosemmap.py
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     2
  $ cat << EOF > verbosemmap.py
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     3
  > # extension to make util.mmapread verbose
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     4
  > 
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     5
  > 
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     6
  > from mercurial import (
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     7
  >     extensions,
35404
6ebe899b6551 py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35393
diff changeset
     8
  >     pycompat,
34296
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
     9
  >     util,
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    10
  > )
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    11
  > 
34446
b0c97e44576f test-revlog-mmapindex: make it compatible with chg
Jun Wu <quark@fb.com>
parents: 34296
diff changeset
    12
  > def extsetup(ui):
51181
dcaa2df1f688 changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48876
diff changeset
    13
  >     def mmapread(orig, fp, *args):
35404
6ebe899b6551 py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35393
diff changeset
    14
  >         ui.write(b"mmapping %s\n" % pycompat.bytestr(fp.name))
34446
b0c97e44576f test-revlog-mmapindex: make it compatible with chg
Jun Wu <quark@fb.com>
parents: 34296
diff changeset
    15
  >         ui.flush()
51181
dcaa2df1f688 changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48876
diff changeset
    16
  >         return orig(fp, *args)
34296
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    17
  > 
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    18
  >     extensions.wrapfunction(util, 'mmapread', mmapread)
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    19
  > EOF
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    20
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    21
setting up base repo
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    22
  $ hg init a
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    23
  $ cd a
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    24
  $ touch a
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    25
  $ hg add a
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    26
  $ hg commit -qm base
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    27
  $ for i in `$TESTDIR/seq.py 1 100` ; do
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    28
  > echo $i > a
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    29
  > hg commit -qm $i
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    30
  > done
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    31
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    32
set up verbosemmap extension
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    33
  $ cat << EOF >> $HGRCPATH
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    34
  > [extensions]
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    35
  > verbosemmap=$TESTTMP/verbosemmap.py
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    36
  > EOF
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    37
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    38
mmap index which is now more than 4k long
51682
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    39
  $ hg log -l 5 -T '{rev}\n' \
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    40
  >     --config storage.revlog.mmap.index=yes \
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    41
  >     --config storage.revlog.mmap.index:size-threshold=4k
51653
d6c895e4adc4 mmap: only use mmap to read revlog index if it is safe
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51181
diff changeset
    42
  mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !)
51181
dcaa2df1f688 changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48876
diff changeset
    43
  mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !)
34296
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    44
  100
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    45
  99
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    46
  98
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    47
  97
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    48
  96
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    49
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    50
do not mmap index which is still less than 32k
51682
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    51
  $ hg log -l 5 -T '{rev}\n' \
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    52
  >     --config storage.revlog.mmap.index=yes \
c10fa6388dbf revlog: use an explicit config option to enable mmap usage for index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51653
diff changeset
    53
  >     --config storage.revlog.mmap.index:size-threshold=32k
51181
dcaa2df1f688 changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48876
diff changeset
    54
  mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !)
34296
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    55
  100
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    56
  99
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    57
  98
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    58
  97
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    59
  96
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    60
3c9691728237 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com>
parents:
diff changeset
    61
  $ cd ..