##// END OF EJS Templates
httppeer: implement command executor for version 2 peer...
httppeer: implement command executor for version 2 peer Now that we have a new API for issuing commands which is compatible with wire protocol version 2, we can start using it with wire protocol version 2. This commit replaces our hacky implementation of _call() with something a bit more robust based on the new command executor interface. We now have proper support for issuing multiple commands per HTTP request. Each HTTP request maintains its own client reactor. The implementation is similar to the one in the legacy wire protocol. We use a ThreadPoolExecutor for spinning up a thread to read the HTTP response in the background. This allows responses to resolve in any order. While not implemented on the server yet, a client could use concurrent.futures.as_completed() with a collection of futures and handle responses as they arrive from the server. The return value from issued commands is still a simple list of raw or decoded CBOR data. This is still super hacky. We will want a rich data type for representing command responses. But at least this commit gets us one step closer to a proper peer implementation. Differential Revision: https://phab.mercurial-scm.org/D3297

File last commit:

r37364:45a47991 default
r37669:950294e2 default
Show More
test-mq-pull-from-bundle.t
139 lines | 2.8 KiB | text/troff | Tads3Lexer
/ tests / test-mq-pull-from-bundle.t
Gregory Szorc
tests: disallow using simple store repo with bundlerepo...
r37364 #require repobundlerepo
Adrian Buehlmann
tests: unify some of test-mq*
r12324 $ cat <<EOF >> $HGRCPATH
> [extensions]
> mq=
> [alias]
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 > tlog = log --template "{rev}: {node|short} {desc}\\n"
Adrian Buehlmann
tests: unify some of test-mq*
r12324 > theads = heads --template "{rev}: {desc}\\n"
> tincoming = incoming --template "{rev}: {desc}\\n"
> EOF
Setup main:
$ hg init base
$ cd base
$ echo "One" > one
$ hg add
adding one
$ hg ci -m "main: one added"
$ echo "++" >> one
$ hg ci -m "main: one updated"
Bundle main:
$ hg bundle --base=null ../main.hg
2 changesets found
$ cd ..
Incoming to fresh repo:
$ hg init fresh
$ hg -R fresh tincoming main.hg
comparing with main.hg
0: main: one added
1: main: one updated
Klaus Koch
bundlerepository: get rid of temporary bundle files (issue2478)...
r12962 $ test -f ./fresh/.hg/hg-bundle* && echo 'temp. bundle file remained' || true
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg -R fresh tincoming bundle:fresh+main.hg
comparing with bundle:fresh+main.hg
0: main: one added
1: main: one updated
Setup queue:
$ cd base
$ hg qinit -c
$ hg qnew -m "patch: two added" two.patch
$ echo two > two
$ hg add
adding two
$ hg qrefresh
$ hg qcommit -m "queue: two.patch added"
$ hg qpop -a
popping two.patch
patch queue now empty
Bundle queue:
$ hg -R .hg/patches bundle --base=null ../queue.hgq
1 changesets found
Klaus Koch
bundlerepository: get rid of temporary bundle files (issue2478)...
r12962 $ test -f ./fresh/.hg/hg-bundle* && echo 'temp. bundle file remained' || true
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ cd ..
Clone base:
$ hg clone base copy
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd copy
$ hg qinit -c
Incoming queue bundle:
$ hg -R .hg/patches tincoming ../queue.hgq
comparing with ../queue.hgq
0: queue: two.patch added
Klaus Koch
bundlerepository: get rid of temporary bundle files (issue2478)...
r12962 $ test -f .hg/hg-bundle* && echo 'temp. bundle file remained' || true
Adrian Buehlmann
tests: unify some of test-mq*
r12324
Pull queue bundle:
$ hg -R .hg/patches pull --update ../queue.hgq
pulling from ../queue.hgq
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets d7553909353d
Adrian Buehlmann
tests: unify some of test-mq*
r12324 merging series
2 files updated, 1 files merged, 0 files removed, 0 files unresolved
Klaus Koch
bundlerepository: get rid of temporary bundle files (issue2478)...
r12962 $ test -f .hg/patches/hg-bundle* && echo 'temp. bundle file remained' || true
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg -R .hg/patches theads
0: queue: two.patch added
$ hg -R .hg/patches tlog
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 0: d7553909353d queue: two.patch added
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg qseries
two.patch
$ cd ..
Clone base again:
$ hg clone base copy2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd copy2
$ hg qinit -c
Unbundle queue bundle:
$ hg -R .hg/patches unbundle --update ../queue.hgq
adding changesets
adding manifests
adding file changes
added 1 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets d7553909353d
Adrian Buehlmann
tests: unify some of test-mq*
r12324 merging series
2 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ hg -R .hg/patches theads
0: queue: two.patch added
$ hg -R .hg/patches tlog
Phil Cohen
tests: add commit hashes to log commands in rebase tests...
r35386 0: d7553909353d queue: two.patch added
Adrian Buehlmann
tests: unify some of test-mq*
r12324
$ hg qseries
two.patch
$ cd ..