diff --git a/tests/support.py b/tests/support.py index 576642f1..5c9000ff 100644 --- a/tests/support.py +++ b/tests/support.py @@ -32,3 +32,18 @@ def requires_mac_ver(*min_version): wrapper.min_version = min_version return wrapper return decorator + +try: + from types import SimpleNamespace +except ImportError: + class SimpleNamespace(object): + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + def __repr__(self): + keys = sorted(self.__dict__) + items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys) + return "{}({})".format(type(self).__name__, ", ".join(items)) + + def __eq__(self, other): + return self.__dict__ == other.__dict__ diff --git a/tests/test_006-logger.py b/tests/test_006-logger.py index 188eb838..8d6cbdfb 100644 --- a/tests/test_006-logger.py +++ b/tests/test_006-logger.py @@ -5,23 +5,21 @@ import t from gunicorn.config import Config from gunicorn.glogging import Logger - -class Mock(object): - def __init__(self, **kwargs): - for attr in kwargs: - setattr(self, attr, kwargs[attr]) +from support import SimpleNamespace def test_atoms_defaults(): - response = Mock(status='200', response_length=1024, - headers=(('Content-Type', 'application/json'),), - sent=1024) - request = Mock(headers=(('Accept', 'application/json'), )) - environ = {'REQUEST_METHOD': 'GET', 'RAW_URI': 'http://my.uri', - 'SERVER_PROTOCOL': 'HTTP/1.1'} + response = SimpleNamespace( + status='200', response_length=1024, + headers=(('Content-Type', 'application/json'),), sent=1024, + ) + request = SimpleNamespace(headers=(('Accept', 'application/json'),)) + environ = { + 'REQUEST_METHOD': 'GET', 'RAW_URI': 'http://my.uri', + 'SERVER_PROTOCOL': 'HTTP/1.1', + } logger = Logger(Config()) - atoms = logger.atoms(response, request, environ, - datetime.timedelta(seconds=1)) + atoms = logger.atoms(response, request, environ, datetime.timedelta(seconds=1)) assert isinstance(atoms, dict) assert atoms['r'] == 'GET http://my.uri HTTP/1.1' assert atoms['{accept}i'] == 'application/json' diff --git a/tests/test_010-statsd.py b/tests/test_010-statsd.py index 3d1c0ca6..92fa517d 100644 --- a/tests/test_010-statsd.py +++ b/tests/test_010-statsd.py @@ -16,6 +16,7 @@ import os from gunicorn.config import Config from gunicorn.instrument.statsd import Statsd +from support import SimpleNamespace @@ -50,13 +51,9 @@ class MockSocket(object): server.close() shutil.rmtree(sock_dir) - def reset(self): self.msgs = [] -class MockResponse(object): - def __init__(self, status): - self.status = status def test_statsd_fail(): "UDP socket fails" @@ -98,7 +95,7 @@ def test_instrument(): assert logger.sock.msgs[0] == b"gunicorn.log.critical:1|c|@1.0" logger.sock.reset() - logger.access(MockResponse("200 OK"), None, {}, timedelta(seconds=7)) + logger.access(SimpleNamespace(status="200 OK"), None, {}, timedelta(seconds=7)) assert logger.sock.msgs[0] == b"gunicorn.request.duration:7000.0|ms" assert logger.sock.msgs[1] == b"gunicorn.requests:1|c|@1.0" assert logger.sock.msgs[2] == b"gunicorn.request.status.200:1|c|@1.0"