at 17.09-beta 2.7 kB view raw
1import ./make-test.nix ({ pkgs, ...} : rec { 2 name = "mesos"; 3 meta = with pkgs.stdenv.lib.maintainers; { 4 maintainers = [ offline kamilchm cstrahan ]; 5 }; 6 7 nodes = { 8 master = { config, pkgs, ... }: { 9 networking.firewall.enable = false; 10 services.zookeeper.enable = true; 11 services.mesos.master = { 12 enable = true; 13 zk = "zk://master:2181/mesos"; 14 }; 15 }; 16 17 slave = { config, pkgs, ... }: { 18 networking.firewall.enable = false; 19 networking.nat.enable = true; 20 virtualisation.docker.enable = true; 21 services.mesos = { 22 slave = { 23 enable = true; 24 master = "master:5050"; 25 dockerRegistry = registry; 26 executorEnvironmentVariables = { 27 PATH = "/run/current-system/sw/bin"; 28 }; 29 }; 30 }; 31 }; 32 }; 33 34 simpleDocker = pkgs.dockerTools.buildImage { 35 name = "echo"; 36 contents = [ pkgs.stdenv.shellPackage pkgs.coreutils ]; 37 config = { 38 Env = [ 39 # When shell=true, mesos invokes "sh -c '<cmd>'", so make sure "sh" is 40 # on the PATH. 41 "PATH=${pkgs.stdenv.shellPackage}/bin:${pkgs.coreutils}/bin" 42 ]; 43 Entrypoint = [ "echo" ]; 44 }; 45 }; 46 47 registry = pkgs.runCommand "registry" { } '' 48 mkdir -p $out 49 cp ${simpleDocker} $out/echo:latest.tar 50 ''; 51 52 testFramework = pkgs.pythonPackages.buildPythonPackage { 53 name = "mesos-tests"; 54 propagatedBuildInputs = [ pkgs.mesos ]; 55 catchConflicts = false; 56 src = ./mesos_test.py; 57 phases = [ "installPhase" "fixupPhase" ]; 58 installPhase = '' 59 mkdir $out 60 cp $src $out/mesos_test.py 61 chmod +x $out/mesos_test.py 62 63 echo "done" > test.result 64 tar czf $out/test.tar.gz test.result 65 ''; 66 }; 67 68 testScript = 69 '' 70 startAll; 71 $master->waitForUnit("mesos-master.service"); 72 $slave->waitForUnit("mesos-slave.service"); 73 74 $master->waitForOpenPort(5050); 75 $slave->waitForOpenPort(5051); 76 77 # is slave registred? 78 $master->waitUntilSucceeds("curl -s --fail http://master:5050/master/slaves". 79 " | grep -q \"\\\"hostname\\\":\\\"slave\\\"\""); 80 81 # try to run docker image 82 $master->succeed("${pkgs.mesos}/bin/mesos-execute --master=master:5050". 83 " --resources=\"cpus:0.1;mem:32\" --name=simple-docker". 84 " --containerizer=mesos --docker_image=echo:latest". 85 " --shell=true --command=\"echo done\" | grep -q TASK_FINISHED"); 86 87 # simple command with .tar.gz uri 88 $master->succeed("${testFramework}/mesos_test.py master ". 89 "${testFramework}/test.tar.gz"); 90 ''; 91})