[PATCH 7 of 7] test-contrib-perf: add tests for perf.py

Augie Fackler raf at durin42.com
Tue Nov 24 17:49:30 CST 2015


On Tue, Nov 24, 2015 at 04:36:30PM -0600, timeless wrote:
> # HG changeset patch
> # User timeless <timeless at mozdev.org>
> # Date 1448401272 0
> #      Tue Nov 24 21:41:12 2015 +0000
> # Node ID 25a4d7e1a5601367bb6d00a220a217fe1b91e996
> # Parent  dd024f4eafead08b0d150eb2b9210d6d3087fd65
> test-contrib-perf: add tests for perf.py

Queued this too with a minor commit message tweak, many thanks for
doing this work!

>
> diff --git a/tests/run-tests.py b/tests/run-tests.py
> --- a/tests/run-tests.py
> +++ b/tests/run-tests.py
> @@ -1726,6 +1726,7 @@
>              slow = {b'svn': 10,
>                      b'gendoc': 10,
>                      b'check-code-hg': 100,
> +                    b'contrib-perf': 200,
>                     }
>              def sortkey(f):
>                  # run largest tests first, as they tend to take the longest
> diff --git a/tests/test-contrib-perf.t b/tests/test-contrib-perf.t
> new file mode 100644
> --- /dev/null
> +++ b/tests/test-contrib-perf.t
> @@ -0,0 +1,174 @@
> +#require test-repo slow
> +
> +Set vars:
> +
> +  $ CONTRIBDIR="$TESTDIR/../contrib"
> +
> +Prepare repo-a:
> +
> +  $ hg init repo-a
> +  $ cd repo-a
> +
> +  $ echo this is file a > a
> +  $ hg add a
> +  $ hg commit -m first
> +
> +  $ echo adding to file a >> a
> +  $ hg commit -m second
> +
> +  $ echo adding more to file a >> a
> +  $ hg commit -m third
> +
> +  $ hg up -r 0
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ echo merge-this >> a
> +  $ hg commit -m merge-able
> +  created new head
> +
> +  $ hg up -r 2
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +
> +perfstatus
> +
> +  $ cat > .hg/hgrc << EOF
> +  > [extensions]
> +  > perfstatusext=$CONTRIBDIR/perf.py
> +  > EOF
> +  $ hg help perfstatusext
> +  perfstatusext extension - helper extension to measure performance
> +
> +  list of commands:
> +
> +   perfaddremove
> +                 (no help text available)
> +   perfancestors
> +                 (no help text available)
> +   perfancestorset
> +                 (no help text available)
> +   perfannotate  (no help text available)
> +   perfbranchmap
> +                 benchmark the update of a branchmap
> +   perfcca       (no help text available)
> +   perfchangeset
> +                 (no help text available)
> +   perfctxfiles  (no help text available)
> +   perfdiffwd    Profile diff of working directory changes
> +   perfdirfoldmap
> +                 (no help text available)
> +   perfdirs      (no help text available)
> +   perfdirstate  (no help text available)
> +   perfdirstatedirs
> +                 (no help text available)
> +   perfdirstatefoldmap
> +                 (no help text available)
> +   perfdirstatewrite
> +                 (no help text available)
> +   perffncacheencode
> +                 (no help text available)
> +   perffncacheload
> +                 (no help text available)
> +   perffncachewrite
> +                 (no help text available)
> +   perfheads     (no help text available)
> +   perfindex     (no help text available)
> +   perfloadmarkers
> +                 benchmark the time to parse the on-disk markers for a repo
> +   perflog       (no help text available)
> +   perflookup    (no help text available)
> +   perfmanifest  (no help text available)
> +   perfmergecalculate
> +                 (no help text available)
> +   perfmoonwalk  benchmark walking the changelog backwards
> +   perfnodelookup
> +                 (no help text available)
> +   perfparents   (no help text available)
> +   perfpathcopies
> +                 (no help text available)
> +   perfrawfiles  (no help text available)
> +   perfrevlog    (no help text available)
> +   perfrevrange  (no help text available)
> +   perfrevset    benchmark the execution time of a revset
> +   perfstartup   (no help text available)
> +   perfstatus    (no help text available)
> +   perftags      (no help text available)
> +   perftemplating
> +                 (no help text available)
> +   perfvolatilesets
> +                 benchmark the computation of various volatile set
> +   perfwalk      (no help text available)
> +
> +  (use "hg help -v perfstatusext" to show built-in aliases and global options)
> +  $ filter_perf_output () {
> +  >     egrep -v 'wall' || true
> +  > }
> +  $ hg perfaddremove 2>&1 | filter_perf_output
> +  $ hg perfancestors 2>&1 | filter_perf_output
> +  $ hg perfancestorset 2 2>&1 | filter_perf_output
> +  $ hg perfannotate a 2>&1 | filter_perf_output
> +  ! result: 3
> +  $ hg perfbranchmap 2>&1 | filter_perf_output
> +  ! base
> +  ! immutable
> +  ! served
> +  ! visible
> +  ! None
> +  $ hg perfcca 2>&1 | filter_perf_output
> +  ! result: <mercurial.scmutil.casecollisionauditor object at 0x*> (glob)
> +  $ hg perfchangeset 2 2>&1 | filter_perf_output
> +  $ hg perfctxfiles 2 2>&1 | filter_perf_output
> +  $ hg perfdiffwd 2>&1 | filter_perf_output
> +  ! diffopts: none
> +  ! diffopts: -w
> +  ! diffopts: -b
> +  ! diffopts: -B
> +  ! diffopts: -wB
> +  $ hg perfdirfoldmap 2>&1 | filter_perf_output
> +  $ hg perfdirs 2>&1 | filter_perf_output
> +  $ hg perfdirstate 2>&1 | filter_perf_output
> +  $ hg perfdirstatedirs 2>&1 | filter_perf_output
> +  $ hg perfdirstatefoldmap 2>&1 | filter_perf_output
> +  $ hg perfdirstatewrite 2>&1 | filter_perf_output
> +  $ hg perffncacheencode 2>&1 | filter_perf_output
> +  $ hg perffncacheload 2>&1 | filter_perf_output
> +  $ hg perffncachewrite 2>&1 | filter_perf_output
> +  transaction abort!
> +  rollback completed
> +  $ hg perfheads 2>&1 | filter_perf_output
> +  $ hg perfindex 2>&1 | filter_perf_output
> +  $ hg perfloadmarkers 2>&1 | filter_perf_output
> +  $ hg perflog 2>&1 | filter_perf_output
> +  $ hg perflookup 2 2>&1 | filter_perf_output
> +  ! result: 20
> +  $ hg perfmanifest 2 2>&1 | filter_perf_output
> +  $ hg perfmergecalculate -r 3 2>&1 | filter_perf_output
> +  $ hg perfmoonwalk 2>&1 | filter_perf_output
> +  $ hg perfnodelookup 2 2>&1 | filter_perf_output
> +  $ hg perfpathcopies 1 2 2>&1 | filter_perf_output
> +  $ hg perfrawfiles 2 2>&1 | filter_perf_output
> +  $ hg perfrevlog .hg/store/data/a.i 2>&1 | filter_perf_output
> +  $ hg perfrevrange 2>&1 | filter_perf_output
> +  $ hg perfrevset 'all()' 2>&1 | filter_perf_output
> +  $ hg perfstartup 2>&1 | filter_perf_output
> +  $ hg perfstatus 2>&1 | filter_perf_output
> +  $ hg perftags 2>&1 | filter_perf_output
> +  ! result: 1
> +  $ hg perftemplating 2>&1 | filter_perf_output
> +  $ hg perfvolatilesets 2>&1 | filter_perf_output
> +  ! bumped
> +  ! divergent
> +  ! extinct
> +  ! obsolete
> +  ! suspended
> +  ! unstable
> +  ! base
> +  ! immutable
> +  ! served
> +  ! visible
> +  $ hg perfwalk 2>&1 | filter_perf_output
> +  ! result: 1
> +
> +perf parents needs a bigger repo, use the main repo
> +  $ hg perfparents \
> +  > --config extensions.perfstatusext=$CONTRIBDIR/perf.py \
> +  > -R $TESTDIR/.. 2>&1 |grep -v 'obsolete feature' | filter_perf_output
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list