def test_worker_keepalive(): server = fake.FakeHTTPServer() thread = threading.Thread(target=web.HTTPServer.worker, args=(server, 0)) thread.start() #Wait a bit time.sleep(0.1) request = fake.FakeHTTPRequest(None, None, None, keepalive_number=2) server.request_queue.put((request, True, None)) #Wait for two polls time.sleep(server.poll_interval + server.poll_interval + 0.1) assert server.request_queue.qsize() == 0 assert thread.is_alive() assert request.handled == 2 assert request.initial_timeout == server.keepalive_timeout server.worker_shutdown = -1 thread.join(timeout=1) server.worker_shutdown = None
def test_worker_handle_exception(): server = fake.FakeHTTPServer() thread = threading.Thread(target=web.HTTPServer.worker, args=(server, 0)) thread.start() #Wait a bit time.sleep(0.1) request = fake.FakeHTTPRequest(None, None, None) def bad_handle(self): raise Exception() request.handle = bad_handle server.request_queue.put((request, False, None)) #Wait another bit time.sleep(server.poll_interval + 0.1) assert server.request_queue.qsize() == 0 assert thread.is_alive() server.worker_shutdown = -1 thread.join(timeout=1) server.worker_shutdown = None
def test(handler, handler_args={}, socket=None, server=None): if not socket: socket = fake.FakeSocket() if not server: server = fake.FakeHTTPServer() request_obj = fake.FakeHTTPRequest(socket, ('127.0.0.1', 1337), server, handler=handler, handler_args=handler_args, response=web.HTTPResponse) response_obj = request_obj.response response_obj.handle() value = response_obj.wfile.getvalue() response_obj.close() #Response line comes before firt '\r\n' response_line = value.split('\r\n'.encode(web.http_encoding), 1)[0] #Body should happen after '\r\n\r\n' at the end of the HTTP stuff body = value.split('\r\n\r\n'.encode(web.http_encoding), 1)[1] return response_obj, response_line, response_obj.headers, body
def test(method, resource, body='', headers=web.HTTPHeaders(), handler=None, local='tmp', remote='', dir_index=False, modify=False, return_handler=False): if not isinstance(body, bytes): body = body.encode('utf-8') if not handler: route = file.new(local, remote, dir_index, modify) handler = list(route.values())[0] local = handler.local remote = handler.remote request = fake.FakeHTTPRequest(None, ('', 0), None, body=body, headers=headers, method=method, resource=resource, groups=(resource[len(remote):],), handler=handler) handler_obj = request.handler if return_handler: return request.response.headers, handler_obj.respond(), handler_obj else: return request.response.headers, handler_obj.respond()
def test(method, resource, local='tmp', remote='', head='', precontent='', preindex='', postindex='', postcontent='', sortclass=fancyindex.DirEntry): handler = list( fancyindex.new(local, remote, False, head, precontent, preindex, postindex, postcontent, sortclass, test_index_template, test_index_entry, test_index_entry_join, test_index_content_type).values())[0] request = fake.FakeHTTPRequest(None, ('', 0), None, method=method, resource=resource, groups=(resource[len(remote):], ), handler=handler) return request.response.headers, request.handler.respond()
def test(method, body='', headers=web.HTTPHeaders(), handler=TestHandler, handler_args={}, return_response_obj=False): if not isinstance(body, bytes): body = body.encode('utf-8') request = fake.FakeHTTPRequest(None, ('', 1337), None, body=body, headers=headers, method=method, handler=handler, handler_args=handler_args) handler_obj = request.handler if return_response_obj: return request.response.headers, handler_obj.respond( ), handler_obj.response else: return request.response.headers, handler_obj.respond()