tests/test-debug-revlog-stats.t
author Georges Racinet <georges.racinet@octobus.net>
Thu, 06 Jul 2023 11:53:40 +0200
branchstable
changeset 50746 124c44b5cfad
parent 50681 47b44d80d836
permissions -rw-r--r--
rust-revlog: fix RevlogEntry.data() for NULL_REVISION Before this change, the pseudo-entry returned by `Revlog.get_entry` for `NULL_REVISION` would trigger errors in application code using it. For example, this fixes a crash spotted with changelog data while implementing RHGitaly: `Changelog.data_for_rev(-1)` was already returning the pseudo content as expected, e.g., for `hg log`, but `Changelog.entry_for_rev(-1).data()` would still crash with "corrupted revlog, hash check failed for revision -1". There is an added test for this scenario.

Force revlog max inline value to be smaller than default

  $ mkdir $TESTTMP/ext
  $ cat << EOF > $TESTTMP/ext/small_inline.py
  > from mercurial import revlog
  > revlog._maxinline = 8
  > EOF

  $ cat << EOF >> $HGRCPATH
  > [extensions]
  > small_inline=$TESTTMP/ext/small_inline.py
  > EOF

  $ hg init repo
  $ cd repo

Try on an empty repository

  $ hg debug-revlog-stats
  rev-count   data-size inl type      target 

  $ mkdir folder
  $ touch a b folder/c folder/d
  $ hg commit -Aqm 0
  $ echo "text" > a
  $ hg rm b
  $ echo "longer string" > folder/d
  $ hg commit -Aqm 1

Differences in data size observed with pure is due to different compression
algorithms

  $ hg debug-revlog-stats
  rev-count   data-size inl type      target 
          2         138 no  changelog  (no-pure !)
          2         137 no  changelog  (pure !)
          2         177 no  manifest   (no-pure !)
          2         168 no  manifest   (pure !)
          2           6 yes file      a
          1           0 yes file      b
          1           0 yes file      folder/c
          2          15 no  file      folder/d

Test 'changelog' command argument

  $ hg debug-revlog-stats -c
  rev-count   data-size inl type      target 
          2         138 no  changelog  (no-pure !)
          2         137 no  changelog  (pure !)

Test 'manifest' command argument

  $ hg debug-revlog-stats -m
  rev-count   data-size inl type      target 
          2         177 no  manifest   (no-pure !)
          2         168 no  manifest   (pure !)

Test 'file' command argument

  $ hg debug-revlog-stats -f
  rev-count   data-size inl type      target 
          2           6 yes file      a
          1           0 yes file      b
          1           0 yes file      folder/c
          2          15 no  file      folder/d

Test multiple command arguments

  $ hg debug-revlog-stats -cm
  rev-count   data-size inl type      target 
          2         138 no  changelog  (no-pure !)
          2         137 no  changelog  (pure !)
          2         177 no  manifest   (no-pure !)
          2         168 no  manifest   (pure !)