swactor/tests/docker/docker-compose.dev-cluster.yml
Zachery Aaron Shores-Chmielewski 599678e7c9 feat: cluster test improvements; datastore pools (#45)
Introduce a gossip-converged pooled datastore protocol layered on SWIM piggybacking, backed by a reusable gossip-channel abstraction, plus a Docker-free multi-process cluster test runner.

- crates/distribution/src/gossip_channel.rs: add the GossipChannel trait (piggyback on SWIM messages) and a budget-limited DisseminationBuffer<T> that replaces the four duplicated Lambda*ceil(log2(n)) dissemination copies
- crates/datastore/src/pool: add PoolDisseminator (CRDT state for membership/capacity/content-location/ACL with join/leave/announce) and PoolCoordinator (placement-aware CRUD actor delegating to the co-located DatastoreNode)
- crates/shared-types/src/pool.rs: add shared pool protocol types (PoolId plus member/capacity/content-location/ACL entries and PoolConfig) consumed by both distribution and datastore
- crates/dashboard/src/pool_html.rs: add a live pool dashboard page (membership, capacity, content locations) and add pool_tests integration coverage
- xtask/src/sim_cluster.rs: add the sim-cluster runner that spawns N swactor nodes over iroh through a local relay server, reusing the docker cluster scenarios without Docker
- crates/distribution/src/iroh_driver.rs: add relay-URL resolution (cache, then SWIM gossip, then home relay) with a 2s connect timeout to back the relay-based connections

Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-02-20 17:30:37 +00:00

77 lines
1.6 KiB
YAML

services:
seed:
image: swactor-dev-cluster
command:
- "--identity-dir"
- "/identity"
- "--listen"
- "0.0.0.0:11204"
- "--no-relay"
- "--pool-name"
- "dev-pool"
- "--pool-capacity"
- "104857600"
- "--actors"
- "2"
volumes:
- /home/aaron/swactor-pooled-datastore/.dev-cluster/seed-identity:/identity:ro
networks:
dev-cluster:
ipv4_address: 10.0.2.10
ports:
- "9100:9090"
node-2:
image: swactor-dev-cluster
command:
- "--seed-node-id"
- "d5469553d4408073022fee3e41c99cf9778bf3621e430f75f8c8ae7d6de0153f"
- "--seed-addrs"
- "10.0.2.10:11204"
- "--listen"
- "0.0.0.0:11204"
- "--no-relay"
- "--pool-name"
- "dev-pool"
- "--pool-capacity"
- "104857600"
- "--actors"
- "2"
networks:
dev-cluster:
ipv4_address: 10.0.2.11
ports:
- "9101:9090"
depends_on:
- seed
node-3:
image: swactor-dev-cluster
command:
- "--seed-node-id"
- "d5469553d4408073022fee3e41c99cf9778bf3621e430f75f8c8ae7d6de0153f"
- "--seed-addrs"
- "10.0.2.10:11204"
- "--listen"
- "0.0.0.0:11204"
- "--no-relay"
- "--pool-name"
- "dev-pool"
- "--pool-capacity"
- "104857600"
- "--actors"
- "2"
networks:
dev-cluster:
ipv4_address: 10.0.2.12
ports:
- "9102:9090"
depends_on:
- seed
networks:
dev-cluster:
driver: bridge
ipam:
config:
- subnet: 10.0.2.0/24