async def test_enforced_response_codes_504(): event_coro = event_handler.event_handle(fixtures.code(funcs.code504)) http_resp = await event_coro(fixtures.fake_request(gateway=True)) assert http_resp.status == 504 assert http_resp.headers.get(constants.FN_HTTP_STATUS) == "504"
def handle(handle_code: customer_code.Function, port: int = 5000): """ FDK entry point :param handle_code: customer's code :type handle_code: fdk.customer_code.Function :param port: TCP port to start an FDK at :type port: int :return: None """ host = "localhost" log.log("entering handle") log.log("Starting HTTP server on " "TCP socket: {0}:{1}".format(host, port)) loop = asyncio.get_event_loop() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("localhost", port)) rtr = router.Router() rtr.add("/call", frozenset({"POST"}), event_handler.event_handle(handle_code)) srv = app.AsyncHTTPServer(name="fdk-tcp-debug", router=rtr) start_serving, server_forever = srv.run(sock=sock, loop=loop) start_serving() server_forever()
def start(handle_code: customer_code.Function, uds: str, loop: asyncio.AbstractEventLoop = None): """ Unix domain socket HTTP server entry point :param handle_code: customer's code :type handle_code: fdk.customer_code.Function :param uds: path to a Unix domain socket :type uds: str :param loop: event loop :type loop: asyncio.AbstractEventLoop :return: None """ log.log("in http_stream.start") socket_path = os.path.normpath(str(uds).lstrip("unix:")) socket_dir, socket_file = os.path.split(socket_path) if socket_file == "": sys.exit("malformed FN_LISTENER env var " "value: {0}".format(socket_path)) phony_socket_path = os.path.join(socket_dir, "phony" + socket_file) log.log("deleting socket files if they exist") try: os.remove(socket_path) os.remove(phony_socket_path) except OSError: pass sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.bind(phony_socket_path) rtr = router.Router() rtr.add("/call", frozenset({"POST"}), event_handler.event_handle(handle_code)) srv = app.AsyncHTTPServer(name="fdk", router=rtr) start_serving, server_forever = srv.run(sock=sock, loop=loop) try: log.log("CHMOD 666 {0}".format(phony_socket_path)) os.chmod(phony_socket_path, 0o666) log.log("phony socket permissions: {0}".format( oct(os.stat(phony_socket_path).st_mode))) log.log("calling '.start_serving()'") start_serving() log.log("sym-linking {0} to {1}".format(socket_path, phony_socket_path)) os.symlink(os.path.basename(phony_socket_path), socket_path) log.log("socket permissions: {0}".format( oct(os.stat(socket_path).st_mode))) log.log("starting infinite loop") except (Exception, BaseException) as ex: log.log(str(ex)) raise ex server_forever()