##// END OF EJS Templates
tests: explicitly define compression engines for tests...
Gregory Szorc -
r37840:da07c781 stable
parent child Browse files
Show More
@@ -1,335 +1,335 b''
1 $ . $TESTDIR/wireprotohelpers.sh
1 $ . $TESTDIR/wireprotohelpers.sh
2
2
3 $ cat >> $HGRCPATH << EOF
3 $ cat >> $HGRCPATH << EOF
4 > [web]
4 > [web]
5 > push_ssl = false
5 > push_ssl = false
6 > allow_push = *
6 > allow_push = *
7 > EOF
7 > EOF
8
8
9 $ hg init server
9 $ hg init server
10 $ cd server
10 $ cd server
11 $ touch a
11 $ touch a
12 $ hg -q commit -A -m initial
12 $ hg -q commit -A -m initial
13 $ cd ..
13 $ cd ..
14
14
15 $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
15 $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
16 $ cat hg.pid >> $DAEMON_PIDS
16 $ cat hg.pid >> $DAEMON_PIDS
17
17
18 compression formats are advertised in compression capability
18 compression formats are advertised in compression capability
19
19
20 #if zstd
20 #if zstd
21 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=zstd,zlib$' > /dev/null
21 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=zstd,zlib$' > /dev/null
22 #else
22 #else
23 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=zlib$' > /dev/null
23 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=zlib$' > /dev/null
24 #endif
24 #endif
25
25
26 $ killdaemons.py
26 $ killdaemons.py
27
27
28 server.compressionengines can replace engines list wholesale
28 server.compressionengines can replace engines list wholesale
29
29
30 $ hg serve --config server.compressionengines=none -R server -p $HGPORT -d --pid-file hg.pid
30 $ hg serve --config server.compressionengines=none -R server -p $HGPORT -d --pid-file hg.pid
31 $ cat hg.pid > $DAEMON_PIDS
31 $ cat hg.pid > $DAEMON_PIDS
32 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none$' > /dev/null
32 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none$' > /dev/null
33
33
34 $ killdaemons.py
34 $ killdaemons.py
35
35
36 Order of engines can also change
36 Order of engines can also change
37
37
38 $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
38 $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
39 $ cat hg.pid > $DAEMON_PIDS
39 $ cat hg.pid > $DAEMON_PIDS
40 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none,zlib$' > /dev/null
40 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=capabilities' | tr ' ' '\n' | grep '^compression=none,zlib$' > /dev/null
41
41
42 $ killdaemons.py
42 $ killdaemons.py
43
43
44 Start a default server again
44 Start a default server again
45
45
46 $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
46 $ hg serve -R server -p $HGPORT -d --pid-file hg.pid
47 $ cat hg.pid > $DAEMON_PIDS
47 $ cat hg.pid > $DAEMON_PIDS
48
48
49 Server should send application/mercurial-0.1 to clients if no Accept is used
49 Server should send application/mercurial-0.1 to clients if no Accept is used
50
50
51 $ get-with-headers.py --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
51 $ get-with-headers.py --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
52 200 Script output follows
52 200 Script output follows
53 content-type: application/mercurial-0.1
53 content-type: application/mercurial-0.1
54 date: $HTTP_DATE$
54 date: $HTTP_DATE$
55 server: testing stub value
55 server: testing stub value
56 transfer-encoding: chunked
56 transfer-encoding: chunked
57
57
58 Server should send application/mercurial-0.1 when client says it wants it
58 Server should send application/mercurial-0.1 when client says it wants it
59
59
60 $ get-with-headers.py --hgproto '0.1' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
60 $ get-with-headers.py --hgproto '0.1' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
61 200 Script output follows
61 200 Script output follows
62 content-type: application/mercurial-0.1
62 content-type: application/mercurial-0.1
63 date: $HTTP_DATE$
63 date: $HTTP_DATE$
64 server: testing stub value
64 server: testing stub value
65 transfer-encoding: chunked
65 transfer-encoding: chunked
66
66
67 Server should send application/mercurial-0.2 when client says it wants it
67 Server should send application/mercurial-0.2 when client says it wants it
68
68
69 $ get-with-headers.py --hgproto '0.2' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
69 $ get-with-headers.py --hgproto '0.2' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
70 200 Script output follows
70 200 Script output follows
71 content-type: application/mercurial-0.2
71 content-type: application/mercurial-0.2
72 date: $HTTP_DATE$
72 date: $HTTP_DATE$
73 server: testing stub value
73 server: testing stub value
74 transfer-encoding: chunked
74 transfer-encoding: chunked
75
75
76 $ get-with-headers.py --hgproto '0.1 0.2' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
76 $ get-with-headers.py --hgproto '0.1 0.2' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
77 200 Script output follows
77 200 Script output follows
78 content-type: application/mercurial-0.2
78 content-type: application/mercurial-0.2
79 date: $HTTP_DATE$
79 date: $HTTP_DATE$
80 server: testing stub value
80 server: testing stub value
81 transfer-encoding: chunked
81 transfer-encoding: chunked
82
82
83 Requesting a compression format that server doesn't support results will fall back to 0.1
83 Requesting a compression format that server doesn't support results will fall back to 0.1
84
84
85 $ get-with-headers.py --hgproto '0.2 comp=aa' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
85 $ get-with-headers.py --hgproto '0.2 comp=aa' --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' -
86 200 Script output follows
86 200 Script output follows
87 content-type: application/mercurial-0.1
87 content-type: application/mercurial-0.1
88 date: $HTTP_DATE$
88 date: $HTTP_DATE$
89 server: testing stub value
89 server: testing stub value
90 transfer-encoding: chunked
90 transfer-encoding: chunked
91
91
92 #if zstd
92 #if zstd
93 zstd is used if available
93 zstd is used if available
94
94
95 $ get-with-headers.py --hgproto '0.2 comp=zstd' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
95 $ get-with-headers.py --hgproto '0.2 comp=zstd' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
96 $ f --size --hexdump --bytes 36 --sha1 resp
96 $ f --size --hexdump --bytes 36 --sha1 resp
97 resp: size=248, sha1=4d8d8f87fb82bd542ce52881fdc94f850748
97 resp: size=248, sha1=4d8d8f87fb82bd542ce52881fdc94f850748
98 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
98 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
99 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 7a 73 74 64 |t follows...zstd|
99 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 7a 73 74 64 |t follows...zstd|
100 0020: 28 b5 2f fd |(./.|
100 0020: 28 b5 2f fd |(./.|
101
101
102 #endif
102 #endif
103
103
104 application/mercurial-0.2 is not yet used on non-streaming responses
104 application/mercurial-0.2 is not yet used on non-streaming responses
105
105
106 $ get-with-headers.py --hgproto '0.2' $LOCALIP:$HGPORT '?cmd=heads' -
106 $ get-with-headers.py --hgproto '0.2' $LOCALIP:$HGPORT '?cmd=heads' -
107 200 Script output follows
107 200 Script output follows
108 content-length: 41
108 content-length: 41
109 content-type: application/mercurial-0.1
109 content-type: application/mercurial-0.1
110 date: $HTTP_DATE$
110 date: $HTTP_DATE$
111 server: testing stub value
111 server: testing stub value
112
112
113 e93700bd72895c5addab234c56d4024b487a362f
113 e93700bd72895c5addab234c56d4024b487a362f
114
114
115 Now test protocol preference usage
115 Now test protocol preference usage
116
116
117 $ killdaemons.py
117 $ killdaemons.py
118 $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
118 $ hg serve --config server.compressionengines=none,zlib -R server -p $HGPORT -d --pid-file hg.pid
119 $ cat hg.pid > $DAEMON_PIDS
119 $ cat hg.pid > $DAEMON_PIDS
120
120
121 No Accept will send 0.1+zlib, even though "none" is preferred b/c "none" isn't supported on 0.1
121 No Accept will send 0.1+zlib, even though "none" is preferred b/c "none" isn't supported on 0.1
122
122
123 $ get-with-headers.py --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' Content-Type
123 $ get-with-headers.py --headeronly $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' Content-Type
124 200 Script output follows
124 200 Script output follows
125 content-type: application/mercurial-0.1
125 content-type: application/mercurial-0.1
126
126
127 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
127 $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
128 $ f --size --hexdump --bytes 28 --sha1 resp
128 $ f --size --hexdump --bytes 28 --sha1 resp
129 resp: size=227, sha1=35a4c074da74f32f5440da3cbf04
129 resp: size=227, sha1=35a4c074da74f32f5440da3cbf04
130 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
130 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
131 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 78 |t follows..x|
131 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 78 |t follows..x|
132
132
133 Explicit 0.1 will send zlib because "none" isn't supported on 0.1
133 Explicit 0.1 will send zlib because "none" isn't supported on 0.1
134
134
135 $ get-with-headers.py --hgproto '0.1' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
135 $ get-with-headers.py --hgproto '0.1' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
136 $ f --size --hexdump --bytes 28 --sha1 resp
136 $ f --size --hexdump --bytes 28 --sha1 resp
137 resp: size=227, sha1=35a4c074da74f32f5440da3cbf04
137 resp: size=227, sha1=35a4c074da74f32f5440da3cbf04
138 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
138 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
139 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 78 |t follows..x|
139 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 78 |t follows..x|
140
140
141 0.2 with no compression will get "none" because that is server's preference
141 0.2 with no compression will get "none" because that is server's preference
142 (spec says ZL and UN are implicitly supported)
142 (spec says ZL and UN are implicitly supported)
143
143
144 $ get-with-headers.py --hgproto '0.2' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
144 $ get-with-headers.py --hgproto '0.2' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
145 $ f --size --hexdump --bytes 32 --sha1 resp
145 $ f --size --hexdump --bytes 32 --sha1 resp
146 resp: size=432, sha1=ac931b412ec185a02e0e5bcff98dac83
146 resp: size=432, sha1=ac931b412ec185a02e0e5bcff98dac83
147 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
147 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
148 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 6e 6f 6e 65 |t follows...none|
148 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 6e 6f 6e 65 |t follows...none|
149
149
150 Client receives server preference even if local order doesn't match
150 Client receives server preference even if local order doesn't match
151
151
152 $ get-with-headers.py --hgproto '0.2 comp=zlib,none' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
152 $ get-with-headers.py --hgproto '0.2 comp=zlib,none' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
153 $ f --size --hexdump --bytes 32 --sha1 resp
153 $ f --size --hexdump --bytes 32 --sha1 resp
154 resp: size=432, sha1=ac931b412ec185a02e0e5bcff98dac83
154 resp: size=432, sha1=ac931b412ec185a02e0e5bcff98dac83
155 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
155 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
156 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 6e 6f 6e 65 |t follows...none|
156 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 6e 6f 6e 65 |t follows...none|
157
157
158 Client receives only supported format even if not server preferred format
158 Client receives only supported format even if not server preferred format
159
159
160 $ get-with-headers.py --hgproto '0.2 comp=zlib' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
160 $ get-with-headers.py --hgproto '0.2 comp=zlib' $LOCALIP:$HGPORT '?cmd=getbundle&heads=e93700bd72895c5addab234c56d4024b487a362f&common=0000000000000000000000000000000000000000' > resp
161 $ f --size --hexdump --bytes 33 --sha1 resp
161 $ f --size --hexdump --bytes 33 --sha1 resp
162 resp: size=232, sha1=a1c727f0c9693ca15742a75c30419bc36
162 resp: size=232, sha1=a1c727f0c9693ca15742a75c30419bc36
163 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
163 0000: 32 30 30 20 53 63 72 69 70 74 20 6f 75 74 70 75 |200 Script outpu|
164 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 7a 6c 69 62 |t follows...zlib|
164 0010: 74 20 66 6f 6c 6c 6f 77 73 0a 0a 04 7a 6c 69 62 |t follows...zlib|
165 0020: 78 |x|
165 0020: 78 |x|
166
166
167 $ killdaemons.py
167 $ killdaemons.py
168 $ cd ..
168 $ cd ..
169
169
170 Test listkeys for listing namespaces
170 Test listkeys for listing namespaces
171
171
172 $ hg init empty
172 $ hg init empty
173 $ hg -R empty serve -p $HGPORT -d --pid-file hg.pid
173 $ hg -R empty serve -p $HGPORT -d --pid-file hg.pid
174 $ cat hg.pid > $DAEMON_PIDS
174 $ cat hg.pid > $DAEMON_PIDS
175
175
176 $ hg --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
176 $ hg --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
177 > command listkeys
177 > command listkeys
178 > namespace namespaces
178 > namespace namespaces
179 > EOF
179 > EOF
180 s> GET /?cmd=capabilities HTTP/1.1\r\n
180 s> GET /?cmd=capabilities HTTP/1.1\r\n
181 s> Accept-Encoding: identity\r\n
181 s> Accept-Encoding: identity\r\n
182 s> accept: application/mercurial-0.1\r\n
182 s> accept: application/mercurial-0.1\r\n
183 s> host: $LOCALIP:$HGPORT\r\n (glob)
183 s> host: $LOCALIP:$HGPORT\r\n (glob)
184 s> user-agent: Mercurial debugwireproto\r\n
184 s> user-agent: Mercurial debugwireproto\r\n
185 s> \r\n
185 s> \r\n
186 s> makefile('rb', None)
186 s> makefile('rb', None)
187 s> HTTP/1.1 200 Script output follows\r\n
187 s> HTTP/1.1 200 Script output follows\r\n
188 s> Server: testing stub value\r\n
188 s> Server: testing stub value\r\n
189 s> Date: $HTTP_DATE$\r\n
189 s> Date: $HTTP_DATE$\r\n
190 s> Content-Type: application/mercurial-0.1\r\n
190 s> Content-Type: application/mercurial-0.1\r\n
191 s> Content-Length: *\r\n (glob)
191 s> Content-Length: *\r\n (glob)
192 s> \r\n
192 s> \r\n
193 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
193 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
194 sending listkeys command
194 sending listkeys command
195 s> GET /?cmd=listkeys HTTP/1.1\r\n
195 s> GET /?cmd=listkeys HTTP/1.1\r\n
196 s> Accept-Encoding: identity\r\n
196 s> Accept-Encoding: identity\r\n
197 s> vary: X-HgArg-1,X-HgProto-1\r\n
197 s> vary: X-HgArg-1,X-HgProto-1\r\n
198 s> x-hgarg-1: namespace=namespaces\r\n
198 s> x-hgarg-1: namespace=namespaces\r\n
199 s> x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
199 s> x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
200 s> accept: application/mercurial-0.1\r\n
200 s> accept: application/mercurial-0.1\r\n
201 s> host: $LOCALIP:$HGPORT\r\n (glob)
201 s> host: $LOCALIP:$HGPORT\r\n (glob)
202 s> user-agent: Mercurial debugwireproto\r\n
202 s> user-agent: Mercurial debugwireproto\r\n
203 s> \r\n
203 s> \r\n
204 s> makefile('rb', None)
204 s> makefile('rb', None)
205 s> HTTP/1.1 200 Script output follows\r\n
205 s> HTTP/1.1 200 Script output follows\r\n
206 s> Server: testing stub value\r\n
206 s> Server: testing stub value\r\n
207 s> Date: $HTTP_DATE$\r\n
207 s> Date: $HTTP_DATE$\r\n
208 s> Content-Type: application/mercurial-0.1\r\n
208 s> Content-Type: application/mercurial-0.1\r\n
209 s> Content-Length: 30\r\n
209 s> Content-Length: 30\r\n
210 s> \r\n
210 s> \r\n
211 s> bookmarks\t\n
211 s> bookmarks\t\n
212 s> namespaces\t\n
212 s> namespaces\t\n
213 s> phases\t
213 s> phases\t
214 response: {b'bookmarks': b'', b'namespaces': b'', b'phases': b''}
214 response: {b'bookmarks': b'', b'namespaces': b'', b'phases': b''}
215
215
216 Same thing, but with "httprequest" command
216 Same thing, but with "httprequest" command
217
217
218 $ hg --verbose debugwireproto --peer raw http://$LOCALIP:$HGPORT << EOF
218 $ hg --verbose debugwireproto --peer raw http://$LOCALIP:$HGPORT << EOF
219 > httprequest GET ?cmd=listkeys
219 > httprequest GET ?cmd=listkeys
220 > user-agent: test
220 > user-agent: test
221 > x-hgarg-1: namespace=namespaces
221 > x-hgarg-1: namespace=namespaces
222 > EOF
222 > EOF
223 using raw connection to peer
223 using raw connection to peer
224 s> GET /?cmd=listkeys HTTP/1.1\r\n
224 s> GET /?cmd=listkeys HTTP/1.1\r\n
225 s> Accept-Encoding: identity\r\n
225 s> Accept-Encoding: identity\r\n
226 s> user-agent: test\r\n
226 s> user-agent: test\r\n
227 s> x-hgarg-1: namespace=namespaces\r\n
227 s> x-hgarg-1: namespace=namespaces\r\n
228 s> host: $LOCALIP:$HGPORT\r\n (glob)
228 s> host: $LOCALIP:$HGPORT\r\n (glob)
229 s> \r\n
229 s> \r\n
230 s> makefile('rb', None)
230 s> makefile('rb', None)
231 s> HTTP/1.1 200 Script output follows\r\n
231 s> HTTP/1.1 200 Script output follows\r\n
232 s> Server: testing stub value\r\n
232 s> Server: testing stub value\r\n
233 s> Date: $HTTP_DATE$\r\n
233 s> Date: $HTTP_DATE$\r\n
234 s> Content-Type: application/mercurial-0.1\r\n
234 s> Content-Type: application/mercurial-0.1\r\n
235 s> Content-Length: 30\r\n
235 s> Content-Length: 30\r\n
236 s> \r\n
236 s> \r\n
237 s> bookmarks\t\n
237 s> bookmarks\t\n
238 s> namespaces\t\n
238 s> namespaces\t\n
239 s> phases\t
239 s> phases\t
240
240
241 Client with HTTPv2 enabled advertises that and gets old capabilities response from old server
241 Client with HTTPv2 enabled advertises that and gets old capabilities response from old server
242
242
243 $ hg --config experimental.httppeer.advertise-v2=true --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
243 $ hg --config experimental.httppeer.advertise-v2=true --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
244 > command heads
244 > command heads
245 > EOF
245 > EOF
246 s> GET /?cmd=capabilities HTTP/1.1\r\n
246 s> GET /?cmd=capabilities HTTP/1.1\r\n
247 s> Accept-Encoding: identity\r\n
247 s> Accept-Encoding: identity\r\n
248 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
248 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
249 s> x-hgproto-1: cbor\r\n
249 s> x-hgproto-1: cbor\r\n
250 s> x-hgupgrade-1: exp-http-v2-0001\r\n
250 s> x-hgupgrade-1: exp-http-v2-0001\r\n
251 s> accept: application/mercurial-0.1\r\n
251 s> accept: application/mercurial-0.1\r\n
252 s> host: $LOCALIP:$HGPORT\r\n (glob)
252 s> host: $LOCALIP:$HGPORT\r\n (glob)
253 s> user-agent: Mercurial debugwireproto\r\n
253 s> user-agent: Mercurial debugwireproto\r\n
254 s> \r\n
254 s> \r\n
255 s> makefile('rb', None)
255 s> makefile('rb', None)
256 s> HTTP/1.1 200 Script output follows\r\n
256 s> HTTP/1.1 200 Script output follows\r\n
257 s> Server: testing stub value\r\n
257 s> Server: testing stub value\r\n
258 s> Date: $HTTP_DATE$\r\n
258 s> Date: $HTTP_DATE$\r\n
259 s> Content-Type: application/mercurial-0.1\r\n
259 s> Content-Type: application/mercurial-0.1\r\n
260 s> Content-Length: *\r\n (glob)
260 s> Content-Length: *\r\n (glob)
261 s> \r\n
261 s> \r\n
262 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
262 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
263 sending heads command
263 sending heads command
264 s> GET /?cmd=heads HTTP/1.1\r\n
264 s> GET /?cmd=heads HTTP/1.1\r\n
265 s> Accept-Encoding: identity\r\n
265 s> Accept-Encoding: identity\r\n
266 s> vary: X-HgProto-1\r\n
266 s> vary: X-HgProto-1\r\n
267 s> x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
267 s> x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
268 s> accept: application/mercurial-0.1\r\n
268 s> accept: application/mercurial-0.1\r\n
269 s> host: $LOCALIP:$HGPORT\r\n (glob)
269 s> host: $LOCALIP:$HGPORT\r\n (glob)
270 s> user-agent: Mercurial debugwireproto\r\n
270 s> user-agent: Mercurial debugwireproto\r\n
271 s> \r\n
271 s> \r\n
272 s> makefile('rb', None)
272 s> makefile('rb', None)
273 s> HTTP/1.1 200 Script output follows\r\n
273 s> HTTP/1.1 200 Script output follows\r\n
274 s> Server: testing stub value\r\n
274 s> Server: testing stub value\r\n
275 s> Date: $HTTP_DATE$\r\n
275 s> Date: $HTTP_DATE$\r\n
276 s> Content-Type: application/mercurial-0.1\r\n
276 s> Content-Type: application/mercurial-0.1\r\n
277 s> Content-Length: 41\r\n
277 s> Content-Length: 41\r\n
278 s> \r\n
278 s> \r\n
279 s> 0000000000000000000000000000000000000000\n
279 s> 0000000000000000000000000000000000000000\n
280 response: [b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
280 response: [b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
281
281
282 $ killdaemons.py
282 $ killdaemons.py
283 $ enablehttpv2 empty
283 $ enablehttpv2 empty
284 $ hg -R empty serve -p $HGPORT -d --pid-file hg.pid
284 $ hg --config server.compressionengines=zlib -R empty serve -p $HGPORT -d --pid-file hg.pid
285 $ cat hg.pid > $DAEMON_PIDS
285 $ cat hg.pid > $DAEMON_PIDS
286
286
287 Client with HTTPv2 enabled automatically upgrades if the server supports it
287 Client with HTTPv2 enabled automatically upgrades if the server supports it
288
288
289 $ hg --config experimental.httppeer.advertise-v2=true --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
289 $ hg --config experimental.httppeer.advertise-v2=true --verbose debugwireproto http://$LOCALIP:$HGPORT << EOF
290 > command heads
290 > command heads
291 > EOF
291 > EOF
292 s> GET /?cmd=capabilities HTTP/1.1\r\n
292 s> GET /?cmd=capabilities HTTP/1.1\r\n
293 s> Accept-Encoding: identity\r\n
293 s> Accept-Encoding: identity\r\n
294 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
294 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
295 s> x-hgproto-1: cbor\r\n
295 s> x-hgproto-1: cbor\r\n
296 s> x-hgupgrade-1: exp-http-v2-0001\r\n
296 s> x-hgupgrade-1: exp-http-v2-0001\r\n
297 s> accept: application/mercurial-0.1\r\n
297 s> accept: application/mercurial-0.1\r\n
298 s> host: $LOCALIP:$HGPORT\r\n (glob)
298 s> host: $LOCALIP:$HGPORT\r\n (glob)
299 s> user-agent: Mercurial debugwireproto\r\n
299 s> user-agent: Mercurial debugwireproto\r\n
300 s> \r\n
300 s> \r\n
301 s> makefile('rb', None)
301 s> makefile('rb', None)
302 s> HTTP/1.1 200 OK\r\n
302 s> HTTP/1.1 200 OK\r\n
303 s> Server: testing stub value\r\n
303 s> Server: testing stub value\r\n
304 s> Date: $HTTP_DATE$\r\n
304 s> Date: $HTTP_DATE$\r\n
305 s> Content-Type: application/mercurial-cbor\r\n
305 s> Content-Type: application/mercurial-cbor\r\n
306 s> Content-Length: *\r\n (glob)
306 s> Content-Length: *\r\n (glob)
307 s> \r\n
307 s> \r\n
308 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x82\xa1DnameDzstd\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xcabatch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
308 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x81\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xc5batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
309 sending heads command
309 sending heads command
310 s> POST /api/exp-http-v2-0001/ro/heads HTTP/1.1\r\n
310 s> POST /api/exp-http-v2-0001/ro/heads HTTP/1.1\r\n
311 s> Accept-Encoding: identity\r\n
311 s> Accept-Encoding: identity\r\n
312 s> accept: application/mercurial-exp-framing-0005\r\n
312 s> accept: application/mercurial-exp-framing-0005\r\n
313 s> content-type: application/mercurial-exp-framing-0005\r\n
313 s> content-type: application/mercurial-exp-framing-0005\r\n
314 s> content-length: 20\r\n
314 s> content-length: 20\r\n
315 s> host: $LOCALIP:$HGPORT\r\n (glob)
315 s> host: $LOCALIP:$HGPORT\r\n (glob)
316 s> user-agent: Mercurial debugwireproto\r\n
316 s> user-agent: Mercurial debugwireproto\r\n
317 s> \r\n
317 s> \r\n
318 s> \x0c\x00\x00\x01\x00\x01\x01\x11\xa1DnameEheads
318 s> \x0c\x00\x00\x01\x00\x01\x01\x11\xa1DnameEheads
319 s> makefile('rb', None)
319 s> makefile('rb', None)
320 s> HTTP/1.1 200 OK\r\n
320 s> HTTP/1.1 200 OK\r\n
321 s> Server: testing stub value\r\n
321 s> Server: testing stub value\r\n
322 s> Date: $HTTP_DATE$\r\n
322 s> Date: $HTTP_DATE$\r\n
323 s> Content-Type: application/mercurial-exp-framing-0005\r\n
323 s> Content-Type: application/mercurial-exp-framing-0005\r\n
324 s> Transfer-Encoding: chunked\r\n
324 s> Transfer-Encoding: chunked\r\n
325 s> \r\n
325 s> \r\n
326 s> 29\r\n
326 s> 29\r\n
327 s> !\x00\x00\x01\x00\x02\x012
327 s> !\x00\x00\x01\x00\x02\x012
328 s> \xa1FstatusBok\x81T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
328 s> \xa1FstatusBok\x81T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
329 s> \r\n
329 s> \r\n
330 received frame(size=33; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=eos)
330 received frame(size=33; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=eos)
331 s> 0\r\n
331 s> 0\r\n
332 s> \r\n
332 s> \r\n
333 response: [b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
333 response: [b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
334
334
335 $ killdaemons.py
335 $ killdaemons.py
@@ -1,248 +1,257 b''
1 $ . $TESTDIR/wireprotohelpers.sh
1 $ . $TESTDIR/wireprotohelpers.sh
2
2
3 $ hg init server
3 $ hg init server
4
5 zstd isn't present in plain builds. Make tests easier by removing
6 zstd from the equation.
7
8 $ cat >> server/.hg/hgrc << EOF
9 > [server]
10 > compressionengines = zlib
11 > EOF
12
4 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
13 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
5 $ cat hg.pid > $DAEMON_PIDS
14 $ cat hg.pid > $DAEMON_PIDS
6
15
7 A normal capabilities request is serviced for version 1
16 A normal capabilities request is serviced for version 1
8
17
9 $ sendhttpraw << EOF
18 $ sendhttpraw << EOF
10 > httprequest GET ?cmd=capabilities
19 > httprequest GET ?cmd=capabilities
11 > user-agent: test
20 > user-agent: test
12 > EOF
21 > EOF
13 using raw connection to peer
22 using raw connection to peer
14 s> GET /?cmd=capabilities HTTP/1.1\r\n
23 s> GET /?cmd=capabilities HTTP/1.1\r\n
15 s> Accept-Encoding: identity\r\n
24 s> Accept-Encoding: identity\r\n
16 s> user-agent: test\r\n
25 s> user-agent: test\r\n
17 s> host: $LOCALIP:$HGPORT\r\n (glob)
26 s> host: $LOCALIP:$HGPORT\r\n (glob)
18 s> \r\n
27 s> \r\n
19 s> makefile('rb', None)
28 s> makefile('rb', None)
20 s> HTTP/1.1 200 Script output follows\r\n
29 s> HTTP/1.1 200 Script output follows\r\n
21 s> Server: testing stub value\r\n
30 s> Server: testing stub value\r\n
22 s> Date: $HTTP_DATE$\r\n
31 s> Date: $HTTP_DATE$\r\n
23 s> Content-Type: application/mercurial-0.1\r\n
32 s> Content-Type: application/mercurial-0.1\r\n
24 s> Content-Length: *\r\n (glob)
33 s> Content-Length: *\r\n (glob)
25 s> \r\n
34 s> \r\n
26 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
35 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
27
36
28 A proper request without the API server enabled returns the legacy response
37 A proper request without the API server enabled returns the legacy response
29
38
30 $ sendhttpraw << EOF
39 $ sendhttpraw << EOF
31 > httprequest GET ?cmd=capabilities
40 > httprequest GET ?cmd=capabilities
32 > user-agent: test
41 > user-agent: test
33 > x-hgupgrade-1: foo
42 > x-hgupgrade-1: foo
34 > x-hgproto-1: cbor
43 > x-hgproto-1: cbor
35 > EOF
44 > EOF
36 using raw connection to peer
45 using raw connection to peer
37 s> GET /?cmd=capabilities HTTP/1.1\r\n
46 s> GET /?cmd=capabilities HTTP/1.1\r\n
38 s> Accept-Encoding: identity\r\n
47 s> Accept-Encoding: identity\r\n
39 s> user-agent: test\r\n
48 s> user-agent: test\r\n
40 s> x-hgproto-1: cbor\r\n
49 s> x-hgproto-1: cbor\r\n
41 s> x-hgupgrade-1: foo\r\n
50 s> x-hgupgrade-1: foo\r\n
42 s> host: $LOCALIP:$HGPORT\r\n (glob)
51 s> host: $LOCALIP:$HGPORT\r\n (glob)
43 s> \r\n
52 s> \r\n
44 s> makefile('rb', None)
53 s> makefile('rb', None)
45 s> HTTP/1.1 200 Script output follows\r\n
54 s> HTTP/1.1 200 Script output follows\r\n
46 s> Server: testing stub value\r\n
55 s> Server: testing stub value\r\n
47 s> Date: $HTTP_DATE$\r\n
56 s> Date: $HTTP_DATE$\r\n
48 s> Content-Type: application/mercurial-0.1\r\n
57 s> Content-Type: application/mercurial-0.1\r\n
49 s> Content-Length: *\r\n (glob)
58 s> Content-Length: *\r\n (glob)
50 s> \r\n
59 s> \r\n
51 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
60 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
52
61
53 Restart with just API server enabled. This enables serving the new format.
62 Restart with just API server enabled. This enables serving the new format.
54
63
55 $ killdaemons.py
64 $ killdaemons.py
56 $ cat error.log
65 $ cat error.log
57
66
58 $ cat >> server/.hg/hgrc << EOF
67 $ cat >> server/.hg/hgrc << EOF
59 > [experimental]
68 > [experimental]
60 > web.apiserver = true
69 > web.apiserver = true
61 > EOF
70 > EOF
62
71
63 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
72 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
64 $ cat hg.pid > $DAEMON_PIDS
73 $ cat hg.pid > $DAEMON_PIDS
65
74
66 X-HgUpgrade-<N> without CBOR advertisement uses legacy response
75 X-HgUpgrade-<N> without CBOR advertisement uses legacy response
67
76
68 $ sendhttpraw << EOF
77 $ sendhttpraw << EOF
69 > httprequest GET ?cmd=capabilities
78 > httprequest GET ?cmd=capabilities
70 > user-agent: test
79 > user-agent: test
71 > x-hgupgrade-1: foo bar
80 > x-hgupgrade-1: foo bar
72 > EOF
81 > EOF
73 using raw connection to peer
82 using raw connection to peer
74 s> GET /?cmd=capabilities HTTP/1.1\r\n
83 s> GET /?cmd=capabilities HTTP/1.1\r\n
75 s> Accept-Encoding: identity\r\n
84 s> Accept-Encoding: identity\r\n
76 s> user-agent: test\r\n
85 s> user-agent: test\r\n
77 s> x-hgupgrade-1: foo bar\r\n
86 s> x-hgupgrade-1: foo bar\r\n
78 s> host: $LOCALIP:$HGPORT\r\n (glob)
87 s> host: $LOCALIP:$HGPORT\r\n (glob)
79 s> \r\n
88 s> \r\n
80 s> makefile('rb', None)
89 s> makefile('rb', None)
81 s> HTTP/1.1 200 Script output follows\r\n
90 s> HTTP/1.1 200 Script output follows\r\n
82 s> Server: testing stub value\r\n
91 s> Server: testing stub value\r\n
83 s> Date: $HTTP_DATE$\r\n
92 s> Date: $HTTP_DATE$\r\n
84 s> Content-Type: application/mercurial-0.1\r\n
93 s> Content-Type: application/mercurial-0.1\r\n
85 s> Content-Length: *\r\n (glob)
94 s> Content-Length: *\r\n (glob)
86 s> \r\n
95 s> \r\n
87 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
96 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
88
97
89 X-HgUpgrade-<N> without known serialization in X-HgProto-<N> uses legacy response
98 X-HgUpgrade-<N> without known serialization in X-HgProto-<N> uses legacy response
90
99
91 $ sendhttpraw << EOF
100 $ sendhttpraw << EOF
92 > httprequest GET ?cmd=capabilities
101 > httprequest GET ?cmd=capabilities
93 > user-agent: test
102 > user-agent: test
94 > x-hgupgrade-1: foo bar
103 > x-hgupgrade-1: foo bar
95 > x-hgproto-1: some value
104 > x-hgproto-1: some value
96 > EOF
105 > EOF
97 using raw connection to peer
106 using raw connection to peer
98 s> GET /?cmd=capabilities HTTP/1.1\r\n
107 s> GET /?cmd=capabilities HTTP/1.1\r\n
99 s> Accept-Encoding: identity\r\n
108 s> Accept-Encoding: identity\r\n
100 s> user-agent: test\r\n
109 s> user-agent: test\r\n
101 s> x-hgproto-1: some value\r\n
110 s> x-hgproto-1: some value\r\n
102 s> x-hgupgrade-1: foo bar\r\n
111 s> x-hgupgrade-1: foo bar\r\n
103 s> host: $LOCALIP:$HGPORT\r\n (glob)
112 s> host: $LOCALIP:$HGPORT\r\n (glob)
104 s> \r\n
113 s> \r\n
105 s> makefile('rb', None)
114 s> makefile('rb', None)
106 s> HTTP/1.1 200 Script output follows\r\n
115 s> HTTP/1.1 200 Script output follows\r\n
107 s> Server: testing stub value\r\n
116 s> Server: testing stub value\r\n
108 s> Date: $HTTP_DATE$\r\n
117 s> Date: $HTTP_DATE$\r\n
109 s> Content-Type: application/mercurial-0.1\r\n
118 s> Content-Type: application/mercurial-0.1\r\n
110 s> Content-Length: *\r\n (glob)
119 s> Content-Length: *\r\n (glob)
111 s> \r\n
120 s> \r\n
112 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
121 s> batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
113
122
114 X-HgUpgrade-<N> + X-HgProto-<N> headers trigger new response format
123 X-HgUpgrade-<N> + X-HgProto-<N> headers trigger new response format
115
124
116 $ sendhttpraw << EOF
125 $ sendhttpraw << EOF
117 > httprequest GET ?cmd=capabilities
126 > httprequest GET ?cmd=capabilities
118 > user-agent: test
127 > user-agent: test
119 > x-hgupgrade-1: foo bar
128 > x-hgupgrade-1: foo bar
120 > x-hgproto-1: cbor
129 > x-hgproto-1: cbor
121 > EOF
130 > EOF
122 using raw connection to peer
131 using raw connection to peer
123 s> GET /?cmd=capabilities HTTP/1.1\r\n
132 s> GET /?cmd=capabilities HTTP/1.1\r\n
124 s> Accept-Encoding: identity\r\n
133 s> Accept-Encoding: identity\r\n
125 s> user-agent: test\r\n
134 s> user-agent: test\r\n
126 s> x-hgproto-1: cbor\r\n
135 s> x-hgproto-1: cbor\r\n
127 s> x-hgupgrade-1: foo bar\r\n
136 s> x-hgupgrade-1: foo bar\r\n
128 s> host: $LOCALIP:$HGPORT\r\n (glob)
137 s> host: $LOCALIP:$HGPORT\r\n (glob)
129 s> \r\n
138 s> \r\n
130 s> makefile('rb', None)
139 s> makefile('rb', None)
131 s> HTTP/1.1 200 OK\r\n
140 s> HTTP/1.1 200 OK\r\n
132 s> Server: testing stub value\r\n
141 s> Server: testing stub value\r\n
133 s> Date: $HTTP_DATE$\r\n
142 s> Date: $HTTP_DATE$\r\n
134 s> Content-Type: application/mercurial-cbor\r\n
143 s> Content-Type: application/mercurial-cbor\r\n
135 s> Content-Length: *\r\n (glob)
144 s> Content-Length: *\r\n (glob)
136 s> \r\n
145 s> \r\n
137 s> \xa3Dapis\xa0GapibaseDapi/Nv1capabilitiesY\x01\xcabatch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
146 s> \xa3Dapis\xa0GapibaseDapi/Nv1capabilitiesY\x01\xc5batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
138 cbor> {b'apibase': b'api/', b'apis': {}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
147 cbor> {b'apibase': b'api/', b'apis': {}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
139
148
140 Restart server to enable HTTPv2
149 Restart server to enable HTTPv2
141
150
142 $ killdaemons.py
151 $ killdaemons.py
143 $ enablehttpv2 server
152 $ enablehttpv2 server
144 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
153 $ hg -R server serve -p $HGPORT -d --pid-file hg.pid -E error.log
145 $ cat hg.pid > $DAEMON_PIDS
154 $ cat hg.pid > $DAEMON_PIDS
146
155
147 Only requested API services are returned
156 Only requested API services are returned
148
157
149 $ sendhttpraw << EOF
158 $ sendhttpraw << EOF
150 > httprequest GET ?cmd=capabilities
159 > httprequest GET ?cmd=capabilities
151 > user-agent: test
160 > user-agent: test
152 > x-hgupgrade-1: foo bar
161 > x-hgupgrade-1: foo bar
153 > x-hgproto-1: cbor
162 > x-hgproto-1: cbor
154 > EOF
163 > EOF
155 using raw connection to peer
164 using raw connection to peer
156 s> GET /?cmd=capabilities HTTP/1.1\r\n
165 s> GET /?cmd=capabilities HTTP/1.1\r\n
157 s> Accept-Encoding: identity\r\n
166 s> Accept-Encoding: identity\r\n
158 s> user-agent: test\r\n
167 s> user-agent: test\r\n
159 s> x-hgproto-1: cbor\r\n
168 s> x-hgproto-1: cbor\r\n
160 s> x-hgupgrade-1: foo bar\r\n
169 s> x-hgupgrade-1: foo bar\r\n
161 s> host: $LOCALIP:$HGPORT\r\n (glob)
170 s> host: $LOCALIP:$HGPORT\r\n (glob)
162 s> \r\n
171 s> \r\n
163 s> makefile('rb', None)
172 s> makefile('rb', None)
164 s> HTTP/1.1 200 OK\r\n
173 s> HTTP/1.1 200 OK\r\n
165 s> Server: testing stub value\r\n
174 s> Server: testing stub value\r\n
166 s> Date: $HTTP_DATE$\r\n
175 s> Date: $HTTP_DATE$\r\n
167 s> Content-Type: application/mercurial-cbor\r\n
176 s> Content-Type: application/mercurial-cbor\r\n
168 s> Content-Length: *\r\n (glob)
177 s> Content-Length: *\r\n (glob)
169 s> \r\n
178 s> \r\n
170 s> \xa3Dapis\xa0GapibaseDapi/Nv1capabilitiesY\x01\xcabatch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
179 s> \xa3Dapis\xa0GapibaseDapi/Nv1capabilitiesY\x01\xc5batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
171 cbor> {b'apibase': b'api/', b'apis': {}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
180 cbor> {b'apibase': b'api/', b'apis': {}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
172
181
173 Request for HTTPv2 service returns information about it
182 Request for HTTPv2 service returns information about it
174
183
175 $ sendhttpraw << EOF
184 $ sendhttpraw << EOF
176 > httprequest GET ?cmd=capabilities
185 > httprequest GET ?cmd=capabilities
177 > user-agent: test
186 > user-agent: test
178 > x-hgupgrade-1: exp-http-v2-0001 foo bar
187 > x-hgupgrade-1: exp-http-v2-0001 foo bar
179 > x-hgproto-1: cbor
188 > x-hgproto-1: cbor
180 > EOF
189 > EOF
181 using raw connection to peer
190 using raw connection to peer
182 s> GET /?cmd=capabilities HTTP/1.1\r\n
191 s> GET /?cmd=capabilities HTTP/1.1\r\n
183 s> Accept-Encoding: identity\r\n
192 s> Accept-Encoding: identity\r\n
184 s> user-agent: test\r\n
193 s> user-agent: test\r\n
185 s> x-hgproto-1: cbor\r\n
194 s> x-hgproto-1: cbor\r\n
186 s> x-hgupgrade-1: exp-http-v2-0001 foo bar\r\n
195 s> x-hgupgrade-1: exp-http-v2-0001 foo bar\r\n
187 s> host: $LOCALIP:$HGPORT\r\n (glob)
196 s> host: $LOCALIP:$HGPORT\r\n (glob)
188 s> \r\n
197 s> \r\n
189 s> makefile('rb', None)
198 s> makefile('rb', None)
190 s> HTTP/1.1 200 OK\r\n
199 s> HTTP/1.1 200 OK\r\n
191 s> Server: testing stub value\r\n
200 s> Server: testing stub value\r\n
192 s> Date: $HTTP_DATE$\r\n
201 s> Date: $HTTP_DATE$\r\n
193 s> Content-Type: application/mercurial-cbor\r\n
202 s> Content-Type: application/mercurial-cbor\r\n
194 s> Content-Length: *\r\n (glob)
203 s> Content-Length: *\r\n (glob)
195 s> \r\n
204 s> \r\n
196 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x82\xa1DnameDzstd\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xcabatch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
205 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x81\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xc5batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
197 cbor> {b'apibase': b'api/', b'apis': {b'exp-http-v2-0001': {b'commands': {b'branchmap': {b'args': {}, b'permissions': [b'pull']}, b'capabilities': {b'args': {}, b'permissions': [b'pull']}, b'heads': {b'args': {b'publiconly': False}, b'permissions': [b'pull']}, b'known': {b'args': {b'nodes': [b'deadbeef']}, b'permissions': [b'pull']}, b'listkeys': {b'args': {b'namespace': b'ns'}, b'permissions': [b'pull']}, b'lookup': {b'args': {b'key': b'foo'}, b'permissions': [b'pull']}, b'pushkey': {b'args': {b'key': b'key', b'namespace': b'ns', b'new': b'new', b'old': b'old'}, b'permissions': [b'push']}}, b'compression': [{b'name': b'zstd'}, {b'name': b'zlib'}], b'framingmediatypes': [b'application/mercurial-exp-framing-0005'], b'rawrepoformats': [b'generaldelta', b'revlogv1']}}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
206 cbor> {b'apibase': b'api/', b'apis': {b'exp-http-v2-0001': {b'commands': {b'branchmap': {b'args': {}, b'permissions': [b'pull']}, b'capabilities': {b'args': {}, b'permissions': [b'pull']}, b'heads': {b'args': {b'publiconly': False}, b'permissions': [b'pull']}, b'known': {b'args': {b'nodes': [b'deadbeef']}, b'permissions': [b'pull']}, b'listkeys': {b'args': {b'namespace': b'ns'}, b'permissions': [b'pull']}, b'lookup': {b'args': {b'key': b'foo'}, b'permissions': [b'pull']}, b'pushkey': {b'args': {b'key': b'key', b'namespace': b'ns', b'new': b'new', b'old': b'old'}, b'permissions': [b'push']}}, b'compression': [{b'name': b'zlib'}], b'framingmediatypes': [b'application/mercurial-exp-framing-0005'], b'rawrepoformats': [b'generaldelta', b'revlogv1']}}, b'v1capabilities': b'batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash'}
198
207
199 capabilities command returns expected info
208 capabilities command returns expected info
200
209
201 $ sendhttpv2peerhandshake << EOF
210 $ sendhttpv2peerhandshake << EOF
202 > command capabilities
211 > command capabilities
203 > EOF
212 > EOF
204 creating http peer for wire protocol version 2
213 creating http peer for wire protocol version 2
205 s> GET /?cmd=capabilities HTTP/1.1\r\n
214 s> GET /?cmd=capabilities HTTP/1.1\r\n
206 s> Accept-Encoding: identity\r\n
215 s> Accept-Encoding: identity\r\n
207 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
216 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
208 s> x-hgproto-1: cbor\r\n
217 s> x-hgproto-1: cbor\r\n
209 s> x-hgupgrade-1: exp-http-v2-0001\r\n
218 s> x-hgupgrade-1: exp-http-v2-0001\r\n
210 s> accept: application/mercurial-0.1\r\n
219 s> accept: application/mercurial-0.1\r\n
211 s> host: $LOCALIP:$HGPORT\r\n (glob)
220 s> host: $LOCALIP:$HGPORT\r\n (glob)
212 s> user-agent: Mercurial debugwireproto\r\n
221 s> user-agent: Mercurial debugwireproto\r\n
213 s> \r\n
222 s> \r\n
214 s> makefile('rb', None)
223 s> makefile('rb', None)
215 s> HTTP/1.1 200 OK\r\n
224 s> HTTP/1.1 200 OK\r\n
216 s> Server: testing stub value\r\n
225 s> Server: testing stub value\r\n
217 s> Date: $HTTP_DATE$\r\n
226 s> Date: $HTTP_DATE$\r\n
218 s> Content-Type: application/mercurial-cbor\r\n
227 s> Content-Type: application/mercurial-cbor\r\n
219 s> Content-Length: *\r\n (glob)
228 s> Content-Length: *\r\n (glob)
220 s> \r\n
229 s> \r\n
221 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x82\xa1DnameDzstd\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xcabatch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
230 s> \xa3Dapis\xa1Pexp-http-v2-0001\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x81\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005GapibaseDapi/Nv1capabilitiesY\x01\xc5batch branchmap $USUAL_BUNDLE2_CAPS_SERVER$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
222 sending capabilities command
231 sending capabilities command
223 s> POST /api/exp-http-v2-0001/ro/capabilities HTTP/1.1\r\n
232 s> POST /api/exp-http-v2-0001/ro/capabilities HTTP/1.1\r\n
224 s> Accept-Encoding: identity\r\n
233 s> Accept-Encoding: identity\r\n
225 s> *\r\n (glob)
234 s> *\r\n (glob)
226 s> content-type: application/mercurial-exp-framing-0005\r\n
235 s> content-type: application/mercurial-exp-framing-0005\r\n
227 s> content-length: 27\r\n
236 s> content-length: 27\r\n
228 s> host: $LOCALIP:$HGPORT\r\n (glob)
237 s> host: $LOCALIP:$HGPORT\r\n (glob)
229 s> user-agent: Mercurial debugwireproto\r\n
238 s> user-agent: Mercurial debugwireproto\r\n
230 s> \r\n
239 s> \r\n
231 s> \x13\x00\x00\x01\x00\x01\x01\x11\xa1DnameLcapabilities
240 s> \x13\x00\x00\x01\x00\x01\x01\x11\xa1DnameLcapabilities
232 s> makefile('rb', None)
241 s> makefile('rb', None)
233 s> HTTP/1.1 200 OK\r\n
242 s> HTTP/1.1 200 OK\r\n
234 s> Server: testing stub value\r\n
243 s> Server: testing stub value\r\n
235 s> Date: $HTTP_DATE$\r\n
244 s> Date: $HTTP_DATE$\r\n
236 s> Content-Type: application/mercurial-exp-framing-0005\r\n
245 s> Content-Type: application/mercurial-exp-framing-0005\r\n
237 s> Transfer-Encoding: chunked\r\n
246 s> Transfer-Encoding: chunked\r\n
238 s> \r\n
247 s> \r\n
239 s> 1e2\r\n
248 s> 1d7\r\n
240 s> \xda\x01\x00\x01\x00\x02\x012
249 s> \xcf\x01\x00\x01\x00\x02\x012
241 s> \xa1FstatusBok\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x82\xa1DnameDzstd\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005
250 s> \xa1FstatusBok\xa4Hcommands\xa7Eheads\xa2Dargs\xa1Jpubliconly\xf4Kpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\x81HdeadbeefKpermissions\x81DpullFlookup\xa2Dargs\xa1CkeyCfooKpermissions\x81DpullGpushkey\xa2Dargs\xa4CkeyCkeyCnewCnewColdColdInamespaceBnsKpermissions\x81DpushHlistkeys\xa2Dargs\xa1InamespaceBnsKpermissions\x81DpullIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullKcompression\x81\xa1DnameDzlibNrawrepoformats\x82LgeneraldeltaHrevlogv1Qframingmediatypes\x81X&application/mercurial-exp-framing-0005
242 s> \r\n
251 s> \r\n
243 received frame(size=474; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=eos)
252 received frame(size=463; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=eos)
244 s> 0\r\n
253 s> 0\r\n
245 s> \r\n
254 s> \r\n
246 response: [{b'status': b'ok'}, {b'commands': {b'branchmap': {b'args': {}, b'permissions': [b'pull']}, b'capabilities': {b'args': {}, b'permissions': [b'pull']}, b'heads': {b'args': {b'publiconly': False}, b'permissions': [b'pull']}, b'known': {b'args': {b'nodes': [b'deadbeef']}, b'permissions': [b'pull']}, b'listkeys': {b'args': {b'namespace': b'ns'}, b'permissions': [b'pull']}, b'lookup': {b'args': {b'key': b'foo'}, b'permissions': [b'pull']}, b'pushkey': {b'args': {b'key': b'key', b'namespace': b'ns', b'new': b'new', b'old': b'old'}, b'permissions': [b'push']}}, b'compression': [{b'name': b'zstd'}, {b'name': b'zlib'}], b'framingmediatypes': [b'application/mercurial-exp-framing-0005'], b'rawrepoformats': [b'generaldelta', b'revlogv1']}]
255 response: [{b'status': b'ok'}, {b'commands': {b'branchmap': {b'args': {}, b'permissions': [b'pull']}, b'capabilities': {b'args': {}, b'permissions': [b'pull']}, b'heads': {b'args': {b'publiconly': False}, b'permissions': [b'pull']}, b'known': {b'args': {b'nodes': [b'deadbeef']}, b'permissions': [b'pull']}, b'listkeys': {b'args': {b'namespace': b'ns'}, b'permissions': [b'pull']}, b'lookup': {b'args': {b'key': b'foo'}, b'permissions': [b'pull']}, b'pushkey': {b'args': {b'key': b'key', b'namespace': b'ns', b'new': b'new', b'old': b'old'}, b'permissions': [b'push']}}, b'compression': [{b'name': b'zlib'}], b'framingmediatypes': [b'application/mercurial-exp-framing-0005'], b'rawrepoformats': [b'generaldelta', b'revlogv1']}]
247
256
248 $ cat error.log
257 $ cat error.log
General Comments 0
You need to be logged in to leave comments. Login now