1# Simple example to showcase distributed tests using NixOS VMs. 2 3import ./make-test.nix ({ pkgs, ...} : { 4 name = "mpich"; 5 meta = with pkgs.stdenv.lib.maintainers; { 6 maintainers = [ eelco chaoflow ]; 7 }; 8 9 nodes = { 10 master = 11 { config, pkgs, ... }: { 12 environment.systemPackages = [ gcc mpich2 ]; 13 #boot.kernelPackages = pkgs.kernelPackages_2_6_29; 14 }; 15 16 slave = 17 { config, pkgs, ... }: { 18 environment.systemPackages = [ gcc mpich2 ]; 19 }; 20 }; 21 22 # Start master/slave MPI daemons and compile/run a program that uses both 23 # nodes. 24 testScript = 25 '' 26 startAll; 27 28 $master->succeed("echo 'MPD_SECRETWORD=secret' > /etc/mpd.conf"); 29 $master->succeed("chmod 600 /etc/mpd.conf"); 30 $master->succeed("mpd --daemon --ifhn=master --listenport=4444"); 31 32 $slave->succeed("echo 'MPD_SECRETWORD=secret' > /etc/mpd.conf"); 33 $slave->succeed("chmod 600 /etc/mpd.conf"); 34 $slave->succeed("mpd --daemon --host=master --port=4444"); 35 36 $master->succeed("mpicc -o example -Wall ${./mpich-example.c}"); 37 $slave->succeed("mpicc -o example -Wall ${./mpich-example.c}"); 38 39 $master->succeed("mpiexec -n 2 ./example >&2"); 40 ''; 41})