modjam/docker-compose.yml
Alec Perkins 0f478bf720 Implement test/control stations, simulator, tests
Adds the modjam package: a MeshCore-backed test station service for
Pi (IDLE + RUNNING states, cuesheet-driven), a control station REPL
for the Mac, and a UDP simulator that swaps in for the radio when
SIMULATOR=true (drops cross-config packets and a configurable
fraction of test-payload datagrams to mimic real radio loss).
docker-compose runs three sim stations + control on a bridge net.
TSV log format matches the reference traces.

Pytest suite covers protocol codec, cuesheet builder, TSV logger,
config loader, and UDP radio packet routing/loss; .forgejo/workflows
runs it on push to main and on PRs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:27:41 -04:00

54 lines
1.6 KiB
YAML

services:
station-a:
build: { context: ., dockerfile: docker/station.Dockerfile }
environment:
SIMULATOR: "true"
PEERS: "station-a,station-b,station-c,control"
MODJAM_CONFIG: "/etc/modjam/config.json"
SIM_PACKET_LOSS: "${SIM_PACKET_LOSS:-0.15}"
volumes:
- ./sim/station-a.json:/etc/modjam/config.json:ro
- ./sim/logs:/var/log/modjam
networks: [modjam]
station-b:
build: { context: ., dockerfile: docker/station.Dockerfile }
environment:
SIMULATOR: "true"
PEERS: "station-a,station-b,station-c,control"
MODJAM_CONFIG: "/etc/modjam/config.json"
SIM_PACKET_LOSS: "${SIM_PACKET_LOSS:-0.15}"
volumes:
- ./sim/station-b.json:/etc/modjam/config.json:ro
- ./sim/logs:/var/log/modjam
networks: [modjam]
station-c:
build: { context: ., dockerfile: docker/station.Dockerfile }
environment:
SIMULATOR: "true"
PEERS: "station-a,station-b,station-c,control"
MODJAM_CONFIG: "/etc/modjam/config.json"
SIM_PACKET_LOSS: "${SIM_PACKET_LOSS:-0.15}"
volumes:
- ./sim/station-c.json:/etc/modjam/config.json:ro
- ./sim/logs:/var/log/modjam
networks: [modjam]
control:
build: { context: ., dockerfile: docker/control.Dockerfile }
environment:
SIMULATOR: "true"
PEERS: "station-a,station-b,station-c,control"
MODJAM_CONFIG: "/etc/modjam/config.json"
SIM_PACKET_LOSS: "${SIM_PACKET_LOSS:-0.15}"
volumes:
- ./sim/control.json:/etc/modjam/config.json:ro
- ./sim/logs:/var/log/modjam
stdin_open: true
tty: true
networks: [modjam]
networks:
modjam:
driver: bridge