diff --git a/tests/default.nix b/tests/default.nix index 0976ad0c3a2..9b0295236e3 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -13,6 +13,7 @@ with import ../lib/testing.nix { inherit nixpkgs system; }; ipv6 = makeTest (import ./ipv6.nix); kde4 = makeTest (import ./kde4.nix); login = makeTest (import ./login.nix); + mpich = makeTest (import ./mpich.nix); nat = makeTest (import ./nat.nix); nfs = makeTest (import ./nfs.nix); openssh = makeTest (import ./openssh.nix); diff --git a/tests/mpich.nix b/tests/mpich.nix new file mode 100644 index 00000000000..0b81bc1d0de --- /dev/null +++ b/tests/mpich.nix @@ -0,0 +1,40 @@ +# Simple example to showcase distributed tests using NixOS VMs. + +{ pkgs, ... }: + +with pkgs; + +{ + nodes = { + master = + { config, pkgs, ... }: { + environment.systemPackages = [ gcc mpich2 ]; + #boot.kernelPackages = pkgs.kernelPackages_2_6_29; + }; + + slave = + { config, pkgs, ... }: { + environment.systemPackages = [ gcc mpich2 ]; + }; + }; + + # Start master/slave MPI daemons and compile/run a program that uses both + # nodes. + testScript = + '' + startAll; + + $master->mustSucceed("echo 'MPD_SECRETWORD=secret' > /etc/mpd.conf"); + $master->mustSucceed("chmod 600 /etc/mpd.conf"); + $master->mustSucceed("mpd --daemon --ifhn=master --listenport=4444"); + + $slave->mustSucceed("echo 'MPD_SECRETWORD=secret' > /etc/mpd.conf"); + $slave->mustSucceed("chmod 600 /etc/mpd.conf"); + $slave->mustSucceed("mpd --daemon --host=master --port=4444"); + + $master->mustSucceed("mpicc -o example -Wall ${./mpich-example.c}"); + $slave->mustSucceed("mpicc -o example -Wall ${./mpich-example.c}"); + + $master->mustSucceed("mpiexec -n 2 ./example >&2"); + ''; +}