Download tests/test_voyager_processes.py from Erinaldordso/Minecraft-Friends-AI-ZeroGPU: direct link, hf CLI and curl.
- Browser
- Download file 1.47 kB
-
https://huggingface.co/spaces/Erinaldordso/Minecraft-Friends-AI-ZeroGPU/resolve/main/tests/test_voyager_processes.py
- Command line
-
hf download hf://spaces/Erinaldordso/Minecraft-Friends-AI-ZeroGPU/tests/test_voyager_processes.py
-
curl -L -o test_voyager_processes.py https://huggingface.co/spaces/Erinaldordso/Minecraft-Friends-AI-ZeroGPU/resolve/main/tests/test_voyager_processes.py
1.47 kB
| """A killed runner cannot leave a child holding its Mineflayer port.""" | |
| import os | |
| import socket | |
| import subprocess | |
| import sys | |
| import time | |
| from pathlib import Path | |
| import pytest | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) | |
| from voyager_processes import stop_runner | |
| def test_orphan_port_is_released_without_touching_the_parent(): | |
| child = "import socket,time; s=socket.socket(); s.bind(('127.0.0.1',0)); s.listen(); print(s.getsockname()[1],flush=True); time.sleep(30)" | |
| leader = "import subprocess,sys,os; subprocess.Popen([sys.executable,'-u','-c',sys.argv[1]]); os._exit(75)" | |
| proc = subprocess.Popen([sys.executable, "-u", "-c", leader, child], | |
| stdout=subprocess.PIPE, text=True, start_new_session=True) | |
| port = int(proc.stdout.readline()) | |
| proc.wait(timeout=5) | |
| try: | |
| with socket.create_connection(("127.0.0.1", port), timeout=1): | |
| pass | |
| stop_runner(proc) | |
| deadline = time.monotonic() + 1 | |
| while True: | |
| try: | |
| connection = socket.create_connection(("127.0.0.1", port), timeout=0.1) | |
| connection.close() | |
| except OSError: | |
| break | |
| assert time.monotonic() < deadline, "orphan still holds the Mineflayer port" | |
| time.sleep(0.01) | |
| finally: | |
| stop_runner(proc) | |