test-clone-uncompressed.t
332 lines
| 9.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-clone-uncompressed.t
|
r27897 | #require serve | ||
|
r35781 | #testcases stream-legacy stream-bundle2 | ||
#if stream-bundle2 | ||||
$ cat << EOF >> $HGRCPATH | ||||
> [experimental] | ||||
> bundle2.stream = yes | ||||
> EOF | ||||
#endif | ||||
|
r28389 | Initialize repository | ||
the status call is to check for issue5130 | ||||
|
r27897 | $ hg init server | ||
$ cd server | ||||
$ touch foo | ||||
$ hg -q commit -A -m initial | ||||
>>> for i in range(1024): | ||||
... with open(str(i), 'wb') as fh: | ||||
... fh.write(str(i)) | ||||
$ hg -q commit -A -m 'add a lot of files' | ||||
|
r28389 | $ hg st | ||
|
r27897 | $ hg serve -p $HGPORT -d --pid-file=hg.pid | ||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ cd .. | ||||
Basic clone | ||||
|
r35781 | #if stream-legacy | ||
|
r34394 | $ hg clone --stream -U http://localhost:$HGPORT clone1 | ||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | ||||
searching for changes | ||||
no changes found | ||||
|
r35781 | #endif | ||
#if stream-bundle2 | ||||
$ hg clone --stream -U http://localhost:$HGPORT clone1 | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
#endif | ||||
|
r34394 | |||
--uncompressed is an alias to --stream | ||||
|
r35781 | #if stream-legacy | ||
|
r34394 | $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | ||
|
r27897 | streaming all changes | ||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | ||||
searching for changes | ||||
no changes found | ||||
|
r35781 | #endif | ||
#if stream-bundle2 | ||||
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
#endif | ||||
|
r27897 | |||
Clone with background file closing enabled | ||||
|
r35781 | #if stream-legacy | ||
|
r34394 | $ hg --debug --config worker.backgroundclose=true --config worker.backgroundcloseminfilecount=1 clone --stream -U http://localhost:$HGPORT clone-background | grep -v adding | ||
|
r27897 | using http://localhost:$HGPORT/ | ||
sending capabilities command | ||||
sending branchmap command | ||||
streaming all changes | ||||
sending stream_out command | ||||
1027 files to transfer, 96.3 KB of data | ||||
starting 4 threads for background file closing | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | ||||
query 1; heads | ||||
sending batch command | ||||
searching for changes | ||||
all remote heads known locally | ||||
no changes found | ||||
sending getbundle command | ||||
bundle2-input-bundle: with-transaction | ||||
bundle2-input-part: "listkeys" (params: 1 mandatory) supported | ||||
|
r34323 | bundle2-input-part: "phase-heads" supported | ||
bundle2-input-part: total payload size 24 | ||||
|
r27897 | bundle2-input-bundle: 1 parts total | ||
checking for updated bookmarks | ||||
|
r35781 | #endif | ||
#if stream-bundle2 | ||||
$ hg --debug --config worker.backgroundclose=true --config worker.backgroundcloseminfilecount=1 clone --stream -U http://localhost:$HGPORT clone-background | grep -v adding | ||||
using http://localhost:$HGPORT/ | ||||
sending capabilities command | ||||
query 1; heads | ||||
sending batch command | ||||
streaming all changes | ||||
sending getbundle command | ||||
bundle2-input-bundle: with-transaction | ||||
bundle2-input-part: "stream" (params: 4 mandatory) supported | ||||
applying stream bundle | ||||
1027 files to transfer, 96.3 KB of data | ||||
starting 4 threads for background file closing | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
bundle2-input-part: total payload size 110887 | ||||
bundle2-input-part: "listkeys" (params: 1 mandatory) supported | ||||
bundle2-input-part: "phase-heads" supported | ||||
bundle2-input-part: total payload size 24 | ||||
bundle2-input-bundle: 2 parts total | ||||
checking for updated bookmarks | ||||
#endif | ||||
|
r28517 | |||
|
r32744 | Cannot stream clone when there are secret changesets | ||
$ hg -R server phase --force --secret -r tip | ||||
|
r34394 | $ hg clone --stream -U http://localhost:$HGPORT secret-denied | ||
|
r32744 | warning: stream clone requested but server has them disabled | ||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets 96ee1d7354c4 | ||
|
r32744 | |||
$ killdaemons.py | ||||
Streaming of secrets can be overridden by server config | ||||
$ cd server | ||||
|
r34484 | $ hg serve --config server.uncompressedallowsecret=true -p $HGPORT -d --pid-file=hg.pid | ||
|
r32744 | $ cat hg.pid > $DAEMON_PIDS | ||
$ cd .. | ||||
|
r35781 | #if stream-legacy | ||
|
r34394 | $ hg clone --stream -U http://localhost:$HGPORT secret-allowed | ||
|
r32744 | streaming all changes | ||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | ||||
searching for changes | ||||
no changes found | ||||
|
r35781 | #endif | ||
#if stream-bundle2 | ||||
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
#endif | ||||
|
r32744 | |||
$ killdaemons.py | ||||
Verify interaction between preferuncompressed and secret presence | ||||
$ cd server | ||||
|
r34484 | $ hg serve --config server.preferuncompressed=true -p $HGPORT -d --pid-file=hg.pid | ||
|
r32744 | $ cat hg.pid > $DAEMON_PIDS | ||
$ cd .. | ||||
$ hg clone -U http://localhost:$HGPORT preferuncompressed-secret | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets 96ee1d7354c4 | ||
|
r32744 | |||
$ killdaemons.py | ||||
Clone not allowed when full bundles disabled and can't serve secrets | ||||
$ cd server | ||||
|
r34484 | $ hg serve --config server.disablefullbundle=true -p $HGPORT -d --pid-file=hg.pid | ||
|
r32744 | $ cat hg.pid > $DAEMON_PIDS | ||
$ cd .. | ||||
|
r34394 | $ hg clone --stream http://localhost:$HGPORT secret-full-disabled | ||
|
r32744 | warning: stream clone requested but server has them disabled | ||
requesting all changes | ||||
remote: abort: server has pull-based clones disabled | ||||
abort: pull failed on remote | ||||
(remove --pull if specified or upgrade Mercurial) | ||||
[255] | ||||
Local stream clone with secrets involved | ||||
(This is just a test over behavior: if you have access to the repo's files, | ||||
there is no security so it isn't important to prevent a clone here.) | ||||
|
r34394 | $ hg clone -U --stream server local-secret | ||
|
r32744 | warning: stream clone requested but server has them disabled | ||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets 96ee1d7354c4 | ||
|
r28517 | |||
Stream clone while repo is changing: | ||||
$ mkdir changing | ||||
$ cd changing | ||||
extension for delaying the server process so we reliably can modify the repo | ||||
while cloning | ||||
$ cat > delayer.py <<EOF | ||||
> import time | ||||
|
r31252 | > from mercurial import extensions, vfs | ||
|
r28517 | > def __call__(orig, self, path, *args, **kwargs): | ||
> if path == 'data/f1.i': | ||||
> time.sleep(2) | ||||
> return orig(self, path, *args, **kwargs) | ||||
|
r31252 | > extensions.wrapfunction(vfs.vfs, '__call__', __call__) | ||
|
r28517 | > EOF | ||
prepare repo with small and big file to cover both code paths in emitrevlogdata | ||||
$ hg init repo | ||||
$ touch repo/f1 | ||||
$ $TESTDIR/seq.py 50000 > repo/f2 | ||||
$ hg -R repo ci -Aqm "0" | ||||
|
r34484 | $ hg serve -R repo -p $HGPORT1 -d --pid-file=hg.pid --config extensions.delayer=delayer.py | ||
|
r28517 | $ cat hg.pid >> $DAEMON_PIDS | ||
clone while modifying the repo between stating file with write lock and | ||||
actually serving file content | ||||
|
r34394 | $ hg clone -q --stream -U http://localhost:$HGPORT1 clone & | ||
|
r28517 | $ sleep 1 | ||
$ echo >> repo/f1 | ||||
$ echo >> repo/f2 | ||||
$ hg -R repo ci -m "1" | ||||
$ wait | ||||
$ hg -R clone id | ||||
|
r28518 | 000000000000 | ||
|
r35765 | $ cd .. | ||
Stream repository with bookmarks | ||||
-------------------------------- | ||||
(revert introduction of secret changeset) | ||||
$ hg -R server phase --draft 'secret()' | ||||
add a bookmark | ||||
$ hg -R server bookmark -r tip some-bookmark | ||||
clone it | ||||
|
r35781 | #if stream-legacy | ||
|
r35765 | $ hg clone --stream http://localhost:$HGPORT with-bookmarks | ||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*) (glob) | ||||
searching for changes | ||||
no changes found | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r35781 | #endif | ||
#if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT with-bookmarks | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
|
r35765 | $ hg -R with-bookmarks bookmarks | ||
some-bookmark 1:c17445101a72 | ||||
|
r35782 | |||
Stream repository with phases | ||||
----------------------------- | ||||
Clone as publishing | ||||
$ hg -R server phase -r 'all()' | ||||
0: draft | ||||
1: draft | ||||
#if stream-legacy | ||||
$ hg clone --stream http://localhost:$HGPORT phase-publish | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*) (glob) | ||||
searching for changes | ||||
no changes found | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
#if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT phase-publish | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
$ hg -R phase-publish phase -r 'all()' | ||||
0: public | ||||
1: public | ||||
Clone as non publishing | ||||
$ cat << EOF >> server/.hg/hgrc | ||||
> [phases] | ||||
> publish = False | ||||
> EOF | ||||
$ killdaemons.py | ||||
$ hg -R server serve -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
#if stream-legacy | ||||
$ hg clone --stream http://localhost:$HGPORT phase-no-publish | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (*) (glob) | ||||
searching for changes | ||||
no changes found | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R phase-no-publish phase -r 'all()' | ||||
0: public | ||||
1: public | ||||
#endif | ||||
#if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT phase-no-publish | ||||
streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | ||||
transferred 96.3 KB in * seconds (* */sec) (glob) | ||||
updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R phase-no-publish phase -r 'all()' | ||||
0: public | ||||
1: public | ||||
#endif | ||||
$ killdaemons.py | ||||