##// END OF EJS Templates
wireprotov2: define and implement "manifestdata" command...
wireprotov2: define and implement "manifestdata" command The added command can be used for obtaining manifest data. Given a manifest path and set of manifest nodes, data about manifests can be retrieved. Unlike changeset data, we wish to emit deltas to describe manifest revisions. So the command uses the relatively new API for building delta requests and emitting them. The code calls into deltaparent(), which I'm not very keen of. There's still work to be done in delta generation land so implementation details of storage (e.g. exactly one delta is stored/available) don't creep into higher levels. But we can worry about this later (there is already a TODO on imanifestorage tracking this). On the subject of parent deltas, the server assumes parent revisions exist on the receiving end. This is obviously wrong for shallow clone. I've added TODOs to add a mechanism to the command to allow clients to specify desired behavior. This shouldn't be too difficult to implement. Another big change is that the client must explicitly request manifest nodes to retrieve. This is a major departure from "getbundle," where the server derives relevant manifests as it iterates changesets and sends them automatically. As implemented, the client must transmit each requested node to the server. At 20 bytes per node, we're looking at 2 MB per 100,000 nodes. Plus wire encoding overhead. This isn't ideal for clients with limited upload bandwidth. I plan to address this in the future by allowing alternate mechanisms for defining the revisions to retrieve. One idea is to define a range of changeset revisions whose manifest revisions to retrieve (similar to how "changesetdata" works). We almost certainly want an API to look up an individual manifest by node. And that's where I've chosen to start with the implementation. Again, a theme of this early exchangev2 work is I want to start by building primitives for accessing raw repository data first and see how far we can get with those before we need more complexity. Differential Revision: https://phab.mercurial-scm.org/D4488

File last commit:

