Show More
@@ -0,0 +1,150 b'' | |||
|
1 | Test stream cloning while a revlog split happens | |
|
2 | ------------------------------------------------ | |
|
3 | ||
|
4 | #testcases stream-bundle2-v2 stream-bundle2-v3 | |
|
5 | ||
|
6 | #if stream-bundle2-v3 | |
|
7 | $ cat << EOF >> $HGRCPATH | |
|
8 | > [experimental] | |
|
9 | > stream-v3 = yes | |
|
10 | > EOF | |
|
11 | #endif | |
|
12 | ||
|
13 | setup a repository for tests | |
|
14 | ---------------------------- | |
|
15 | ||
|
16 | $ cat >> $HGRCPATH << EOF | |
|
17 | > [format] | |
|
18 | > # skip compression to make it easy to trigger a split | |
|
19 | > revlog-compression=none | |
|
20 | > EOF | |
|
21 | ||
|
22 | $ hg init server | |
|
23 | $ cd server | |
|
24 | $ file="some-file" | |
|
25 | $ printf '%20d' '1' > $file | |
|
26 | $ hg commit -Aqma | |
|
27 | $ printf '%1024d' '1' > $file | |
|
28 | $ hg commit -Aqmb | |
|
29 | $ printf '%20d' '1' > $file | |
|
30 | $ hg commit -Aqmc | |
|
31 | ||
|
32 | check the revlog is inline | |
|
33 | ||
|
34 | $ f -s .hg/store/data/some-file* | |
|
35 | .hg/store/data/some-file.i: size=1259 | |
|
36 | $ hg debug-revlog-index some-file | |
|
37 | rev linkrev nodeid p1-nodeid p2-nodeid | |
|
38 | 0 0 ed70cecbc103 000000000000 000000000000 | |
|
39 | 1 1 7241018db64c ed70cecbc103 000000000000 | |
|
40 | 2 2 fa1120531cc1 7241018db64c 000000000000 | |
|
41 | $ cd .. | |
|
42 | ||
|
43 | setup synchronisation file | |
|
44 | ||
|
45 | $ HG_TEST_STREAM_WALKED_FILE_1="$TESTTMP/sync_file_walked_1" | |
|
46 | $ export HG_TEST_STREAM_WALKED_FILE_1 | |
|
47 | $ HG_TEST_STREAM_WALKED_FILE_2="$TESTTMP/sync_file_walked_2" | |
|
48 | $ export HG_TEST_STREAM_WALKED_FILE_2 | |
|
49 | $ HG_TEST_STREAM_WALKED_FILE_3="$TESTTMP/sync_file_walked_3" | |
|
50 | $ export HG_TEST_STREAM_WALKED_FILE_3 | |
|
51 | ||
|
52 | ||
|
53 | Test stream-clone raced by a revlog-split | |
|
54 | ========================================= | |
|
55 | ||
|
56 | Test stream-clone where the file is split right after the lock section is done | |
|
57 | ||
|
58 | Start the server | |
|
59 | ||
|
60 | $ hg serve -R server \ | |
|
61 | > -p $HGPORT1 -d --error errors.log --pid-file=hg.pid \ | |
|
62 | > --config extensions.stream_steps="$RUNTESTDIR/testlib/ext-stream-clone-steps.py" | |
|
63 | $ cat hg.pid >> $DAEMON_PIDS | |
|
64 | ||
|
65 | Start a client doing a streaming clone | |
|
66 | ||
|
67 | $ (hg clone -q --stream -U http://localhost:$HGPORT1 clone-while-split > client.log 2>&1; touch "$HG_TEST_STREAM_WALKED_FILE_3") & | |
|
68 | ||
|
69 | Wait for the server to be done collecting data | |
|
70 | ||
|
71 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 | |
|
72 | ||
|
73 | trigger a split | |
|
74 | ||
|
75 | $ dd if=/dev/zero of=server/$file bs=1k count=128 > /dev/null 2>&1 | |
|
76 | $ hg -R server ci -m "triggering a split" --config ui.timeout.warn=-1 | |
|
77 | ||
|
78 | unlock the stream generation | |
|
79 | ||
|
80 | $ touch $HG_TEST_STREAM_WALKED_FILE_2 | |
|
81 | ||
|
82 | wait for the client to be done cloning. | |
|
83 | ||
|
84 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3 | |
|
85 | ||
|
86 | Check everything is fine | |
|
87 | ||
|
88 | $ cat client.log | |
|
89 | remote: abort: unexpected error: clone could only read 256 bytes from data/some-file.i, but expected 1259 bytes (known-bad-output !) | |
|
90 | abort: pull failed on remote (known-bad-output !) | |
|
91 | $ tail -2 errors.log | |
|
92 | mercurial.error.Abort: clone could only read 256 bytes from data/some-file.i, but expected 1259 bytes (known-bad-output !) | |
|
93 | (known-bad-output !) | |
|
94 | $ hg -R clone-while-split verify | |
|
95 | checking changesets (missing-correct-output !) | |
|
96 | checking manifests (missing-correct-output !) | |
|
97 | crosschecking files in changesets and manifests (missing-correct-output !) | |
|
98 | checking files (missing-correct-output !) | |
|
99 | checking dirstate (missing-correct-output !) | |
|
100 | checked 3 changesets with 3 changes to 1 files (missing-correct-output !) | |
|
101 | abort: repository clone-while-split not found (known-bad-output !) | |
|
102 | [255] | |
|
103 | $ hg -R clone-while-split tip | |
|
104 | changeset: 2:dbd9854c38a6 (missing-correct-output !) | |
|
105 | tag: tip (missing-correct-output !) | |
|
106 | user: test (missing-correct-output !) | |
|
107 | date: Thu Jan 01 00:00:00 1970 +0000 (missing-correct-output !) | |
|
108 | summary: c (missing-correct-output !) | |
|
109 | (missing-correct-output !) | |
|
110 | abort: repository clone-while-split not found (known-bad-output !) | |
|
111 | [255] | |
|
112 | $ hg -R clone-while-split debug-revlog-index some-file | |
|
113 | rev linkrev nodeid p1-nodeid p2-nodeid (missing-correct-output !) | |
|
114 | 0 0 ed70cecbc103 000000000000 000000000000 (missing-correct-output !) | |
|
115 | 1 1 7241018db64c ed70cecbc103 000000000000 (missing-correct-output !) | |
|
116 | 2 2 fa1120531cc1 7241018db64c 000000000000 (missing-correct-output !) | |
|
117 | abort: repository clone-while-split not found (known-bad-output !) | |
|
118 | [255] | |
|
119 | ||
|
120 | subsequent pull work | |
|
121 | ||
|
122 | $ hg -R clone-while-split pull | |
|
123 | pulling from http://localhost:$HGPORT1/ (missing-correct-output !) | |
|
124 | searching for changes (missing-correct-output !) | |
|
125 | adding changesets (missing-correct-output !) | |
|
126 | adding manifests (missing-correct-output !) | |
|
127 | adding file changes (missing-correct-output !) | |
|
128 | added 1 changesets with 1 changes to 1 files (missing-correct-output !) | |
|
129 | new changesets df05c6cb1406 (missing-correct-output !) | |
|
130 | (run 'hg update' to get a working copy) (missing-correct-output !) | |
|
131 | abort: repository clone-while-split not found (known-bad-output !) | |
|
132 | [255] | |
|
133 | ||
|
134 | $ hg -R clone-while-split debug-revlog-index some-file | |
|
135 | rev linkrev nodeid p1-nodeid p2-nodeid (missing-correct-output !) | |
|
136 | 0 0 ed70cecbc103 000000000000 000000000000 (missing-correct-output !) | |
|
137 | 1 1 7241018db64c ed70cecbc103 000000000000 (missing-correct-output !) | |
|
138 | 2 2 fa1120531cc1 7241018db64c 000000000000 (missing-correct-output !) | |
|
139 | 3 3 a631378adaa3 fa1120531cc1 000000000000 (missing-correct-output !) | |
|
140 | abort: repository clone-while-split not found (known-bad-output !) | |
|
141 | [255] | |
|
142 | $ hg -R clone-while-split verify | |
|
143 | checking changesets (missing-correct-output !) | |
|
144 | checking manifests (missing-correct-output !) | |
|
145 | crosschecking files in changesets and manifests (missing-correct-output !) | |
|
146 | checking files (missing-correct-output !) | |
|
147 | checking dirstate (missing-correct-output !) | |
|
148 | checked 4 changesets with 4 changes to 1 files (missing-correct-output !) | |
|
149 | abort: repository clone-while-split not found (known-bad-output !) | |
|
150 | [255] |
General Comments 0
You need to be logged in to leave comments.
Login now