76
76
def vary_by_http_client_implementation():
77
77
"""Test the libraries we can use, currently just urllib."""
78
78
transport_scenarios = [
79
('urllib', dict(_transport=HttpTransport,
80
_server=http_server.HttpServer,
81
_url_protocol='http',)),
79
('urllib', dict(_transport=_urllib.HttpTransport_urllib,
80
_server=http_server.HttpServer_urllib,
81
_url_protocol='http+urllib',)),
83
83
return transport_scenarios
124
124
def vary_by_http_activity():
125
125
activity_scenarios = [
126
126
('urllib,http', dict(_activity_server=ActivityHTTPServer,
127
_transport=HttpTransport,)),
127
_transport=_urllib.HttpTransport_urllib,)),
129
129
if features.HTTPSServerFeature.available():
130
130
# FIXME: Until we have a better way to handle self-signed certificates
137
class HTTPS_transport(HttpTransport):
137
class HTTPS_urllib_transport(_urllib.HttpTransport_urllib):
139
139
def __init__(self, base, _from_transport=None):
140
super(HTTPS_transport, self).__init__(
140
super(HTTPS_urllib_transport, self).__init__(
141
141
base, _from_transport=_from_transport,
142
142
ca_certs=ssl_certs.build_path('ca.crt'))
144
144
activity_scenarios.append(
145
145
('urllib,https', dict(_activity_server=ActivityHTTPSServer,
146
_transport=HTTPS_transport,)),)
146
_transport=HTTPS_urllib_transport,)),)
147
147
return activity_scenarios
509
509
offsets = [ (start, end - start + 1) for start, end in ranges]
510
510
coalesce = transport.Transport._coalesce_offsets
511
511
coalesced = list(coalesce(offsets, limit=0, fudge_factor=0))
512
range_header = http.HttpTransport._range_header
512
range_header = http.HttpTransportBase._range_header
513
513
self.assertEqual(value, range_header(coalesced, tail))
515
515
def test_range_header_single(self):
737
737
super(TestRangeRequestServer, self).setUp()
738
self.build_tree_contents([('a', b'0123456789')],)
738
self.build_tree_contents([('a', '0123456789')],)
740
740
def test_readv(self):
741
741
t = self.get_readonly_transport()
964
964
super(TestTruncatedMultipleRangeServer, self).setUp()
965
self.build_tree_contents([('a', b'0123456789')],)
965
self.build_tree_contents([('a', '0123456789')],)
967
967
def test_readv_with_short_reads(self):
968
968
server = self.get_readonly_server()
1037
1037
def setUp(self):
1038
1038
super(TestTruncatedBeforeBoundary, self).setUp()
1039
self.build_tree_contents([('a', b'0123456789')],)
1039
self.build_tree_contents([('a', '0123456789')],)
1041
1041
def test_readv_with_short_reads(self):
1042
1042
server = self.get_readonly_server()
1095
1095
super(TestLimitedRangeRequestServer, self).setUp()
1096
1096
# We need to manipulate ranges that correspond to real chunks in the
1097
1097
# response, so we build a content appropriately.
1098
filler = b''.join([b'abcdefghij' for x in range(102)])
1099
content = b''.join([b'%04d' % v + filler for v in range(16)])
1098
filler = ''.join(['abcdefghij' for x in range(102)])
1099
content = ''.join(['%04d' % v + filler for v in range(16)])
1100
1100
self.build_tree_contents([('a', content)],)
1102
1102
def test_few_ranges(self):
1192
1192
def setUp(self):
1193
1193
super(TestProxyHttpServer, self).setUp()
1194
1194
self.transport_secondary_server = http_utils.ProxyServer
1195
self.build_tree_contents([('foo', b'contents of foo\n'),
1196
('foo-proxied', b'proxied contents of foo\n')])
1195
self.build_tree_contents([('foo', 'contents of foo\n'),
1196
('foo-proxied', 'proxied contents of foo\n')])
1197
1197
# Let's setup some attributes for tests
1198
1198
server = self.get_readonly_server()
1199
1199
self.server_host_port = '%s:%d' % (server.host, server.port)
1261
1261
def setUp(self):
1262
1262
super(TestRanges, self).setUp()
1263
self.build_tree_contents([('a', b'0123456789')],)
1263
self.build_tree_contents([('a', '0123456789')],)
1265
1265
def create_transport_readonly_server(self):
1266
1266
return http_server.HttpServer(protocol_version=self._protocol_version)
1311
1311
def setUp(self):
1312
1312
super(TestHTTPRedirections, self).setUp()
1313
self.build_tree_contents([('a', b'0123456789'),
1313
self.build_tree_contents([('a', '0123456789'),
1315
b'# Bazaar revision bundle v0.9\n#\n')
1315
'# Bazaar revision bundle v0.9\n#\n')
1318
1318
def test_redirected(self):
1380
1380
super(TestHTTPSilentRedirections, self).setUp()
1381
1381
install_redirected_request(self)
1382
1382
cleanup_http_redirection_connections(self)
1383
self.build_tree_contents([('a', b'a'),
1383
self.build_tree_contents([('a', 'a'),
1385
('1/a', b'redirected once'),
1385
('1/a', 'redirected once'),
1387
('2/a', b'redirected twice'),
1387
('2/a', 'redirected twice'),
1389
('3/a', b'redirected thrice'),
1389
('3/a', 'redirected thrice'),
1391
('4/a', b'redirected 4 times'),
1391
('4/a', 'redirected 4 times'),
1393
('5/a', b'redirected 5 times'),
1393
('5/a', 'redirected 5 times'),
1396
1396
def test_one_redirection(self):
1430
1430
def setUp(self):
1431
1431
super(TestDoCatchRedirections, self).setUp()
1432
self.build_tree_contents([('a', b'0123456789'),],)
1432
self.build_tree_contents([('a', '0123456789'),],)
1433
1433
cleanup_http_redirection_connections(self)
1435
1435
self.old_transport = self.get_old_transport()
1512
1512
def setUp(self):
1513
1513
super(TestAuth, self).setUp()
1514
1514
self.server = self.get_readonly_server()
1515
self.build_tree_contents([('a', b'contents of a\n'),
1516
('b', b'contents of b\n'),])
1515
self.build_tree_contents([('a', 'contents of a\n'),
1516
('b', 'contents of b\n'),])
1518
1518
def create_transport_readonly_server(self):
1519
1519
server = self._auth_server(protocol_version=self._protocol_version)
1713
1713
def setUp(self):
1714
1714
super(TestProxyAuth, self).setUp()
1715
1715
# Override the contents to avoid false positives
1716
self.build_tree_contents([('a', b'not proxied contents of a\n'),
1717
('b', b'not proxied contents of b\n'),
1718
('a-proxied', b'contents of a\n'),
1719
('b-proxied', b'contents of b\n'),
1716
self.build_tree_contents([('a', 'not proxied contents of a\n'),
1717
('b', 'not proxied contents of b\n'),
1718
('a-proxied', 'contents of a\n'),
1719
('b-proxied', 'contents of b\n'),
1722
1722
def get_user_transport(self, user, password):
2143
2143
def setUp(self):
2144
2144
super(TestNoReportActivity, self).setUp()
2145
self._transport =HttpTransport
2145
self._transport =_urllib.HttpTransport_urllib
2146
2146
TestActivityMixin.setUp(self)
2148
2148
def assertActivitiesMatch(self):
2159
2159
_password_prompt_prefix = ''
2160
2160
_username_prompt_prefix = ''
2161
2161
_auth_server = http_utils.HTTPBasicAuthServer
2162
_transport = HttpTransport
2162
_transport = _urllib.HttpTransport_urllib
2164
2164
def setUp(self):
2165
2165
super(TestAuthOnRedirected, self).setUp()
2166
self.build_tree_contents([('a', b'a'),
2166
self.build_tree_contents([('a', 'a'),
2168
('1/a', b'redirected once'),
2168
('1/a', 'redirected once'),
2170
2170
new_prefix = 'http://%s:%s' % (self.new_server.host,
2171
2171
self.new_server.port)