Merge pull request #745 from messense/feature/gunicorn-worker-test-case

Add a simple integration test for Gunicorn worker
This commit is contained in:
Raphael Deem 2017-05-23 20:53:01 -07:00 committed by GitHub
commit c6d68009d2
5 changed files with 30 additions and 5 deletions

View File

@ -9,3 +9,4 @@ pytest
tox
ujson
uvloop
gunicorn

View File

@ -545,6 +545,9 @@ class Sanic:
:param protocol: Subclass of asyncio protocol class
:return: Nothing
"""
if sock is None:
host, port = host or "127.0.0.1", port or 8000
if log_config:
logging.config.dictConfig(log_config)
if protocol is None:
@ -592,6 +595,9 @@ class Sanic:
NOTE: This does not support multiprocessing and is not the preferred
way to run a Sanic application.
"""
if sock is None:
host, port = host or "127.0.0.1", port or 8000
if log_config:
logging.config.dictConfig(log_config)
if protocol is None:
@ -637,9 +643,6 @@ class Sanic:
protocol=HttpProtocol, backlog=100, stop_event=None,
register_sys_signals=True, run_async=False, has_log=True):
"""Helper function used by `run` and `create_server`."""
if sock is None:
host, port = host or "127.0.0.1", port or 8000
if isinstance(ssl, dict):
# try common aliaseses
cert = ssl.get('cert') or ssl.get('certificate')

View File

@ -48,8 +48,6 @@ class GunicornWorker(base.Worker):
protocol = (WebSocketProtocol if self.app.callable.websocket_enabled
else HttpProtocol)
self._server_settings = self.app.callable._helper(
host=None,
port=None,
loop=self.loop,
debug=is_debug,
protocol=protocol,

22
tests/test_worker.py Normal file
View File

@ -0,0 +1,22 @@
import time
import json
import shlex
import subprocess
import urllib.request
import pytest
@pytest.fixture(scope='module')
def gunicorn_worker():
command = 'gunicorn --bind 127.0.0.1:1337 --worker-class sanic.worker.GunicornWorker examples.simple_server:app'
worker = subprocess.Popen(shlex.split(command))
time.sleep(1)
yield
worker.kill()
def test_gunicorn_worker(gunicorn_worker):
with urllib.request.urlopen('http://localhost:1337/') as f:
res = json.loads(f.read(100).decode())
assert res['test']

View File

@ -13,6 +13,7 @@ deps =
aiohttp==1.3.5
chardet<=2.3.0
beautifulsoup4
gunicorn
commands =
pytest tests {posargs}
coverage erase