r39354:c03c5f52 default
r39673:c7a7c7e8 default
Show More
test-contrib-perf.t
224 lines | 6.5 KiB | text/troff | Tads3Lexer
/ tests / test-contrib-perf.t
timeless
tests: drop require slow in test-contrib-perf...
r27315 #require test-repo
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
Set vars:
timeless
tests: silence test-repo obsolete warning...
r29219 $ . "$TESTDIR/helpers-testrepo.sh"
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 $ CONTRIBDIR="$TESTDIR/../contrib"
timeless
tests: use a single repo for test-contrib-perf
r27309 Prepare repo:
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
timeless
tests: use a single repo for test-contrib-perf
r27309 $ hg init
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
$ 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
timeless
tests: use a single repo for test-contrib-perf
r27309 $ cat >> $HGRCPATH << EOF
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 > [extensions]
> perfstatusext=$CONTRIBDIR/perf.py
timeless
tests: drop require slow in test-contrib-perf...
r27315 > [perf]
> presleep=0
> stub=on
> parentscount=1
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 > 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)
Gregory Szorc
perf: support bdiffing multiple revisions in a single revlog...
r30336 perfbdiff benchmark a bdiff between revisions
perf: add a perfbookmarks command...
r32733 perfbookmarks
benchmark parsing bookmarks from disk to memory
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfbranchmap
benchmark the update of a branchmap
Martijn Pieters
perf: time loading branchmap caches...
r39150 perfbranchmapload
benchmark reading the branchmap
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 perfbundleread
Benchmark reading of bundle files.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfcca (no help text available)
Gregory Szorc
perf: add perfchangegroupchangelog command...
r30018 perfchangegroupchangelog
Benchmark producing a changelog group for a changegroup.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 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)
Jun Wu
perf: add a command to benchmark linelog edits...
r39005 perflinelogedits
(no help text available)
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfloadmarkers
benchmark the time to parse the on-disk markers for a repo
perflog (no help text available)
perflookup (no help text available)
Gregory Szorc
perf: add perflrucachedict command...
r27286 perflrucachedict
(no help text available)
Boris Feld
perf: document the perfmanifest command
r38715 perfmanifest benchmark the time to read a manifest from disk and return a
usable
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 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)
perfphases: add 'perfphases' command...
r32467 perfphases benchmark phasesets computation
Boris Feld
perf: add a perfphasesremote command...
r39180 perfphasesremote
benchmark time needed to analyse phases of the remote server
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfrawfiles (no help text available)
Gregory Szorc
perf: add command for measuring revlog chunk operations...
r30451 perfrevlogchunks
Benchmark operations on revlog chunks.
Gregory Szorc
perf: benchmark command for revlog indexes...
r32532 perfrevlogindex
Benchmark operations against a revlog index.
Gregory Szorc
perf: add perfrevlogrevision...
r27470 perfrevlogrevision
Benchmark obtaining a revlog revision.
Gregory Szorc
perf: rename perfrevlog to perfrevlogrevisions...
r32531 perfrevlogrevisions
Benchmark reading a series of revisions from a revlog.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 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
Boris Feld
perftemplating: allow to specify the template to test...
r38277 test the rendering time of a given template
Augie Fackler
perf: add a perfunidiff command for benchmarking unified diff speed...
r35879 perfunidiff benchmark a unified diff between revisions
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfvolatilesets
benchmark the computation of various volatile set
perfwalk (no help text available)
Simon Farnsworth
contrib: add a write microbenchmark to perf.py...
r30977 perfwrite microbenchmark ui.write
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
timeless
help: use single quotes in use warning
r29974 (use 'hg help -v perfstatusext' to show built-in aliases and global options)
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfaddremove
$ hg perfancestors
$ hg perfancestorset 2
$ hg perfannotate a
Gregory Szorc
perf: add perfbdiff...
r30307 $ hg perfbdiff -c 1
Gregory Szorc
perf: unbust perfbdiff --alldata...
r30426 $ hg perfbdiff --alldata 1
Augie Fackler
perf: add a perfunidiff command for benchmarking unified diff speed...
r35879 $ hg perfunidiff -c 1
$ hg perfunidiff --alldata 1
perf: add a perfbookmarks command...
r32733 $ hg perfbookmarks
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfbranchmap
$ hg perfcca
Gregory Szorc
perf: add perfchangegroupchangelog command...
r30018 $ hg perfchangegroupchangelog
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfchangeset 2
$ hg perfctxfiles 2
$ hg perfdiffwd
$ hg perfdirfoldmap
$ hg perfdirs
$ hg perfdirstate
$ hg perfdirstatedirs
$ hg perfdirstatefoldmap
$ hg perfdirstatewrite
Gregory Szorc
tests: conditionalize tests for various repo features...
r37434 #if repofncache
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perffncacheencode
$ hg perffncacheload
Boris Feld
perffncachewrite: load fncache after lock is acquired...
r38717 $ hg debugrebuildfncache
fncache already up to date
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perffncachewrite
Boris Feld
perffncachewrite: load fncache after lock is acquired...
r38717 $ hg debugrebuildfncache
fncache already up to date
Gregory Szorc
tests: conditionalize tests for various repo features...
r37434 #endif
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfheads
$ hg perfindex
Jun Wu
perf: add a command to benchmark linelog edits...
r39005 $ hg perflinelogedits -n 1
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfloadmarkers
$ hg perflog
$ hg perflookup 2
$ hg perflrucache
$ hg perfmanifest 2
Gregory Szorc
perf: use storage API for resolving manifest node...
r39354 $ hg perfmanifest -m 44fe2c8352bb3a478ffd7d8350bbc721920134d1
$ hg perfmanifest -m 44fe2c8352bb
abort: manifest revision must be integer or full node
[255]
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfmergecalculate -r 3
$ hg perfmoonwalk
$ hg perfnodelookup 2
$ hg perfpathcopies 1 2
$ hg perfrawfiles 2
Gregory Szorc
perf: benchmark command for revlog indexes...
r32532 $ hg perfrevlogindex -c
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #if reporevlogstore
Gregory Szorc
perf: rename perfrevlog to perfrevlogrevisions...
r32531 $ hg perfrevlogrevisions .hg/store/data/a.i
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #endif
Gregory Szorc
perf: add perfrevlogrevision...
r27470 $ hg perfrevlogrevision -m 0
Gregory Szorc
perf: add command for measuring revlog chunk operations...
r30451 $ hg perfrevlogchunks -c
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfrevrange
$ hg perfrevset 'all()'
$ hg perfstartup
$ hg perfstatus
$ hg perftags
$ hg perftemplating
$ hg perfvolatilesets
$ hg perfwalk
$ hg perfparents
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
Boris Feld
perf: add a 'perf.all-timing' option to display more than best time...
r38716 test actual output
------------------
normal output:
$ hg perfheads --config perf.stub=no
! wall * comb * user * sys * (best of *) (glob)
detailed output:
$ hg perfheads --config perf.all-timing=yes --config perf.stub=no
! wall * comb * user * sys * (best of *) (glob)
! wall * comb * user * sys * (max of *) (glob)
! wall * comb * user * sys * (avg of *) (glob)
! wall * comb * user * sys * (median of *) (glob)
FUJIWARA Katsunori
tests: introduce check-perf-code.py to add extra checks on perf.py...
r29570 Check perf.py for historical portability
Boris Feld
perf: add a 'perf.all-timing' option to display more than best time...
r38716 ----------------------------------------
FUJIWARA Katsunori
tests: introduce check-perf-code.py to add extra checks on perf.py...
r29570
$ cd "$TESTDIR/.."
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 $ (testrepohg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py;
> testrepohg files -r tip glob:mercurial/*.c glob:mercurial/*.py) |
FUJIWARA Katsunori
tests: check importing modules in perf.py for historical portability...
r29571 > "$TESTDIR"/check-perf-code.py contrib/perf.py
Boris Feld
perf: add threading capability to perfbdiff...
r35617 contrib/perf.py:\d+: (re)
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 > from mercurial import (
import newer module separately in try clause for early Mercurial
Boris Feld
perf: add a perfphasesremote command...
r39180 contrib/perf.py:\d+: (re)
> from mercurial import (
import newer module separately in try clause for early Mercurial
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 [1]