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>
379 lines
7.7 KiB
YAML
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
|