Naut-Peer/interop/docker-compose.yml
ookami125 d8208685a2 Initial commit: multi-peer torrent download engine
Reactor/loop-pool engine with TCP/µTP/MSE transports, per-connection
pipelining, priority-driven piece selection with endgame, and the Python
FFI test harness.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:12:32 -04:00

379 lines
7.7 KiB
YAML

name: torrent-peer-interop
services:
fixture:
build:
context: ..
dockerfile: interop/Dockerfile
command:
- /bin/sh
- -c
- >
python3 /work/interop/make_fixture.py --out /fixture --size ${FIXTURE_SIZE:-32M}
&& touch /tmp/fixture-ready
&& tail -f /dev/null
volumes:
- fixture:/fixture
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/fixture-ready"]
interval: 2s
timeout: 1s
retries: 30
seed-libtorrent-plain:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_libtorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6881"
- --mode
- plain
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 30
seed-libtorrent-mse:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_libtorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6882"
- --mode
- mse
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 30
seed-libtorrent-utp:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_libtorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6883"
- --mode
- utp
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 30
seed-libtorrent-utp-mse:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_libtorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6884"
- --mode
- utp-mse
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 30
seed-transmission:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_transmission.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --peer-port
- "6891"
- --rpc-port
- "9091"
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-transmission-utp:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_transmission.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --peer-port
- "6896"
- --rpc-port
- "9092"
- --utp
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-transmission-mse:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_transmission.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --peer-port
- "6897"
- --rpc-port
- "9093"
- --encryption
- required
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-aria2:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_aria2.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6892"
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-qbittorrent:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_qbittorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6893"
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-deluge:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_deluge.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6894"
- --daemon-port
- "58846"
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
seed-rtorrent:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
fixture:
condition: service_healthy
command:
- python3
- /work/interop/seed_rtorrent.py
- --torrent
- /fixture/test.torrent
- --data
- /fixture
- --port
- "6895"
volumes:
- fixture:/fixture:ro
networks:
- torrent_lab
healthcheck:
test: ["CMD", "test", "-f", "/tmp/seed-ready"]
interval: 2s
timeout: 1s
retries: 45
runner:
build:
context: ..
dockerfile: interop/Dockerfile
depends_on:
seed-libtorrent-plain:
condition: service_healthy
seed-libtorrent-mse:
condition: service_healthy
seed-libtorrent-utp:
condition: service_healthy
seed-libtorrent-utp-mse:
condition: service_healthy
seed-transmission:
condition: service_healthy
seed-transmission-utp:
condition: service_healthy
seed-transmission-mse:
condition: service_healthy
seed-aria2:
condition: service_healthy
seed-qbittorrent:
condition: service_healthy
seed-deluge:
condition: service_healthy
seed-rtorrent:
condition: service_healthy
command:
- python3
- /work/interop/run_matrix.py
- --fixture
- /fixture
- --clients
- /work/interop/clients.json
- --results
- /results/results.json
- --timeout
- ${TEST_TIMEOUT:-90}
volumes:
- fixture:/fixture:ro
- ./results:/results
networks:
- torrent_lab
volumes:
fixture:
networks:
torrent_lab:
internal: true