summaryrefslogtreecommitdiffstats
path: root/nixos/tests
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2020-04-18 07:42:26 +0200
committerVladimír Čunát <v@cunat.cz>2020-04-18 07:42:26 +0200
commitd96487b9cadb27aba64cb05c2e4962fb3c9e1890 (patch)
tree901e2d0a53fd23b7579ca3dddfbd8b533c46d39c /nixos/tests
parent312e9037f49bf0b163d071dc68fe76c2b5d77319 (diff)
parenteb4acb6ca9c4482e7a65d4b1aaf4ec7c48ea6641 (diff)
Merge branch 'master' into staging-next
Hydra nixpkgs: ?compare=1582510
Diffstat (limited to 'nixos/tests')
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/deluge.nix109
-rw-r--r--nixos/tests/hydra/db-migration.nix12
-rw-r--r--nixos/tests/k3s.nix78
4 files changed, 164 insertions, 36 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 4f60892488ab..5adfd6afd6a7 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -146,6 +146,7 @@ in
jellyfin = handleTest ./jellyfin.nix {};
jenkins = handleTest ./jenkins.nix {};
jirafeau = handleTest ./jirafeau.nix {};
+ k3s = handleTest ./k3s.nix {};
kafka = handleTest ./kafka.nix {};
keepalived = handleTest ./keepalived.nix {};
kerberos = handleTest ./kerberos/default.nix {};
diff --git a/nixos/tests/deluge.nix b/nixos/tests/deluge.nix
index 37689c3d9137..3cf179a38216 100644
--- a/nixos/tests/deluge.nix
+++ b/nixos/tests/deluge.nix
@@ -5,9 +5,10 @@ import ./make-test-python.nix ({ pkgs, ...} : {
};
nodes = {
- simple = {
+ simple1 = {
services.deluge = {
enable = true;
+ package = pkgs.deluge-1_x;
web = {
enable = true;
openFirewall = true;
@@ -15,50 +16,92 @@ import ./make-test-python.nix ({ pkgs, ...} : {
};
};
- declarative =
- { ... }:
+ declarative1 = {
+ services.deluge = {
+ enable = true;
+ package = pkgs.deluge-1_x;
+ openFirewall = true;
+ declarative = true;
+ config = {
+ allow_remote = true;
+ download_location = "/var/lib/deluge/my-download";
+ daemon_port = 58846;
+ listen_ports = [ 6881 6889 ];
+ };
+ web = {
+ enable = true;
+ port = 3142;
+ };
+ authFile = pkgs.writeText "deluge-auth" ''
+ localclient:a7bef72a890:10
+ andrew:password:10
+ user3:anotherpass:5
+ '';
+ };
+ };
- {
- services.deluge = {
+ simple2 = {
+ services.deluge = {
+ enable = true;
+ package = pkgs.deluge-2_x;
+ web = {
enable = true;
openFirewall = true;
- declarative = true;
- config = {
- allow_remote = true;
- download_location = "/var/lib/deluge/my-download";
- daemon_port = 58846;
- listen_ports = [ 6881 6889 ];
- };
- web = {
- enable = true;
- port = 3142;
- };
- authFile = pkgs.writeText "deluge-auth" ''
- localclient:a7bef72a890:10
- andrew:password:10
- user3:anotherpass:5
- '';
};
- environment.systemPackages = [ pkgs.deluge ];
};
+ };
+
+ declarative2 = {
+ services.deluge = {
+ enable = true;
+ package = pkgs.deluge-2_x;
+ openFirewall = true;
+ declarative = true;
+ config = {
+ allow_remote = true;
+ download_location = "/var/lib/deluge/my-download";
+ daemon_port = 58846;
+ listen_ports = [ 6881 6889 ];
+ };
+ web = {
+ enable = true;
+ port = 3142;
+ };
+ authFile = pkgs.writeText "deluge-auth" ''
+ localclient:a7bef72a890:10
+ andrew:password:10
+ user3:anotherpass:5
+ '';
+ };
+ };
};
testScript = ''
start_all()
- simple.wait_for_unit("deluged")
- simple.wait_for_unit("delugeweb")
- simple.wait_for_open_port("8112")
- declarative.wait_for_unit("network.target")
- declarative.wait_until_succeeds("curl --fail http://simple:8112")
+ simple1.wait_for_unit("deluged")
+ simple2.wait_for_unit("deluged")
+ simple1.wait_for_unit("delugeweb")
+ simple2.wait_for_unit("delugeweb")
+ simple1.wait_for_open_port("8112")
+ simple2.wait_for_open_port("8112")
+ declarative1.wait_for_unit("network.target")
+ declarative2.wait_for_unit("network.target")
+ declarative1.wait_until_succeeds("curl --fail http://simple1:8112")
+ declarative2.wait_until_succeeds("curl --fail http://simple2:8112")
- declarative.wait_for_unit("deluged")
- declarative.wait_for_unit("delugeweb")
- declarative.wait_until_succeeds("curl --fail http://declarative:3142")
- declarative.succeed("deluge-console 'help' | grep -q 'rm - Remove a torrent'")
- declarative.succeed(
- "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm - Remove a torrent'"
+ declarative1.wait_for_unit("deluged")
+ declarative2.wait_for_unit("deluged")
+ declarative1.wait_for_unit("delugeweb")
+ declarative2.wait_for_unit("delugeweb")
+ declarative1.wait_until_succeeds("curl --fail http://declarative1:3142")
+ declarative2.wait_until_succeeds("curl --fail http://declarative2:3142")
+ declarative1.succeed(
+ "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'"
+ )
+ declarative2.succeed(
+ "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'"
)
'';
})
diff --git a/nixos/tests/hydra/db-migration.nix b/nixos/tests/hydra/db-migration.nix
index aa1c81c9e775..cf74acfd67aa 100644
--- a/nixos/tests/hydra/db-migration.nix
+++ b/nixos/tests/hydra/db-migration.nix
@@ -1,8 +1,14 @@
-{ system ? builtins.currentSystem, ... }:
+{ system ? builtins.currentSystem
+, pkgs ? import ../../.. { inherit system; }
+, ...
+}:
let inherit (import ./common.nix { inherit system; }) baseConfig; in
-{ mig = import ../make-test-python.nix ({ pkgs, lib, ... }: {
+with import ../../lib/testing-python.nix { inherit system pkgs; };
+with pkgs.lib;
+
+{ mig = makeTest {
name = "hydra-db-migration";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ ma27 ];
@@ -82,5 +88,5 @@ let inherit (import ./common.nix { inherit system; }) baseConfig; in
original.shutdown()
'';
- });
+ };
}
diff --git a/nixos/tests/k3s.nix b/nixos/tests/k3s.nix
new file mode 100644
index 000000000000..5bda6f493f0e
--- /dev/null
+++ b/nixos/tests/k3s.nix
@@ -0,0 +1,78 @@
+import ./make-test-python.nix ({ pkgs, ... }:
+
+let
+ # A suitable k3s pause image, also used for the test pod
+ pauseImage = pkgs.dockerTools.buildImage {
+ name = "test.local/pause";
+ tag = "local";
+ contents = with pkgs; [ tini coreutils busybox ];
+ config.Entrypoint = [ "/bin/tini" "--" "/bin/sleep" "inf" ];
+ };
+ testPodYaml = pkgs.writeText "test.yml" ''
+ # Don't use the default service account because there's a race where it may
+ # not be created yet; make our own instead.
+ apiVersion: v1
+ kind: ServiceAccount
+ metadata:
+ name: test
+ ---
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: test
+ spec:
+ serviceAccountName: test
+ containers:
+ - name: test
+ image: test.local/pause:local
+ imagePullPolicy: Never
+ command: ["sh", "-c", "sleep inf"]
+ '';
+in
+{
+ name = "k3s";
+ meta = with pkgs.stdenv.lib.maintainers; {
+ maintainers = [ euank ];
+ };
+
+ nodes = {
+ k3s =
+ { pkgs, ... }: {
+ environment.systemPackages = [ pkgs.k3s pkgs.gzip ];
+
+ # k3s uses enough resources the default vm fails.
+ virtualisation.memorySize = pkgs.lib.mkDefault 1536;
+ virtualisation.diskSize = pkgs.lib.mkDefault 4096;
+
+ services.k3s.enable = true;
+ services.k3s.role = "server";
+ services.k3s.package = pkgs.k3s;
+ # Slightly reduce resource usage
+ services.k3s.extraFlags = "--no-deploy coredns,servicelb,traefik,local-storage,metrics-server --pause-image test.local/pause:local";
+
+ users.users = {
+ noprivs = {
+ isNormalUser = true;
+ description = "Can't access k3s by default";
+ password = "*";
+ };
+ };
+ };
+ };
+
+ testScript = ''
+ start_all()
+
+ k3s.wait_for_unit("k3s")
+ k3s.succeed("k3s kubectl cluster-info")
+ k3s.fail("sudo -u noprivs k3s kubectl cluster-info")
+ # k3s.succeed("k3s check-config") # fails with the current nixos kernel config, uncomment once this passes
+
+ k3s.succeed(
+ "zcat ${pauseImage} | k3s ctr image import -"
+ )
+
+ k3s.succeed("k3s kubectl apply -f ${testPodYaml}")
+ k3s.succeed("k3s kubectl wait --for 'condition=Ready' pod/test")
+ '';
+})