5.2. The container harnesses
Two harnesses in contrib/ run PRRTE across several “nodes” without a
cluster, using plain containers on one machine. They are the everyday
development loop: fast, needing nothing but Docker, and running your
live working tree rather than a commit.
They are documented in full in the trees themselves — this page says what each one is for and when to reach for it. If you have real nodes, see Running the multi-node suite on your cluster: the first harness’s suite runs there too, unchanged.
5.2.1. contrib/dockerswarm — ten nodes, no scheduler
The canonical multi-node harness. build.sh bind-mounts your working
tree into a builder container, compiles it out-of-tree into a shared
volume, and ten ubuntu containers mount that volume as their PRRTE
installation. run-tests.sh linux then drives the suite described in
Running the multi-node suite on your cluster across them.
shell$ cd contrib/dockerswarm
shell$ ./build.sh
shell$ docker compose up -d
shell$ ./run-tests.sh linux
It builds PMIx from source on every run, because PRRTE uses PMIx internals — the pair is one code base in two repositories, and testing one against a frozen copy of the other tests neither properly.
./run-tests.sh macos is a single-host subset that builds and smoke-tests
natively on a Mac, which is what catches Darwin portability regressions.
Full guide: contrib/dockerswarm/AGENTS.md.
5.2.2. contrib/slurmswarm — the same, with a real SLURM
Everything about the scheduler lives here, and nothing else does. The
same ten containers, but running a real slurmctld, ten real
slurmds and SLURM built from source, so ras/slurm and
plm/slurm can be exercised against a scheduler that can refuse a
request.
That matters because most of PRRTE’s elastic surface under SLURM is a
shell-out — salloc to grow, scontrol show job --json to learn what
was granted, scontrol update to shrink in place, scancel to give a
node back. A stand-in scheduler can show that PRRTE issued the right
command; only a real one can show that SLURM accepts it.
shell$ cd contrib/slurmswarm
shell$ ./build.sh
shell$ docker compose up -d
shell$ ./run-tests.sh
Full guide: contrib/slurmswarm/AGENTS.md.
5.2.3. Which one
Question |
Where |
|---|---|
Does this runtime change work across daemons? |
|
Does PRRTE talk to SLURM correctly? |
|
Does PRRTE work on my machines? |