Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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()
Example #5
0
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()
Example #6
0
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()