##// END OF EJS Templates
persistent-nodemap: disable it unconditionally for test-ssh-proto.t...
marmoute -
r47641:a0d152e5 default
parent child Browse files
Show More
@@ -1,2202 +1,2209 b''
1 1 #require no-chg
2 2
3 persistent-nodemap is not enabled by default. It is not relevant for this test so disable it.
4
5 $ cat << EOF >> $HGRCPATH
6 > [format]
7 > use-persistent-nodemap = no
8 > EOF
9
3 10 $ cat > hgrc-sshv2 << EOF
4 11 > %include $HGRCPATH
5 12 > [experimental]
6 13 > sshpeer.advertise-v2 = true
7 14 > sshserver.support-v2 = true
8 15 > EOF
9 16
10 17 Helper function to run protocol tests against multiple protocol versions.
11 18 This is easier than using #testcases because managing differences between
12 19 protocols with inline conditional output is hard to read.
13 20
14 21 $ debugwireproto() {
15 22 > commands=`cat -`
16 23 > echo 'testing ssh1'
17 24 > echo "${commands}" | hg --verbose debugwireproto --localssh
18 25 > echo ""
19 26 > echo 'testing ssh2'
20 27 > echo "${commands}" | HGRCPATH=$TESTTMP/hgrc-sshv2 hg --verbose debugwireproto --localssh
21 28 > }
22 29
23 30 $ cat >> $HGRCPATH << EOF
24 31 > [ui]
25 32 > ssh = "$PYTHON" "$TESTDIR/dummyssh"
26 33 > [devel]
27 34 > debug.peer-request = true
28 35 > [extensions]
29 36 > sshprotoext = $TESTDIR/sshprotoext.py
30 37 > EOF
31 38
32 39 $ hg init server
33 40 $ cd server
34 41 $ echo 0 > foo
35 42 $ hg -q add foo
36 43 $ hg commit -m initial
37 44
38 45 A no-op connection performs a handshake
39 46
40 47 $ hg debugwireproto --localssh << EOF
41 48 > EOF
42 49 creating ssh peer from handshake results
43 50
44 51 Raw peers don't perform any activity
45 52
46 53 $ hg debugwireproto --localssh --peer raw << EOF
47 54 > EOF
48 55 using raw connection to peer
49 56 $ hg debugwireproto --localssh --peer ssh1 << EOF
50 57 > EOF
51 58 creating ssh peer for wire protocol version 1
52 59 $ hg debugwireproto --localssh --peer ssh2 << EOF
53 60 > EOF
54 61 creating ssh peer for wire protocol version 2
55 62
56 63 Test a normal behaving server, for sanity
57 64
58 65 $ cd ..
59 66
60 67 $ hg --debug debugpeer ssh://user@dummy/server
61 68 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
62 69 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
63 70 devel-peer-request: hello+between
64 71 devel-peer-request: pairs: 81 bytes
65 72 sending hello command
66 73 sending between command
67 74 remote: 444
68 75 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
69 76 remote: 1
70 77 devel-peer-request: protocaps
71 78 devel-peer-request: caps: * bytes (glob)
72 79 sending protocaps command
73 80 url: ssh://user@dummy/server
74 81 local: no
75 82 pushable: yes
76 83
77 84 Server should answer the "hello" command in isolation
78 85
79 86 $ hg -R server debugwireproto --localssh --peer raw << EOF
80 87 > raw
81 88 > hello\n
82 89 > readline
83 90 > readline
84 91 > EOF
85 92 using raw connection to peer
86 93 i> write(6) -> 6:
87 94 i> hello\n
88 95 o> readline() -> 4:
89 96 o> 444\n
90 97 o> readline() -> 444:
91 98 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
92 99
93 100 `hg debugserve --sshstdio` works
94 101
95 102 $ cd server
96 103 $ hg debugserve --sshstdio << EOF
97 104 > hello
98 105 > EOF
99 106 444
100 107 capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
101 108
102 109 I/O logging works
103 110
104 111 $ hg debugserve --sshstdio --logiofd 1 << EOF
105 112 > hello
106 113 > EOF
107 114 e> flush() -> None
108 115 o> write(4) -> 4:
109 116 o> 444\n
110 117 o> write(444) -> 444:
111 118 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
112 119 444
113 120 capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
114 121 o> flush() -> None
115 122
116 123 $ hg debugserve --sshstdio --logiofile $TESTTMP/io << EOF
117 124 > hello
118 125 > EOF
119 126 444
120 127 capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
121 128
122 129 $ cat $TESTTMP/io
123 130 e> flush() -> None
124 131 o> write(4) -> 4:
125 132 o> 444\n
126 133 o> write(444) -> 444:
127 134 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
128 135 o> flush() -> None
129 136
130 137 $ cd ..
131 138
132 139 >=0.9.1 clients send a "hello" + "between" for the null range as part of handshake.
133 140 Server should reply with capabilities and should send "1\n\n" as a successful
134 141 reply with empty response to the "between".
135 142
136 143 $ hg -R server debugwireproto --localssh --peer raw << EOF
137 144 > raw
138 145 > hello\n
139 146 > readline
140 147 > readline
141 148 > raw
142 149 > between\n
143 150 > pairs 81\n
144 151 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
145 152 > readline
146 153 > readline
147 154 > EOF
148 155 using raw connection to peer
149 156 i> write(6) -> 6:
150 157 i> hello\n
151 158 o> readline() -> 4:
152 159 o> 444\n
153 160 o> readline() -> 444:
154 161 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
155 162 i> write(98) -> 98:
156 163 i> between\n
157 164 i> pairs 81\n
158 165 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
159 166 o> readline() -> 2:
160 167 o> 1\n
161 168 o> readline() -> 1:
162 169 o> \n
163 170
164 171 SSH banner is not printed by default, ignored by clients
165 172
166 173 $ SSHSERVERMODE=banner hg debugpeer ssh://user@dummy/server
167 174 url: ssh://user@dummy/server
168 175 local: no
169 176 pushable: yes
170 177
171 178 --debug will print the banner
172 179
173 180 $ SSHSERVERMODE=banner hg --debug debugpeer ssh://user@dummy/server
174 181 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
175 182 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
176 183 devel-peer-request: hello+between
177 184 devel-peer-request: pairs: 81 bytes
178 185 sending hello command
179 186 sending between command
180 187 remote: banner: line 0
181 188 remote: banner: line 1
182 189 remote: banner: line 2
183 190 remote: banner: line 3
184 191 remote: banner: line 4
185 192 remote: banner: line 5
186 193 remote: banner: line 6
187 194 remote: banner: line 7
188 195 remote: banner: line 8
189 196 remote: banner: line 9
190 197 remote: 444
191 198 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
192 199 remote: 1
193 200 devel-peer-request: protocaps
194 201 devel-peer-request: caps: * bytes (glob)
195 202 sending protocaps command
196 203 url: ssh://user@dummy/server
197 204 local: no
198 205 pushable: yes
199 206
200 207 And test the banner with the raw protocol
201 208
202 209 $ SSHSERVERMODE=banner hg -R server debugwireproto --localssh --peer raw << EOF
203 210 > raw
204 211 > hello\n
205 212 > readline
206 213 > readline
207 214 > readline
208 215 > readline
209 216 > readline
210 217 > readline
211 218 > readline
212 219 > readline
213 220 > readline
214 221 > readline
215 222 > readline
216 223 > readline
217 224 > raw
218 225 > between\n
219 226 > pairs 81\n
220 227 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
221 228 > readline
222 229 > readline
223 230 > EOF
224 231 using raw connection to peer
225 232 i> write(6) -> 6:
226 233 i> hello\n
227 234 o> readline() -> 15:
228 235 o> banner: line 0\n
229 236 o> readline() -> 15:
230 237 o> banner: line 1\n
231 238 o> readline() -> 15:
232 239 o> banner: line 2\n
233 240 o> readline() -> 15:
234 241 o> banner: line 3\n
235 242 o> readline() -> 15:
236 243 o> banner: line 4\n
237 244 o> readline() -> 15:
238 245 o> banner: line 5\n
239 246 o> readline() -> 15:
240 247 o> banner: line 6\n
241 248 o> readline() -> 15:
242 249 o> banner: line 7\n
243 250 o> readline() -> 15:
244 251 o> banner: line 8\n
245 252 o> readline() -> 15:
246 253 o> banner: line 9\n
247 254 o> readline() -> 4:
248 255 o> 444\n
249 256 o> readline() -> 444:
250 257 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
251 258 i> write(98) -> 98:
252 259 i> between\n
253 260 i> pairs 81\n
254 261 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
255 262 o> readline() -> 2:
256 263 o> 1\n
257 264 o> readline() -> 1:
258 265 o> \n
259 266
260 267 Connecting to a <0.9.1 server that doesn't support the hello command.
261 268 The client should refuse, as we dropped support for connecting to such
262 269 servers.
263 270
264 271 $ SSHSERVERMODE=no-hello hg --debug debugpeer ssh://user@dummy/server
265 272 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
266 273 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
267 274 devel-peer-request: hello+between
268 275 devel-peer-request: pairs: 81 bytes
269 276 sending hello command
270 277 sending between command
271 278 remote: 0
272 279 remote: 1
273 280 abort: no suitable response from remote hg
274 281 [255]
275 282
276 283 Sending an unknown command to the server results in an empty response to that command
277 284
278 285 $ hg -R server debugwireproto --localssh --peer raw << EOF
279 286 > raw
280 287 > pre-hello\n
281 288 > readline
282 289 > raw
283 290 > hello\n
284 291 > readline
285 292 > raw
286 293 > between\n
287 294 > pairs 81\n
288 295 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
289 296 > readline
290 297 > readline
291 298 > EOF
292 299 using raw connection to peer
293 300 i> write(10) -> 10:
294 301 i> pre-hello\n
295 302 o> readline() -> 2:
296 303 o> 0\n
297 304 i> write(6) -> 6:
298 305 i> hello\n
299 306 o> readline() -> 4:
300 307 o> 444\n
301 308 i> write(98) -> 98:
302 309 i> between\n
303 310 i> pairs 81\n
304 311 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
305 312 o> readline() -> 444:
306 313 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
307 314 o> readline() -> 2:
308 315 o> 1\n
309 316
310 317 $ hg --config sshpeer.mode=extra-handshake-commands --config sshpeer.handshake-mode=pre-no-args --debug debugpeer ssh://user@dummy/server
311 318 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
312 319 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
313 320 sending no-args command
314 321 devel-peer-request: hello+between
315 322 devel-peer-request: pairs: 81 bytes
316 323 sending hello command
317 324 sending between command
318 325 remote: 0
319 326 remote: 444
320 327 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
321 328 remote: 1
322 329 devel-peer-request: protocaps
323 330 devel-peer-request: caps: * bytes (glob)
324 331 sending protocaps command
325 332 url: ssh://user@dummy/server
326 333 local: no
327 334 pushable: yes
328 335
329 336 Send multiple unknown commands before hello
330 337
331 338 $ hg -R server debugwireproto --localssh --peer raw << EOF
332 339 > raw
333 340 > unknown1\n
334 341 > readline
335 342 > raw
336 343 > unknown2\n
337 344 > readline
338 345 > raw
339 346 > unknown3\n
340 347 > readline
341 348 > raw
342 349 > hello\n
343 350 > readline
344 351 > readline
345 352 > raw
346 353 > between\n
347 354 > pairs 81\n
348 355 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
349 356 > readline
350 357 > readline
351 358 > EOF
352 359 using raw connection to peer
353 360 i> write(9) -> 9:
354 361 i> unknown1\n
355 362 o> readline() -> 2:
356 363 o> 0\n
357 364 i> write(9) -> 9:
358 365 i> unknown2\n
359 366 o> readline() -> 2:
360 367 o> 0\n
361 368 i> write(9) -> 9:
362 369 i> unknown3\n
363 370 o> readline() -> 2:
364 371 o> 0\n
365 372 i> write(6) -> 6:
366 373 i> hello\n
367 374 o> readline() -> 4:
368 375 o> 444\n
369 376 o> readline() -> 444:
370 377 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
371 378 i> write(98) -> 98:
372 379 i> between\n
373 380 i> pairs 81\n
374 381 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
375 382 o> readline() -> 2:
376 383 o> 1\n
377 384 o> readline() -> 1:
378 385 o> \n
379 386
380 387 $ hg --config sshpeer.mode=extra-handshake-commands --config sshpeer.handshake-mode=pre-multiple-no-args --debug debugpeer ssh://user@dummy/server
381 388 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
382 389 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
383 390 sending unknown1 command
384 391 sending unknown2 command
385 392 sending unknown3 command
386 393 devel-peer-request: hello+between
387 394 devel-peer-request: pairs: 81 bytes
388 395 sending hello command
389 396 sending between command
390 397 remote: 0
391 398 remote: 0
392 399 remote: 0
393 400 remote: 444
394 401 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
395 402 remote: 1
396 403 devel-peer-request: protocaps
397 404 devel-peer-request: caps: * bytes (glob)
398 405 sending protocaps command
399 406 url: ssh://user@dummy/server
400 407 local: no
401 408 pushable: yes
402 409
403 410 Send an unknown command before hello that has arguments
404 411
405 412 $ cd server
406 413
407 414 $ hg debugwireproto --localssh --peer raw << EOF
408 415 > raw
409 416 > with-args\n
410 417 > foo 13\n
411 418 > value for foo\n
412 419 > bar 13\n
413 420 > value for bar\n
414 421 > readline
415 422 > readline
416 423 > readline
417 424 > readline
418 425 > readline
419 426 > raw
420 427 > hello\n
421 428 > readline
422 429 > readline
423 430 > raw
424 431 > between\n
425 432 > pairs 81\n
426 433 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
427 434 > readline
428 435 > readline
429 436 > EOF
430 437 using raw connection to peer
431 438 i> write(52) -> 52:
432 439 i> with-args\n
433 440 i> foo 13\n
434 441 i> value for foo\n
435 442 i> bar 13\n
436 443 i> value for bar\n
437 444 o> readline() -> 2:
438 445 o> 0\n
439 446 o> readline() -> 2:
440 447 o> 0\n
441 448 o> readline() -> 2:
442 449 o> 0\n
443 450 o> readline() -> 2:
444 451 o> 0\n
445 452 o> readline() -> 2:
446 453 o> 0\n
447 454 i> write(6) -> 6:
448 455 i> hello\n
449 456 o> readline() -> 4:
450 457 o> 444\n
451 458 o> readline() -> 444:
452 459 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
453 460 i> write(98) -> 98:
454 461 i> between\n
455 462 i> pairs 81\n
456 463 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
457 464 o> readline() -> 2:
458 465 o> 1\n
459 466 o> readline() -> 1:
460 467 o> \n
461 468
462 469 Send an unknown command having an argument that looks numeric
463 470
464 471 $ hg debugwireproto --localssh --peer raw << EOF
465 472 > raw
466 473 > unknown\n
467 474 > foo 1\n
468 475 > 0\n
469 476 > readline
470 477 > readline
471 478 > readline
472 479 > raw
473 480 > hello\n
474 481 > readline
475 482 > readline
476 483 > raw
477 484 > between\n
478 485 > pairs 81\n
479 486 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
480 487 > readline
481 488 > readline
482 489 > EOF
483 490 using raw connection to peer
484 491 i> write(16) -> 16:
485 492 i> unknown\n
486 493 i> foo 1\n
487 494 i> 0\n
488 495 o> readline() -> 2:
489 496 o> 0\n
490 497 o> readline() -> 2:
491 498 o> 0\n
492 499 o> readline() -> 2:
493 500 o> 0\n
494 501 i> write(6) -> 6:
495 502 i> hello\n
496 503 o> readline() -> 4:
497 504 o> 444\n
498 505 o> readline() -> 444:
499 506 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
500 507 i> write(98) -> 98:
501 508 i> between\n
502 509 i> pairs 81\n
503 510 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
504 511 o> readline() -> 2:
505 512 o> 1\n
506 513 o> readline() -> 1:
507 514 o> \n
508 515
509 516 $ hg debugwireproto --localssh --peer raw << EOF
510 517 > raw
511 518 > unknown\n
512 519 > foo 1\n
513 520 > 1\n
514 521 > readline
515 522 > readline
516 523 > readline
517 524 > raw
518 525 > hello\n
519 526 > readline
520 527 > readline
521 528 > raw
522 529 > between\n
523 530 > pairs 81\n
524 531 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
525 532 > readline
526 533 > readline
527 534 > EOF
528 535 using raw connection to peer
529 536 i> write(16) -> 16:
530 537 i> unknown\n
531 538 i> foo 1\n
532 539 i> 1\n
533 540 o> readline() -> 2:
534 541 o> 0\n
535 542 o> readline() -> 2:
536 543 o> 0\n
537 544 o> readline() -> 2:
538 545 o> 0\n
539 546 i> write(6) -> 6:
540 547 i> hello\n
541 548 o> readline() -> 4:
542 549 o> 444\n
543 550 o> readline() -> 444:
544 551 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
545 552 i> write(98) -> 98:
546 553 i> between\n
547 554 i> pairs 81\n
548 555 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
549 556 o> readline() -> 2:
550 557 o> 1\n
551 558 o> readline() -> 1:
552 559 o> \n
553 560
554 561 When sending a dict argument value, it is serialized to
555 562 "<arg> <item count>" followed by "<key> <len>\n<value>" for each item
556 563 in the dict.
557 564
558 565 Dictionary value for unknown command
559 566
560 567 $ hg debugwireproto --localssh --peer raw << EOF
561 568 > raw
562 569 > unknown\n
563 570 > dict 3\n
564 571 > key1 3\n
565 572 > foo\n
566 573 > key2 3\n
567 574 > bar\n
568 575 > key3 3\n
569 576 > baz\n
570 577 > readline
571 578 > readline
572 579 > readline
573 580 > readline
574 581 > readline
575 582 > readline
576 583 > readline
577 584 > readline
578 585 > raw
579 586 > hello\n
580 587 > readline
581 588 > readline
582 589 > EOF
583 590 using raw connection to peer
584 591 i> write(48) -> 48:
585 592 i> unknown\n
586 593 i> dict 3\n
587 594 i> key1 3\n
588 595 i> foo\n
589 596 i> key2 3\n
590 597 i> bar\n
591 598 i> key3 3\n
592 599 i> baz\n
593 600 o> readline() -> 2:
594 601 o> 0\n
595 602 o> readline() -> 2:
596 603 o> 0\n
597 604 o> readline() -> 2:
598 605 o> 0\n
599 606 o> readline() -> 2:
600 607 o> 0\n
601 608 o> readline() -> 2:
602 609 o> 0\n
603 610 o> readline() -> 2:
604 611 o> 0\n
605 612 o> readline() -> 2:
606 613 o> 0\n
607 614 o> readline() -> 2:
608 615 o> 0\n
609 616 i> write(6) -> 6:
610 617 i> hello\n
611 618 o> readline() -> 4:
612 619 o> 444\n
613 620 o> readline() -> 444:
614 621 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
615 622
616 623 Incomplete dictionary send
617 624
618 625 $ hg debugwireproto --localssh --peer raw << EOF
619 626 > raw
620 627 > unknown\n
621 628 > dict 3\n
622 629 > key1 3\n
623 630 > foo\n
624 631 > readline
625 632 > readline
626 633 > readline
627 634 > readline
628 635 > EOF
629 636 using raw connection to peer
630 637 i> write(26) -> 26:
631 638 i> unknown\n
632 639 i> dict 3\n
633 640 i> key1 3\n
634 641 i> foo\n
635 642 o> readline() -> 2:
636 643 o> 0\n
637 644 o> readline() -> 2:
638 645 o> 0\n
639 646 o> readline() -> 2:
640 647 o> 0\n
641 648 o> readline() -> 2:
642 649 o> 0\n
643 650
644 651 Incomplete value send
645 652
646 653 $ hg debugwireproto --localssh --peer raw << EOF
647 654 > raw
648 655 > unknown\n
649 656 > dict 3\n
650 657 > key1 3\n
651 658 > fo
652 659 > readline
653 660 > readline
654 661 > readline
655 662 > EOF
656 663 using raw connection to peer
657 664 i> write(24) -> 24:
658 665 i> unknown\n
659 666 i> dict 3\n
660 667 i> key1 3\n
661 668 i> fo
662 669 o> readline() -> 2:
663 670 o> 0\n
664 671 o> readline() -> 2:
665 672 o> 0\n
666 673 o> readline() -> 2:
667 674 o> 0\n
668 675
669 676 Send a command line with spaces
670 677
671 678 $ hg debugwireproto --localssh --peer raw << EOF
672 679 > raw
673 680 > unknown withspace\n
674 681 > readline
675 682 > raw
676 683 > hello\n
677 684 > readline
678 685 > readline
679 686 > raw
680 687 > between\n
681 688 > pairs 81\n
682 689 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
683 690 > readline
684 691 > readline
685 692 > EOF
686 693 using raw connection to peer
687 694 i> write(18) -> 18:
688 695 i> unknown withspace\n
689 696 o> readline() -> 2:
690 697 o> 0\n
691 698 i> write(6) -> 6:
692 699 i> hello\n
693 700 o> readline() -> 4:
694 701 o> 444\n
695 702 o> readline() -> 444:
696 703 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
697 704 i> write(98) -> 98:
698 705 i> between\n
699 706 i> pairs 81\n
700 707 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
701 708 o> readline() -> 2:
702 709 o> 1\n
703 710 o> readline() -> 1:
704 711 o> \n
705 712
706 713 $ hg debugwireproto --localssh --peer raw << EOF
707 714 > raw
708 715 > unknown with multiple spaces\n
709 716 > readline
710 717 > raw
711 718 > hello\n
712 719 > readline
713 720 > readline
714 721 > raw
715 722 > between\n
716 723 > pairs 81\n
717 724 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
718 725 > readline
719 726 > EOF
720 727 using raw connection to peer
721 728 i> write(29) -> 29:
722 729 i> unknown with multiple spaces\n
723 730 o> readline() -> 2:
724 731 o> 0\n
725 732 i> write(6) -> 6:
726 733 i> hello\n
727 734 o> readline() -> 4:
728 735 o> 444\n
729 736 o> readline() -> 444:
730 737 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
731 738 i> write(98) -> 98:
732 739 i> between\n
733 740 i> pairs 81\n
734 741 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
735 742 o> readline() -> 2:
736 743 o> 1\n
737 744
738 745 $ hg debugwireproto --localssh --peer raw << EOF
739 746 > raw
740 747 > unknown with spaces\n
741 748 > key 10\n
742 749 > some value\n
743 750 > readline
744 751 > readline
745 752 > readline
746 753 > raw
747 754 > hello\n
748 755 > readline
749 756 > readline
750 757 > raw
751 758 > between\n
752 759 > pairs 81\n
753 760 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
754 761 > readline
755 762 > readline
756 763 > EOF
757 764 using raw connection to peer
758 765 i> write(38) -> 38:
759 766 i> unknown with spaces\n
760 767 i> key 10\n
761 768 i> some value\n
762 769 o> readline() -> 2:
763 770 o> 0\n
764 771 o> readline() -> 2:
765 772 o> 0\n
766 773 o> readline() -> 2:
767 774 o> 0\n
768 775 i> write(6) -> 6:
769 776 i> hello\n
770 777 o> readline() -> 4:
771 778 o> 444\n
772 779 o> readline() -> 444:
773 780 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
774 781 i> write(98) -> 98:
775 782 i> between\n
776 783 i> pairs 81\n
777 784 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
778 785 o> readline() -> 2:
779 786 o> 1\n
780 787 o> readline() -> 1:
781 788 o> \n
782 789 Send an unknown command after the "between"
783 790
784 791 $ hg debugwireproto --localssh --peer raw << EOF
785 792 > raw
786 793 > hello\n
787 794 > readline
788 795 > readline
789 796 > raw
790 797 > between\n
791 798 > pairs 81\n
792 799 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000unknown
793 800 > readline
794 801 > readline
795 802 > EOF
796 803 using raw connection to peer
797 804 i> write(6) -> 6:
798 805 i> hello\n
799 806 o> readline() -> 4:
800 807 o> 444\n
801 808 o> readline() -> 444:
802 809 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
803 810 i> write(105) -> 105:
804 811 i> between\n
805 812 i> pairs 81\n
806 813 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000unknown
807 814 o> readline() -> 2:
808 815 o> 1\n
809 816 o> readline() -> 1:
810 817 o> \n
811 818
812 819 And one with arguments
813 820
814 821 $ hg debugwireproto --localssh --peer raw << EOF
815 822 > raw
816 823 > hello\n
817 824 > between\n
818 825 > pairs 81\n
819 826 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
820 827 > readline
821 828 > readline
822 829 > readline
823 830 > readline
824 831 > raw
825 832 > unknown\n
826 833 > foo 5\n
827 834 > \nvalue\n
828 835 > bar 3\n
829 836 > baz\n
830 837 > readline
831 838 > readline
832 839 > readline
833 840 > EOF
834 841 using raw connection to peer
835 842 i> write(104) -> 104:
836 843 i> hello\n
837 844 i> between\n
838 845 i> pairs 81\n
839 846 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
840 847 o> readline() -> 4:
841 848 o> 444\n
842 849 o> readline() -> 444:
843 850 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
844 851 o> readline() -> 2:
845 852 o> 1\n
846 853 o> readline() -> 1:
847 854 o> \n
848 855 i> write(31) -> 31:
849 856 i> unknown\n
850 857 i> foo 5\n
851 858 i> \n
852 859 i> value\n
853 860 i> bar 3\n
854 861 i> baz\n
855 862 o> readline() -> 2:
856 863 o> 0\n
857 864 o> readline() -> 2:
858 865 o> 0\n
859 866 o> readline() -> 0:
860 867
861 868 Send a valid command before the handshake
862 869
863 870 $ hg debugwireproto --localssh --peer raw << EOF
864 871 > raw
865 872 > heads\n
866 873 > readline
867 874 > raw
868 875 > hello\n
869 876 > between\n
870 877 > pairs 81\n
871 878 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
872 879 > readline
873 880 > readline
874 881 > readline
875 882 > readline
876 883 > EOF
877 884 using raw connection to peer
878 885 i> write(6) -> 6:
879 886 i> heads\n
880 887 o> readline() -> 3:
881 888 o> 41\n
882 889 i> write(104) -> 104:
883 890 i> hello\n
884 891 i> between\n
885 892 i> pairs 81\n
886 893 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
887 894 o> readline() -> 41:
888 895 o> 68986213bd4485ea51533535e3fc9e78007a711f\n
889 896 o> readline() -> 4:
890 897 o> 444\n
891 898 o> readline() -> 444:
892 899 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
893 900 o> readline() -> 2:
894 901 o> 1\n
895 902
896 903 And a variation that doesn't send the between command
897 904
898 905 $ hg debugwireproto --localssh --peer raw << EOF
899 906 > raw
900 907 > heads\n
901 908 > readline
902 909 > raw
903 910 > hello\n
904 911 > readline
905 912 > readline
906 913 > EOF
907 914 using raw connection to peer
908 915 i> write(6) -> 6:
909 916 i> heads\n
910 917 o> readline() -> 3:
911 918 o> 41\n
912 919 i> write(6) -> 6:
913 920 i> hello\n
914 921 o> readline() -> 41:
915 922 o> 68986213bd4485ea51533535e3fc9e78007a711f\n
916 923 o> readline() -> 4:
917 924 o> 444\n
918 925
919 926 Send an upgrade request to a server that doesn't support that command
920 927
921 928 $ hg debugwireproto --localssh --peer raw << EOF
922 929 > raw
923 930 > upgrade 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a proto=irrelevant1%2Cirrelevant2\n
924 931 > readline
925 932 > raw
926 933 > hello\n
927 934 > between\n
928 935 > pairs 81\n
929 936 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
930 937 > readline
931 938 > readline
932 939 > readline
933 940 > readline
934 941 > EOF
935 942 using raw connection to peer
936 943 i> write(77) -> 77:
937 944 i> upgrade 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a proto=irrelevant1%2Cirrelevant2\n
938 945 o> readline() -> 2:
939 946 o> 0\n
940 947 i> write(104) -> 104:
941 948 i> hello\n
942 949 i> between\n
943 950 i> pairs 81\n
944 951 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
945 952 o> readline() -> 4:
946 953 o> 444\n
947 954 o> readline() -> 444:
948 955 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
949 956 o> readline() -> 2:
950 957 o> 1\n
951 958 o> readline() -> 1:
952 959 o> \n
953 960
954 961 $ cd ..
955 962
956 963 $ hg --config experimental.sshpeer.advertise-v2=true --debug debugpeer ssh://user@dummy/server
957 964 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
958 965 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
959 966 sending upgrade request: * proto=exp-ssh-v2-0003 (glob)
960 967 devel-peer-request: hello+between
961 968 devel-peer-request: pairs: 81 bytes
962 969 sending hello command
963 970 sending between command
964 971 remote: 0
965 972 remote: 444
966 973 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
967 974 remote: 1
968 975 devel-peer-request: protocaps
969 976 devel-peer-request: caps: * bytes (glob)
970 977 sending protocaps command
971 978 url: ssh://user@dummy/server
972 979 local: no
973 980 pushable: yes
974 981
975 982 Enable version 2 support on server. We need to do this in hgrc because we can't
976 983 use --config with `hg serve --stdio`.
977 984
978 985 $ cat >> server/.hg/hgrc << EOF
979 986 > [experimental]
980 987 > sshserver.support-v2 = true
981 988 > EOF
982 989
983 990 Send an upgrade request to a server that supports upgrade
984 991
985 992 $ cd server
986 993
987 994 $ hg debugwireproto --localssh --peer raw << EOF
988 995 > raw
989 996 > upgrade this-is-some-token proto=exp-ssh-v2-0003\n
990 997 > hello\n
991 998 > between\n
992 999 > pairs 81\n
993 1000 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
994 1001 > readline
995 1002 > readline
996 1003 > readline
997 1004 > EOF
998 1005 using raw connection to peer
999 1006 i> write(153) -> 153:
1000 1007 i> upgrade this-is-some-token proto=exp-ssh-v2-0003\n
1001 1008 i> hello\n
1002 1009 i> between\n
1003 1010 i> pairs 81\n
1004 1011 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1005 1012 o> readline() -> 44:
1006 1013 o> upgraded this-is-some-token exp-ssh-v2-0003\n
1007 1014 o> readline() -> 4:
1008 1015 o> 443\n
1009 1016 o> readline() -> 444:
1010 1017 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1011 1018
1012 1019 $ cd ..
1013 1020
1014 1021 $ hg --config experimental.sshpeer.advertise-v2=true --debug debugpeer ssh://user@dummy/server
1015 1022 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
1016 1023 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
1017 1024 sending upgrade request: * proto=exp-ssh-v2-0003 (glob)
1018 1025 devel-peer-request: hello+between
1019 1026 devel-peer-request: pairs: 81 bytes
1020 1027 sending hello command
1021 1028 sending between command
1022 1029 protocol upgraded to exp-ssh-v2-0003
1023 1030 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1024 1031 devel-peer-request: protocaps
1025 1032 devel-peer-request: caps: * bytes (glob)
1026 1033 sending protocaps command
1027 1034 url: ssh://user@dummy/server
1028 1035 local: no
1029 1036 pushable: yes
1030 1037
1031 1038 Verify the peer has capabilities
1032 1039
1033 1040 $ hg --config experimental.sshpeer.advertise-v2=true --debug debugcapabilities ssh://user@dummy/server
1034 1041 running * "*/tests/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob) (no-windows !)
1035 1042 running * "*\tests/dummyssh" "user@dummy" "hg -R server serve --stdio" (glob) (windows !)
1036 1043 sending upgrade request: * proto=exp-ssh-v2-0003 (glob)
1037 1044 devel-peer-request: hello+between
1038 1045 devel-peer-request: pairs: 81 bytes
1039 1046 sending hello command
1040 1047 sending between command
1041 1048 protocol upgraded to exp-ssh-v2-0003
1042 1049 remote: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1043 1050 devel-peer-request: protocaps
1044 1051 devel-peer-request: caps: * bytes (glob)
1045 1052 sending protocaps command
1046 1053 Main capabilities:
1047 1054 batch
1048 1055 branchmap
1049 1056 $USUAL_BUNDLE2_CAPS$
1050 1057 changegroupsubset
1051 1058 getbundle
1052 1059 known
1053 1060 lookup
1054 1061 protocaps
1055 1062 pushkey
1056 1063 streamreqs=generaldelta,revlogv1,sparserevlog
1057 1064 unbundle=HG10GZ,HG10BZ,HG10UN
1058 1065 unbundlehash
1059 1066 Bundle2 capabilities:
1060 1067 HG20
1061 1068 bookmarks
1062 1069 changegroup
1063 1070 01
1064 1071 02
1065 1072 checkheads
1066 1073 related
1067 1074 digests
1068 1075 md5
1069 1076 sha1
1070 1077 sha512
1071 1078 error
1072 1079 abort
1073 1080 unsupportedcontent
1074 1081 pushraced
1075 1082 pushkey
1076 1083 hgtagsfnodes
1077 1084 listkeys
1078 1085 phases
1079 1086 heads
1080 1087 pushkey
1081 1088 remote-changegroup
1082 1089 http
1083 1090 https
1084 1091 stream
1085 1092 v2
1086 1093
1087 1094 Command after upgrade to version 2 is processed
1088 1095
1089 1096 $ cd server
1090 1097
1091 1098 $ hg debugwireproto --localssh --peer raw << EOF
1092 1099 > raw
1093 1100 > upgrade this-is-some-token proto=exp-ssh-v2-0003\n
1094 1101 > hello\n
1095 1102 > between\n
1096 1103 > pairs 81\n
1097 1104 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1098 1105 > readline
1099 1106 > readline
1100 1107 > readline
1101 1108 > raw
1102 1109 > hello\n
1103 1110 > readline
1104 1111 > readline
1105 1112 > EOF
1106 1113 using raw connection to peer
1107 1114 i> write(153) -> 153:
1108 1115 i> upgrade this-is-some-token proto=exp-ssh-v2-0003\n
1109 1116 i> hello\n
1110 1117 i> between\n
1111 1118 i> pairs 81\n
1112 1119 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1113 1120 o> readline() -> 44:
1114 1121 o> upgraded this-is-some-token exp-ssh-v2-0003\n
1115 1122 o> readline() -> 4:
1116 1123 o> 443\n
1117 1124 o> readline() -> 444:
1118 1125 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1119 1126 i> write(6) -> 6:
1120 1127 i> hello\n
1121 1128 o> readline() -> 4:
1122 1129 o> 428\n
1123 1130 o> readline() -> 428:
1124 1131 o> capabilities: branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1125 1132
1126 1133 Multiple upgrades is not allowed
1127 1134
1128 1135 $ hg debugwireproto --localssh --peer raw << EOF
1129 1136 > raw
1130 1137 > upgrade this-is-some-token proto=exp-ssh-v2-0003\n
1131 1138 > hello\n
1132 1139 > between\n
1133 1140 > pairs 81\n
1134 1141 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1135 1142 > readline
1136 1143 > readline
1137 1144 > readline
1138 1145 > raw
1139 1146 > upgrade another-token proto=irrelevant\n
1140 1147 > hello\n
1141 1148 > readline
1142 1149 > readavailable
1143 1150 > EOF
1144 1151 using raw connection to peer
1145 1152 i> write(153) -> 153:
1146 1153 i> upgrade this-is-some-token proto=exp-ssh-v2-0003\n
1147 1154 i> hello\n
1148 1155 i> between\n
1149 1156 i> pairs 81\n
1150 1157 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1151 1158 o> readline() -> 44:
1152 1159 o> upgraded this-is-some-token exp-ssh-v2-0003\n
1153 1160 o> readline() -> 4:
1154 1161 o> 443\n
1155 1162 o> readline() -> 444:
1156 1163 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1157 1164 i> write(45) -> 45:
1158 1165 i> upgrade another-token proto=irrelevant\n
1159 1166 i> hello\n
1160 1167 o> readline() -> 1:
1161 1168 o> \n
1162 1169 e> read(-1) -> 42:
1163 1170 e> cannot upgrade protocols multiple times\n
1164 1171 e> -\n
1165 1172
1166 1173 Malformed upgrade request line (not exactly 3 space delimited tokens)
1167 1174
1168 1175 $ hg debugwireproto --localssh --peer raw << EOF
1169 1176 > raw
1170 1177 > upgrade\n
1171 1178 > readline
1172 1179 > EOF
1173 1180 using raw connection to peer
1174 1181 i> write(8) -> 8:
1175 1182 i> upgrade\n
1176 1183 o> readline() -> 2:
1177 1184 o> 0\n
1178 1185
1179 1186 $ hg debugwireproto --localssh --peer raw << EOF
1180 1187 > raw
1181 1188 > upgrade token\n
1182 1189 > readline
1183 1190 > EOF
1184 1191 using raw connection to peer
1185 1192 i> write(14) -> 14:
1186 1193 i> upgrade token\n
1187 1194 o> readline() -> 2:
1188 1195 o> 0\n
1189 1196
1190 1197 $ hg debugwireproto --localssh --peer raw << EOF
1191 1198 > raw
1192 1199 > upgrade token foo=bar extra-token\n
1193 1200 > readline
1194 1201 > EOF
1195 1202 using raw connection to peer
1196 1203 i> write(34) -> 34:
1197 1204 i> upgrade token foo=bar extra-token\n
1198 1205 o> readline() -> 2:
1199 1206 o> 0\n
1200 1207
1201 1208 Upgrade request to unsupported protocol is ignored
1202 1209
1203 1210 $ hg debugwireproto --localssh --peer raw << EOF
1204 1211 > raw
1205 1212 > upgrade this-is-some-token proto=unknown1,unknown2\n
1206 1213 > readline
1207 1214 > raw
1208 1215 > hello\n
1209 1216 > readline
1210 1217 > readline
1211 1218 > raw
1212 1219 > between\n
1213 1220 > pairs 81\n
1214 1221 > 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1215 1222 > readline
1216 1223 > readline
1217 1224 > EOF
1218 1225 using raw connection to peer
1219 1226 i> write(51) -> 51:
1220 1227 i> upgrade this-is-some-token proto=unknown1,unknown2\n
1221 1228 o> readline() -> 2:
1222 1229 o> 0\n
1223 1230 i> write(6) -> 6:
1224 1231 i> hello\n
1225 1232 o> readline() -> 4:
1226 1233 o> 444\n
1227 1234 o> readline() -> 444:
1228 1235 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1229 1236 i> write(98) -> 98:
1230 1237 i> between\n
1231 1238 i> pairs 81\n
1232 1239 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1233 1240 o> readline() -> 2:
1234 1241 o> 1\n
1235 1242 o> readline() -> 1:
1236 1243 o> \n
1237 1244
1238 1245 Upgrade request must be followed by hello + between
1239 1246
1240 1247 $ hg debugwireproto --localssh --peer raw << EOF
1241 1248 > raw
1242 1249 > upgrade token proto=exp-ssh-v2-0003\n
1243 1250 > invalid\n
1244 1251 > readline
1245 1252 > readavailable
1246 1253 > EOF
1247 1254 using raw connection to peer
1248 1255 i> write(44) -> 44:
1249 1256 i> upgrade token proto=exp-ssh-v2-0003\n
1250 1257 i> invalid\n
1251 1258 o> readline() -> 1:
1252 1259 o> \n
1253 1260 e> read(-1) -> 46:
1254 1261 e> malformed handshake protocol: missing hello\n
1255 1262 e> -\n
1256 1263
1257 1264 $ hg debugwireproto --localssh --peer raw << EOF
1258 1265 > raw
1259 1266 > upgrade token proto=exp-ssh-v2-0003\n
1260 1267 > hello\n
1261 1268 > invalid\n
1262 1269 > readline
1263 1270 > readavailable
1264 1271 > EOF
1265 1272 using raw connection to peer
1266 1273 i> write(50) -> 50:
1267 1274 i> upgrade token proto=exp-ssh-v2-0003\n
1268 1275 i> hello\n
1269 1276 i> invalid\n
1270 1277 o> readline() -> 1:
1271 1278 o> \n
1272 1279 e> read(-1) -> 48:
1273 1280 e> malformed handshake protocol: missing between\n
1274 1281 e> -\n
1275 1282
1276 1283 $ hg debugwireproto --localssh --peer raw << EOF
1277 1284 > raw
1278 1285 > upgrade token proto=exp-ssh-v2-0003\n
1279 1286 > hello\n
1280 1287 > between\n
1281 1288 > invalid\n
1282 1289 > readline
1283 1290 > readavailable
1284 1291 > EOF
1285 1292 using raw connection to peer
1286 1293 i> write(58) -> 58:
1287 1294 i> upgrade token proto=exp-ssh-v2-0003\n
1288 1295 i> hello\n
1289 1296 i> between\n
1290 1297 i> invalid\n
1291 1298 o> readline() -> 1:
1292 1299 o> \n
1293 1300 e> read(-1) -> 49:
1294 1301 e> malformed handshake protocol: missing pairs 81\n
1295 1302 e> -\n
1296 1303
1297 1304 Legacy commands are not exposed to version 2 of protocol
1298 1305
1299 1306 TODO re-enable these once we're back to actually using v2 commands
1300 1307
1301 1308 $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
1302 1309 > command branches
1303 1310 > nodes 0000000000000000000000000000000000000000
1304 1311 > EOF
1305 1312 creating ssh peer from handshake results
1306 1313 sending branches command
1307 1314 response:
1308 1315
1309 1316 $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
1310 1317 > command changegroup
1311 1318 > roots 0000000000000000000000000000000000000000
1312 1319 > EOF
1313 1320 creating ssh peer from handshake results
1314 1321 sending changegroup command
1315 1322 response:
1316 1323
1317 1324 $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
1318 1325 > command changegroupsubset
1319 1326 > bases 0000000000000000000000000000000000000000
1320 1327 > heads 0000000000000000000000000000000000000000
1321 1328 > EOF
1322 1329 creating ssh peer from handshake results
1323 1330 sending changegroupsubset command
1324 1331 response:
1325 1332
1326 1333 $ cd ..
1327 1334
1328 1335 Test listkeys for listing namespaces
1329 1336
1330 1337 $ hg init empty
1331 1338 $ cd empty
1332 1339 $ debugwireproto << EOF
1333 1340 > command listkeys
1334 1341 > namespace namespaces
1335 1342 > EOF
1336 1343 testing ssh1
1337 1344 creating ssh peer from handshake results
1338 1345 i> write(104) -> 104:
1339 1346 i> hello\n
1340 1347 i> between\n
1341 1348 i> pairs 81\n
1342 1349 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1343 1350 i> flush() -> None
1344 1351 o> readline() -> 4:
1345 1352 o> 444\n
1346 1353 o> readline() -> 444:
1347 1354 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1348 1355 o> readline() -> 2:
1349 1356 o> 1\n
1350 1357 o> readline() -> 1:
1351 1358 o> \n
1352 1359 sending listkeys command
1353 1360 i> write(9) -> 9:
1354 1361 i> listkeys\n
1355 1362 i> write(13) -> 13:
1356 1363 i> namespace 10\n
1357 1364 i> write(10) -> 10: namespaces
1358 1365 i> flush() -> None
1359 1366 o> bufferedreadline() -> 3:
1360 1367 o> 30\n
1361 1368 o> bufferedread(30) -> 30:
1362 1369 o> bookmarks\t\n
1363 1370 o> namespaces\t\n
1364 1371 o> phases\t
1365 1372 response: {
1366 1373 b'bookmarks': b'',
1367 1374 b'namespaces': b'',
1368 1375 b'phases': b''
1369 1376 }
1370 1377
1371 1378 testing ssh2
1372 1379 creating ssh peer from handshake results
1373 1380 i> write(171) -> 171:
1374 1381 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1375 1382 i> hello\n
1376 1383 i> between\n
1377 1384 i> pairs 81\n
1378 1385 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1379 1386 i> flush() -> None
1380 1387 o> readline() -> 62:
1381 1388 o> upgraded * exp-ssh-v2-0003\n (glob)
1382 1389 o> readline() -> 4:
1383 1390 o> 443\n
1384 1391 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1385 1392 o> read(1) -> 1:
1386 1393 o> \n
1387 1394 sending listkeys command
1388 1395 i> write(9) -> 9:
1389 1396 i> listkeys\n
1390 1397 i> write(13) -> 13:
1391 1398 i> namespace 10\n
1392 1399 i> write(10) -> 10: namespaces
1393 1400 i> flush() -> None
1394 1401 o> bufferedreadline() -> 3:
1395 1402 o> 30\n
1396 1403 o> bufferedread(30) -> 30:
1397 1404 o> bookmarks\t\n
1398 1405 o> namespaces\t\n
1399 1406 o> phases\t
1400 1407 response: {
1401 1408 b'bookmarks': b'',
1402 1409 b'namespaces': b'',
1403 1410 b'phases': b''
1404 1411 }
1405 1412
1406 1413 $ cd ..
1407 1414
1408 1415 Test listkeys for bookmarks
1409 1416
1410 1417 $ hg init bookmarkrepo
1411 1418 $ cd bookmarkrepo
1412 1419 $ echo 0 > foo
1413 1420 $ hg add foo
1414 1421 $ hg -q commit -m initial
1415 1422 $ echo 1 > foo
1416 1423 $ hg commit -m second
1417 1424
1418 1425 With no bookmarks set
1419 1426
1420 1427 $ debugwireproto << EOF
1421 1428 > command listkeys
1422 1429 > namespace bookmarks
1423 1430 > EOF
1424 1431 testing ssh1
1425 1432 creating ssh peer from handshake results
1426 1433 i> write(104) -> 104:
1427 1434 i> hello\n
1428 1435 i> between\n
1429 1436 i> pairs 81\n
1430 1437 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1431 1438 i> flush() -> None
1432 1439 o> readline() -> 4:
1433 1440 o> 444\n
1434 1441 o> readline() -> 444:
1435 1442 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1436 1443 o> readline() -> 2:
1437 1444 o> 1\n
1438 1445 o> readline() -> 1:
1439 1446 o> \n
1440 1447 sending listkeys command
1441 1448 i> write(9) -> 9:
1442 1449 i> listkeys\n
1443 1450 i> write(12) -> 12:
1444 1451 i> namespace 9\n
1445 1452 i> write(9) -> 9: bookmarks
1446 1453 i> flush() -> None
1447 1454 o> bufferedreadline() -> 2:
1448 1455 o> 0\n
1449 1456 response: {}
1450 1457
1451 1458 testing ssh2
1452 1459 creating ssh peer from handshake results
1453 1460 i> write(171) -> 171:
1454 1461 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1455 1462 i> hello\n
1456 1463 i> between\n
1457 1464 i> pairs 81\n
1458 1465 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1459 1466 i> flush() -> None
1460 1467 o> readline() -> 62:
1461 1468 o> upgraded * exp-ssh-v2-0003\n (glob)
1462 1469 o> readline() -> 4:
1463 1470 o> 443\n
1464 1471 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1465 1472 o> read(1) -> 1:
1466 1473 o> \n
1467 1474 sending listkeys command
1468 1475 i> write(9) -> 9:
1469 1476 i> listkeys\n
1470 1477 i> write(12) -> 12:
1471 1478 i> namespace 9\n
1472 1479 i> write(9) -> 9: bookmarks
1473 1480 i> flush() -> None
1474 1481 o> bufferedreadline() -> 2:
1475 1482 o> 0\n
1476 1483 response: {}
1477 1484
1478 1485 With a single bookmark set
1479 1486
1480 1487 $ hg book -r 0 bookA
1481 1488 $ debugwireproto << EOF
1482 1489 > command listkeys
1483 1490 > namespace bookmarks
1484 1491 > EOF
1485 1492 testing ssh1
1486 1493 creating ssh peer from handshake results
1487 1494 i> write(104) -> 104:
1488 1495 i> hello\n
1489 1496 i> between\n
1490 1497 i> pairs 81\n
1491 1498 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1492 1499 i> flush() -> None
1493 1500 o> readline() -> 4:
1494 1501 o> 444\n
1495 1502 o> readline() -> 444:
1496 1503 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1497 1504 o> readline() -> 2:
1498 1505 o> 1\n
1499 1506 o> readline() -> 1:
1500 1507 o> \n
1501 1508 sending listkeys command
1502 1509 i> write(9) -> 9:
1503 1510 i> listkeys\n
1504 1511 i> write(12) -> 12:
1505 1512 i> namespace 9\n
1506 1513 i> write(9) -> 9: bookmarks
1507 1514 i> flush() -> None
1508 1515 o> bufferedreadline() -> 3:
1509 1516 o> 46\n
1510 1517 o> bufferedread(46) -> 46: bookA\t68986213bd4485ea51533535e3fc9e78007a711f
1511 1518 response: {
1512 1519 b'bookA': b'68986213bd4485ea51533535e3fc9e78007a711f'
1513 1520 }
1514 1521
1515 1522 testing ssh2
1516 1523 creating ssh peer from handshake results
1517 1524 i> write(171) -> 171:
1518 1525 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1519 1526 i> hello\n
1520 1527 i> between\n
1521 1528 i> pairs 81\n
1522 1529 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1523 1530 i> flush() -> None
1524 1531 o> readline() -> 62:
1525 1532 o> upgraded * exp-ssh-v2-0003\n (glob)
1526 1533 o> readline() -> 4:
1527 1534 o> 443\n
1528 1535 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1529 1536 o> read(1) -> 1:
1530 1537 o> \n
1531 1538 sending listkeys command
1532 1539 i> write(9) -> 9:
1533 1540 i> listkeys\n
1534 1541 i> write(12) -> 12:
1535 1542 i> namespace 9\n
1536 1543 i> write(9) -> 9: bookmarks
1537 1544 i> flush() -> None
1538 1545 o> bufferedreadline() -> 3:
1539 1546 o> 46\n
1540 1547 o> bufferedread(46) -> 46: bookA\t68986213bd4485ea51533535e3fc9e78007a711f
1541 1548 response: {
1542 1549 b'bookA': b'68986213bd4485ea51533535e3fc9e78007a711f'
1543 1550 }
1544 1551
1545 1552 With multiple bookmarks set
1546 1553
1547 1554 $ hg book -r 1 bookB
1548 1555 $ debugwireproto << EOF
1549 1556 > command listkeys
1550 1557 > namespace bookmarks
1551 1558 > EOF
1552 1559 testing ssh1
1553 1560 creating ssh peer from handshake results
1554 1561 i> write(104) -> 104:
1555 1562 i> hello\n
1556 1563 i> between\n
1557 1564 i> pairs 81\n
1558 1565 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1559 1566 i> flush() -> None
1560 1567 o> readline() -> 4:
1561 1568 o> 444\n
1562 1569 o> readline() -> 444:
1563 1570 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1564 1571 o> readline() -> 2:
1565 1572 o> 1\n
1566 1573 o> readline() -> 1:
1567 1574 o> \n
1568 1575 sending listkeys command
1569 1576 i> write(9) -> 9:
1570 1577 i> listkeys\n
1571 1578 i> write(12) -> 12:
1572 1579 i> namespace 9\n
1573 1580 i> write(9) -> 9: bookmarks
1574 1581 i> flush() -> None
1575 1582 o> bufferedreadline() -> 3:
1576 1583 o> 93\n
1577 1584 o> bufferedread(93) -> 93:
1578 1585 o> bookA\t68986213bd4485ea51533535e3fc9e78007a711f\n
1579 1586 o> bookB\t1880f3755e2e52e3199e0ee5638128b08642f34d
1580 1587 response: {
1581 1588 b'bookA': b'68986213bd4485ea51533535e3fc9e78007a711f',
1582 1589 b'bookB': b'1880f3755e2e52e3199e0ee5638128b08642f34d'
1583 1590 }
1584 1591
1585 1592 testing ssh2
1586 1593 creating ssh peer from handshake results
1587 1594 i> write(171) -> 171:
1588 1595 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1589 1596 i> hello\n
1590 1597 i> between\n
1591 1598 i> pairs 81\n
1592 1599 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1593 1600 i> flush() -> None
1594 1601 o> readline() -> 62:
1595 1602 o> upgraded * exp-ssh-v2-0003\n (glob)
1596 1603 o> readline() -> 4:
1597 1604 o> 443\n
1598 1605 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1599 1606 o> read(1) -> 1:
1600 1607 o> \n
1601 1608 sending listkeys command
1602 1609 i> write(9) -> 9:
1603 1610 i> listkeys\n
1604 1611 i> write(12) -> 12:
1605 1612 i> namespace 9\n
1606 1613 i> write(9) -> 9: bookmarks
1607 1614 i> flush() -> None
1608 1615 o> bufferedreadline() -> 3:
1609 1616 o> 93\n
1610 1617 o> bufferedread(93) -> 93:
1611 1618 o> bookA\t68986213bd4485ea51533535e3fc9e78007a711f\n
1612 1619 o> bookB\t1880f3755e2e52e3199e0ee5638128b08642f34d
1613 1620 response: {
1614 1621 b'bookA': b'68986213bd4485ea51533535e3fc9e78007a711f',
1615 1622 b'bookB': b'1880f3755e2e52e3199e0ee5638128b08642f34d'
1616 1623 }
1617 1624
1618 1625 Test pushkey for bookmarks
1619 1626
1620 1627 $ debugwireproto << EOF
1621 1628 > command pushkey
1622 1629 > namespace bookmarks
1623 1630 > key remote
1624 1631 > old
1625 1632 > new 68986213bd4485ea51533535e3fc9e78007a711f
1626 1633 > EOF
1627 1634 testing ssh1
1628 1635 creating ssh peer from handshake results
1629 1636 i> write(104) -> 104:
1630 1637 i> hello\n
1631 1638 i> between\n
1632 1639 i> pairs 81\n
1633 1640 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1634 1641 i> flush() -> None
1635 1642 o> readline() -> 4:
1636 1643 o> 444\n
1637 1644 o> readline() -> 444:
1638 1645 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1639 1646 o> readline() -> 2:
1640 1647 o> 1\n
1641 1648 o> readline() -> 1:
1642 1649 o> \n
1643 1650 sending pushkey command
1644 1651 i> write(8) -> 8:
1645 1652 i> pushkey\n
1646 1653 i> write(6) -> 6:
1647 1654 i> key 6\n
1648 1655 i> write(6) -> 6: remote
1649 1656 i> write(12) -> 12:
1650 1657 i> namespace 9\n
1651 1658 i> write(9) -> 9: bookmarks
1652 1659 i> write(7) -> 7:
1653 1660 i> new 40\n
1654 1661 i> write(40) -> 40: 68986213bd4485ea51533535e3fc9e78007a711f
1655 1662 i> write(6) -> 6:
1656 1663 i> old 0\n
1657 1664 i> flush() -> None
1658 1665 o> bufferedreadline() -> 2:
1659 1666 o> 2\n
1660 1667 o> bufferedread(2) -> 2:
1661 1668 o> 1\n
1662 1669 response: True
1663 1670
1664 1671 testing ssh2
1665 1672 creating ssh peer from handshake results
1666 1673 i> write(171) -> 171:
1667 1674 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1668 1675 i> hello\n
1669 1676 i> between\n
1670 1677 i> pairs 81\n
1671 1678 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1672 1679 i> flush() -> None
1673 1680 o> readline() -> 62:
1674 1681 o> upgraded * exp-ssh-v2-0003\n (glob)
1675 1682 o> readline() -> 4:
1676 1683 o> 443\n
1677 1684 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1678 1685 o> read(1) -> 1:
1679 1686 o> \n
1680 1687 sending pushkey command
1681 1688 i> write(8) -> 8:
1682 1689 i> pushkey\n
1683 1690 i> write(6) -> 6:
1684 1691 i> key 6\n
1685 1692 i> write(6) -> 6: remote
1686 1693 i> write(12) -> 12:
1687 1694 i> namespace 9\n
1688 1695 i> write(9) -> 9: bookmarks
1689 1696 i> write(7) -> 7:
1690 1697 i> new 40\n
1691 1698 i> write(40) -> 40: 68986213bd4485ea51533535e3fc9e78007a711f
1692 1699 i> write(6) -> 6:
1693 1700 i> old 0\n
1694 1701 i> flush() -> None
1695 1702 o> bufferedreadline() -> 2:
1696 1703 o> 2\n
1697 1704 o> bufferedread(2) -> 2:
1698 1705 o> 1\n
1699 1706 response: True
1700 1707
1701 1708 $ hg bookmarks
1702 1709 bookA 0:68986213bd44
1703 1710 bookB 1:1880f3755e2e
1704 1711 remote 0:68986213bd44
1705 1712
1706 1713 $ cd ..
1707 1714
1708 1715 Test listkeys for phases
1709 1716
1710 1717 $ hg init phasesrepo
1711 1718 $ cd phasesrepo
1712 1719
1713 1720 Phases on empty repo
1714 1721
1715 1722 $ debugwireproto << EOF
1716 1723 > command listkeys
1717 1724 > namespace phases
1718 1725 > EOF
1719 1726 testing ssh1
1720 1727 creating ssh peer from handshake results
1721 1728 i> write(104) -> 104:
1722 1729 i> hello\n
1723 1730 i> between\n
1724 1731 i> pairs 81\n
1725 1732 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1726 1733 i> flush() -> None
1727 1734 o> readline() -> 4:
1728 1735 o> 444\n
1729 1736 o> readline() -> 444:
1730 1737 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1731 1738 o> readline() -> 2:
1732 1739 o> 1\n
1733 1740 o> readline() -> 1:
1734 1741 o> \n
1735 1742 sending listkeys command
1736 1743 i> write(9) -> 9:
1737 1744 i> listkeys\n
1738 1745 i> write(12) -> 12:
1739 1746 i> namespace 6\n
1740 1747 i> write(6) -> 6: phases
1741 1748 i> flush() -> None
1742 1749 o> bufferedreadline() -> 3:
1743 1750 o> 15\n
1744 1751 o> bufferedread(15) -> 15: publishing\tTrue
1745 1752 response: {
1746 1753 b'publishing': b'True'
1747 1754 }
1748 1755
1749 1756 testing ssh2
1750 1757 creating ssh peer from handshake results
1751 1758 i> write(171) -> 171:
1752 1759 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1753 1760 i> hello\n
1754 1761 i> between\n
1755 1762 i> pairs 81\n
1756 1763 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1757 1764 i> flush() -> None
1758 1765 o> readline() -> 62:
1759 1766 o> upgraded * exp-ssh-v2-0003\n (glob)
1760 1767 o> readline() -> 4:
1761 1768 o> 443\n
1762 1769 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1763 1770 o> read(1) -> 1:
1764 1771 o> \n
1765 1772 sending listkeys command
1766 1773 i> write(9) -> 9:
1767 1774 i> listkeys\n
1768 1775 i> write(12) -> 12:
1769 1776 i> namespace 6\n
1770 1777 i> write(6) -> 6: phases
1771 1778 i> flush() -> None
1772 1779 o> bufferedreadline() -> 3:
1773 1780 o> 15\n
1774 1781 o> bufferedread(15) -> 15: publishing\tTrue
1775 1782 response: {
1776 1783 b'publishing': b'True'
1777 1784 }
1778 1785
1779 1786 Create some commits
1780 1787
1781 1788 $ echo 0 > foo
1782 1789 $ hg add foo
1783 1790 $ hg -q commit -m initial
1784 1791 $ hg phase --public
1785 1792 $ echo 1 > foo
1786 1793 $ hg commit -m 'head 1 commit 1'
1787 1794 $ echo 2 > foo
1788 1795 $ hg commit -m 'head 1 commit 2'
1789 1796 $ hg -q up 0
1790 1797 $ echo 1a > foo
1791 1798 $ hg commit -m 'head 2 commit 1'
1792 1799 created new head
1793 1800 $ echo 2a > foo
1794 1801 $ hg commit -m 'head 2 commit 2'
1795 1802
1796 1803 Two draft heads
1797 1804
1798 1805 $ debugwireproto << EOF
1799 1806 > command listkeys
1800 1807 > namespace phases
1801 1808 > EOF
1802 1809 testing ssh1
1803 1810 creating ssh peer from handshake results
1804 1811 i> write(104) -> 104:
1805 1812 i> hello\n
1806 1813 i> between\n
1807 1814 i> pairs 81\n
1808 1815 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1809 1816 i> flush() -> None
1810 1817 o> readline() -> 4:
1811 1818 o> 444\n
1812 1819 o> readline() -> 444:
1813 1820 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1814 1821 o> readline() -> 2:
1815 1822 o> 1\n
1816 1823 o> readline() -> 1:
1817 1824 o> \n
1818 1825 sending listkeys command
1819 1826 i> write(9) -> 9:
1820 1827 i> listkeys\n
1821 1828 i> write(12) -> 12:
1822 1829 i> namespace 6\n
1823 1830 i> write(6) -> 6: phases
1824 1831 i> flush() -> None
1825 1832 o> bufferedreadline() -> 4:
1826 1833 o> 101\n
1827 1834 o> bufferedread(101) -> 101:
1828 1835 o> 20b8a89289d80036e6c4e87c2083e3bea1586637\t1\n
1829 1836 o> c4750011d906c18ea2f0527419cbc1a544435150\t1\n
1830 1837 o> publishing\tTrue
1831 1838 response: {
1832 1839 b'20b8a89289d80036e6c4e87c2083e3bea1586637': b'1',
1833 1840 b'c4750011d906c18ea2f0527419cbc1a544435150': b'1',
1834 1841 b'publishing': b'True'
1835 1842 }
1836 1843
1837 1844 testing ssh2
1838 1845 creating ssh peer from handshake results
1839 1846 i> write(171) -> 171:
1840 1847 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1841 1848 i> hello\n
1842 1849 i> between\n
1843 1850 i> pairs 81\n
1844 1851 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1845 1852 i> flush() -> None
1846 1853 o> readline() -> 62:
1847 1854 o> upgraded * exp-ssh-v2-0003\n (glob)
1848 1855 o> readline() -> 4:
1849 1856 o> 443\n
1850 1857 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1851 1858 o> read(1) -> 1:
1852 1859 o> \n
1853 1860 sending listkeys command
1854 1861 i> write(9) -> 9:
1855 1862 i> listkeys\n
1856 1863 i> write(12) -> 12:
1857 1864 i> namespace 6\n
1858 1865 i> write(6) -> 6: phases
1859 1866 i> flush() -> None
1860 1867 o> bufferedreadline() -> 4:
1861 1868 o> 101\n
1862 1869 o> bufferedread(101) -> 101:
1863 1870 o> 20b8a89289d80036e6c4e87c2083e3bea1586637\t1\n
1864 1871 o> c4750011d906c18ea2f0527419cbc1a544435150\t1\n
1865 1872 o> publishing\tTrue
1866 1873 response: {
1867 1874 b'20b8a89289d80036e6c4e87c2083e3bea1586637': b'1',
1868 1875 b'c4750011d906c18ea2f0527419cbc1a544435150': b'1',
1869 1876 b'publishing': b'True'
1870 1877 }
1871 1878
1872 1879 Single draft head
1873 1880
1874 1881 $ hg phase --public -r 2
1875 1882 $ debugwireproto << EOF
1876 1883 > command listkeys
1877 1884 > namespace phases
1878 1885 > EOF
1879 1886 testing ssh1
1880 1887 creating ssh peer from handshake results
1881 1888 i> write(104) -> 104:
1882 1889 i> hello\n
1883 1890 i> between\n
1884 1891 i> pairs 81\n
1885 1892 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1886 1893 i> flush() -> None
1887 1894 o> readline() -> 4:
1888 1895 o> 444\n
1889 1896 o> readline() -> 444:
1890 1897 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1891 1898 o> readline() -> 2:
1892 1899 o> 1\n
1893 1900 o> readline() -> 1:
1894 1901 o> \n
1895 1902 sending listkeys command
1896 1903 i> write(9) -> 9:
1897 1904 i> listkeys\n
1898 1905 i> write(12) -> 12:
1899 1906 i> namespace 6\n
1900 1907 i> write(6) -> 6: phases
1901 1908 i> flush() -> None
1902 1909 o> bufferedreadline() -> 3:
1903 1910 o> 58\n
1904 1911 o> bufferedread(58) -> 58:
1905 1912 o> c4750011d906c18ea2f0527419cbc1a544435150\t1\n
1906 1913 o> publishing\tTrue
1907 1914 response: {
1908 1915 b'c4750011d906c18ea2f0527419cbc1a544435150': b'1',
1909 1916 b'publishing': b'True'
1910 1917 }
1911 1918
1912 1919 testing ssh2
1913 1920 creating ssh peer from handshake results
1914 1921 i> write(171) -> 171:
1915 1922 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1916 1923 i> hello\n
1917 1924 i> between\n
1918 1925 i> pairs 81\n
1919 1926 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1920 1927 i> flush() -> None
1921 1928 o> readline() -> 62:
1922 1929 o> upgraded * exp-ssh-v2-0003\n (glob)
1923 1930 o> readline() -> 4:
1924 1931 o> 443\n
1925 1932 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1926 1933 o> read(1) -> 1:
1927 1934 o> \n
1928 1935 sending listkeys command
1929 1936 i> write(9) -> 9:
1930 1937 i> listkeys\n
1931 1938 i> write(12) -> 12:
1932 1939 i> namespace 6\n
1933 1940 i> write(6) -> 6: phases
1934 1941 i> flush() -> None
1935 1942 o> bufferedreadline() -> 3:
1936 1943 o> 58\n
1937 1944 o> bufferedread(58) -> 58:
1938 1945 o> c4750011d906c18ea2f0527419cbc1a544435150\t1\n
1939 1946 o> publishing\tTrue
1940 1947 response: {
1941 1948 b'c4750011d906c18ea2f0527419cbc1a544435150': b'1',
1942 1949 b'publishing': b'True'
1943 1950 }
1944 1951
1945 1952 All public heads
1946 1953
1947 1954 $ hg phase --public -r 4
1948 1955 $ debugwireproto << EOF
1949 1956 > command listkeys
1950 1957 > namespace phases
1951 1958 > EOF
1952 1959 testing ssh1
1953 1960 creating ssh peer from handshake results
1954 1961 i> write(104) -> 104:
1955 1962 i> hello\n
1956 1963 i> between\n
1957 1964 i> pairs 81\n
1958 1965 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1959 1966 i> flush() -> None
1960 1967 o> readline() -> 4:
1961 1968 o> 444\n
1962 1969 o> readline() -> 444:
1963 1970 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
1964 1971 o> readline() -> 2:
1965 1972 o> 1\n
1966 1973 o> readline() -> 1:
1967 1974 o> \n
1968 1975 sending listkeys command
1969 1976 i> write(9) -> 9:
1970 1977 i> listkeys\n
1971 1978 i> write(12) -> 12:
1972 1979 i> namespace 6\n
1973 1980 i> write(6) -> 6: phases
1974 1981 i> flush() -> None
1975 1982 o> bufferedreadline() -> 3:
1976 1983 o> 15\n
1977 1984 o> bufferedread(15) -> 15: publishing\tTrue
1978 1985 response: {
1979 1986 b'publishing': b'True'
1980 1987 }
1981 1988
1982 1989 testing ssh2
1983 1990 creating ssh peer from handshake results
1984 1991 i> write(171) -> 171:
1985 1992 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
1986 1993 i> hello\n
1987 1994 i> between\n
1988 1995 i> pairs 81\n
1989 1996 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
1990 1997 i> flush() -> None
1991 1998 o> readline() -> 62:
1992 1999 o> upgraded * exp-ssh-v2-0003\n (glob)
1993 2000 o> readline() -> 4:
1994 2001 o> 443\n
1995 2002 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
1996 2003 o> read(1) -> 1:
1997 2004 o> \n
1998 2005 sending listkeys command
1999 2006 i> write(9) -> 9:
2000 2007 i> listkeys\n
2001 2008 i> write(12) -> 12:
2002 2009 i> namespace 6\n
2003 2010 i> write(6) -> 6: phases
2004 2011 i> flush() -> None
2005 2012 o> bufferedreadline() -> 3:
2006 2013 o> 15\n
2007 2014 o> bufferedread(15) -> 15: publishing\tTrue
2008 2015 response: {
2009 2016 b'publishing': b'True'
2010 2017 }
2011 2018
2012 2019 Setting public phase via pushkey
2013 2020
2014 2021 $ hg phase --draft --force -r .
2015 2022
2016 2023 $ debugwireproto << EOF
2017 2024 > command pushkey
2018 2025 > namespace phases
2019 2026 > key 7127240a084fd9dc86fe8d1f98e26229161ec82b
2020 2027 > old 1
2021 2028 > new 0
2022 2029 > EOF
2023 2030 testing ssh1
2024 2031 creating ssh peer from handshake results
2025 2032 i> write(104) -> 104:
2026 2033 i> hello\n
2027 2034 i> between\n
2028 2035 i> pairs 81\n
2029 2036 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
2030 2037 i> flush() -> None
2031 2038 o> readline() -> 4:
2032 2039 o> 444\n
2033 2040 o> readline() -> 444:
2034 2041 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
2035 2042 o> readline() -> 2:
2036 2043 o> 1\n
2037 2044 o> readline() -> 1:
2038 2045 o> \n
2039 2046 sending pushkey command
2040 2047 i> write(8) -> 8:
2041 2048 i> pushkey\n
2042 2049 i> write(7) -> 7:
2043 2050 i> key 40\n
2044 2051 i> write(40) -> 40: 7127240a084fd9dc86fe8d1f98e26229161ec82b
2045 2052 i> write(12) -> 12:
2046 2053 i> namespace 6\n
2047 2054 i> write(6) -> 6: phases
2048 2055 i> write(6) -> 6:
2049 2056 i> new 1\n
2050 2057 i> write(1) -> 1: 0
2051 2058 i> write(6) -> 6:
2052 2059 i> old 1\n
2053 2060 i> write(1) -> 1: 1
2054 2061 i> flush() -> None
2055 2062 o> bufferedreadline() -> 2:
2056 2063 o> 2\n
2057 2064 o> bufferedread(2) -> 2:
2058 2065 o> 1\n
2059 2066 response: True
2060 2067
2061 2068 testing ssh2
2062 2069 creating ssh peer from handshake results
2063 2070 i> write(171) -> 171:
2064 2071 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
2065 2072 i> hello\n
2066 2073 i> between\n
2067 2074 i> pairs 81\n
2068 2075 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
2069 2076 i> flush() -> None
2070 2077 o> readline() -> 62:
2071 2078 o> upgraded * exp-ssh-v2-0003\n (glob)
2072 2079 o> readline() -> 4:
2073 2080 o> 443\n
2074 2081 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
2075 2082 o> read(1) -> 1:
2076 2083 o> \n
2077 2084 sending pushkey command
2078 2085 i> write(8) -> 8:
2079 2086 i> pushkey\n
2080 2087 i> write(7) -> 7:
2081 2088 i> key 40\n
2082 2089 i> write(40) -> 40: 7127240a084fd9dc86fe8d1f98e26229161ec82b
2083 2090 i> write(12) -> 12:
2084 2091 i> namespace 6\n
2085 2092 i> write(6) -> 6: phases
2086 2093 i> write(6) -> 6:
2087 2094 i> new 1\n
2088 2095 i> write(1) -> 1: 0
2089 2096 i> write(6) -> 6:
2090 2097 i> old 1\n
2091 2098 i> write(1) -> 1: 1
2092 2099 i> flush() -> None
2093 2100 o> bufferedreadline() -> 2:
2094 2101 o> 2\n
2095 2102 o> bufferedread(2) -> 2:
2096 2103 o> 1\n
2097 2104 response: True
2098 2105
2099 2106 $ hg phase .
2100 2107 4: public
2101 2108
2102 2109 $ cd ..
2103 2110
2104 2111 Test batching of requests
2105 2112
2106 2113 $ hg init batching
2107 2114 $ cd batching
2108 2115 $ echo 0 > foo
2109 2116 $ hg add foo
2110 2117 $ hg -q commit -m initial
2111 2118 $ hg phase --public
2112 2119 $ echo 1 > foo
2113 2120 $ hg commit -m 'commit 1'
2114 2121 $ hg -q up 0
2115 2122 $ echo 2 > foo
2116 2123 $ hg commit -m 'commit 2'
2117 2124 created new head
2118 2125 $ hg book -r 1 bookA
2119 2126 $ hg book -r 2 bookB
2120 2127
2121 2128 $ debugwireproto << EOF
2122 2129 > batchbegin
2123 2130 > command heads
2124 2131 > command listkeys
2125 2132 > namespace bookmarks
2126 2133 > command listkeys
2127 2134 > namespace phases
2128 2135 > batchsubmit
2129 2136 > EOF
2130 2137 testing ssh1
2131 2138 creating ssh peer from handshake results
2132 2139 i> write(104) -> 104:
2133 2140 i> hello\n
2134 2141 i> between\n
2135 2142 i> pairs 81\n
2136 2143 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
2137 2144 i> flush() -> None
2138 2145 o> readline() -> 4:
2139 2146 o> 444\n
2140 2147 o> readline() -> 444:
2141 2148 o> capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash\n
2142 2149 o> readline() -> 2:
2143 2150 o> 1\n
2144 2151 o> readline() -> 1:
2145 2152 o> \n
2146 2153 sending batch with 3 sub-commands
2147 2154 i> write(6) -> 6:
2148 2155 i> batch\n
2149 2156 i> write(4) -> 4:
2150 2157 i> * 0\n
2151 2158 i> write(8) -> 8:
2152 2159 i> cmds 61\n
2153 2160 i> write(61) -> 61: heads ;listkeys namespace=bookmarks;listkeys namespace=phases
2154 2161 i> flush() -> None
2155 2162 o> bufferedreadline() -> 4:
2156 2163 o> 278\n
2157 2164 o> bufferedread(278) -> 278:
2158 2165 o> bfebe6bd38eebc6f8202e419c1171268987ea6a6 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2159 2166 o> ;bookA\t4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2160 2167 o> bookB\tbfebe6bd38eebc6f8202e419c1171268987ea6a6;4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\t1\n
2161 2168 o> bfebe6bd38eebc6f8202e419c1171268987ea6a6\t1\n
2162 2169 o> publishing\tTrue
2163 2170 response #0: bfebe6bd38eebc6f8202e419c1171268987ea6a6 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2164 2171 response #1: bookA\t4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\nbookB\tbfebe6bd38eebc6f8202e419c1171268987ea6a6
2165 2172 response #2: 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\t1\nbfebe6bd38eebc6f8202e419c1171268987ea6a6\t1\npublishing\tTrue
2166 2173
2167 2174 testing ssh2
2168 2175 creating ssh peer from handshake results
2169 2176 i> write(171) -> 171:
2170 2177 i> upgrade * proto=exp-ssh-v2-0003\n (glob)
2171 2178 i> hello\n
2172 2179 i> between\n
2173 2180 i> pairs 81\n
2174 2181 i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
2175 2182 i> flush() -> None
2176 2183 o> readline() -> 62:
2177 2184 o> upgraded * exp-ssh-v2-0003\n (glob)
2178 2185 o> readline() -> 4:
2179 2186 o> 443\n
2180 2187 o> read(443) -> 443: capabilities: batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset getbundle known lookup protocaps pushkey streamreqs=generaldelta,revlogv1,sparserevlog unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
2181 2188 o> read(1) -> 1:
2182 2189 o> \n
2183 2190 sending batch with 3 sub-commands
2184 2191 i> write(6) -> 6:
2185 2192 i> batch\n
2186 2193 i> write(4) -> 4:
2187 2194 i> * 0\n
2188 2195 i> write(8) -> 8:
2189 2196 i> cmds 61\n
2190 2197 i> write(61) -> 61: heads ;listkeys namespace=bookmarks;listkeys namespace=phases
2191 2198 i> flush() -> None
2192 2199 o> bufferedreadline() -> 4:
2193 2200 o> 278\n
2194 2201 o> bufferedread(278) -> 278:
2195 2202 o> bfebe6bd38eebc6f8202e419c1171268987ea6a6 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2196 2203 o> ;bookA\t4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2197 2204 o> bookB\tbfebe6bd38eebc6f8202e419c1171268987ea6a6;4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\t1\n
2198 2205 o> bfebe6bd38eebc6f8202e419c1171268987ea6a6\t1\n
2199 2206 o> publishing\tTrue
2200 2207 response #0: bfebe6bd38eebc6f8202e419c1171268987ea6a6 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\n
2201 2208 response #1: bookA\t4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\nbookB\tbfebe6bd38eebc6f8202e419c1171268987ea6a6
2202 2209 response #2: 4ee3fcef1c800fa2bf23e20af7c83ff111d9c7ab\t1\nbfebe6bd38eebc6f8202e419c1171268987ea6a6\t1\npublishing\tTrue
General Comments 0
You need to be logged in to leave comments. Login now