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})