##// END OF EJS Templates
tests: disable zstd in test...
Gregory Szorc -
r40159:627b0f9b default
parent child Browse files
Show More
@@ -1,1288 +1,1290
1 $ . $TESTDIR/wireprotohelpers.sh
1 $ . $TESTDIR/wireprotohelpers.sh
2
2
3 $ cat >> $HGRCPATH << EOF
3 $ cat >> $HGRCPATH << EOF
4 > [extensions]
4 > [extensions]
5 > blackbox =
5 > blackbox =
6 > [blackbox]
6 > [blackbox]
7 > track = simplecache
7 > track = simplecache
8 > EOF
8 > EOF
9
9
10 $ hg init server
10 $ hg init server
11 $ enablehttpv2 server
11 $ enablehttpv2 server
12 $ cd server
12 $ cd server
13 $ cat >> .hg/hgrc << EOF
13 $ cat >> .hg/hgrc << EOF
14 > [server]
15 > compressionengines = zlib
14 > [extensions]
16 > [extensions]
15 > simplecache = $TESTDIR/wireprotosimplecache.py
17 > simplecache = $TESTDIR/wireprotosimplecache.py
16 > [simplecache]
18 > [simplecache]
17 > cacheapi = true
19 > cacheapi = true
18 > EOF
20 > EOF
19
21
20 $ echo a0 > a
22 $ echo a0 > a
21 $ echo b0 > b
23 $ echo b0 > b
22 $ hg -q commit -A -m 'commit 0'
24 $ hg -q commit -A -m 'commit 0'
23 $ echo a1 > a
25 $ echo a1 > a
24 $ hg commit -m 'commit 1'
26 $ hg commit -m 'commit 1'
25
27
26 $ hg --debug debugindex -m
28 $ hg --debug debugindex -m
27 rev linkrev nodeid p1 p2
29 rev linkrev nodeid p1 p2
28 0 0 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
30 0 0 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
29 1 1 a988fb43583e871d1ed5750ee074c6d840bbbfc8 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000
31 1 1 a988fb43583e871d1ed5750ee074c6d840bbbfc8 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000
30
32
31 $ hg --config simplecache.redirectsfile=redirects.py serve -p $HGPORT -d --pid-file hg.pid -E error.log
33 $ hg --config simplecache.redirectsfile=redirects.py serve -p $HGPORT -d --pid-file hg.pid -E error.log
32 $ cat hg.pid > $DAEMON_PIDS
34 $ cat hg.pid > $DAEMON_PIDS
33
35
34 $ cat > redirects.py << EOF
36 $ cat > redirects.py << EOF
35 > [
37 > [
36 > {
38 > {
37 > b'name': b'target-a',
39 > b'name': b'target-a',
38 > b'protocol': b'http',
40 > b'protocol': b'http',
39 > b'snirequired': False,
41 > b'snirequired': False,
40 > b'tlsversions': [b'1.2', b'1.3'],
42 > b'tlsversions': [b'1.2', b'1.3'],
41 > b'uris': [b'http://example.com/'],
43 > b'uris': [b'http://example.com/'],
42 > },
44 > },
43 > ]
45 > ]
44 > EOF
46 > EOF
45
47
46 Redirect targets advertised when configured
48 Redirect targets advertised when configured
47
49
48 $ sendhttpv2peerhandshake << EOF
50 $ sendhttpv2peerhandshake << EOF
49 > command capabilities
51 > command capabilities
50 > EOF
52 > EOF
51 creating http peer for wire protocol version 2
53 creating http peer for wire protocol version 2
52 s> GET /?cmd=capabilities HTTP/1.1\r\n
54 s> GET /?cmd=capabilities HTTP/1.1\r\n
53 s> Accept-Encoding: identity\r\n
55 s> Accept-Encoding: identity\r\n
54 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
56 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
55 s> x-hgproto-1: cbor\r\n
57 s> x-hgproto-1: cbor\r\n
56 s> x-hgupgrade-1: exp-http-v2-0002\r\n
58 s> x-hgupgrade-1: exp-http-v2-0002\r\n
57 s> accept: application/mercurial-0.1\r\n
59 s> accept: application/mercurial-0.1\r\n
58 s> host: $LOCALIP:$HGPORT\r\n (glob)
60 s> host: $LOCALIP:$HGPORT\r\n (glob)
59 s> user-agent: Mercurial debugwireproto\r\n
61 s> user-agent: Mercurial debugwireproto\r\n
60 s> \r\n
62 s> \r\n
61 s> makefile('rb', None)
63 s> makefile('rb', None)
62 s> HTTP/1.1 200 OK\r\n
64 s> HTTP/1.1 200 OK\r\n
63 s> Server: testing stub value\r\n
65 s> Server: testing stub value\r\n
64 s> Date: $HTTP_DATE$\r\n
66 s> Date: $HTTP_DATE$\r\n
65 s> Content-Type: application/mercurial-cbor\r\n
67 s> Content-Type: application/mercurial-cbor\r\n
66 s> Content-Length: 1935\r\n
68 s> Content-Length: 1930\r\n
67 s> \r\n
69 s> \r\n
68 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/Nv1capabilitiesY\x01\xd8batch branchmap $USUAL_BUNDLE2_CAPS$ 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
70 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ 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
69 (remote redirect target target-a is compatible)
71 (remote redirect target target-a is compatible)
70 sending capabilities command
72 sending capabilities command
71 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
73 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
72 s> Accept-Encoding: identity\r\n
74 s> Accept-Encoding: identity\r\n
73 s> accept: application/mercurial-exp-framing-0005\r\n
75 s> accept: application/mercurial-exp-framing-0005\r\n
74 s> content-type: application/mercurial-exp-framing-0005\r\n
76 s> content-type: application/mercurial-exp-framing-0005\r\n
75 s> content-length: 75\r\n
77 s> content-length: 75\r\n
76 s> host: $LOCALIP:$HGPORT\r\n (glob)
78 s> host: $LOCALIP:$HGPORT\r\n (glob)
77 s> user-agent: Mercurial debugwireproto\r\n
79 s> user-agent: Mercurial debugwireproto\r\n
78 s> \r\n
80 s> \r\n
79 s> C\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81Htarget-a
81 s> C\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81Htarget-a
80 s> makefile('rb', None)
82 s> makefile('rb', None)
81 s> HTTP/1.1 200 OK\r\n
83 s> HTTP/1.1 200 OK\r\n
82 s> Server: testing stub value\r\n
84 s> Server: testing stub value\r\n
83 s> Date: $HTTP_DATE$\r\n
85 s> Date: $HTTP_DATE$\r\n
84 s> Content-Type: application/mercurial-exp-framing-0005\r\n
86 s> Content-Type: application/mercurial-exp-framing-0005\r\n
85 s> Transfer-Encoding: chunked\r\n
87 s> Transfer-Encoding: chunked\r\n
86 s> \r\n
88 s> \r\n
87 s> 13\r\n
89 s> 13\r\n
88 s> \x0b\x00\x00\x01\x00\x02\x011
90 s> \x0b\x00\x00\x01\x00\x02\x011
89 s> \xa1FstatusBok
91 s> \xa1FstatusBok
90 s> \r\n
92 s> \r\n
91 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
93 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
92 s> 588\r\n
94 s> 588\r\n
93 s> \x80\x05\x00\x01\x00\x02\x001
95 s> \x80\x05\x00\x01\x00\x02\x001
94 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/
96 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/
95 s> \r\n
97 s> \r\n
96 received frame(size=1408; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
98 received frame(size=1408; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
97 s> 8\r\n
99 s> 8\r\n
98 s> \x00\x00\x00\x01\x00\x02\x002
100 s> \x00\x00\x00\x01\x00\x02\x002
99 s> \r\n
101 s> \r\n
100 s> 0\r\n
102 s> 0\r\n
101 s> \r\n
103 s> \r\n
102 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
104 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
103 response: gen[
105 response: gen[
104 {
106 {
105 b'commands': {
107 b'commands': {
106 b'branchmap': {
108 b'branchmap': {
107 b'args': {},
109 b'args': {},
108 b'permissions': [
110 b'permissions': [
109 b'pull'
111 b'pull'
110 ]
112 ]
111 },
113 },
112 b'capabilities': {
114 b'capabilities': {
113 b'args': {},
115 b'args': {},
114 b'permissions': [
116 b'permissions': [
115 b'pull'
117 b'pull'
116 ]
118 ]
117 },
119 },
118 b'changesetdata': {
120 b'changesetdata': {
119 b'args': {
121 b'args': {
120 b'fields': {
122 b'fields': {
121 b'default': set([]),
123 b'default': set([]),
122 b'required': False,
124 b'required': False,
123 b'type': b'set',
125 b'type': b'set',
124 b'validvalues': set([
126 b'validvalues': set([
125 b'bookmarks',
127 b'bookmarks',
126 b'parents',
128 b'parents',
127 b'phase',
129 b'phase',
128 b'revision'
130 b'revision'
129 ])
131 ])
130 },
132 },
131 b'noderange': {
133 b'noderange': {
132 b'default': None,
134 b'default': None,
133 b'required': False,
135 b'required': False,
134 b'type': b'list'
136 b'type': b'list'
135 },
137 },
136 b'nodes': {
138 b'nodes': {
137 b'default': None,
139 b'default': None,
138 b'required': False,
140 b'required': False,
139 b'type': b'list'
141 b'type': b'list'
140 },
142 },
141 b'nodesdepth': {
143 b'nodesdepth': {
142 b'default': None,
144 b'default': None,
143 b'required': False,
145 b'required': False,
144 b'type': b'int'
146 b'type': b'int'
145 }
147 }
146 },
148 },
147 b'permissions': [
149 b'permissions': [
148 b'pull'
150 b'pull'
149 ]
151 ]
150 },
152 },
151 b'filedata': {
153 b'filedata': {
152 b'args': {
154 b'args': {
153 b'fields': {
155 b'fields': {
154 b'default': set([]),
156 b'default': set([]),
155 b'required': False,
157 b'required': False,
156 b'type': b'set',
158 b'type': b'set',
157 b'validvalues': set([
159 b'validvalues': set([
158 b'parents',
160 b'parents',
159 b'revision'
161 b'revision'
160 ])
162 ])
161 },
163 },
162 b'haveparents': {
164 b'haveparents': {
163 b'default': False,
165 b'default': False,
164 b'required': False,
166 b'required': False,
165 b'type': b'bool'
167 b'type': b'bool'
166 },
168 },
167 b'nodes': {
169 b'nodes': {
168 b'required': True,
170 b'required': True,
169 b'type': b'list'
171 b'type': b'list'
170 },
172 },
171 b'path': {
173 b'path': {
172 b'required': True,
174 b'required': True,
173 b'type': b'bytes'
175 b'type': b'bytes'
174 }
176 }
175 },
177 },
176 b'permissions': [
178 b'permissions': [
177 b'pull'
179 b'pull'
178 ]
180 ]
179 },
181 },
180 b'heads': {
182 b'heads': {
181 b'args': {
183 b'args': {
182 b'publiconly': {
184 b'publiconly': {
183 b'default': False,
185 b'default': False,
184 b'required': False,
186 b'required': False,
185 b'type': b'bool'
187 b'type': b'bool'
186 }
188 }
187 },
189 },
188 b'permissions': [
190 b'permissions': [
189 b'pull'
191 b'pull'
190 ]
192 ]
191 },
193 },
192 b'known': {
194 b'known': {
193 b'args': {
195 b'args': {
194 b'nodes': {
196 b'nodes': {
195 b'default': [],
197 b'default': [],
196 b'required': False,
198 b'required': False,
197 b'type': b'list'
199 b'type': b'list'
198 }
200 }
199 },
201 },
200 b'permissions': [
202 b'permissions': [
201 b'pull'
203 b'pull'
202 ]
204 ]
203 },
205 },
204 b'listkeys': {
206 b'listkeys': {
205 b'args': {
207 b'args': {
206 b'namespace': {
208 b'namespace': {
207 b'required': True,
209 b'required': True,
208 b'type': b'bytes'
210 b'type': b'bytes'
209 }
211 }
210 },
212 },
211 b'permissions': [
213 b'permissions': [
212 b'pull'
214 b'pull'
213 ]
215 ]
214 },
216 },
215 b'lookup': {
217 b'lookup': {
216 b'args': {
218 b'args': {
217 b'key': {
219 b'key': {
218 b'required': True,
220 b'required': True,
219 b'type': b'bytes'
221 b'type': b'bytes'
220 }
222 }
221 },
223 },
222 b'permissions': [
224 b'permissions': [
223 b'pull'
225 b'pull'
224 ]
226 ]
225 },
227 },
226 b'manifestdata': {
228 b'manifestdata': {
227 b'args': {
229 b'args': {
228 b'fields': {
230 b'fields': {
229 b'default': set([]),
231 b'default': set([]),
230 b'required': False,
232 b'required': False,
231 b'type': b'set',
233 b'type': b'set',
232 b'validvalues': set([
234 b'validvalues': set([
233 b'parents',
235 b'parents',
234 b'revision'
236 b'revision'
235 ])
237 ])
236 },
238 },
237 b'haveparents': {
239 b'haveparents': {
238 b'default': False,
240 b'default': False,
239 b'required': False,
241 b'required': False,
240 b'type': b'bool'
242 b'type': b'bool'
241 },
243 },
242 b'nodes': {
244 b'nodes': {
243 b'required': True,
245 b'required': True,
244 b'type': b'list'
246 b'type': b'list'
245 },
247 },
246 b'tree': {
248 b'tree': {
247 b'required': True,
249 b'required': True,
248 b'type': b'bytes'
250 b'type': b'bytes'
249 }
251 }
250 },
252 },
251 b'permissions': [
253 b'permissions': [
252 b'pull'
254 b'pull'
253 ]
255 ]
254 },
256 },
255 b'pushkey': {
257 b'pushkey': {
256 b'args': {
258 b'args': {
257 b'key': {
259 b'key': {
258 b'required': True,
260 b'required': True,
259 b'type': b'bytes'
261 b'type': b'bytes'
260 },
262 },
261 b'namespace': {
263 b'namespace': {
262 b'required': True,
264 b'required': True,
263 b'type': b'bytes'
265 b'type': b'bytes'
264 },
266 },
265 b'new': {
267 b'new': {
266 b'required': True,
268 b'required': True,
267 b'type': b'bytes'
269 b'type': b'bytes'
268 },
270 },
269 b'old': {
271 b'old': {
270 b'required': True,
272 b'required': True,
271 b'type': b'bytes'
273 b'type': b'bytes'
272 }
274 }
273 },
275 },
274 b'permissions': [
276 b'permissions': [
275 b'push'
277 b'push'
276 ]
278 ]
277 }
279 }
278 },
280 },
279 b'framingmediatypes': [
281 b'framingmediatypes': [
280 b'application/mercurial-exp-framing-0005'
282 b'application/mercurial-exp-framing-0005'
281 ],
283 ],
282 b'pathfilterprefixes': set([
284 b'pathfilterprefixes': set([
283 b'path:',
285 b'path:',
284 b'rootfilesin:'
286 b'rootfilesin:'
285 ]),
287 ]),
286 b'rawrepoformats': [
288 b'rawrepoformats': [
287 b'generaldelta',
289 b'generaldelta',
288 b'revlogv1'
290 b'revlogv1'
289 ],
291 ],
290 b'redirect': {
292 b'redirect': {
291 b'hashes': [
293 b'hashes': [
292 b'sha256',
294 b'sha256',
293 b'sha1'
295 b'sha1'
294 ],
296 ],
295 b'targets': [
297 b'targets': [
296 {
298 {
297 b'name': b'target-a',
299 b'name': b'target-a',
298 b'protocol': b'http',
300 b'protocol': b'http',
299 b'snirequired': False,
301 b'snirequired': False,
300 b'tlsversions': [
302 b'tlsversions': [
301 b'1.2',
303 b'1.2',
302 b'1.3'
304 b'1.3'
303 ],
305 ],
304 b'uris': [
306 b'uris': [
305 b'http://example.com/'
307 b'http://example.com/'
306 ]
308 ]
307 }
309 }
308 ]
310 ]
309 }
311 }
310 }
312 }
311 ]
313 ]
312 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
314 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
313
315
314 Unknown protocol is filtered from compatible targets
316 Unknown protocol is filtered from compatible targets
315
317
316 $ cat > redirects.py << EOF
318 $ cat > redirects.py << EOF
317 > [
319 > [
318 > {
320 > {
319 > b'name': b'target-a',
321 > b'name': b'target-a',
320 > b'protocol': b'http',
322 > b'protocol': b'http',
321 > b'uris': [b'http://example.com/'],
323 > b'uris': [b'http://example.com/'],
322 > },
324 > },
323 > {
325 > {
324 > b'name': b'target-b',
326 > b'name': b'target-b',
325 > b'protocol': b'unknown',
327 > b'protocol': b'unknown',
326 > b'uris': [b'unknown://example.com/'],
328 > b'uris': [b'unknown://example.com/'],
327 > },
329 > },
328 > ]
330 > ]
329 > EOF
331 > EOF
330
332
331 $ sendhttpv2peerhandshake << EOF
333 $ sendhttpv2peerhandshake << EOF
332 > command capabilities
334 > command capabilities
333 > EOF
335 > EOF
334 creating http peer for wire protocol version 2
336 creating http peer for wire protocol version 2
335 s> GET /?cmd=capabilities HTTP/1.1\r\n
337 s> GET /?cmd=capabilities HTTP/1.1\r\n
336 s> Accept-Encoding: identity\r\n
338 s> Accept-Encoding: identity\r\n
337 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
339 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
338 s> x-hgproto-1: cbor\r\n
340 s> x-hgproto-1: cbor\r\n
339 s> x-hgupgrade-1: exp-http-v2-0002\r\n
341 s> x-hgupgrade-1: exp-http-v2-0002\r\n
340 s> accept: application/mercurial-0.1\r\n
342 s> accept: application/mercurial-0.1\r\n
341 s> host: $LOCALIP:$HGPORT\r\n (glob)
343 s> host: $LOCALIP:$HGPORT\r\n (glob)
342 s> user-agent: Mercurial debugwireproto\r\n
344 s> user-agent: Mercurial debugwireproto\r\n
343 s> \r\n
345 s> \r\n
344 s> makefile('rb', None)
346 s> makefile('rb', None)
345 s> HTTP/1.1 200 OK\r\n
347 s> HTTP/1.1 200 OK\r\n
346 s> Server: testing stub value\r\n
348 s> Server: testing stub value\r\n
347 s> Date: $HTTP_DATE$\r\n
349 s> Date: $HTTP_DATE$\r\n
348 s> Content-Type: application/mercurial-cbor\r\n
350 s> Content-Type: application/mercurial-cbor\r\n
349 s> Content-Length: 1962\r\n
351 s> Content-Length: 1957\r\n
350 s> \r\n
352 s> \r\n
351 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/Nv1capabilitiesY\x01\xd8batch branchmap $USUAL_BUNDLE2_CAPS$ 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
353 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ 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
352 (remote redirect target target-a is compatible)
354 (remote redirect target target-a is compatible)
353 (remote redirect target target-b uses unsupported protocol: unknown)
355 (remote redirect target target-b uses unsupported protocol: unknown)
354 sending capabilities command
356 sending capabilities command
355 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
357 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
356 s> Accept-Encoding: identity\r\n
358 s> Accept-Encoding: identity\r\n
357 s> accept: application/mercurial-exp-framing-0005\r\n
359 s> accept: application/mercurial-exp-framing-0005\r\n
358 s> content-type: application/mercurial-exp-framing-0005\r\n
360 s> content-type: application/mercurial-exp-framing-0005\r\n
359 s> content-length: 75\r\n
361 s> content-length: 75\r\n
360 s> host: $LOCALIP:$HGPORT\r\n (glob)
362 s> host: $LOCALIP:$HGPORT\r\n (glob)
361 s> user-agent: Mercurial debugwireproto\r\n
363 s> user-agent: Mercurial debugwireproto\r\n
362 s> \r\n
364 s> \r\n
363 s> C\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81Htarget-a
365 s> C\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81Htarget-a
364 s> makefile('rb', None)
366 s> makefile('rb', None)
365 s> HTTP/1.1 200 OK\r\n
367 s> HTTP/1.1 200 OK\r\n
366 s> Server: testing stub value\r\n
368 s> Server: testing stub value\r\n
367 s> Date: $HTTP_DATE$\r\n
369 s> Date: $HTTP_DATE$\r\n
368 s> Content-Type: application/mercurial-exp-framing-0005\r\n
370 s> Content-Type: application/mercurial-exp-framing-0005\r\n
369 s> Transfer-Encoding: chunked\r\n
371 s> Transfer-Encoding: chunked\r\n
370 s> \r\n
372 s> \r\n
371 s> 13\r\n
373 s> 13\r\n
372 s> \x0b\x00\x00\x01\x00\x02\x011
374 s> \x0b\x00\x00\x01\x00\x02\x011
373 s> \xa1FstatusBok
375 s> \xa1FstatusBok
374 s> \r\n
376 s> \r\n
375 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
377 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
376 s> 5a3\r\n
378 s> 5a3\r\n
377 s> \x9b\x05\x00\x01\x00\x02\x001
379 s> \x9b\x05\x00\x01\x00\x02\x001
378 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/
380 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/
379 s> \r\n
381 s> \r\n
380 received frame(size=1435; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
382 received frame(size=1435; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
381 s> 8\r\n
383 s> 8\r\n
382 s> \x00\x00\x00\x01\x00\x02\x002
384 s> \x00\x00\x00\x01\x00\x02\x002
383 s> \r\n
385 s> \r\n
384 s> 0\r\n
386 s> 0\r\n
385 s> \r\n
387 s> \r\n
386 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
388 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
387 response: gen[
389 response: gen[
388 {
390 {
389 b'commands': {
391 b'commands': {
390 b'branchmap': {
392 b'branchmap': {
391 b'args': {},
393 b'args': {},
392 b'permissions': [
394 b'permissions': [
393 b'pull'
395 b'pull'
394 ]
396 ]
395 },
397 },
396 b'capabilities': {
398 b'capabilities': {
397 b'args': {},
399 b'args': {},
398 b'permissions': [
400 b'permissions': [
399 b'pull'
401 b'pull'
400 ]
402 ]
401 },
403 },
402 b'changesetdata': {
404 b'changesetdata': {
403 b'args': {
405 b'args': {
404 b'fields': {
406 b'fields': {
405 b'default': set([]),
407 b'default': set([]),
406 b'required': False,
408 b'required': False,
407 b'type': b'set',
409 b'type': b'set',
408 b'validvalues': set([
410 b'validvalues': set([
409 b'bookmarks',
411 b'bookmarks',
410 b'parents',
412 b'parents',
411 b'phase',
413 b'phase',
412 b'revision'
414 b'revision'
413 ])
415 ])
414 },
416 },
415 b'noderange': {
417 b'noderange': {
416 b'default': None,
418 b'default': None,
417 b'required': False,
419 b'required': False,
418 b'type': b'list'
420 b'type': b'list'
419 },
421 },
420 b'nodes': {
422 b'nodes': {
421 b'default': None,
423 b'default': None,
422 b'required': False,
424 b'required': False,
423 b'type': b'list'
425 b'type': b'list'
424 },
426 },
425 b'nodesdepth': {
427 b'nodesdepth': {
426 b'default': None,
428 b'default': None,
427 b'required': False,
429 b'required': False,
428 b'type': b'int'
430 b'type': b'int'
429 }
431 }
430 },
432 },
431 b'permissions': [
433 b'permissions': [
432 b'pull'
434 b'pull'
433 ]
435 ]
434 },
436 },
435 b'filedata': {
437 b'filedata': {
436 b'args': {
438 b'args': {
437 b'fields': {
439 b'fields': {
438 b'default': set([]),
440 b'default': set([]),
439 b'required': False,
441 b'required': False,
440 b'type': b'set',
442 b'type': b'set',
441 b'validvalues': set([
443 b'validvalues': set([
442 b'parents',
444 b'parents',
443 b'revision'
445 b'revision'
444 ])
446 ])
445 },
447 },
446 b'haveparents': {
448 b'haveparents': {
447 b'default': False,
449 b'default': False,
448 b'required': False,
450 b'required': False,
449 b'type': b'bool'
451 b'type': b'bool'
450 },
452 },
451 b'nodes': {
453 b'nodes': {
452 b'required': True,
454 b'required': True,
453 b'type': b'list'
455 b'type': b'list'
454 },
456 },
455 b'path': {
457 b'path': {
456 b'required': True,
458 b'required': True,
457 b'type': b'bytes'
459 b'type': b'bytes'
458 }
460 }
459 },
461 },
460 b'permissions': [
462 b'permissions': [
461 b'pull'
463 b'pull'
462 ]
464 ]
463 },
465 },
464 b'heads': {
466 b'heads': {
465 b'args': {
467 b'args': {
466 b'publiconly': {
468 b'publiconly': {
467 b'default': False,
469 b'default': False,
468 b'required': False,
470 b'required': False,
469 b'type': b'bool'
471 b'type': b'bool'
470 }
472 }
471 },
473 },
472 b'permissions': [
474 b'permissions': [
473 b'pull'
475 b'pull'
474 ]
476 ]
475 },
477 },
476 b'known': {
478 b'known': {
477 b'args': {
479 b'args': {
478 b'nodes': {
480 b'nodes': {
479 b'default': [],
481 b'default': [],
480 b'required': False,
482 b'required': False,
481 b'type': b'list'
483 b'type': b'list'
482 }
484 }
483 },
485 },
484 b'permissions': [
486 b'permissions': [
485 b'pull'
487 b'pull'
486 ]
488 ]
487 },
489 },
488 b'listkeys': {
490 b'listkeys': {
489 b'args': {
491 b'args': {
490 b'namespace': {
492 b'namespace': {
491 b'required': True,
493 b'required': True,
492 b'type': b'bytes'
494 b'type': b'bytes'
493 }
495 }
494 },
496 },
495 b'permissions': [
497 b'permissions': [
496 b'pull'
498 b'pull'
497 ]
499 ]
498 },
500 },
499 b'lookup': {
501 b'lookup': {
500 b'args': {
502 b'args': {
501 b'key': {
503 b'key': {
502 b'required': True,
504 b'required': True,
503 b'type': b'bytes'
505 b'type': b'bytes'
504 }
506 }
505 },
507 },
506 b'permissions': [
508 b'permissions': [
507 b'pull'
509 b'pull'
508 ]
510 ]
509 },
511 },
510 b'manifestdata': {
512 b'manifestdata': {
511 b'args': {
513 b'args': {
512 b'fields': {
514 b'fields': {
513 b'default': set([]),
515 b'default': set([]),
514 b'required': False,
516 b'required': False,
515 b'type': b'set',
517 b'type': b'set',
516 b'validvalues': set([
518 b'validvalues': set([
517 b'parents',
519 b'parents',
518 b'revision'
520 b'revision'
519 ])
521 ])
520 },
522 },
521 b'haveparents': {
523 b'haveparents': {
522 b'default': False,
524 b'default': False,
523 b'required': False,
525 b'required': False,
524 b'type': b'bool'
526 b'type': b'bool'
525 },
527 },
526 b'nodes': {
528 b'nodes': {
527 b'required': True,
529 b'required': True,
528 b'type': b'list'
530 b'type': b'list'
529 },
531 },
530 b'tree': {
532 b'tree': {
531 b'required': True,
533 b'required': True,
532 b'type': b'bytes'
534 b'type': b'bytes'
533 }
535 }
534 },
536 },
535 b'permissions': [
537 b'permissions': [
536 b'pull'
538 b'pull'
537 ]
539 ]
538 },
540 },
539 b'pushkey': {
541 b'pushkey': {
540 b'args': {
542 b'args': {
541 b'key': {
543 b'key': {
542 b'required': True,
544 b'required': True,
543 b'type': b'bytes'
545 b'type': b'bytes'
544 },
546 },
545 b'namespace': {
547 b'namespace': {
546 b'required': True,
548 b'required': True,
547 b'type': b'bytes'
549 b'type': b'bytes'
548 },
550 },
549 b'new': {
551 b'new': {
550 b'required': True,
552 b'required': True,
551 b'type': b'bytes'
553 b'type': b'bytes'
552 },
554 },
553 b'old': {
555 b'old': {
554 b'required': True,
556 b'required': True,
555 b'type': b'bytes'
557 b'type': b'bytes'
556 }
558 }
557 },
559 },
558 b'permissions': [
560 b'permissions': [
559 b'push'
561 b'push'
560 ]
562 ]
561 }
563 }
562 },
564 },
563 b'framingmediatypes': [
565 b'framingmediatypes': [
564 b'application/mercurial-exp-framing-0005'
566 b'application/mercurial-exp-framing-0005'
565 ],
567 ],
566 b'pathfilterprefixes': set([
568 b'pathfilterprefixes': set([
567 b'path:',
569 b'path:',
568 b'rootfilesin:'
570 b'rootfilesin:'
569 ]),
571 ]),
570 b'rawrepoformats': [
572 b'rawrepoformats': [
571 b'generaldelta',
573 b'generaldelta',
572 b'revlogv1'
574 b'revlogv1'
573 ],
575 ],
574 b'redirect': {
576 b'redirect': {
575 b'hashes': [
577 b'hashes': [
576 b'sha256',
578 b'sha256',
577 b'sha1'
579 b'sha1'
578 ],
580 ],
579 b'targets': [
581 b'targets': [
580 {
582 {
581 b'name': b'target-a',
583 b'name': b'target-a',
582 b'protocol': b'http',
584 b'protocol': b'http',
583 b'uris': [
585 b'uris': [
584 b'http://example.com/'
586 b'http://example.com/'
585 ]
587 ]
586 },
588 },
587 {
589 {
588 b'name': b'target-b',
590 b'name': b'target-b',
589 b'protocol': b'unknown',
591 b'protocol': b'unknown',
590 b'uris': [
592 b'uris': [
591 b'unknown://example.com/'
593 b'unknown://example.com/'
592 ]
594 ]
593 }
595 }
594 ]
596 ]
595 }
597 }
596 }
598 }
597 ]
599 ]
598 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
600 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
599
601
600 Missing SNI support filters targets that require SNI
602 Missing SNI support filters targets that require SNI
601
603
602 $ cat > nosni.py << EOF
604 $ cat > nosni.py << EOF
603 > from mercurial import sslutil
605 > from mercurial import sslutil
604 > sslutil.hassni = False
606 > sslutil.hassni = False
605 > EOF
607 > EOF
606 $ cat >> $HGRCPATH << EOF
608 $ cat >> $HGRCPATH << EOF
607 > [extensions]
609 > [extensions]
608 > nosni=`pwd`/nosni.py
610 > nosni=`pwd`/nosni.py
609 > EOF
611 > EOF
610
612
611 $ cat > redirects.py << EOF
613 $ cat > redirects.py << EOF
612 > [
614 > [
613 > {
615 > {
614 > b'name': b'target-bad-tls',
616 > b'name': b'target-bad-tls',
615 > b'protocol': b'https',
617 > b'protocol': b'https',
616 > b'uris': [b'https://example.com/'],
618 > b'uris': [b'https://example.com/'],
617 > b'snirequired': True,
619 > b'snirequired': True,
618 > },
620 > },
619 > ]
621 > ]
620 > EOF
622 > EOF
621
623
622 $ sendhttpv2peerhandshake << EOF
624 $ sendhttpv2peerhandshake << EOF
623 > command capabilities
625 > command capabilities
624 > EOF
626 > EOF
625 creating http peer for wire protocol version 2
627 creating http peer for wire protocol version 2
626 s> GET /?cmd=capabilities HTTP/1.1\r\n
628 s> GET /?cmd=capabilities HTTP/1.1\r\n
627 s> Accept-Encoding: identity\r\n
629 s> Accept-Encoding: identity\r\n
628 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
630 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
629 s> x-hgproto-1: cbor\r\n
631 s> x-hgproto-1: cbor\r\n
630 s> x-hgupgrade-1: exp-http-v2-0002\r\n
632 s> x-hgupgrade-1: exp-http-v2-0002\r\n
631 s> accept: application/mercurial-0.1\r\n
633 s> accept: application/mercurial-0.1\r\n
632 s> host: $LOCALIP:$HGPORT\r\n (glob)
634 s> host: $LOCALIP:$HGPORT\r\n (glob)
633 s> user-agent: Mercurial debugwireproto\r\n
635 s> user-agent: Mercurial debugwireproto\r\n
634 s> \r\n
636 s> \r\n
635 s> makefile('rb', None)
637 s> makefile('rb', None)
636 s> HTTP/1.1 200 OK\r\n
638 s> HTTP/1.1 200 OK\r\n
637 s> Server: testing stub value\r\n
639 s> Server: testing stub value\r\n
638 s> Date: $HTTP_DATE$\r\n
640 s> Date: $HTTP_DATE$\r\n
639 s> Content-Type: application/mercurial-cbor\r\n
641 s> Content-Type: application/mercurial-cbor\r\n
640 s> Content-Length: 1922\r\n
642 s> Content-Length: 1917\r\n
641 s> \r\n
643 s> \r\n
642 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd8batch branchmap $USUAL_BUNDLE2_CAPS$ 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
644 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ 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
643 (redirect target target-bad-tls requires SNI, which is unsupported)
645 (redirect target target-bad-tls requires SNI, which is unsupported)
644 sending capabilities command
646 sending capabilities command
645 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
647 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
646 s> Accept-Encoding: identity\r\n
648 s> Accept-Encoding: identity\r\n
647 s> accept: application/mercurial-exp-framing-0005\r\n
649 s> accept: application/mercurial-exp-framing-0005\r\n
648 s> content-type: application/mercurial-exp-framing-0005\r\n
650 s> content-type: application/mercurial-exp-framing-0005\r\n
649 s> content-length: 66\r\n
651 s> content-length: 66\r\n
650 s> host: $LOCALIP:$HGPORT\r\n (glob)
652 s> host: $LOCALIP:$HGPORT\r\n (glob)
651 s> user-agent: Mercurial debugwireproto\r\n
653 s> user-agent: Mercurial debugwireproto\r\n
652 s> \r\n
654 s> \r\n
653 s> :\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x80
655 s> :\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x80
654 s> makefile('rb', None)
656 s> makefile('rb', None)
655 s> HTTP/1.1 200 OK\r\n
657 s> HTTP/1.1 200 OK\r\n
656 s> Server: testing stub value\r\n
658 s> Server: testing stub value\r\n
657 s> Date: $HTTP_DATE$\r\n
659 s> Date: $HTTP_DATE$\r\n
658 s> Content-Type: application/mercurial-exp-framing-0005\r\n
660 s> Content-Type: application/mercurial-exp-framing-0005\r\n
659 s> Transfer-Encoding: chunked\r\n
661 s> Transfer-Encoding: chunked\r\n
660 s> \r\n
662 s> \r\n
661 s> 13\r\n
663 s> 13\r\n
662 s> \x0b\x00\x00\x01\x00\x02\x011
664 s> \x0b\x00\x00\x01\x00\x02\x011
663 s> \xa1FstatusBok
665 s> \xa1FstatusBok
664 s> \r\n
666 s> \r\n
665 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
667 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
666 s> 57b\r\n
668 s> 57b\r\n
667 s> s\x05\x00\x01\x00\x02\x001
669 s> s\x05\x00\x01\x00\x02\x001
668 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/
670 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/
669 s> \r\n
671 s> \r\n
670 received frame(size=1395; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
672 received frame(size=1395; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
671 s> 8\r\n
673 s> 8\r\n
672 s> \x00\x00\x00\x01\x00\x02\x002
674 s> \x00\x00\x00\x01\x00\x02\x002
673 s> \r\n
675 s> \r\n
674 s> 0\r\n
676 s> 0\r\n
675 s> \r\n
677 s> \r\n
676 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
678 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
677 response: gen[
679 response: gen[
678 {
680 {
679 b'commands': {
681 b'commands': {
680 b'branchmap': {
682 b'branchmap': {
681 b'args': {},
683 b'args': {},
682 b'permissions': [
684 b'permissions': [
683 b'pull'
685 b'pull'
684 ]
686 ]
685 },
687 },
686 b'capabilities': {
688 b'capabilities': {
687 b'args': {},
689 b'args': {},
688 b'permissions': [
690 b'permissions': [
689 b'pull'
691 b'pull'
690 ]
692 ]
691 },
693 },
692 b'changesetdata': {
694 b'changesetdata': {
693 b'args': {
695 b'args': {
694 b'fields': {
696 b'fields': {
695 b'default': set([]),
697 b'default': set([]),
696 b'required': False,
698 b'required': False,
697 b'type': b'set',
699 b'type': b'set',
698 b'validvalues': set([
700 b'validvalues': set([
699 b'bookmarks',
701 b'bookmarks',
700 b'parents',
702 b'parents',
701 b'phase',
703 b'phase',
702 b'revision'
704 b'revision'
703 ])
705 ])
704 },
706 },
705 b'noderange': {
707 b'noderange': {
706 b'default': None,
708 b'default': None,
707 b'required': False,
709 b'required': False,
708 b'type': b'list'
710 b'type': b'list'
709 },
711 },
710 b'nodes': {
712 b'nodes': {
711 b'default': None,
713 b'default': None,
712 b'required': False,
714 b'required': False,
713 b'type': b'list'
715 b'type': b'list'
714 },
716 },
715 b'nodesdepth': {
717 b'nodesdepth': {
716 b'default': None,
718 b'default': None,
717 b'required': False,
719 b'required': False,
718 b'type': b'int'
720 b'type': b'int'
719 }
721 }
720 },
722 },
721 b'permissions': [
723 b'permissions': [
722 b'pull'
724 b'pull'
723 ]
725 ]
724 },
726 },
725 b'filedata': {
727 b'filedata': {
726 b'args': {
728 b'args': {
727 b'fields': {
729 b'fields': {
728 b'default': set([]),
730 b'default': set([]),
729 b'required': False,
731 b'required': False,
730 b'type': b'set',
732 b'type': b'set',
731 b'validvalues': set([
733 b'validvalues': set([
732 b'parents',
734 b'parents',
733 b'revision'
735 b'revision'
734 ])
736 ])
735 },
737 },
736 b'haveparents': {
738 b'haveparents': {
737 b'default': False,
739 b'default': False,
738 b'required': False,
740 b'required': False,
739 b'type': b'bool'
741 b'type': b'bool'
740 },
742 },
741 b'nodes': {
743 b'nodes': {
742 b'required': True,
744 b'required': True,
743 b'type': b'list'
745 b'type': b'list'
744 },
746 },
745 b'path': {
747 b'path': {
746 b'required': True,
748 b'required': True,
747 b'type': b'bytes'
749 b'type': b'bytes'
748 }
750 }
749 },
751 },
750 b'permissions': [
752 b'permissions': [
751 b'pull'
753 b'pull'
752 ]
754 ]
753 },
755 },
754 b'heads': {
756 b'heads': {
755 b'args': {
757 b'args': {
756 b'publiconly': {
758 b'publiconly': {
757 b'default': False,
759 b'default': False,
758 b'required': False,
760 b'required': False,
759 b'type': b'bool'
761 b'type': b'bool'
760 }
762 }
761 },
763 },
762 b'permissions': [
764 b'permissions': [
763 b'pull'
765 b'pull'
764 ]
766 ]
765 },
767 },
766 b'known': {
768 b'known': {
767 b'args': {
769 b'args': {
768 b'nodes': {
770 b'nodes': {
769 b'default': [],
771 b'default': [],
770 b'required': False,
772 b'required': False,
771 b'type': b'list'
773 b'type': b'list'
772 }
774 }
773 },
775 },
774 b'permissions': [
776 b'permissions': [
775 b'pull'
777 b'pull'
776 ]
778 ]
777 },
779 },
778 b'listkeys': {
780 b'listkeys': {
779 b'args': {
781 b'args': {
780 b'namespace': {
782 b'namespace': {
781 b'required': True,
783 b'required': True,
782 b'type': b'bytes'
784 b'type': b'bytes'
783 }
785 }
784 },
786 },
785 b'permissions': [
787 b'permissions': [
786 b'pull'
788 b'pull'
787 ]
789 ]
788 },
790 },
789 b'lookup': {
791 b'lookup': {
790 b'args': {
792 b'args': {
791 b'key': {
793 b'key': {
792 b'required': True,
794 b'required': True,
793 b'type': b'bytes'
795 b'type': b'bytes'
794 }
796 }
795 },
797 },
796 b'permissions': [
798 b'permissions': [
797 b'pull'
799 b'pull'
798 ]
800 ]
799 },
801 },
800 b'manifestdata': {
802 b'manifestdata': {
801 b'args': {
803 b'args': {
802 b'fields': {
804 b'fields': {
803 b'default': set([]),
805 b'default': set([]),
804 b'required': False,
806 b'required': False,
805 b'type': b'set',
807 b'type': b'set',
806 b'validvalues': set([
808 b'validvalues': set([
807 b'parents',
809 b'parents',
808 b'revision'
810 b'revision'
809 ])
811 ])
810 },
812 },
811 b'haveparents': {
813 b'haveparents': {
812 b'default': False,
814 b'default': False,
813 b'required': False,
815 b'required': False,
814 b'type': b'bool'
816 b'type': b'bool'
815 },
817 },
816 b'nodes': {
818 b'nodes': {
817 b'required': True,
819 b'required': True,
818 b'type': b'list'
820 b'type': b'list'
819 },
821 },
820 b'tree': {
822 b'tree': {
821 b'required': True,
823 b'required': True,
822 b'type': b'bytes'
824 b'type': b'bytes'
823 }
825 }
824 },
826 },
825 b'permissions': [
827 b'permissions': [
826 b'pull'
828 b'pull'
827 ]
829 ]
828 },
830 },
829 b'pushkey': {
831 b'pushkey': {
830 b'args': {
832 b'args': {
831 b'key': {
833 b'key': {
832 b'required': True,
834 b'required': True,
833 b'type': b'bytes'
835 b'type': b'bytes'
834 },
836 },
835 b'namespace': {
837 b'namespace': {
836 b'required': True,
838 b'required': True,
837 b'type': b'bytes'
839 b'type': b'bytes'
838 },
840 },
839 b'new': {
841 b'new': {
840 b'required': True,
842 b'required': True,
841 b'type': b'bytes'
843 b'type': b'bytes'
842 },
844 },
843 b'old': {
845 b'old': {
844 b'required': True,
846 b'required': True,
845 b'type': b'bytes'
847 b'type': b'bytes'
846 }
848 }
847 },
849 },
848 b'permissions': [
850 b'permissions': [
849 b'push'
851 b'push'
850 ]
852 ]
851 }
853 }
852 },
854 },
853 b'framingmediatypes': [
855 b'framingmediatypes': [
854 b'application/mercurial-exp-framing-0005'
856 b'application/mercurial-exp-framing-0005'
855 ],
857 ],
856 b'pathfilterprefixes': set([
858 b'pathfilterprefixes': set([
857 b'path:',
859 b'path:',
858 b'rootfilesin:'
860 b'rootfilesin:'
859 ]),
861 ]),
860 b'rawrepoformats': [
862 b'rawrepoformats': [
861 b'generaldelta',
863 b'generaldelta',
862 b'revlogv1'
864 b'revlogv1'
863 ],
865 ],
864 b'redirect': {
866 b'redirect': {
865 b'hashes': [
867 b'hashes': [
866 b'sha256',
868 b'sha256',
867 b'sha1'
869 b'sha1'
868 ],
870 ],
869 b'targets': [
871 b'targets': [
870 {
872 {
871 b'name': b'target-bad-tls',
873 b'name': b'target-bad-tls',
872 b'protocol': b'https',
874 b'protocol': b'https',
873 b'snirequired': True,
875 b'snirequired': True,
874 b'uris': [
876 b'uris': [
875 b'https://example.com/'
877 b'https://example.com/'
876 ]
878 ]
877 }
879 }
878 ]
880 ]
879 }
881 }
880 }
882 }
881 ]
883 ]
882 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
884 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
883
885
884 $ cat >> $HGRCPATH << EOF
886 $ cat >> $HGRCPATH << EOF
885 > [extensions]
887 > [extensions]
886 > nosni=!
888 > nosni=!
887 > EOF
889 > EOF
888
890
889 Unknown tls value is filtered from compatible targets
891 Unknown tls value is filtered from compatible targets
890
892
891 $ cat > redirects.py << EOF
893 $ cat > redirects.py << EOF
892 > [
894 > [
893 > {
895 > {
894 > b'name': b'target-bad-tls',
896 > b'name': b'target-bad-tls',
895 > b'protocol': b'https',
897 > b'protocol': b'https',
896 > b'uris': [b'https://example.com/'],
898 > b'uris': [b'https://example.com/'],
897 > b'tlsversions': [b'42', b'39'],
899 > b'tlsversions': [b'42', b'39'],
898 > },
900 > },
899 > ]
901 > ]
900 > EOF
902 > EOF
901
903
902 $ sendhttpv2peerhandshake << EOF
904 $ sendhttpv2peerhandshake << EOF
903 > command capabilities
905 > command capabilities
904 > EOF
906 > EOF
905 creating http peer for wire protocol version 2
907 creating http peer for wire protocol version 2
906 s> GET /?cmd=capabilities HTTP/1.1\r\n
908 s> GET /?cmd=capabilities HTTP/1.1\r\n
907 s> Accept-Encoding: identity\r\n
909 s> Accept-Encoding: identity\r\n
908 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
910 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n
909 s> x-hgproto-1: cbor\r\n
911 s> x-hgproto-1: cbor\r\n
910 s> x-hgupgrade-1: exp-http-v2-0002\r\n
912 s> x-hgupgrade-1: exp-http-v2-0002\r\n
911 s> accept: application/mercurial-0.1\r\n
913 s> accept: application/mercurial-0.1\r\n
912 s> host: $LOCALIP:$HGPORT\r\n (glob)
914 s> host: $LOCALIP:$HGPORT\r\n (glob)
913 s> user-agent: Mercurial debugwireproto\r\n
915 s> user-agent: Mercurial debugwireproto\r\n
914 s> \r\n
916 s> \r\n
915 s> makefile('rb', None)
917 s> makefile('rb', None)
916 s> HTTP/1.1 200 OK\r\n
918 s> HTTP/1.1 200 OK\r\n
917 s> Server: testing stub value\r\n
919 s> Server: testing stub value\r\n
918 s> Date: $HTTP_DATE$\r\n
920 s> Date: $HTTP_DATE$\r\n
919 s> Content-Type: application/mercurial-cbor\r\n
921 s> Content-Type: application/mercurial-cbor\r\n
920 s> Content-Length: 1928\r\n
922 s> Content-Length: 1923\r\n
921 s> \r\n
923 s> \r\n
922 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd8batch branchmap $USUAL_BUNDLE2_CAPS$ 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
924 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ 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
923 (remote redirect target target-bad-tls requires unsupported TLS versions: 39, 42)
925 (remote redirect target target-bad-tls requires unsupported TLS versions: 39, 42)
924 sending capabilities command
926 sending capabilities command
925 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
927 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n
926 s> Accept-Encoding: identity\r\n
928 s> Accept-Encoding: identity\r\n
927 s> accept: application/mercurial-exp-framing-0005\r\n
929 s> accept: application/mercurial-exp-framing-0005\r\n
928 s> content-type: application/mercurial-exp-framing-0005\r\n
930 s> content-type: application/mercurial-exp-framing-0005\r\n
929 s> content-length: 66\r\n
931 s> content-length: 66\r\n
930 s> host: $LOCALIP:$HGPORT\r\n (glob)
932 s> host: $LOCALIP:$HGPORT\r\n (glob)
931 s> user-agent: Mercurial debugwireproto\r\n
933 s> user-agent: Mercurial debugwireproto\r\n
932 s> \r\n
934 s> \r\n
933 s> :\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x80
935 s> :\x00\x00\x01\x00\x01\x01\x11\xa2DnameLcapabilitiesHredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x80
934 s> makefile('rb', None)
936 s> makefile('rb', None)
935 s> HTTP/1.1 200 OK\r\n
937 s> HTTP/1.1 200 OK\r\n
936 s> Server: testing stub value\r\n
938 s> Server: testing stub value\r\n
937 s> Date: $HTTP_DATE$\r\n
939 s> Date: $HTTP_DATE$\r\n
938 s> Content-Type: application/mercurial-exp-framing-0005\r\n
940 s> Content-Type: application/mercurial-exp-framing-0005\r\n
939 s> Transfer-Encoding: chunked\r\n
941 s> Transfer-Encoding: chunked\r\n
940 s> \r\n
942 s> \r\n
941 s> 13\r\n
943 s> 13\r\n
942 s> \x0b\x00\x00\x01\x00\x02\x011
944 s> \x0b\x00\x00\x01\x00\x02\x011
943 s> \xa1FstatusBok
945 s> \xa1FstatusBok
944 s> \r\n
946 s> \r\n
945 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
947 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation)
946 s> 581\r\n
948 s> 581\r\n
947 s> y\x05\x00\x01\x00\x02\x001
949 s> y\x05\x00\x01\x00\x02\x001
948 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/
950 s> \xa5Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/
949 s> \r\n
951 s> \r\n
950 received frame(size=1401; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
952 received frame(size=1401; request=1; stream=2; streamflags=; type=command-response; flags=continuation)
951 s> 8\r\n
953 s> 8\r\n
952 s> \x00\x00\x00\x01\x00\x02\x002
954 s> \x00\x00\x00\x01\x00\x02\x002
953 s> \r\n
955 s> \r\n
954 s> 0\r\n
956 s> 0\r\n
955 s> \r\n
957 s> \r\n
956 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
958 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
957 response: gen[
959 response: gen[
958 {
960 {
959 b'commands': {
961 b'commands': {
960 b'branchmap': {
962 b'branchmap': {
961 b'args': {},
963 b'args': {},
962 b'permissions': [
964 b'permissions': [
963 b'pull'
965 b'pull'
964 ]
966 ]
965 },
967 },
966 b'capabilities': {
968 b'capabilities': {
967 b'args': {},
969 b'args': {},
968 b'permissions': [
970 b'permissions': [
969 b'pull'
971 b'pull'
970 ]
972 ]
971 },
973 },
972 b'changesetdata': {
974 b'changesetdata': {
973 b'args': {
975 b'args': {
974 b'fields': {
976 b'fields': {
975 b'default': set([]),
977 b'default': set([]),
976 b'required': False,
978 b'required': False,
977 b'type': b'set',
979 b'type': b'set',
978 b'validvalues': set([
980 b'validvalues': set([
979 b'bookmarks',
981 b'bookmarks',
980 b'parents',
982 b'parents',
981 b'phase',
983 b'phase',
982 b'revision'
984 b'revision'
983 ])
985 ])
984 },
986 },
985 b'noderange': {
987 b'noderange': {
986 b'default': None,
988 b'default': None,
987 b'required': False,
989 b'required': False,
988 b'type': b'list'
990 b'type': b'list'
989 },
991 },
990 b'nodes': {
992 b'nodes': {
991 b'default': None,
993 b'default': None,
992 b'required': False,
994 b'required': False,
993 b'type': b'list'
995 b'type': b'list'
994 },
996 },
995 b'nodesdepth': {
997 b'nodesdepth': {
996 b'default': None,
998 b'default': None,
997 b'required': False,
999 b'required': False,
998 b'type': b'int'
1000 b'type': b'int'
999 }
1001 }
1000 },
1002 },
1001 b'permissions': [
1003 b'permissions': [
1002 b'pull'
1004 b'pull'
1003 ]
1005 ]
1004 },
1006 },
1005 b'filedata': {
1007 b'filedata': {
1006 b'args': {
1008 b'args': {
1007 b'fields': {
1009 b'fields': {
1008 b'default': set([]),
1010 b'default': set([]),
1009 b'required': False,
1011 b'required': False,
1010 b'type': b'set',
1012 b'type': b'set',
1011 b'validvalues': set([
1013 b'validvalues': set([
1012 b'parents',
1014 b'parents',
1013 b'revision'
1015 b'revision'
1014 ])
1016 ])
1015 },
1017 },
1016 b'haveparents': {
1018 b'haveparents': {
1017 b'default': False,
1019 b'default': False,
1018 b'required': False,
1020 b'required': False,
1019 b'type': b'bool'
1021 b'type': b'bool'
1020 },
1022 },
1021 b'nodes': {
1023 b'nodes': {
1022 b'required': True,
1024 b'required': True,
1023 b'type': b'list'
1025 b'type': b'list'
1024 },
1026 },
1025 b'path': {
1027 b'path': {
1026 b'required': True,
1028 b'required': True,
1027 b'type': b'bytes'
1029 b'type': b'bytes'
1028 }
1030 }
1029 },
1031 },
1030 b'permissions': [
1032 b'permissions': [
1031 b'pull'
1033 b'pull'
1032 ]
1034 ]
1033 },
1035 },
1034 b'heads': {
1036 b'heads': {
1035 b'args': {
1037 b'args': {
1036 b'publiconly': {
1038 b'publiconly': {
1037 b'default': False,
1039 b'default': False,
1038 b'required': False,
1040 b'required': False,
1039 b'type': b'bool'
1041 b'type': b'bool'
1040 }
1042 }
1041 },
1043 },
1042 b'permissions': [
1044 b'permissions': [
1043 b'pull'
1045 b'pull'
1044 ]
1046 ]
1045 },
1047 },
1046 b'known': {
1048 b'known': {
1047 b'args': {
1049 b'args': {
1048 b'nodes': {
1050 b'nodes': {
1049 b'default': [],
1051 b'default': [],
1050 b'required': False,
1052 b'required': False,
1051 b'type': b'list'
1053 b'type': b'list'
1052 }
1054 }
1053 },
1055 },
1054 b'permissions': [
1056 b'permissions': [
1055 b'pull'
1057 b'pull'
1056 ]
1058 ]
1057 },
1059 },
1058 b'listkeys': {
1060 b'listkeys': {
1059 b'args': {
1061 b'args': {
1060 b'namespace': {
1062 b'namespace': {
1061 b'required': True,
1063 b'required': True,
1062 b'type': b'bytes'
1064 b'type': b'bytes'
1063 }
1065 }
1064 },
1066 },
1065 b'permissions': [
1067 b'permissions': [
1066 b'pull'
1068 b'pull'
1067 ]
1069 ]
1068 },
1070 },
1069 b'lookup': {
1071 b'lookup': {
1070 b'args': {
1072 b'args': {
1071 b'key': {
1073 b'key': {
1072 b'required': True,
1074 b'required': True,
1073 b'type': b'bytes'
1075 b'type': b'bytes'
1074 }
1076 }
1075 },
1077 },
1076 b'permissions': [
1078 b'permissions': [
1077 b'pull'
1079 b'pull'
1078 ]
1080 ]
1079 },
1081 },
1080 b'manifestdata': {
1082 b'manifestdata': {
1081 b'args': {
1083 b'args': {
1082 b'fields': {
1084 b'fields': {
1083 b'default': set([]),
1085 b'default': set([]),
1084 b'required': False,
1086 b'required': False,
1085 b'type': b'set',
1087 b'type': b'set',
1086 b'validvalues': set([
1088 b'validvalues': set([
1087 b'parents',
1089 b'parents',
1088 b'revision'
1090 b'revision'
1089 ])
1091 ])
1090 },
1092 },
1091 b'haveparents': {
1093 b'haveparents': {
1092 b'default': False,
1094 b'default': False,
1093 b'required': False,
1095 b'required': False,
1094 b'type': b'bool'
1096 b'type': b'bool'
1095 },
1097 },
1096 b'nodes': {
1098 b'nodes': {
1097 b'required': True,
1099 b'required': True,
1098 b'type': b'list'
1100 b'type': b'list'
1099 },
1101 },
1100 b'tree': {
1102 b'tree': {
1101 b'required': True,
1103 b'required': True,
1102 b'type': b'bytes'
1104 b'type': b'bytes'
1103 }
1105 }
1104 },
1106 },
1105 b'permissions': [
1107 b'permissions': [
1106 b'pull'
1108 b'pull'
1107 ]
1109 ]
1108 },
1110 },
1109 b'pushkey': {
1111 b'pushkey': {
1110 b'args': {
1112 b'args': {
1111 b'key': {
1113 b'key': {
1112 b'required': True,
1114 b'required': True,
1113 b'type': b'bytes'
1115 b'type': b'bytes'
1114 },
1116 },
1115 b'namespace': {
1117 b'namespace': {
1116 b'required': True,
1118 b'required': True,
1117 b'type': b'bytes'
1119 b'type': b'bytes'
1118 },
1120 },
1119 b'new': {
1121 b'new': {
1120 b'required': True,
1122 b'required': True,
1121 b'type': b'bytes'
1123 b'type': b'bytes'
1122 },
1124 },
1123 b'old': {
1125 b'old': {
1124 b'required': True,
1126 b'required': True,
1125 b'type': b'bytes'
1127 b'type': b'bytes'
1126 }
1128 }
1127 },
1129 },
1128 b'permissions': [
1130 b'permissions': [
1129 b'push'
1131 b'push'
1130 ]
1132 ]
1131 }
1133 }
1132 },
1134 },
1133 b'framingmediatypes': [
1135 b'framingmediatypes': [
1134 b'application/mercurial-exp-framing-0005'
1136 b'application/mercurial-exp-framing-0005'
1135 ],
1137 ],
1136 b'pathfilterprefixes': set([
1138 b'pathfilterprefixes': set([
1137 b'path:',
1139 b'path:',
1138 b'rootfilesin:'
1140 b'rootfilesin:'
1139 ]),
1141 ]),
1140 b'rawrepoformats': [
1142 b'rawrepoformats': [
1141 b'generaldelta',
1143 b'generaldelta',
1142 b'revlogv1'
1144 b'revlogv1'
1143 ],
1145 ],
1144 b'redirect': {
1146 b'redirect': {
1145 b'hashes': [
1147 b'hashes': [
1146 b'sha256',
1148 b'sha256',
1147 b'sha1'
1149 b'sha1'
1148 ],
1150 ],
1149 b'targets': [
1151 b'targets': [
1150 {
1152 {
1151 b'name': b'target-bad-tls',
1153 b'name': b'target-bad-tls',
1152 b'protocol': b'https',
1154 b'protocol': b'https',
1153 b'tlsversions': [
1155 b'tlsversions': [
1154 b'42',
1156 b'42',
1155 b'39'
1157 b'39'
1156 ],
1158 ],
1157 b'uris': [
1159 b'uris': [
1158 b'https://example.com/'
1160 b'https://example.com/'
1159 ]
1161 ]
1160 }
1162 }
1161 ]
1163 ]
1162 }
1164 }
1163 }
1165 }
1164 ]
1166 ]
1165 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
1167 (sent 2 HTTP requests and * bytes; received * bytes in responses) (glob)
1166
1168
1167 Set up the server to issue content redirects to its built-in API server.
1169 Set up the server to issue content redirects to its built-in API server.
1168
1170
1169 $ cat > redirects.py << EOF
1171 $ cat > redirects.py << EOF
1170 > [
1172 > [
1171 > {
1173 > {
1172 > b'name': b'local',
1174 > b'name': b'local',
1173 > b'protocol': b'http',
1175 > b'protocol': b'http',
1174 > b'uris': [b'http://example.com/'],
1176 > b'uris': [b'http://example.com/'],
1175 > },
1177 > },
1176 > ]
1178 > ]
1177 > EOF
1179 > EOF
1178
1180
1179 Request to eventual cache URL should return 404 (validating the cache server works)
1181 Request to eventual cache URL should return 404 (validating the cache server works)
1180
1182
1181 $ sendhttpraw << EOF
1183 $ sendhttpraw << EOF
1182 > httprequest GET api/simplecache/missingkey
1184 > httprequest GET api/simplecache/missingkey
1183 > user-agent: test
1185 > user-agent: test
1184 > EOF
1186 > EOF
1185 using raw connection to peer
1187 using raw connection to peer
1186 s> GET /api/simplecache/missingkey HTTP/1.1\r\n
1188 s> GET /api/simplecache/missingkey HTTP/1.1\r\n
1187 s> Accept-Encoding: identity\r\n
1189 s> Accept-Encoding: identity\r\n
1188 s> user-agent: test\r\n
1190 s> user-agent: test\r\n
1189 s> host: $LOCALIP:$HGPORT\r\n (glob)
1191 s> host: $LOCALIP:$HGPORT\r\n (glob)
1190 s> \r\n
1192 s> \r\n
1191 s> makefile('rb', None)
1193 s> makefile('rb', None)
1192 s> HTTP/1.1 404 Not Found\r\n
1194 s> HTTP/1.1 404 Not Found\r\n
1193 s> Server: testing stub value\r\n
1195 s> Server: testing stub value\r\n
1194 s> Date: $HTTP_DATE$\r\n
1196 s> Date: $HTTP_DATE$\r\n
1195 s> Content-Type: text/plain\r\n
1197 s> Content-Type: text/plain\r\n
1196 s> Content-Length: 22\r\n
1198 s> Content-Length: 22\r\n
1197 s> \r\n
1199 s> \r\n
1198 s> key not found in cache
1200 s> key not found in cache
1199
1201
1200 Send a cacheable request
1202 Send a cacheable request
1201
1203
1202 $ sendhttpv2peer << EOF
1204 $ sendhttpv2peer << EOF
1203 > command manifestdata
1205 > command manifestdata
1204 > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
1206 > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
1205 > tree eval:b''
1207 > tree eval:b''
1206 > fields eval:[b'parents']
1208 > fields eval:[b'parents']
1207 > EOF
1209 > EOF
1208 creating http peer for wire protocol version 2
1210 creating http peer for wire protocol version 2
1209 sending manifestdata command
1211 sending manifestdata command
1210 response: gen[
1212 response: gen[
1211 {
1213 {
1212 b'totalitems': 1
1214 b'totalitems': 1
1213 },
1215 },
1214 {
1216 {
1215 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1217 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1216 b'parents': [
1218 b'parents': [
1217 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1219 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1218 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1220 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1219 ]
1221 ]
1220 }
1222 }
1221 ]
1223 ]
1222
1224
1223 Cached entry should be available on server
1225 Cached entry should be available on server
1224
1226
1225 $ sendhttpraw << EOF
1227 $ sendhttpraw << EOF
1226 > httprequest GET api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0
1228 > httprequest GET api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0
1227 > user-agent: test
1229 > user-agent: test
1228 > EOF
1230 > EOF
1229 using raw connection to peer
1231 using raw connection to peer
1230 s> GET /api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0 HTTP/1.1\r\n
1232 s> GET /api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0 HTTP/1.1\r\n
1231 s> Accept-Encoding: identity\r\n
1233 s> Accept-Encoding: identity\r\n
1232 s> user-agent: test\r\n
1234 s> user-agent: test\r\n
1233 s> host: $LOCALIP:$HGPORT\r\n (glob)
1235 s> host: $LOCALIP:$HGPORT\r\n (glob)
1234 s> \r\n
1236 s> \r\n
1235 s> makefile('rb', None)
1237 s> makefile('rb', None)
1236 s> HTTP/1.1 200 OK\r\n
1238 s> HTTP/1.1 200 OK\r\n
1237 s> Server: testing stub value\r\n
1239 s> Server: testing stub value\r\n
1238 s> Date: $HTTP_DATE$\r\n
1240 s> Date: $HTTP_DATE$\r\n
1239 s> Content-Type: application/mercurial-cbor\r\n
1241 s> Content-Type: application/mercurial-cbor\r\n
1240 s> Content-Length: 91\r\n
1242 s> Content-Length: 91\r\n
1241 s> \r\n
1243 s> \r\n
1242 s> \xa1Jtotalitems\x01\xa2DnodeT\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&AGparents\x82T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
1244 s> \xa1Jtotalitems\x01\xa2DnodeT\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&AGparents\x82T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
1243 cbor> [
1245 cbor> [
1244 {
1246 {
1245 b'totalitems': 1
1247 b'totalitems': 1
1246 },
1248 },
1247 {
1249 {
1248 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1250 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1249 b'parents': [
1251 b'parents': [
1250 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1252 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1251 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1253 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1252 ]
1254 ]
1253 }
1255 }
1254 ]
1256 ]
1255
1257
1256 2nd request should result in content redirect response
1258 2nd request should result in content redirect response
1257
1259
1258 $ sendhttpv2peer << EOF
1260 $ sendhttpv2peer << EOF
1259 > command manifestdata
1261 > command manifestdata
1260 > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
1262 > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
1261 > tree eval:b''
1263 > tree eval:b''
1262 > fields eval:[b'parents']
1264 > fields eval:[b'parents']
1263 > EOF
1265 > EOF
1264 creating http peer for wire protocol version 2
1266 creating http peer for wire protocol version 2
1265 sending manifestdata command
1267 sending manifestdata command
1266 response: gen[
1268 response: gen[
1267 {
1269 {
1268 b'totalitems': 1
1270 b'totalitems': 1
1269 },
1271 },
1270 {
1272 {
1271 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1273 b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
1272 b'parents': [
1274 b'parents': [
1273 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1275 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
1274 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1276 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
1275 ]
1277 ]
1276 }
1278 }
1277 ]
1279 ]
1278
1280
1279 $ cat error.log
1281 $ cat error.log
1280 $ killdaemons.py
1282 $ killdaemons.py
1281
1283
1282 $ cat .hg/blackbox.log
1284 $ cat .hg/blackbox.log
1283 *> cacher constructed for manifestdata (glob)
1285 *> cacher constructed for manifestdata (glob)
1284 *> cache miss for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1286 *> cache miss for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1285 *> storing cache entry for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1287 *> storing cache entry for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1286 *> cacher constructed for manifestdata (glob)
1288 *> cacher constructed for manifestdata (glob)
1287 *> cache hit for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1289 *> cache hit for c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1288 *> sending content redirect for c045a581599d58608efd3d93d8129841f2af04a0 to http://*:$HGPORT/api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0 (glob)
1290 *> sending content redirect for c045a581599d58608efd3d93d8129841f2af04a0 to http://*:$HGPORT/api/simplecache/c045a581599d58608efd3d93d8129841f2af04a0 (glob)
General Comments 0
You need to be logged in to leave comments. Login now