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

r37360:4e6a6d0d default
r37669:950294e2 default
Show More
test-basic.t
103 lines | 1.8 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: unify test-basic
r11742 Create a repository:
Gregory Szorc
tests: conditionalize tests based on presence of custom extensions...
r37360 #if no-extraextensions
Matt Mackall
config: make repo optional again
r20608 $ hg config
Pierre-Yves David
devel: rename 'all' to 'all-warnings' (BC)...
r25290 devel.all-warnings=true
devel: activate default-date in tests...
r32410 devel.default-date=0 0
FUJIWARA Katsunori
tests: add extra output for fsmonitor at showconfig
r33426 extensions.fsmonitor= (fsmonitor !)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 largefiles.usercache=$TESTTMP/.cache/largefiles
lfs.usercache=$TESTTMP/.cache/lfs
Matt Mackall
config: make repo optional again
r20608 ui.slash=True
ui.interactive=False
FUJIWARA Katsunori
filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety...
r21918 ui.mergemarkers=detailed
Yuya Nishihara
ui: separate option to show prompt echo, enabled only in tests (issue4417)...
r23053 ui.promptecho=True
Jun Wu
runtests: set web.address to localhost...
r31009 web.address=localhost
Jun Wu
runtests: always set web.ipv6...
r31010 web\.ipv6=(?:True|False) (re)
Gregory Szorc
hgweb: allow defining Server response header for HTTP server...
r37027 web.server-header=testing stub value
Gregory Szorc
tests: conditionalize tests based on presence of custom extensions...
r37360 #endif
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Matt Mackall
tests: unify test-basic
r11742 $ cd t
Bryan O'Sullivan
stdio: add Linux-specific tests for error checking
r31964 Prepare a changeset:
Matt Mackall
tests: unify test-basic
r11742
$ echo a > a
$ hg add a
Bryan O'Sullivan
stdio: add Linux-specific tests for error checking
r31964
$ hg status
A a
Writes to stdio succeed and fail appropriately
#if devfull
$ hg status 2>/dev/full
A a
$ hg status >/dev/full
abort: No space left on device
[255]
Saurabh Singh
test-basic: make test compatible with chg...
r34449 #endif
Bryan O'Sullivan
stdio: add Linux-specific tests for error checking
r31964
Gregory Szorc
dispatch: handle IOError when writing to stderr...
r35671 #if devfull
Saurabh Singh
test-basic: make test compatible with chg...
r34449 $ hg status >/dev/full 2>&1
[255]
$ hg status ENOENT 2>/dev/full
[255]
#endif
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m test
Matt Mackall
tests: unify test-basic
r11742
This command is ancient:
$ hg history
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:acb14030fe0a
Matt Mackall
tests: unify test-basic
r11742 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Matt Mackall
tests: unify test-basic
r11742 summary: test
Mark Drago
commands.update() now works properly with a revision of 0...
r13568 Verify that updating to revision 0 via commands.update() works properly
$ cat <<EOF > update_to_rev0.py
> from mercurial import ui, hg, commands
Yuya Nishihara
ui: factor out ui.load() to create a ui without loading configs (API)...
r30559 > myui = ui.ui.load()
Yuya Nishihara
py3: make test-basic.t pass on Python 3
r36656 > repo = hg.repository(myui, path=b'.')
Mark Drago
commands.update() now works properly with a revision of 0...
r13568 > commands.update(myui, repo, rev=0)
> EOF
$ hg up null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON ./update_to_rev0.py
Mark Drago
commands.update() now works properly with a revision of 0...
r13568 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg identify -n
0
Mads Kiilerich
check-code: fix check for trailing whitespace on empty lines...
r17346
Mark Drago
commands.update() now works properly with a revision of 0...
r13568
Matt Mackall
tests: unify test-basic
r11742 Poke around at hashes:
$ hg manifest --debug
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a
$ hg cat a
a
Verify should succeed:
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
1 files, 1 changesets, 1 total revisions
Yuya Nishihara
templatekw: add {reporoot} keyword...
r36261 Repository root:
$ hg root
$TESTTMP/t
$ hg log -l1 -T '{reporoot}\n'
$TESTTMP/t
Matt Mackall
tests: unify test-basic
r11742 At the end...
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..