at master 1.7 kB view raw
1{ pkgs, ... }: 2 3let 4 inherit (pkgs) lib; 5 tests = { 6 default = testsForPackage { sparkPackage = pkgs.spark; }; 7 }; 8 9 testsForPackage = 10 args: 11 lib.recurseIntoAttrs { 12 sparkCluster = testSparkCluster args; 13 passthru.override = args': testsForPackage (args // args'); 14 }; 15 testSparkCluster = 16 { sparkPackage, ... }: 17 pkgs.testers.nixosTest ({ 18 name = "spark"; 19 20 nodes = { 21 worker = 22 { nodes, pkgs, ... }: 23 { 24 services.spark = { 25 package = sparkPackage; 26 worker = { 27 enable = true; 28 master = "master:7077"; 29 }; 30 }; 31 virtualisation.memorySize = 2048; 32 }; 33 master = 34 { config, pkgs, ... }: 35 { 36 services.spark = { 37 package = sparkPackage; 38 master = { 39 enable = true; 40 bind = "0.0.0.0"; 41 }; 42 }; 43 networking.firewall.allowedTCPPorts = [ 44 22 45 7077 46 8080 47 ]; 48 }; 49 }; 50 51 testScript = '' 52 master.wait_for_unit("spark-master.service") 53 worker.wait_for_unit("spark-worker.service") 54 worker.copy_from_host( "${./spark_sample.py}", "/spark_sample.py" ) 55 assert "<title>Spark Master at spark://" in worker.succeed("curl -sSfkL http://master:8080/") 56 worker.succeed("spark-submit --version | systemd-cat") 57 worker.succeed("spark-submit --master spark://master:7077 --executor-memory 512m --executor-cores 1 /spark_sample.py") 58 ''; 59 }); 60in 61tests