summaryrefslogtreecommitdiffstats
path: root/nixos/tests/lvm2/default.nix
blob: 55e12bb39aefc912dcb535a90180cb2fb09e2919 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{
  pkgs,
  runTest,
  kernelVersionsToTest ? [
    "5.10"
    "5.15"
    "6.1"
    "6.6"
    "6.12"
    "latest"
  ],
}:

# For quickly running a test, the nixosTests.lvm2.lvm-thinpool-linux-latest attribute is recommended
let
  inherit (pkgs) lib;

  tests = {
    thinpool = {
      test = ./thinpool.nix;
      kernelFilter = lib.id;
    };
    # we would like to test all versions, but the kernel module currently does not compile against the other versions
    vdo = {
      test = ./vdo.nix;
      kernelFilter = lib.filter (v: v == "latest");
    };

    # systemd in stage 1
    raid-sd-stage-1 = {
      test = ./systemd-stage-1.nix;
      kernelFilter = lib.filter (v: v != "5.15");
      flavour = "raid";
    };
    thinpool-sd-stage-1 = {
      test = ./systemd-stage-1.nix;
      kernelFilter = lib.id;
      flavour = "thinpool";
    };
    vdo-sd-stage-1 = {
      test = ./systemd-stage-1.nix;
      kernelFilter = lib.filter (v: v == "latest");
      flavour = "vdo";
    };
  };
in
lib.listToAttrs (
  lib.filter (x: x.value != { }) (
    lib.flip lib.concatMap kernelVersionsToTest (
      version:
      let
        v' = lib.replaceStrings [ "." ] [ "_" ] version;
        mkXfsFlags =
          lib.optionalString (lib.versionOlder version "5.10") " -m bigtime=0 -m inobtcount=0 "
          + lib.optionalString (lib.versionOlder version "5.19") " -i nrext64=0 ";
      in
      lib.flip lib.mapAttrsToList tests (
        name: t:
        lib.nameValuePair "lvm-${name}-linux-${v'}" (
          lib.optionalAttrs (builtins.elem version (t.kernelFilter kernelVersionsToTest)) (runTest {
            imports = [ t.test ];
            _module.args = {
              kernelPackages = pkgs."linuxPackages_${v'}";
              inherit mkXfsFlags;
            }
            // removeAttrs t [
              "test"
              "kernelFilter"
            ];
          })
        )
      )
    )
  )
)