Python script that runs a single-threaded TCP echo server inside the sandbox. It prints `echo-server-ready` to stdout once listening, which the harness uses as the readiness marker.
(port: u16)
| 21 | /// sandbox. It prints `echo-server-ready` to stdout once listening, which |
| 22 | /// the harness uses as the readiness marker. |
| 23 | fn echo_server_script(port: u16) -> String { |
| 24 | format!( |
| 25 | r" |
| 26 | import socket, sys, signal |
| 27 | signal.signal(signal.SIGHUP, signal.SIG_IGN) |
| 28 | signal.signal(signal.SIGTERM, lambda *_: sys.exit(0)) |
| 29 | port = {port} |
| 30 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 31 | sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| 32 | sock.bind(('127.0.0.1', port)) |
| 33 | sock.listen(1) |
| 34 | sock.settimeout(300) |
| 35 | print('echo-server-ready', flush=True) |
| 36 | try: |
| 37 | while True: |
| 38 | conn, _ = sock.accept() |
| 39 | data = conn.recv(4096) |
| 40 | if data: |
| 41 | conn.sendall(b'echo:' + data) |
| 42 | conn.close() |
| 43 | except (socket.timeout, OSError): |
| 44 | pass |
| 45 | finally: |
| 46 | sock.close() |
| 47 | " |
| 48 | ) |
| 49 | } |
| 50 | |
| 51 | /// Create a sandbox with a TCP echo server, forward the port locally, send |
| 52 | /// data through it, and verify the echoed response. |