Merge "py3: fix test_proxy_logging.py"

This commit is contained in:
Zuul
2018-06-22 21:41:19 +00:00
committed by Gerrit Code Review
2 changed files with 59 additions and 55 deletions

View File

@@ -17,6 +17,7 @@ import unittest
from logging.handlers import SysLogHandler from logging.handlers import SysLogHandler
import mock import mock
import six
from six import BytesIO from six import BytesIO
from six.moves.urllib.parse import unquote from six.moves.urllib.parse import unquote
@@ -34,7 +35,9 @@ class FakeApp(object):
def __init__(self, body=None, response_str='200 OK', policy_idx='0'): def __init__(self, body=None, response_str='200 OK', policy_idx='0'):
if body is None: if body is None:
body = ['FAKE APP'] body = [b'FAKE APP']
elif isinstance(body, six.binary_type):
body = [body]
self.body = body self.body = body
self.response_str = response_str self.response_str = response_str
@@ -64,7 +67,7 @@ class FakeAppNoContentLengthNoTransferEncoding(object):
def __init__(self, body=None): def __init__(self, body=None):
if body is None: if body is None:
body = ['FAKE APP'] body = [b'FAKE APP']
self.body = body self.body = body
@@ -93,7 +96,7 @@ class FakeAppReadline(object):
start_response('200 OK', [('Content-Type', 'text/plain'), start_response('200 OK', [('Content-Type', 'text/plain'),
('Content-Length', '8')]) ('Content-Length', '8')])
env['wsgi.input'].readline() env['wsgi.input'].readline()
return ["FAKE APP"] return [b"FAKE APP"]
def start_response(*args): def start_response(*args):
@@ -161,7 +164,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank(url, environ={'REQUEST_METHOD': 'GET'}) req = Request.blank(url, environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
# get body # get body
''.join(resp) b''.join(resp)
self.assertEqual([], app.access_logger.log_dict['timing']) self.assertEqual([], app.access_logger.log_dict['timing'])
self.assertEqual([], app.access_logger.log_dict['update_stats']) self.assertEqual([], app.access_logger.log_dict['update_stats'])
@@ -203,7 +206,7 @@ class TestProxyLogging(unittest.TestCase):
for path, exp_type in path_types.items(): for path, exp_type in path_types.items():
# GET # GET
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeApp(body='7654321', response_str='321 Fubar'), {}) FakeApp(body=b'7654321', response_str='321 Fubar'), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank(path, environ={ req = Request.blank(path, environ={
'REQUEST_METHOD': 'GET', 'REQUEST_METHOD': 'GET',
@@ -211,7 +214,7 @@ class TestProxyLogging(unittest.TestCase):
stub_times = [18.0, 20.71828182846] stub_times = [18.0, 20.71828182846]
iter_response = app(req.environ, lambda *_: None) iter_response = app(req.environ, lambda *_: None)
self.assertEqual('7654321', ''.join(iter_response)) self.assertEqual(b'7654321', b''.join(iter_response))
self.assertTiming('%s.GET.321.timing' % exp_type, app, self.assertTiming('%s.GET.321.timing' % exp_type, app,
exp_timing=2.71828182846 * 1000) exp_timing=2.71828182846 * 1000)
self.assertTimingSince( self.assertTimingSince(
@@ -236,7 +239,7 @@ class TestProxyLogging(unittest.TestCase):
# Do this only for object types # Do this only for object types
if exp_type == 'object': if exp_type == 'object':
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeApp(body='7654321', response_str='321 Fubar', FakeApp(body=b'7654321', response_str='321 Fubar',
policy_idx='-1'), {}) policy_idx='-1'), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank(path, environ={ req = Request.blank(path, environ={
@@ -245,7 +248,7 @@ class TestProxyLogging(unittest.TestCase):
stub_times = [18.0, 20.71828182846] stub_times = [18.0, 20.71828182846]
iter_response = app(req.environ, lambda *_: None) iter_response = app(req.environ, lambda *_: None)
self.assertEqual('7654321', ''.join(iter_response)) self.assertEqual(b'7654321', b''.join(iter_response))
self.assertTiming('%s.GET.321.timing' % exp_type, app, self.assertTiming('%s.GET.321.timing' % exp_type, app,
exp_timing=2.71828182846 * 1000) exp_timing=2.71828182846 * 1000)
self.assertTimingSince( self.assertTimingSince(
@@ -258,7 +261,7 @@ class TestProxyLogging(unittest.TestCase):
# GET with swift.proxy_access_log_made already set # GET with swift.proxy_access_log_made already set
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeApp(body='7654321', response_str='321 Fubar'), {}) FakeApp(body=b'7654321', response_str='321 Fubar'), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank(path, environ={ req = Request.blank(path, environ={
'REQUEST_METHOD': 'GET', 'REQUEST_METHOD': 'GET',
@@ -266,7 +269,7 @@ class TestProxyLogging(unittest.TestCase):
'wsgi.input': BytesIO(b'4321')}) 'wsgi.input': BytesIO(b'4321')})
stub_times = [18.0, 20.71828182846] stub_times = [18.0, 20.71828182846]
iter_response = app(req.environ, lambda *_: None) iter_response = app(req.environ, lambda *_: None)
self.assertEqual('7654321', ''.join(iter_response)) self.assertEqual(b'7654321', b''.join(iter_response))
self.assertEqual([], app.access_logger.log_dict['timing']) self.assertEqual([], app.access_logger.log_dict['timing'])
self.assertEqual([], self.assertEqual([],
app.access_logger.log_dict['timing_since']) app.access_logger.log_dict['timing_since'])
@@ -275,7 +278,7 @@ class TestProxyLogging(unittest.TestCase):
# PUT (no first-byte timing!) # PUT (no first-byte timing!)
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeApp(body='87654321', response_str='314 PiTown'), {}) FakeApp(body=b'87654321', response_str='314 PiTown'), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank(path, environ={ req = Request.blank(path, environ={
'REQUEST_METHOD': 'PUT', 'REQUEST_METHOD': 'PUT',
@@ -283,7 +286,7 @@ class TestProxyLogging(unittest.TestCase):
# (it's not a GET, so time() doesn't have a 2nd call) # (it's not a GET, so time() doesn't have a 2nd call)
stub_times = [58.2, 58.2 + 7.3321] stub_times = [58.2, 58.2 + 7.3321]
iter_response = app(req.environ, lambda *_: None) iter_response = app(req.environ, lambda *_: None)
self.assertEqual('87654321', ''.join(iter_response)) self.assertEqual(b'87654321', b''.join(iter_response))
self.assertTiming('%s.PUT.314.timing' % exp_type, app, self.assertTiming('%s.PUT.314.timing' % exp_type, app,
exp_timing=7.3321 * 1000) exp_timing=7.3321 * 1000)
self.assertNotTiming( self.assertNotTiming(
@@ -307,7 +310,7 @@ class TestProxyLogging(unittest.TestCase):
# Do this only for object types # Do this only for object types
if exp_type == 'object': if exp_type == 'object':
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeApp(body='87654321', response_str='314 PiTown', FakeApp(body=b'87654321', response_str='314 PiTown',
policy_idx='-1'), {}) policy_idx='-1'), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank(path, environ={ req = Request.blank(path, environ={
@@ -316,7 +319,7 @@ class TestProxyLogging(unittest.TestCase):
# (it's not a GET, so time() doesn't have a 2nd call) # (it's not a GET, so time() doesn't have a 2nd call)
stub_times = [58.2, 58.2 + 7.3321] stub_times = [58.2, 58.2 + 7.3321]
iter_response = app(req.environ, lambda *_: None) iter_response = app(req.environ, lambda *_: None)
self.assertEqual('87654321', ''.join(iter_response)) self.assertEqual(b'87654321', b''.join(iter_response))
self.assertTiming('%s.PUT.314.timing' % exp_type, app, self.assertTiming('%s.PUT.314.timing' % exp_type, app,
exp_timing=7.3321 * 1000) exp_timing=7.3321 * 1000)
self.assertNotTiming( self.assertNotTiming(
@@ -384,13 +387,13 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_basic_req_second_time(self): def test_basic_req_second_time(self):
@@ -400,24 +403,24 @@ class TestProxyLogging(unittest.TestCase):
'swift.proxy_access_log_made': True, 'swift.proxy_access_log_made': True,
'REQUEST_METHOD': 'GET'}) 'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
self._log_parts(app, should_be_empty=True) self._log_parts(app, should_be_empty=True)
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
def test_multi_segment_resp(self): def test_multi_segment_resp(self):
app = proxy_logging.ProxyLoggingMiddleware(FakeApp( app = proxy_logging.ProxyLoggingMiddleware(FakeApp(
['some', 'chunks', 'of data']), {}) [b'some', b'chunks', b'of data']), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'swift.source': 'SOS'}) 'swift.source': 'SOS'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'somechunksof data') self.assertEqual(resp_body, b'somechunksof data')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
self.assertUpdateStats([('SOS.GET.200.xfer', len(resp_body))], app) self.assertUpdateStats([('SOS.GET.200.xfer', len(resp_body))], app)
@@ -634,7 +637,7 @@ class TestProxyLogging(unittest.TestCase):
try: try:
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
# read body # read body
''.join(resp) b''.join(resp)
except IOError: except IOError:
pass pass
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
@@ -650,7 +653,7 @@ class TestProxyLogging(unittest.TestCase):
try: try:
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
# read body # read body
''.join(resp) b''.join(resp)
except IOError: except IOError:
pass pass
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
@@ -674,18 +677,18 @@ class TestProxyLogging(unittest.TestCase):
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeAppNoContentLengthNoTransferEncoding( FakeAppNoContentLengthNoTransferEncoding(
# test the "while not chunk: chunk = next(iterator)" # test the "while not chunk: chunk = next(iterator)"
body=['', '', 'line1\n', 'line2\n'], body=[b'', b'', b'line1\n', b'line2\n'],
), {}) ), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'line1\nline2\n') self.assertEqual(resp_body, b'line1\nline2\n')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_no_content_length_no_transfer_encoding_with_empty_strings(self): def test_no_content_length_no_transfer_encoding_with_empty_strings(self):
@@ -697,13 +700,13 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, '') self.assertEqual(resp_body, b'')
self.assertEqual(log_parts[11], '-') self.assertEqual(log_parts[11], '-')
def test_no_content_length_no_transfer_encoding_with_generator(self): def test_no_content_length_no_transfer_encoding_with_generator(self):
@@ -717,18 +720,18 @@ class TestProxyLogging(unittest.TestCase):
app = proxy_logging.ProxyLoggingMiddleware( app = proxy_logging.ProxyLoggingMiddleware(
FakeAppNoContentLengthNoTransferEncoding( FakeAppNoContentLengthNoTransferEncoding(
body=BodyGen('abc'), body=BodyGen(b'abc'),
), {}) ), {})
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'abc') self.assertEqual(resp_body, b'abc')
self.assertEqual(log_parts[11], '3') self.assertEqual(log_parts[11], '3')
def test_req_path_info_popping(self): def test_req_path_info_popping(self):
@@ -738,13 +741,13 @@ class TestProxyLogging(unittest.TestCase):
req.path_info_pop() req.path_info_pop()
self.assertEqual(req.environ['PATH_INFO'], '/something') self.assertEqual(req.environ['PATH_INFO'], '/something')
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/v1/something') self.assertEqual(log_parts[4], '/v1/something')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_ipv6(self): def test_ipv6(self):
@@ -754,7 +757,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
req.remote_addr = ipv6addr req.remote_addr = ipv6addr
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[0], ipv6addr) self.assertEqual(log_parts[0], ipv6addr)
self.assertEqual(log_parts[1], ipv6addr) self.assertEqual(log_parts[1], ipv6addr)
@@ -762,7 +765,7 @@ class TestProxyLogging(unittest.TestCase):
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_log_info_none(self): def test_log_info_none(self):
@@ -808,7 +811,7 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], '-') self.assertEqual(log_parts[9], '-')
# Has x-auth-token header # Has x-auth-token header
@@ -817,7 +820,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'HTTP_X_AUTH_TOKEN': auth_token}) 'HTTP_X_AUTH_TOKEN': auth_token})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], 'b05bf940-0464-4c...') self.assertEqual(log_parts[9], 'b05bf940-0464-4c...')
@@ -827,7 +830,7 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], '-') self.assertEqual(log_parts[9], '-')
app = proxy_logging.ProxyLoggingMiddleware(FakeApp(), { app = proxy_logging.ProxyLoggingMiddleware(FakeApp(), {
@@ -836,7 +839,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'HTTP_X_AUTH_TOKEN': auth_token}) 'HTTP_X_AUTH_TOKEN': auth_token})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], 'b05bf940...') self.assertEqual(log_parts[9], 'b05bf940...')
@@ -847,7 +850,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'HTTP_X_AUTH_TOKEN': auth_token}) 'HTTP_X_AUTH_TOKEN': auth_token})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], auth_token) self.assertEqual(log_parts[9], auth_token)
@@ -858,7 +861,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'HTTP_X_AUTH_TOKEN': auth_token}) 'HTTP_X_AUTH_TOKEN': auth_token})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], auth_token) self.assertEqual(log_parts[9], auth_token)
@@ -868,7 +871,7 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], '-') self.assertEqual(log_parts[9], '-')
app = proxy_logging.ProxyLoggingMiddleware(FakeApp(), { app = proxy_logging.ProxyLoggingMiddleware(FakeApp(), {
@@ -877,7 +880,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET', req = Request.blank('/', environ={'REQUEST_METHOD': 'GET',
'HTTP_X_AUTH_TOKEN': auth_token}) 'HTTP_X_AUTH_TOKEN': auth_token})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[9], '...') self.assertEqual(log_parts[9], '...')
@@ -893,7 +896,7 @@ class TestProxyLogging(unittest.TestCase):
mock.MagicMock( mock.MagicMock(
side_effect=[10000000.0, 10000001.0])): side_effect=[10000000.0, 10000001.0])):
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(len(log_parts), 21) self.assertEqual(len(log_parts), 21)
self.assertEqual(log_parts[0], '-') self.assertEqual(log_parts[0], '-')
@@ -907,7 +910,7 @@ class TestProxyLogging(unittest.TestCase):
self.assertEqual(log_parts[8], '-') self.assertEqual(log_parts[8], '-')
self.assertEqual(log_parts[9], '-') self.assertEqual(log_parts[9], '-')
self.assertEqual(log_parts[10], '-') self.assertEqual(log_parts[10], '-')
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
self.assertEqual(log_parts[12], '-') self.assertEqual(log_parts[12], '-')
self.assertEqual(log_parts[13], '-') self.assertEqual(log_parts[13], '-')
@@ -931,14 +934,14 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = log1(req.environ, start_response) resp = log1(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
self._log_parts(log0, should_be_empty=True) self._log_parts(log0, should_be_empty=True)
log_parts = self._log_parts(log1) log_parts = self._log_parts(log1)
self.assertEqual(log_parts[3], 'GET') self.assertEqual(log_parts[3], 'GET')
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'FAKE APP') self.assertEqual(resp_body, b'FAKE APP')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_dual_logging_middlewares_w_inner(self): def test_dual_logging_middlewares_w_inner(self):
@@ -956,13 +959,13 @@ class TestProxyLogging(unittest.TestCase):
# Make the internal request # Make the internal request
ireq = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) ireq = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = self.app(ireq.environ, start_response) resp = self.app(ireq.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
if resp_body != 'FAKE APP': if resp_body != b'FAKE APP':
return Response(request=req, return Response(request=req,
body="FAKE APP WAS NOT RETURNED", body=b"FAKE APP WAS NOT RETURNED",
content_type="text/plain") content_type="text/plain")
# But our response is different # But our response is different
return Response(request=req, body="FAKE MIDDLEWARE", return Response(request=req, body=b"FAKE MIDDLEWARE",
content_type="text/plain") content_type="text/plain")
def __call__(self, env, start_response): def __call__(self, env, start_response):
@@ -981,7 +984,7 @@ class TestProxyLogging(unittest.TestCase):
req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}) req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'})
resp = log1(req.environ, start_response) resp = log1(req.environ, start_response)
resp_body = ''.join(resp) resp_body = b''.join(resp)
# Inner most logger should have logged the app's response # Inner most logger should have logged the app's response
log_parts = self._log_parts(log0) log_parts = self._log_parts(log0)
@@ -997,7 +1000,7 @@ class TestProxyLogging(unittest.TestCase):
self.assertEqual(log_parts[4], '/') self.assertEqual(log_parts[4], '/')
self.assertEqual(log_parts[5], 'HTTP/1.0') self.assertEqual(log_parts[5], 'HTTP/1.0')
self.assertEqual(log_parts[6], '200') self.assertEqual(log_parts[6], '200')
self.assertEqual(resp_body, 'FAKE MIDDLEWARE') self.assertEqual(resp_body, b'FAKE MIDDLEWARE')
self.assertEqual(log_parts[11], str(len(resp_body))) self.assertEqual(log_parts[11], str(len(resp_body)))
def test_policy_index(self): def test_policy_index(self):
@@ -1007,7 +1010,7 @@ class TestProxyLogging(unittest.TestCase):
app.access_logger = FakeLogger() app.access_logger = FakeLogger()
req = Request.blank('/v1/a/c/o', environ={'REQUEST_METHOD': 'PUT'}) req = Request.blank('/v1/a/c/o', environ={'REQUEST_METHOD': 'PUT'})
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
''.join(resp) b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[20], '1') self.assertEqual(log_parts[20], '1')
@@ -1028,6 +1031,6 @@ class TestProxyLogging(unittest.TestCase):
with mock.patch.object(FakeApp, '__call__', fake_call): with mock.patch.object(FakeApp, '__call__', fake_call):
resp = app(req.environ, start_response) resp = app(req.environ, start_response)
''.join(resp) b''.join(resp)
log_parts = self._log_parts(app) log_parts = self._log_parts(app)
self.assertEqual(log_parts[20], '1') self.assertEqual(log_parts[20], '1')

View File

@@ -37,6 +37,7 @@ commands =
test/unit/cli/test_ring_builder_analyzer.py \ test/unit/cli/test_ring_builder_analyzer.py \
test/unit/cli/test_ringbuilder.py \ test/unit/cli/test_ringbuilder.py \
test/unit/common/middleware/test_gatekeeper.py \ test/unit/common/middleware/test_gatekeeper.py \
test/unit/common/middleware/test_proxy_logging.py \
test/unit/common/ring \ test/unit/common/ring \
test/unit/common/test_constraints.py \ test/unit/common/test_constraints.py \
test/unit/common/test_daemon.py \ test/unit/common/test_daemon.py \