(*, address, use_ssl=False, server_cls, server_ssl_cls)
| 163 | |
| 164 | |
| 165 | def _run_test_server(*, address, use_ssl=False, server_cls, server_ssl_cls): |
| 166 | |
| 167 | def loop(environ): |
| 168 | size = int(environ['CONTENT_LENGTH']) |
| 169 | while size: |
| 170 | data = environ['wsgi.input'].read(min(size, 0x10000)) |
| 171 | yield data |
| 172 | size -= len(data) |
| 173 | |
| 174 | def app(environ, start_response): |
| 175 | status = '200 OK' |
| 176 | headers = [('Content-type', 'text/plain')] |
| 177 | start_response(status, headers) |
| 178 | if environ['PATH_INFO'] == '/loop': |
| 179 | return loop(environ) |
| 180 | else: |
| 181 | return [b'Test message'] |
| 182 | |
| 183 | # Run the test WSGI server in a separate thread in order not to |
| 184 | # interfere with event handling in the main thread |
| 185 | server_class = server_ssl_cls if use_ssl else server_cls |
| 186 | httpd = server_class(address, SilentWSGIRequestHandler) |
| 187 | httpd.set_app(app) |
| 188 | httpd.address = httpd.server_address |
| 189 | server_thread = threading.Thread( |
| 190 | target=lambda: httpd.serve_forever(poll_interval=0.05)) |
| 191 | server_thread.start() |
| 192 | try: |
| 193 | yield httpd |
| 194 | finally: |
| 195 | httpd.shutdown() |
| 196 | httpd.server_close() |
| 197 | server_thread.join() |
| 198 | |
| 199 | |
| 200 | if hasattr(socket, 'AF_UNIX'): |
no test coverage detected
searching dependent graphs…