##// 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:

r37437:a84b6eeb default
r37669:950294e2 default
Show More
test-static-http.t
279 lines | 7.9 KiB | text/troff | Tads3Lexer
/ tests / test-static-http.t
Gregory Szorc
tests: disable test-static-http.t with simple store...
r37437 #require killdaemons no-reposimplestore
Matt Mackall
tests: unify test-static-http
r12491
Adrian Buehlmann
test-static-http: partially adapt for Windows
r17020 $ hg clone http://localhost:$HGPORT/ copy
abort: * (glob)
[255]
Matt Mackall
tests: unify test-static-http
r12491 $ test -d copy
[1]
This server doesn't do range requests so it's basically only good for
one pull
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 $ $PYTHON "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid \
> --logfile server.log
Patrick Mezard
test-static-http.t: enable on Windows...
r17538 $ cat dumb.pid >> $DAEMON_PIDS
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init remote
Matt Mackall
tests: unify test-static-http
r12491 $ cd remote
$ echo foo > bar
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 $ echo c2 > '.dotfile with spaces'
$ hg add
adding .dotfile with spaces
adding bar
Matt Mackall
tests: unify test-static-http
r12491 $ hg commit -m"test"
$ hg tip
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 changeset: 0:02770d679fb8
Matt Mackall
tests: unify test-static-http
r12491 tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: test
$ cd ..
$ hg clone static-http://localhost:$HGPORT/remote local
requesting all changes
adding changesets
adding manifests
adding file changes
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 added 1 changesets with 2 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 02770d679fb8
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491 $ cd local
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files, 1 changesets, 2 total revisions
Matt Mackall
tests: unify test-static-http
r12491 $ cat bar
foo
$ cd ../remote
$ echo baz > quux
$ hg commit -A -mtest2
adding quux
check for HTTP opener failures when cachefile does not exist
jfh
move tags.cache and branchheads.cache to a collected cache folder .hg/cache/...
r13272 $ rm .hg/cache/*
Matt Mackall
tests: unify test-static-http
r12491 $ cd ../local
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> [hooks]
> changegroup = sh -c "printenv.py changegroup"
> EOF
Matt Mackall
tests: unify test-static-http
r12491 $ hg pull
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 pulling from static-http://localhost:$HGPORT/remote
Matt Mackall
tests: unify test-static-http
r12491 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 4ac2e3648604
Pierre-Yves David
hook: add hook name information to external hook...
r31747 changegroup hook: HG_HOOKNAME=changegroup HG_HOOKTYPE=changegroup HG_NODE=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_NODE_LAST=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_URL=http://localhost:$HGPORT/remote
Matt Mackall
tests: unify test-static-http
r12491 (run 'hg update' to get a working copy)
trying to push
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo more foo >> bar
$ hg commit -m"test"
$ hg push
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 pushing to static-http://localhost:$HGPORT/remote
Sune Foldager
peer: introduce canpush and improve error message
r17193 abort: destination does not support push
Matt Mackall
tests: unify test-static-http
r12491 [255]
trying clone -r
$ cd ..
timeless@mozdev.org
spelling: doesn't/does not
r17486 $ hg clone -r doesnotexist static-http://localhost:$HGPORT/remote local0
abort: unknown revision 'doesnotexist'!
Matt Mackall
tests: unify test-static-http
r12491 [255]
$ hg clone -r 0 static-http://localhost:$HGPORT/remote local0
adding changesets
adding manifests
adding file changes
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 added 1 changesets with 2 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 02770d679fb8
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491
Matt Mackall
tests: fixup issue markers to make check-commit happy
r22183 test with "/" URI (issue747) and subrepo
Matt Mackall
tests: unify test-static-http
r12491
$ hg init
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg init sub
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 $ touch sub/test
$ hg -R sub commit -A -m "test"
adding test
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg -R sub tag not-empty
$ echo sub=sub > .hgsub
Matt Mackall
tests: unify test-static-http
r12491 $ echo a > a
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg add a .hgsub
$ hg -q ci -ma
Matt Mackall
tests: unify test-static-http
r12491 $ hg clone static-http://localhost:$HGPORT/ local2
requesting all changes
adding changesets
adding manifests
adding file changes
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 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 a9ebfbe8e587
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Martin Geisler
subrepo: create subrepos using clone instead of pull...
r14281 cloning subrepo sub from static-http://localhost:$HGPORT/sub
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 requesting all changes
adding changesets
adding manifests
adding file changes
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 added 2 changesets with 2 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets be090ea66256:322ea90975df
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491 $ cd local2
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 3 files, 1 changesets, 3 total revisions
Matt Harbison
verify: check the subrepository references in .hgsubstate...
r25591 checking subrepo links
Matt Mackall
tests: unify test-static-http
r12491 $ cat a
a
$ hg paths
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 default = static-http://localhost:$HGPORT/
Matt Mackall
tests: unify test-static-http
r12491
test with empty repo (issue965)
$ cd ..
$ hg init remotempty
$ hg clone static-http://localhost:$HGPORT/remotempty local3
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd local3
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
0 files, 0 changesets, 0 total revisions
$ hg paths
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 default = static-http://localhost:$HGPORT/remotempty
Matt Mackall
tests: unify test-static-http
r12491
test with non-repo
$ cd ..
$ mkdir notarepo
$ hg clone static-http://localhost:$HGPORT/notarepo local3
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 abort: 'http://localhost:$HGPORT/notarepo' does not appear to be an hg repository!
Matt Mackall
tests: unify test-static-http
r12491 [255]
Gregory Szorc
test: add tests for branches and tags with static http repo (issue5613)...
r33604
Clone with tags and branches works
$ hg init remote-with-names
$ cd remote-with-names
$ echo 0 > foo
$ hg -q commit -A -m initial
$ echo 1 > foo
$ hg commit -m 'commit 1'
$ hg -q up 0
$ hg branch mybranch
marked working directory as branch mybranch
(branches are permanent and global, did you want a bookmark?)
$ echo 2 > foo
$ hg commit -m 'commit 2 (mybranch)'
$ hg tag -r 1 'default-tag'
$ hg tag -r 2 'branch-tag'
$ cd ..
$ hg clone static-http://localhost:$HGPORT/remote-with-names local-with-names
requesting all changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 5 changes to 2 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 68986213bd44:0c325bd2b5a7
Gregory Szorc
test: add tests for branches and tags with static http repo (issue5613)...
r33604 updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Clone a specific branch works
Gregory Szorc
statichttprepo: implement wlock() (issue5613)...
r33605 $ hg clone -r mybranch static-http://localhost:$HGPORT/remote-with-names local-with-names-branch
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 68986213bd44:0c325bd2b5a7
Gregory Szorc
statichttprepo: implement wlock() (issue5613)...
r33605 updating to branch mybranch
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Gregory Szorc
test: add tests for branches and tags with static http repo (issue5613)...
r33604
Clone a specific tag works
Gregory Szorc
statichttprepo: implement wlock() (issue5613)...
r33605 $ hg clone -r default-tag static-http://localhost:$HGPORT/remote-with-names local-with-names-tag
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 68986213bd44:4ee3fcef1c80
Gregory Szorc
statichttprepo: implement wlock() (issue5613)...
r33605 updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Gregory Szorc
test: add tests for branches and tags with static http repo (issue5613)...
r33604
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926
List of files accessed over HTTP:
$ cat server.log | sed -n -e 's|.*GET \(/[^ ]*\).*|\1|p' | sort -u
/.hg/bookmarks
/.hg/bookmarks.current
/.hg/cache/hgtagsfnodes1
Boris Feld
revbranchcache: advertise and use 'rbc' exchange capability...
r36986 /.hg/cache/rbc-names-v1
/.hg/cache/rbc-revs-v1
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 /.hg/requires
/.hg/store/00changelog.i
/.hg/store/00manifest.i
/.hg/store/data/%7E2ehgsub.i
/.hg/store/data/%7E2ehgsubstate.i
/.hg/store/data/a.i
/notarepo/.hg/00changelog.i
/notarepo/.hg/requires
/remote-with-names/.hg/bookmarks
/remote-with-names/.hg/bookmarks.current
/remote-with-names/.hg/cache/branch2-served
/remote-with-names/.hg/cache/hgtagsfnodes1
Boris Feld
revbranchcache: advertise and use 'rbc' exchange capability...
r36986 /remote-with-names/.hg/cache/rbc-names-v1
/remote-with-names/.hg/cache/rbc-revs-v1
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 /remote-with-names/.hg/cache/tags2-served
/remote-with-names/.hg/localtags
/remote-with-names/.hg/requires
/remote-with-names/.hg/store/00changelog.i
/remote-with-names/.hg/store/00manifest.i
/remote-with-names/.hg/store/data/%7E2ehgtags.i
/remote-with-names/.hg/store/data/foo.i
/remote/.hg/bookmarks
/remote/.hg/bookmarks.current
/remote/.hg/cache/branch2-base
/remote/.hg/cache/branch2-immutable
/remote/.hg/cache/branch2-served
/remote/.hg/cache/hgtagsfnodes1
/remote/.hg/cache/rbc-names-v1
Boris Feld
revbranchcache: advertise and use 'rbc' exchange capability...
r36986 /remote/.hg/cache/rbc-revs-v1
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 /remote/.hg/cache/tags2-served
/remote/.hg/localtags
/remote/.hg/requires
/remote/.hg/store/00changelog.i
/remote/.hg/store/00manifest.i
/remote/.hg/store/data/%7E2edotfile%20with%20spaces.i
/remote/.hg/store/data/%7E2ehgtags.i
/remote/.hg/store/data/bar.i
/remote/.hg/store/data/quux.i
/remotempty/.hg/bookmarks
/remotempty/.hg/bookmarks.current
/remotempty/.hg/requires
/remotempty/.hg/store/00changelog.i
/remotempty/.hg/store/00manifest.i
/sub/.hg/bookmarks
/sub/.hg/bookmarks.current
/sub/.hg/cache/hgtagsfnodes1
Boris Feld
revbranchcache: advertise and use 'rbc' exchange capability...
r36986 /sub/.hg/cache/rbc-names-v1
/sub/.hg/cache/rbc-revs-v1
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 /sub/.hg/requires
/sub/.hg/store/00changelog.i
/sub/.hg/store/00manifest.i
/sub/.hg/store/data/%7E2ehgtags.i
/sub/.hg/store/data/test.i