diff --git a/nixos/tests/spark/default.nix b/nixos/tests/spark/default.nix index 462f0d23a403..63d6a5d44db8 100644 --- a/nixos/tests/spark/default.nix +++ b/nixos/tests/spark/default.nix @@ -1,28 +1,47 @@ -import ../make-test-python.nix ({...}: { - name = "spark"; +{ pkgs, ... }: - nodes = { - worker = { nodes, pkgs, ... }: { - services.spark.worker = { - enable = true; - master = "master:7077"; - }; - virtualisation.memorySize = 2048; - }; - master = { config, pkgs, ... }: { - services.spark.master = { - enable = true; - bind = "0.0.0.0"; - }; - networking.firewall.allowedTCPPorts = [ 22 7077 8080 ]; - }; +let + inherit (pkgs) lib; + tests = { + default = testsForPackage { sparkPackage = pkgs.spark; }; }; - testScript = '' - master.wait_for_unit("spark-master.service") - worker.wait_for_unit("spark-worker.service") - worker.copy_from_host( "${./spark_sample.py}", "/spark_sample.py" ) - assert "Spark Master at spark://" in worker.succeed("curl -sSfkL http://master:8080/") - worker.succeed("spark-submit --master spark://master:7077 --executor-memory 512m --executor-cores 1 /spark_sample.py") - ''; -}) + testsForPackage = args: lib.recurseIntoAttrs { + sparkCluster = testSparkCluster args; + passthru.override = args': testsForPackage (args // args'); + }; + testSparkCluster = { sparkPackage, ... }: pkgs.nixosTest ({ + name = "spark"; + + nodes = { + worker = { nodes, pkgs, ... }: { + services.spark = { + package = sparkPackage; + worker = { + enable = true; + master = "master:7077"; + }; + }; + virtualisation.memorySize = 2048; + }; + master = { config, pkgs, ... }: { + services.spark = { + package = sparkPackage; + master = { + enable = true; + bind = "0.0.0.0"; + }; + }; + networking.firewall.allowedTCPPorts = [ 22 7077 8080 ]; + }; + }; + + testScript = '' + master.wait_for_unit("spark-master.service") + worker.wait_for_unit("spark-worker.service") + worker.copy_from_host( "${./spark_sample.py}", "/spark_sample.py" ) + assert "<title>Spark Master at spark://" in worker.succeed("curl -sSfkL http://master:8080/") + worker.succeed("spark-submit --master spark://master:7077 --executor-memory 512m --executor-cores 1 /spark_sample.py") + ''; + }); +in tests diff --git a/pkgs/applications/networking/cluster/spark/default.nix b/pkgs/applications/networking/cluster/spark/default.nix index 366de1873557..a95db8d005eb 100644 --- a/pkgs/applications/networking/cluster/spark/default.nix +++ b/pkgs/applications/networking/cluster/spark/default.nix @@ -10,6 +10,7 @@ , hadoop , RSupport ? true , R +, nixosTests }: let @@ -60,6 +61,10 @@ let ln -s $out/lib/${untarDir}/lib/spark-assembly-*.jar $out/share/java ''; + passthru.tests = nixosTests.spark.default.passthru.override { + sparkPackage = finalAttrs.finalPackage; + }; + meta = { description = "Apache Spark is a fast and general engine for large-scale data processing"; homepage = "https://spark.apache.org/";