##// END OF EJS Templates
tests: fix http-bad-server expected errors for python 3.10 (issue6643)...
pacien -
r50394:4f36738a default
parent child Browse files
Show More
@@ -1,1216 +1,1216 b''
1 1 #require serve zstd
2 2
3 3 Client version is embedded in HTTP request and is effectively dynamic. Pin the
4 4 version so behavior is deterministic.
5 5
6 6 $ cat > fakeversion.py << EOF
7 7 > from mercurial import util
8 8 > util.version = lambda: b'4.2'
9 9 > EOF
10 10
11 11 $ cat >> $HGRCPATH << EOF
12 12 > [extensions]
13 13 > fakeversion = `pwd`/fakeversion.py
14 14 > [format]
15 15 > sparse-revlog = no
16 16 > use-persistent-nodemap = no
17 17 > [devel]
18 18 > legacy.exchange = phases
19 19 > [server]
20 20 > concurrent-push-mode = strict
21 21 > EOF
22 22
23 23 $ hg init server0
24 24 $ cd server0
25 25 $ touch foo
26 26 $ hg -q commit -A -m initial
27 27
28 28 Also disable compression because zstd is optional and causes output to vary
29 29 and because debugging partial responses is hard when compression is involved
30 30
31 31 $ cat > .hg/hgrc << EOF
32 32 > [extensions]
33 33 > badserver = $TESTDIR/testlib/badserverext.py
34 34 > [server]
35 35 > compressionengines = none
36 36 > EOF
37 37
38 38 Failure to accept() socket should result in connection related error message
39 39 ----------------------------------------------------------------------------
40 40
41 41 $ hg serve --config badserver.close-before-accept=true -p $HGPORT -d --pid-file=hg.pid
42 42 $ cat hg.pid > $DAEMON_PIDS
43 43
44 44 $ hg clone http://localhost:$HGPORT/ clone
45 45 abort: error: (\$ECONNRESET\$|\$EADDRNOTAVAIL\$) (re)
46 46 [100]
47 47
48 48 (The server exits on its own, but there is a race between that and starting a new server.
49 49 So ensure the process is dead.)
50 50
51 51 $ killdaemons.py $DAEMON_PIDS
52 52
53 53 Failure immediately after accept() should yield connection related error message
54 54 --------------------------------------------------------------------------------
55 55
56 56 $ hg serve --config badserver.close-after-accept=true -p $HGPORT -d --pid-file=hg.pid
57 57 $ cat hg.pid > $DAEMON_PIDS
58 58
59 59 TODO: this usually outputs good results, but sometimes emits abort:
60 60 error: '' on FreeBSD and OS X.
61 61 What we ideally want are:
62 62
63 63 abort: error: $ECONNRESET$
64 64
65 65 The flakiness in this output was observable easily with
66 66 --runs-per-test=20 on macOS 10.12 during the freeze for 4.2.
67 67 $ hg clone http://localhost:$HGPORT/ clone
68 68 abort: error: * (glob)
69 69 [100]
70 70
71 71 $ killdaemons.py $DAEMON_PIDS
72 72
73 73 Failure to read all bytes in initial HTTP request should yield connection related error message
74 74 -----------------------------------------------------------------------------------------------
75 75
76 76 $ hg serve --config badserver.close-after-recv-bytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
77 77 $ cat hg.pid > $DAEMON_PIDS
78 78
79 79 $ hg clone http://localhost:$HGPORT/ clone
80 80 abort: error: bad HTTP status line: * (glob)
81 81 [100]
82 82
83 83 $ killdaemons.py $DAEMON_PIDS
84 84
85 85 $ cat error.log
86 86 readline(1 from ~) -> (1) G
87 87 read limit reached; closing socket
88 88
89 89 $ rm -f error.log
90 90
91 91 Same failure, but server reads full HTTP request line
92 92 -----------------------------------------------------
93 93
94 94 $ hg serve \
95 95 > --config badserver.close-after-recv-patterns="GET /\?cmd=capabilities" \
96 96 > --config badserver.close-after-recv-bytes=7 \
97 97 > -p $HGPORT -d --pid-file=hg.pid -E error.log
98 98 $ cat hg.pid > $DAEMON_PIDS
99 99 $ hg clone http://localhost:$HGPORT/ clone
100 100 abort: error: bad HTTP status line: * (glob)
101 101 [100]
102 102
103 103 $ killdaemons.py $DAEMON_PIDS
104 104
105 105 $ cat error.log
106 106 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
107 107 readline(7 from *) -> (7) Accept- (glob)
108 108 read limit reached; closing socket
109 109
110 110 $ rm -f error.log
111 111
112 112 Failure on subsequent HTTP request on the same socket (cmd?batch)
113 113 -----------------------------------------------------------------
114 114
115 115 $ hg serve \
116 116 > --config badserver.close-after-recv-patterns="GET /\?cmd=batch,GET /\?cmd=batch" \
117 117 > --config badserver.close-after-recv-bytes=15,197 \
118 118 > -p $HGPORT -d --pid-file=hg.pid -E error.log
119 119 $ cat hg.pid > $DAEMON_PIDS
120 120 $ hg clone http://localhost:$HGPORT/ clone
121 121 abort: error: bad HTTP status line: * (glob)
122 122 [100]
123 123
124 124 $ killdaemons.py $DAEMON_PIDS
125 125
126 126 $ cat error.log
127 127 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
128 128 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
129 129 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
130 130 readline(*) -> (*) host: localhost:$HGPORT\r\n (glob)
131 131 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
132 132 readline(*) -> (2) \r\n (glob)
133 133 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
134 134 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
135 135 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
136 136 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
137 137 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
138 138 readline(*) -> (1?) Accept-Encoding* (glob)
139 139 read limit reached; closing socket
140 140 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
141 141 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
142 142 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
143 143 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
144 144 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
145 145 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
146 146 readline(4 from *) -> (4) host (glob)
147 147 read limit reached; closing socket
148 148
149 149 $ rm -f error.log
150 150
151 151 Failure to read getbundle HTTP request
152 152 --------------------------------------
153 153
154 154 $ hg serve \
155 155 > --config badserver.close-after-recv-patterns="GET /\?cmd=batch,user-agent: mercurial/proto-1.0,GET /\?cmd=getbundle" \
156 156 > --config badserver.close-after-recv-bytes=110,26,274 \
157 157 > -p $HGPORT -d --pid-file=hg.pid -E error.log
158 158 $ cat hg.pid > $DAEMON_PIDS
159 159 $ hg clone http://localhost:$HGPORT/ clone
160 160 requesting all changes
161 161 abort: error: bad HTTP status line: * (glob)
162 162 [100]
163 163
164 164 $ killdaemons.py $DAEMON_PIDS
165 165
166 166 $ cat error.log
167 167 readline(1 from -1) -> (1) x (?)
168 168 readline(1 from -1) -> (1) x (?)
169 169 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
170 170 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
171 171 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
172 172 readline(*) -> (*) host: localhost:$HGPORT\r\n (glob)
173 173 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
174 174 readline(*) -> (2) \r\n (glob)
175 175 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
176 176 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
177 177 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
178 178 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
179 179 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
180 180 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
181 181 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
182 182 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
183 183 readline(*) -> (1?) x-hgproto-1:* (glob)
184 184 read limit reached; closing socket
185 185 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
186 186 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
187 187 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
188 188 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
189 189 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
190 190 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
191 191 readline(*) -> (*) host: localhost:$HGPORT\r\n (glob)
192 192 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
193 193 readline(*) -> (2) \r\n (glob)
194 194 sendall(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py36 !)
195 195 sendall(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py36 !)
196 196 write(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py3 no-py36 !)
197 197 write(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py3 no-py36 !)
198 198 readline(24 from ~) -> (*) GET /?cmd=getbundle HTTP* (glob)
199 199 read limit reached; closing socket
200 200 readline(~) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
201 201 readline(274 from *) -> (27) Accept-Encoding: identity\r\n (glob)
202 202 readline(247 from *) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
203 203 readline(218 from *) -> (218) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtag (glob)
204 204 read limit reached; closing socket
205 205
206 206 $ rm -f error.log
207 207
208 208 Now do a variation using POST to send arguments
209 209 ===============================================
210 210
211 211 $ hg serve \
212 212 > --config badserver.close-after-recv-patterns="x-hgargs-post:,user-agent: mercurial/proto-1.0" \
213 213 > --config badserver.close-after-recv-bytes="14,26" \
214 214 > --config experimental.httppostargs=true \
215 215 > -p $HGPORT -d --pid-file=hg.pid -E error.log
216 216 $ cat hg.pid > $DAEMON_PIDS
217 217
218 218 $ hg clone http://localhost:$HGPORT/ clone
219 219 abort: error: bad HTTP status line: * (glob)
220 220 [100]
221 221
222 222 $ killdaemons.py $DAEMON_PIDS
223 223
224 224 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
225 225 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
226 226 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
227 227 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
228 228 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
229 229 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
230 230 readline(*) -> (2) \r\n (glob)
231 231 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
232 232 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx httppostargs known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
233 233 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
234 234 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx httppostargs known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
235 235 readline(~) -> (27) POST /?cmd=batch HTTP/1.1\r\n (glob)
236 236 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
237 237 readline(*) -> (41) content-type: application/mercurial-0.1\r\n (glob)
238 238 readline(*) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n (glob)
239 239 readline(*) -> (19) x-hgargs-post: 28\r\n (glob)
240 240 readline(*) -> (1?) x-hgproto-1: * (glob)
241 241 read limit reached; closing socket
242 242 readline(~) -> (27) POST /?cmd=batch HTTP/1.1\r\n
243 243 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
244 244 readline(*) -> (41) content-type: application/mercurial-0.1\r\n (glob)
245 245 readline(*) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n (glob)
246 246 readline(*) -> (19) x-hgargs-post: 28\r\n (glob)
247 247 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
248 248 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
249 249 readline(*) -> (20) content-length: 28\r\n (glob)
250 250 readline(*) -> (*) host: localhost:$HGPORT\r\n (glob)
251 251 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
252 252 readline(*) -> (2) \r\n (glob)
253 253 read(24 from 28) -> (*) cmds=* (glob)
254 254 read limit reached; closing socket
255 255 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=batch': (glob)
256 256 Traceback (most recent call last):
257 257 Exception: connection closed after receiving N bytes
258 258
259 259 write(126) -> HTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
260 260
261 261 $ rm -f error.log
262 262
263 263 Now move on to partial server responses
264 264 =======================================
265 265
266 266 Server sends a single character from the HTTP response line
267 267 -----------------------------------------------------------
268 268
269 269 $ hg serve --config badserver.close-after-send-bytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
270 270 $ cat hg.pid > $DAEMON_PIDS
271 271
272 272 $ hg clone http://localhost:$HGPORT/ clone
273 273 abort: error: bad HTTP status line: H
274 274 [100]
275 275
276 276 $ killdaemons.py $DAEMON_PIDS
277 277
278 278 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
279 279 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
280 280 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
281 281 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
282 282 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
283 283 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
284 284 readline(*) -> (2) \r\n (glob)
285 285 sendall(1 from 160) -> (0) H (py36 !)
286 286 write(1 from 160) -> (0) H (py3 no-py36 !)
287 287 write limit reached; closing socket
288 288 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=capabilities': (glob)
289 289 Traceback (most recent call last):
290 290 Exception: connection closed after sending N bytes
291 291
292 292 write(286) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\nHTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (glob) (py3 no-py36 !)
293 293
294 294 $ rm -f error.log
295 295
296 296 Server sends an incomplete capabilities response body
297 297 -----------------------------------------------------
298 298
299 299 $ hg serve \
300 300 > --config badserver.close-after-send-patterns='batch branchmap bund' \
301 301 > -p $HGPORT -d --pid-file=hg.pid -E error.log
302 302 $ cat hg.pid > $DAEMON_PIDS
303 303
304 304 $ hg clone http://localhost:$HGPORT/ clone
305 305 abort: HTTP request error (incomplete response; expected * bytes got 20) (glob)
306 306 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
307 307 [255]
308 308
309 309 $ killdaemons.py $DAEMON_PIDS
310 310
311 311 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
312 312 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
313 313 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
314 314 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
315 315 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
316 316 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
317 317 readline(*) -> (2) \r\n (glob)
318 318 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
319 319 sendall(20 from *) -> (0) batch branchmap bund (glob) (py36 !)
320 320 write(160) -> (20) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
321 321 write(20 from *) -> (0) batch branchmap bund (glob) (py3 no-py36 !)
322 322 write limit reached; closing socket
323 323 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=capabilities': (glob)
324 324 Traceback (most recent call last):
325 325 Exception: connection closed after sending N bytes
326 326
327 327
328 328 $ rm -f error.log
329 329
330 330 Server sends incomplete headers for batch request
331 331 -------------------------------------------------
332 332
333 333 $ hg serve \
334 334 > --config badserver.close-after-send-patterns='(.*Content-Type: applicat){2}' \
335 335 > -p $HGPORT -d --pid-file=hg.pid -E error.log
336 336 $ cat hg.pid > $DAEMON_PIDS
337 337
338 338 TODO this output is horrible
339 339
340 340 $ hg clone http://localhost:$HGPORT/ clone
341 341 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
342 342 ---%<--- (applicat)
343 343
344 344 ---%<---
345 345
346 346 [255]
347 347
348 348 $ killdaemons.py $DAEMON_PIDS
349 349
350 350 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
351 351 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
352 352 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
353 353 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
354 354 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
355 355 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
356 356 readline(*) -> (2) \r\n (glob)
357 357 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
358 358 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
359 359 write(160) -> (568) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
360 360 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
361 361 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
362 362 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
363 363 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
364 364 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
365 365 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
366 366 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
367 367 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
368 368 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
369 369 readline(*) -> (2) \r\n (glob)
370 370 sendall(118 from 159) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: applicat (py36 !)
371 371 write(118 from 159) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: applicat (py3 no-py36 !)
372 372 write limit reached; closing socket
373 373 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=batch': (glob)
374 374 Traceback (most recent call last):
375 375 Exception: connection closed after sending N bytes
376 376
377 377 write(285) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\nHTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
378 378
379 379 $ rm -f error.log
380 380
381 381 Server sends an incomplete HTTP response body to batch request
382 382 --------------------------------------------------------------
383 383
384 384 $ hg serve \
385 385 > --config badserver.close-after-send-patterns=96ee1d7354c4ad7372047672 \
386 386 > -p $HGPORT -d --pid-file=hg.pid -E error.log
387 387 $ cat hg.pid > $DAEMON_PIDS
388 388
389 389 $ hg clone http://localhost:$HGPORT/ clone
390 390 abort: unexpected response:
391 391 '96ee1d7354c4ad7372047672'
392 392 [255]
393 393
394 394 $ killdaemons.py $DAEMON_PIDS
395 395
396 396 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
397 397 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
398 398 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
399 399 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
400 400 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
401 401 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
402 402 readline(*) -> (2) \r\n (glob)
403 403 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
404 404 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
405 405 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
406 406 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
407 407 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
408 408 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
409 409 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
410 410 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
411 411 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
412 412 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
413 413 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
414 414 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
415 415 readline(*) -> (2) \r\n (glob)
416 416 sendall(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py36 !)
417 417 sendall(24 from 42) -> (0) 96ee1d7354c4ad7372047672 (py36 !)
418 418 write(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py3 no-py36 !)
419 419 write(24 from 42) -> (0) 96ee1d7354c4ad7372047672 (py3 no-py36 !)
420 420 write limit reached; closing socket
421 421 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=batch': (glob)
422 422 Traceback (most recent call last):
423 423 Exception: connection closed after sending N bytes
424 424
425 425
426 426 $ rm -f error.log
427 427
428 428 Server sends incomplete headers for getbundle response
429 429 ------------------------------------------------------
430 430
431 431 $ hg serve \
432 432 > --config badserver.close-after-send-patterns='(.*Content-Type: application/mercuri){3}' \
433 433 > -p $HGPORT -d --pid-file=hg.pid -E error.log
434 434 $ cat hg.pid > $DAEMON_PIDS
435 435
436 436 TODO this output is terrible
437 437
438 438 $ hg clone http://localhost:$HGPORT/ clone
439 439 requesting all changes
440 440 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
441 441 ---%<--- (application/mercuri)
442 442
443 443 ---%<---
444 444
445 445 [255]
446 446
447 447 $ killdaemons.py $DAEMON_PIDS
448 448
449 449 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
450 450 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
451 451 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
452 452 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
453 453 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
454 454 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
455 455 readline(*) -> (2) \r\n (glob)
456 456 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
457 457 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
458 458 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
459 459 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
460 460 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
461 461 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
462 462 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
463 463 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
464 464 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
465 465 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
466 466 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
467 467 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
468 468 readline(*) -> (2) \r\n (glob)
469 469 sendall(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py36 !)
470 470 sendall(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py36 !)
471 471 write(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py3 no-py36 !)
472 472 write(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py3 no-py36 !)
473 473 readline(~) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
474 474 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
475 475 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
476 476 readline(*) -> (440) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n (glob)
477 477 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
478 478 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
479 479 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
480 480 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
481 481 readline(*) -> (2) \r\n (glob)
482 482 sendall(129 from 167) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercuri (py36 !)
483 483 write(129 from 167) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercuri (py3 no-py36 !)
484 484 write limit reached; closing socket
485 485 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
486 486 Traceback (most recent call last):
487 487 Exception: connection closed after sending N bytes
488 488
489 489 write(293) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\nHTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
490 490
491 491 $ rm -f error.log
492 492
493 493 Server stops before it sends transfer encoding
494 494 ----------------------------------------------
495 495
496 496 $ hg serve \
497 497 > --config badserver.close-after-send-patterns="Transfer-Encoding: chunke" \
498 498 > -p $HGPORT -d --pid-file=hg.pid -E error.log
499 499 $ cat hg.pid > $DAEMON_PIDS
500 500
501 501 $ hg clone http://localhost:$HGPORT/ clone
502 502 requesting all changes
503 503 abort: stream ended unexpectedly (got 0 bytes, expected 1)
504 504 [255]
505 505
506 506 $ killdaemons.py $DAEMON_PIDS
507 507
508 508 #if py36
509 509 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -6
510 510 sendall(162 from 167) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunke
511 511 write limit reached; closing socket
512 512 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
513 513 Traceback (most recent call last):
514 514 Exception: connection closed after sending N bytes
515 515
516 516
517 517 #else
518 518 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -7
519 519 write(41) -> Content-Type: application/mercurial-0.2\r\n
520 520 write(25 from 28) -> (0) Transfer-Encoding: chunke
521 521 write limit reached; closing socket
522 522 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
523 523 Traceback (most recent call last):
524 524 Exception: connection closed after sending N bytes
525 525 write(293) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\nHTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
526 526
527 527 #endif
528 528
529 529 $ rm -f error.log
530 530
531 531 Server sends empty HTTP body for getbundle
532 532 ------------------------------------------
533 533
534 534 $ hg serve \
535 535 > --config badserver.close-after-send-patterns='Transfer-Encoding: chunked\r\n\r\n' \
536 536 > -p $HGPORT -d --pid-file=hg.pid -E error.log
537 537 $ cat hg.pid > $DAEMON_PIDS
538 538
539 539 $ hg clone http://localhost:$HGPORT/ clone
540 540 requesting all changes
541 541 abort: HTTP request error (incomplete response)
542 542 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
543 543 [255]
544 544
545 545 $ killdaemons.py $DAEMON_PIDS
546 546
547 547 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
548 548 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
549 549 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
550 550 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
551 551 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
552 552 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
553 553 readline(*) -> (2) \r\n (glob)
554 554 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
555 555 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
556 556 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
557 557 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
558 558 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
559 559 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
560 560 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
561 561 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
562 562 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
563 563 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
564 564 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
565 565 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
566 566 readline(*) -> (2) \r\n (glob)
567 567 sendall(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py36 !)
568 568 sendall(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py36 !)
569 569 write(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py3 no-py36 !)
570 570 write(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py3 no-py36 !)
571 571 readline(~) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
572 572 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
573 573 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
574 574 readline(*) -> (440) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n (glob)
575 575 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
576 576 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
577 577 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
578 578 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
579 579 readline(*) -> (2) \r\n (glob)
580 580 sendall(167 from 167) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py36 !)
581 581 write(167 from 167) -> (0) HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
582 582 write limit reached; closing socket
583 583 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
584 584 Traceback (most recent call last):
585 585 Exception: connection closed after sending N bytes
586 586
587 587 write(293) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\nHTTP/1.1 500 Internal Server Error\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
588 588
589 589 $ rm -f error.log
590 590
591 591 Server sends partial compression string
592 592 ---------------------------------------
593 593
594 594 $ hg serve \
595 595 > --config badserver.close-after-send-patterns='4\r\nHG20\r\n' \
596 596 > -p $HGPORT -d --pid-file=hg.pid -E error.log
597 597 $ cat hg.pid > $DAEMON_PIDS
598 598
599 599 $ hg clone http://localhost:$HGPORT/ clone
600 600 requesting all changes
601 601 abort: HTTP request error (incomplete response)
602 602 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
603 603 [255]
604 604
605 605 $ killdaemons.py $DAEMON_PIDS
606 606
607 607 $ cat error.log | "$PYTHON" $TESTDIR/filtertraceback.py
608 608 readline(~) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
609 609 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
610 610 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
611 611 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
612 612 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
613 613 readline(*) -> (2) \r\n (glob)
614 614 sendall(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py36 !)
615 615 sendall(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py36 !)
616 616 write(160) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: *\r\n\r\n (glob) (py3 no-py36 !)
617 617 write(*) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=* unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash (glob) (py3 no-py36 !)
618 618 readline(~) -> (26) GET /?cmd=batch HTTP/1.1\r\n
619 619 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
620 620 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
621 621 readline(*) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
622 622 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
623 623 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
624 624 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
625 625 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
626 626 readline(*) -> (2) \r\n (glob)
627 627 sendall(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py36 !)
628 628 sendall(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n; (py36 !)
629 629 write(159) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.1\r\nContent-Length: 42\r\n\r\n (py3 no-py36 !)
630 630 readline(~) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
631 631 readline(*) -> (27) Accept-Encoding: identity\r\n (glob)
632 632 readline(*) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
633 633 readline(*) -> (440) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n (glob)
634 634 readline(*) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n (glob)
635 635 readline(*) -> (35) accept: application/mercurial-0.1\r\n (glob)
636 636 readline(*) -> (2?) host: localhost:$HGPORT\r\n (glob)
637 637 readline(*) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
638 638 readline(*) -> (2) \r\n (glob)
639 639 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py36 !)
640 640 sendall(6) -> 1\\r\\n\x04\\r\\n (esc) (py36 !)
641 641 sendall(9) -> 4\r\nnone\r\n (py36 !)
642 642 sendall(9 from 9) -> (0) 4\r\nHG20\r\n (py36 !)
643 643 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 no-py36 !)
644 644 write limit reached; closing socket
645 645 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
646 646 Traceback (most recent call last):
647 647 Exception: connection closed after sending N bytes
648 648
649 649
650 650 $ rm -f error.log
651 651
652 652 Server sends partial bundle2 header magic
653 653 -----------------------------------------
654 654
655 655 $ hg serve \
656 656 > --config badserver.close-after-send-patterns='4\r\nHG2' \
657 657 > -p $HGPORT -d --pid-file=hg.pid -E error.log
658 658 $ cat hg.pid > $DAEMON_PIDS
659 659
660 660 $ hg clone http://localhost:$HGPORT/ clone
661 661 requesting all changes
662 abort: HTTP request error (incomplete response) (py3 !)
662 abort: HTTP request error (incomplete response*) (glob)
663 663 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
664 664 [255]
665 665
666 666 $ killdaemons.py $DAEMON_PIDS
667 667
668 668 #if py36
669 669 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -9
670 670 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
671 671 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
672 672 sendall(9) -> 4\r\nnone\r\n
673 673 sendall(6 from 9) -> (0) 4\r\nHG2
674 674 write limit reached; closing socket
675 675 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
676 676 Traceback (most recent call last):
677 677 Exception: connection closed after sending N bytes
678 678
679 679
680 680 #else
681 681 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -11
682 682 readline(~) -> (2) \r\n (py3 !)
683 683 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
684 684 write(6) -> 1\\r\\n\x04\\r\\n (esc)
685 685 write(9) -> 4\r\nnone\r\n
686 686 write(6 from 9) -> (0) 4\r\nHG2
687 687 write limit reached; closing socket
688 688 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
689 689 Traceback (most recent call last):
690 690 Exception: connection closed after sending N bytes
691 691
692 692 #endif
693 693
694 694 $ rm -f error.log
695 695
696 696 Server sends incomplete bundle2 stream params length
697 697 ----------------------------------------------------
698 698
699 699 $ hg serve \
700 700 > --config badserver.close-after-send-patterns='4\r\n\0\0\0' \
701 701 > -p $HGPORT -d --pid-file=hg.pid -E error.log
702 702 $ cat hg.pid > $DAEMON_PIDS
703 703
704 704 $ hg clone http://localhost:$HGPORT/ clone
705 705 requesting all changes
706 abort: HTTP request error (incomplete response) (py3 !)
706 abort: HTTP request error (incomplete response*) (glob)
707 707 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
708 708 [255]
709 709
710 710 $ killdaemons.py $DAEMON_PIDS
711 711
712 712 #if py36
713 713 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -10
714 714 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
715 715 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
716 716 sendall(9) -> 4\r\nnone\r\n
717 717 sendall(9) -> 4\r\nHG20\r\n
718 718 sendall(6 from 9) -> (0) 4\\r\\n\x00\x00\x00 (esc)
719 719 write limit reached; closing socket
720 720 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
721 721 Traceback (most recent call last):
722 722 Exception: connection closed after sending N bytes
723 723
724 724
725 725 #else
726 726 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -12
727 727 readline(~) -> (2) \r\n (py3 !)
728 728 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
729 729 write(41) -> Content-Type: application/mercurial-0.2\r\n
730 730 write(6) -> 1\\r\\n\x04\\r\\n (esc)
731 731 write(9) -> 4\r\nnone\r\n
732 732 write(9) -> 4\r\nHG20\r\n
733 733 write(6 from 9) -> (0) 4\\r\\n\x00\x00\x00 (esc)
734 734 write limit reached; closing socket
735 735 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
736 736 Traceback (most recent call last):
737 737 Exception: connection closed after sending N bytes
738 738
739 739 #endif
740 740
741 741 $ rm -f error.log
742 742
743 743 Servers stops after bundle2 stream params header
744 744 ------------------------------------------------
745 745
746 746 $ hg serve \
747 747 > --config badserver.close-after-send-patterns='4\r\n\0\0\0\0\r\n' \
748 748 > -p $HGPORT -d --pid-file=hg.pid -E error.log
749 749 $ cat hg.pid > $DAEMON_PIDS
750 750
751 751 $ hg clone http://localhost:$HGPORT/ clone
752 752 requesting all changes
753 753 abort: HTTP request error (incomplete response)
754 754 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
755 755 [255]
756 756
757 757 $ killdaemons.py $DAEMON_PIDS
758 758
759 759 #if py36
760 760 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -10
761 761 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
762 762 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
763 763 sendall(9) -> 4\r\nnone\r\n
764 764 sendall(9) -> 4\r\nHG20\r\n
765 765 sendall(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
766 766 write limit reached; closing socket
767 767 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
768 768 Traceback (most recent call last):
769 769 Exception: connection closed after sending N bytes
770 770
771 771
772 772 #else
773 773 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -12
774 774 readline(~) -> (2) \r\n (py3 !)
775 775 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
776 776 write(41) -> Content-Type: application/mercurial-0.2\r\n
777 777 write(6) -> 1\\r\\n\x04\\r\\n (esc)
778 778 write(9) -> 4\r\nnone\r\n
779 779 write(9) -> 4\r\nHG20\r\n
780 780 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
781 781 write limit reached; closing socket
782 782 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
783 783 Traceback (most recent call last):
784 784 Exception: connection closed after sending N bytes
785 785
786 786 #endif
787 787
788 788 $ rm -f error.log
789 789
790 790 Server stops sending after bundle2 part header length
791 791 -----------------------------------------------------
792 792
793 793 $ hg serve \
794 794 > --config badserver.close-after-send-patterns='4\r\n\0\0\0\)\r\n' \
795 795 > -p $HGPORT -d --pid-file=hg.pid -E error.log
796 796 $ cat hg.pid > $DAEMON_PIDS
797 797
798 798 $ hg clone http://localhost:$HGPORT/ clone
799 799 requesting all changes
800 800 abort: HTTP request error (incomplete response)
801 801 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
802 802 [255]
803 803
804 804 $ killdaemons.py $DAEMON_PIDS
805 805
806 806 #if py36
807 807 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -11
808 808 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
809 809 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
810 810 sendall(9) -> 4\r\nnone\r\n
811 811 sendall(9) -> 4\r\nHG20\r\n
812 812 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
813 813 sendall(9 from 9) -> (0) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
814 814 write limit reached; closing socket
815 815 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
816 816 Traceback (most recent call last):
817 817 Exception: connection closed after sending N bytes
818 818
819 819
820 820 #else
821 821
822 822 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -13
823 823 readline(~) -> (2) \r\n (py3 !)
824 824 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
825 825 write(41) -> Content-Type: application/mercurial-0.2\r\n
826 826 write(6) -> 1\\r\\n\x04\\r\\n (esc)
827 827 write(9) -> 4\r\nnone\r\n
828 828 write(9) -> 4\r\nHG20\r\n
829 829 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
830 830 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
831 831 write limit reached; closing socket
832 832 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
833 833 Traceback (most recent call last):
834 834 Exception: connection closed after sending N bytes
835 835
836 836 #endif
837 837
838 838 $ rm -f error.log
839 839
840 840 Server stops sending after bundle2 part header
841 841 ----------------------------------------------
842 842
843 843 $ hg serve \
844 844 > --config badserver.close-after-send-patterns="version02nbchanges1\\r\\n" \
845 845 > -p $HGPORT -d --pid-file=hg.pid -E error.log
846 846 $ cat hg.pid > $DAEMON_PIDS
847 847
848 848 $ hg clone http://localhost:$HGPORT/ clone
849 849 requesting all changes
850 850 adding changesets
851 851 transaction abort!
852 852 rollback completed
853 853 abort: HTTP request error (incomplete response)
854 854 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
855 855 [255]
856 856
857 857 $ killdaemons.py $DAEMON_PIDS
858 858
859 859 #if py36
860 860 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -12
861 861 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
862 862 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
863 863 sendall(9) -> 4\r\nnone\r\n
864 864 sendall(9) -> 4\r\nHG20\r\n
865 865 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
866 866 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
867 867 sendall(47 from 47) -> (0) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
868 868 write limit reached; closing socket
869 869 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
870 870 Traceback (most recent call last):
871 871 Exception: connection closed after sending N bytes
872 872
873 873
874 874 #else
875 875 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -14
876 876 readline(~) -> (2) \r\n (py3 !)
877 877 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
878 878 write(41) -> Content-Type: application/mercurial-0.2\r\n
879 879 write(6) -> 1\\r\\n\x04\\r\\n (esc)
880 880 write(9) -> 4\r\nnone\r\n
881 881 write(9) -> 4\r\nHG20\r\n
882 882 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
883 883 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
884 884 write(47 from 47) -> (0) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
885 885 write limit reached; closing socket
886 886 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
887 887 Traceback (most recent call last):
888 888 Exception: connection closed after sending N bytes
889 889
890 890 #endif
891 891
892 892 $ rm -f error.log
893 893
894 894 Server stops after bundle2 part payload chunk size
895 895 --------------------------------------------------
896 896
897 897 $ hg serve \
898 898 > --config badserver.close-after-send-patterns='1d2\r\n.......' \
899 899 > -p $HGPORT -d --pid-file=hg.pid -E error.log
900 900 $ cat hg.pid > $DAEMON_PIDS
901 901
902 902 $ hg clone http://localhost:$HGPORT/ clone
903 903 requesting all changes
904 904 adding changesets
905 905 transaction abort!
906 906 rollback completed
907 abort: HTTP request error (incomplete response) (py3 !)
907 abort: HTTP request error (incomplete response*) (glob)
908 908 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
909 909 [255]
910 910
911 911 $ killdaemons.py $DAEMON_PIDS
912 912
913 913 #if py36
914 914 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -14
915 915 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
916 916 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
917 917 sendall(9) -> 4\r\nnone\r\n
918 918 sendall(9) -> 4\r\nHG20\r\n
919 919 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
920 920 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
921 921 sendall(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
922 922 sendall(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
923 923 sendall(12 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1d (esc)
924 924 write limit reached; closing socket
925 925 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
926 926 Traceback (most recent call last):
927 927 Exception: connection closed after sending N bytes
928 928
929 929
930 930 #else
931 931 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -15
932 932 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
933 933 write(28) -> Transfer-Encoding: chunked\r\n
934 934 write(6) -> 1\\r\\n\x04\\r\\n (esc)
935 935 write(9) -> 4\r\nnone\r\n
936 936 write(9) -> 4\r\nHG20\r\n
937 937 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
938 938 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
939 939 write(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
940 940 write(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
941 941 write(12 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1d (esc)
942 942 write limit reached; closing socket
943 943 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
944 944 Traceback (most recent call last):
945 945 Exception: connection closed after sending N bytes
946 946
947 947 #endif
948 948
949 949 $ rm -f error.log
950 950
951 951 Server stops sending in middle of bundle2 payload chunk
952 952 -------------------------------------------------------
953 953
954 954 $ hg serve \
955 955 > --config badserver.close-after-send-patterns=':jL\0\0\x00\0\0\0\0\0\r\n' \
956 956 > -p $HGPORT -d --pid-file=hg.pid -E error.log
957 957 $ cat hg.pid > $DAEMON_PIDS
958 958
959 959 $ hg clone http://localhost:$HGPORT/ clone
960 960 requesting all changes
961 961 adding changesets
962 962 transaction abort!
963 963 rollback completed
964 964 abort: HTTP request error (incomplete response)
965 965 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
966 966 [255]
967 967
968 968 $ killdaemons.py $DAEMON_PIDS
969 969
970 970 #if py36
971 971 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -14
972 972 sendall(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n
973 973 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
974 974 sendall(9) -> 4\r\nnone\r\n
975 975 sendall(9) -> 4\r\nHG20\r\n
976 976 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
977 977 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
978 978 sendall(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
979 979 sendall(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
980 980 sendall(473 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
981 981 write limit reached; closing socket
982 982 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
983 983 Traceback (most recent call last):
984 984 Exception: connection closed after sending N bytes
985 985
986 986
987 987 #else
988 988 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -16
989 989 readline(~) -> (2) \r\n (py3 !)
990 990 write(167) -> HTTP/1.1 200 Script output follows\r\nServer: badhttpserver\r\nDate: $HTTP_DATE$\r\nContent-Type: application/mercurial-0.2\r\nTransfer-Encoding: chunked\r\n\r\n (py3 !)
991 991 write(41) -> Content-Type: application/mercurial-0.2\r\n
992 992 write(6) -> 1\\r\\n\x04\\r\\n (esc)
993 993 write(9) -> 4\r\nnone\r\n
994 994 write(9) -> 4\r\nHG20\r\n
995 995 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
996 996 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
997 997 write(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
998 998 write(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
999 999 write(473 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1000 1000 write limit reached; closing socket
1001 1001 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1002 1002 Traceback (most recent call last):
1003 1003 Exception: connection closed after sending N bytes
1004 1004
1005 1005 #endif
1006 1006
1007 1007 $ rm -f error.log
1008 1008
1009 1009 Server stops sending after 0 length payload chunk size
1010 1010 ------------------------------------------------------
1011 1011
1012 1012 $ hg serve \
1013 1013 > --config badserver.close-after-send-patterns=LISTKEYS \
1014 1014 > -p $HGPORT -d --pid-file=hg.pid -E error.log
1015 1015 $ cat hg.pid > $DAEMON_PIDS
1016 1016
1017 1017 $ hg clone http://localhost:$HGPORT/ clone
1018 1018 requesting all changes
1019 1019 adding changesets
1020 1020 adding manifests
1021 1021 adding file changes
1022 1022 transaction abort!
1023 1023 rollback completed
1024 abort: HTTP request error (incomplete response) (py3 !)
1024 abort: HTTP request error (incomplete response*) (glob)
1025 1025 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
1026 1026 [255]
1027 1027
1028 1028 $ killdaemons.py $DAEMON_PIDS
1029 1029
1030 1030 #if py36
1031 1031 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -16
1032 1032 sendall(6) -> 1\\r\\n\x04\\r\\n (esc)
1033 1033 sendall(9) -> 4\r\nnone\r\n
1034 1034 sendall(9) -> 4\r\nHG20\r\n
1035 1035 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1036 1036 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1037 1037 sendall(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1038 1038 sendall(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1039 1039 sendall(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1040 1040 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1041 1041 sendall(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1042 1042 sendall(13 from 38) -> (0) 20\\r\\n\x08LISTKEYS (esc)
1043 1043 write limit reached; closing socket
1044 1044 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1045 1045 Traceback (most recent call last):
1046 1046 Exception: connection closed after sending N bytes
1047 1047
1048 1048
1049 1049 #else
1050 1050 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -17
1051 1051 write(2) -> \r\n
1052 1052 write(6) -> 1\\r\\n\x04\\r\\n (esc)
1053 1053 write(9) -> 4\r\nnone\r\n
1054 1054 write(9) -> 4\r\nHG20\r\n
1055 1055 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1056 1056 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1057 1057 write(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1058 1058 write(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1059 1059 write(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1060 1060 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1061 1061 write(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1062 1062 write(13 from 38) -> (0) 20\\r\\n\x08LISTKEYS (esc)
1063 1063 write limit reached; closing socket
1064 1064 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1065 1065 Traceback (most recent call last):
1066 1066 Exception: connection closed after sending N bytes
1067 1067
1068 1068 #endif
1069 1069
1070 1070 $ rm -f error.log
1071 1071
1072 1072 Server stops sending after 0 part bundle part header (indicating end of bundle2 payload)
1073 1073 ----------------------------------------------------------------------------------------
1074 1074
1075 1075 This is before the 0 size chunked transfer part that signals end of HTTP response.
1076 1076
1077 1077 $ hg serve \
1078 1078 > --config badserver.close-after-send-patterns='(.*4\r\n\0\0\0\0\r\n){5}' \
1079 1079 > -p $HGPORT -d --pid-file=hg.pid -E error.log
1080 1080 $ cat hg.pid > $DAEMON_PIDS
1081 1081
1082 1082 $ hg clone http://localhost:$HGPORT/ clone
1083 1083 requesting all changes
1084 1084 adding changesets
1085 1085 adding manifests
1086 1086 adding file changes
1087 1087 added 1 changesets with 1 changes to 1 files
1088 1088 new changesets 96ee1d7354c4
1089 1089 updating to branch default
1090 1090 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1091 1091
1092 1092 $ killdaemons.py $DAEMON_PIDS
1093 1093
1094 1094 #if py36
1095 1095 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -20
1096 1096 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1097 1097 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1098 1098 sendall(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1099 1099 sendall(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1100 1100 sendall(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1101 1101 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1102 1102 sendall(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1103 1103 sendall(38) -> 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
1104 1104 sendall(9) -> 4\\r\\n\x00\x00\x00:\\r\\n (esc)
1105 1105 sendall(64) -> 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
1106 1106 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1107 1107 sendall(9) -> 4\\r\\n\x00\x00\x00#\\r\\n (esc)
1108 1108 sendall(41) -> 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
1109 1109 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1110 1110 sendall(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1111 1111 write limit reached; closing socket
1112 1112 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1113 1113 Traceback (most recent call last):
1114 1114 Exception: connection closed after sending N bytes
1115 1115
1116 1116
1117 1117 #else
1118 1118 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -21
1119 1119 write(9) -> 4\r\nHG20\r\n
1120 1120 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1121 1121 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1122 1122 write(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1123 1123 write(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1124 1124 write(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1125 1125 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1126 1126 write(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1127 1127 write(38) -> 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
1128 1128 write(9) -> 4\\r\\n\x00\x00\x00:\\r\\n (esc)
1129 1129 write(64) -> 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
1130 1130 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1131 1131 write(9) -> 4\\r\\n\x00\x00\x00#\\r\\n (esc)
1132 1132 write(41) -> 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
1133 1133 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1134 1134 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1135 1135 write limit reached; closing socket
1136 1136 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1137 1137 Traceback (most recent call last):
1138 1138 Exception: connection closed after sending N bytes
1139 1139
1140 1140 #endif
1141 1141
1142 1142 $ rm -f error.log
1143 1143 $ rm -rf clone
1144 1144
1145 1145 Server sends a size 0 chunked-transfer size without terminating \r\n
1146 1146 --------------------------------------------------------------------
1147 1147
1148 1148 $ hg serve \
1149 1149 > --config badserver.close-after-send-patterns="(.*4\\r\\n\0\0\0\0\\r\\n0\r\n)" \
1150 1150 > -p $HGPORT -d --pid-file=hg.pid -E error.log
1151 1151 $ cat hg.pid > $DAEMON_PIDS
1152 1152
1153 1153 $ hg clone http://localhost:$HGPORT/ clone
1154 1154 requesting all changes
1155 1155 adding changesets
1156 1156 adding manifests
1157 1157 adding file changes
1158 1158 added 1 changesets with 1 changes to 1 files
1159 1159 new changesets 96ee1d7354c4
1160 1160 updating to branch default
1161 1161 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1162 1162
1163 1163 $ killdaemons.py $DAEMON_PIDS
1164 1164
1165 1165 #if py36
1166 1166 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -21
1167 1167 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1168 1168 sendall(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1169 1169 sendall(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1170 1170 sendall(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1171 1171 sendall(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1172 1172 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1173 1173 sendall(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1174 1174 sendall(38) -> 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
1175 1175 sendall(9) -> 4\\r\\n\x00\x00\x00:\\r\\n (esc)
1176 1176 sendall(64) -> 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
1177 1177 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1178 1178 sendall(9) -> 4\\r\\n\x00\x00\x00#\\r\\n (esc)
1179 1179 sendall(41) -> 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
1180 1180 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1181 1181 sendall(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1182 1182 sendall(3 from 5) -> (0) 0\r\n
1183 1183 write limit reached; closing socket
1184 1184 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1185 1185 Traceback (most recent call last):
1186 1186 Exception: connection closed after sending N bytes
1187 1187
1188 1188
1189 1189 #else
1190 1190 $ "$PYTHON" $TESTDIR/filtertraceback.py < error.log | tail -22
1191 1191 write(9) -> 4\r\nHG20\r\n
1192 1192 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1193 1193 write(9) -> 4\\r\\n\x00\x00\x00)\\r\\n (esc)
1194 1194 write(47) -> 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
1195 1195 write(9) -> 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
1196 1196 write(473) -> 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
1197 1197 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1198 1198 write(9) -> 4\\r\\n\x00\x00\x00 \\r\\n (esc)
1199 1199 write(38) -> 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
1200 1200 write(9) -> 4\\r\\n\x00\x00\x00:\\r\\n (esc)
1201 1201 write(64) -> 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
1202 1202 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1203 1203 write(9) -> 4\\r\\n\x00\x00\x00#\\r\\n (esc)
1204 1204 write(41) -> 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
1205 1205 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1206 1206 write(9) -> 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
1207 1207 write(3 from 5) -> (0) 0\r\n
1208 1208 write limit reached; closing socket
1209 1209 $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/?cmd=getbundle': (glob)
1210 1210 Traceback (most recent call last):
1211 1211 Exception: connection closed after sending N bytes
1212 1212
1213 1213 #endif
1214 1214
1215 1215 $ rm -f error.log
1216 1216 $ rm -rf clone
General Comments 0
You need to be logged in to leave comments. Login now