From f27953af6103db390aa3eee012a254f130fdf5f4 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Thu, 5 Nov 2020 00:05:02 +0300 Subject: Tests: added Python threading tests. --- test/python/threads/asgi.py | 27 +++++++++++++++++++++++++++ test/python/threads/wsgi.py | 15 +++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 test/python/threads/asgi.py create mode 100644 test/python/threads/wsgi.py (limited to 'test/python') diff --git a/test/python/threads/asgi.py b/test/python/threads/asgi.py new file mode 100644 index 00000000..d51ae431 --- /dev/null +++ b/test/python/threads/asgi.py @@ -0,0 +1,27 @@ +import asyncio +import time +import threading + +async def application(scope, receive, send): + assert scope['type'] == 'http' + + headers = scope.get('headers', []) + + def get_header(n, v=None): + for h in headers: + if h[0] == n: + return h[1] + return v + + delay = float(get_header(b'x-delay', 0)) + + time.sleep(delay) + + await send({ + 'type': 'http.response.start', + 'status': 200, + 'headers': [ + (b'content-length', b'0'), + (b'x-thread', str(threading.currentThread().ident).encode()), + ] + }) diff --git a/test/python/threads/wsgi.py b/test/python/threads/wsgi.py new file mode 100644 index 00000000..1cc8ffe2 --- /dev/null +++ b/test/python/threads/wsgi.py @@ -0,0 +1,15 @@ +import time +import threading + +def application(environ, start_response): + delay = float(environ.get('HTTP_X_DELAY', 0)) + + time.sleep(delay) + + start_response('200', [ + ('Content-Length', '0'), + ('Wsgi-Multithread', str(environ['wsgi.multithread'])), + ('X-Thread', str(threading.currentThread().ident)) + ]) + + return [] -- cgit From 5fd2933d2e54a7b5781698a670abf89b1031db44 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Tue, 10 Nov 2020 22:27:08 +0300 Subject: Python: supporting ASGI legacy protocol. Introducing manual protocol selection for 'universal' apps and frameworks. --- test/python/legacy/asgi.py | 13 +++++++++++++ test/python/legacy_force/asgi.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 test/python/legacy/asgi.py create mode 100644 test/python/legacy_force/asgi.py (limited to 'test/python') diff --git a/test/python/legacy/asgi.py b/test/python/legacy/asgi.py new file mode 100644 index 00000000..f065d026 --- /dev/null +++ b/test/python/legacy/asgi.py @@ -0,0 +1,13 @@ +def application(scope): + assert scope['type'] == 'http' + + return app_http + +async def app_http(receive, send): + await send({ + 'type': 'http.response.start', + 'status': 200, + 'headers': [ + (b'content-length', b'0'), + ] + }) diff --git a/test/python/legacy_force/asgi.py b/test/python/legacy_force/asgi.py new file mode 100644 index 00000000..2e5859f2 --- /dev/null +++ b/test/python/legacy_force/asgi.py @@ -0,0 +1,17 @@ +def application(scope, receive=None, send=None): + assert scope['type'] == 'http' + + if receive == None and send == None: + return app_http + + else: + return app_http(receive, send) + +async def app_http(receive, send): + await send({ + 'type': 'http.response.start', + 'status': 200, + 'headers': [ + (b'content-length', b'0'), + ] + }) -- cgit From 18ddb747725d24a65b61e0b8ca5d072f52724190 Mon Sep 17 00:00:00 2001 From: Andrei Zeliankou Date: Thu, 19 Nov 2020 05:21:48 +0000 Subject: Tests: added tests for a "discard_unsafe_fields" option. --- test/python/header_fields/wsgi.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 test/python/header_fields/wsgi.py (limited to 'test/python') diff --git a/test/python/header_fields/wsgi.py b/test/python/header_fields/wsgi.py new file mode 100644 index 00000000..bd1ba0e2 --- /dev/null +++ b/test/python/header_fields/wsgi.py @@ -0,0 +1,9 @@ +def application(environ, start_response): + + h = (k for k, v in environ.items() if k.startswith('HTTP_')) + + start_response('200', [ + ('Content-Length', '0'), + ('All-Headers', ','.join(h)) + ]) + return [] -- cgit