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 "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/";