mirror of
https://github.com/django/daphne.git
synced 2025-07-12 00:42:17 +03:00
Add option to use alternative listeners with DaphneTestingInstance
Additionally, allow the caller to disable the default listener on 127.0.0.1.
This commit is contained in:
parent
dc5e069ab1
commit
3d9bbebfda
|
@ -18,11 +18,21 @@ class BaseDaphneTestingInstance:
|
||||||
startup_timeout = 2
|
startup_timeout = 2
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, xff=False, http_timeout=None, request_buffer_size=None, *, application
|
self,
|
||||||
|
xff=False,
|
||||||
|
http_timeout=None,
|
||||||
|
request_buffer_size=None,
|
||||||
|
*,
|
||||||
|
application,
|
||||||
|
host="127.0.0.1",
|
||||||
|
unix_socket=None,
|
||||||
|
file_descriptor=None,
|
||||||
):
|
):
|
||||||
self.xff = xff
|
self.xff = xff
|
||||||
self.http_timeout = http_timeout
|
self.http_timeout = http_timeout
|
||||||
self.host = "127.0.0.1"
|
self.host = host
|
||||||
|
self.unix_socket = unix_socket
|
||||||
|
self.file_descriptor = file_descriptor
|
||||||
self.request_buffer_size = request_buffer_size
|
self.request_buffer_size = request_buffer_size
|
||||||
self.application = application
|
self.application = application
|
||||||
|
|
||||||
|
@ -44,6 +54,8 @@ class BaseDaphneTestingInstance:
|
||||||
# Start up process
|
# Start up process
|
||||||
self.process = DaphneProcess(
|
self.process = DaphneProcess(
|
||||||
host=self.host,
|
host=self.host,
|
||||||
|
unix_socket=self.unix_socket,
|
||||||
|
file_descriptor=self.file_descriptor,
|
||||||
get_application=self.get_application,
|
get_application=self.get_application,
|
||||||
kwargs=kwargs,
|
kwargs=kwargs,
|
||||||
setup=self.process_setup,
|
setup=self.process_setup,
|
||||||
|
@ -126,9 +138,20 @@ class DaphneProcess(multiprocessing.Process):
|
||||||
port it ends up listening on back to the parent process.
|
port it ends up listening on back to the parent process.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, host, get_application, kwargs=None, setup=None, teardown=None):
|
def __init__(
|
||||||
|
self,
|
||||||
|
get_application,
|
||||||
|
host=None,
|
||||||
|
file_descriptor=None,
|
||||||
|
unix_socket=None,
|
||||||
|
kwargs=None,
|
||||||
|
setup=None,
|
||||||
|
teardown=None,
|
||||||
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.host = host
|
self.host = host
|
||||||
|
self.file_descriptor = file_descriptor
|
||||||
|
self.unix_socket = unix_socket
|
||||||
self.get_application = get_application
|
self.get_application = get_application
|
||||||
self.kwargs = kwargs or {}
|
self.kwargs = kwargs or {}
|
||||||
self.setup = setup
|
self.setup = setup
|
||||||
|
@ -153,12 +176,17 @@ class DaphneProcess(multiprocessing.Process):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Create the server class
|
# Create the server class
|
||||||
endpoints = build_endpoint_description_strings(host=self.host, port=0)
|
endpoints = build_endpoint_description_strings(
|
||||||
|
host=self.host,
|
||||||
|
port=0 if self.host else None,
|
||||||
|
unix_socket=self.unix_socket,
|
||||||
|
file_descriptor=self.file_descriptor,
|
||||||
|
)
|
||||||
self.server = Server(
|
self.server = Server(
|
||||||
application=application,
|
application=application,
|
||||||
endpoints=endpoints,
|
endpoints=endpoints,
|
||||||
signal_handlers=False,
|
signal_handlers=False,
|
||||||
**self.kwargs
|
**self.kwargs,
|
||||||
)
|
)
|
||||||
# Set up a poller to look for the port
|
# Set up a poller to look for the port
|
||||||
reactor.callLater(0.1, self.resolve_port)
|
reactor.callLater(0.1, self.resolve_port)
|
||||||
|
@ -177,11 +205,18 @@ class DaphneProcess(multiprocessing.Process):
|
||||||
def resolve_port(self):
|
def resolve_port(self):
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
|
|
||||||
if self.server.listening_addresses:
|
if not all(listener.called for listener in self.server.listeners):
|
||||||
self.port.value = self.server.listening_addresses[0][1]
|
pass
|
||||||
self.ready.set()
|
elif self.host:
|
||||||
|
if self.server.listening_addresses:
|
||||||
|
self.port.value = self.server.listening_addresses[0][1]
|
||||||
|
self.ready.set()
|
||||||
|
return
|
||||||
else:
|
else:
|
||||||
reactor.callLater(0.1, self.resolve_port)
|
self.port.value = -1
|
||||||
|
self.ready.set()
|
||||||
|
return
|
||||||
|
reactor.callLater(0.1, self.resolve_port)
|
||||||
|
|
||||||
|
|
||||||
class TestApplication:
|
class TestApplication:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user