[PATCH 1 of 2 stable] tests: add test of stream clone of repo that is changing
Mads Kiilerich
mads at kiilerich.com
Sun Mar 13 01:29:30 UTC 2016
# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1457832526 -3600
# Sun Mar 13 02:28:46 2016 +0100
# Branch stable
# Node ID 95163ababeb86d6ca889e5e57a0c4eadb77b53d8
# Parent 48e1a641765d541a4bdc3f36b69cb3f5974040af
tests: add test of stream clone of repo that is changing
This reveals an error introduced by 9fea6b38a8da.
diff --git a/tests/test-clone-uncompressed.t b/tests/test-clone-uncompressed.t
--- a/tests/test-clone-uncompressed.t
+++ b/tests/test-clone-uncompressed.t
@@ -50,3 +50,48 @@ Clone with background file closing enabl
preparing listkeys for "phases"
sending listkeys command
received listkey for "phases": 58 bytes
+
+
+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
+ > from mercurial import extensions, scmutil
+ > def __call__(orig, self, path, *args, **kwargs):
+ > if path == 'data/f1.i':
+ > time.sleep(2)
+ > return orig(self, path, *args, **kwargs)
+ > extensions.wrapfunction(scmutil.vfs, '__call__', __call__)
+ > 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"
+ $ hg -R repo serve -p $HGPORT1 -d --pid-file=hg.pid --config extensions.delayer=delayer.py
+ $ cat hg.pid >> $DAEMON_PIDS
+
+clone while modifying the repo between stating file with write lock and
+actually serving file content
+
+ $ hg clone -q --uncompressed -U http://localhost:$HGPORT1 clone &
+ $ sleep 1
+ $ echo >> repo/f1
+ $ echo >> repo/f2
+ $ hg -R repo ci -m "1"
+ $ wait
+ abort: unexpected response from remote server:
+ '*\n' (glob)
+ $ hg -R clone id
+ abort: repository clone not found!
+ [255]
+
+the current clone error is a regression from 9fea6b38a8da.
More information about the Mercurial-devel
mailing list