Merge branch 'staging-next' into staging
[NixPkgs.git] / nixos / tests / redis.nix
blob6c84701c9c0a98faad7569842c296f71f73cff7f
2   system ? builtins.currentSystem,
3   config ? { },
4   pkgs ? import ../../.. { inherit system config; },
6   lib ? pkgs.lib,
7 }:
8 let
9   makeTest = import ./make-test-python.nix;
10   mkTestName =
11     pkg: "${pkg.pname}_${builtins.replaceStrings [ "." ] [ "" ] (lib.versions.majorMinor pkg.version)}";
12   redisPackages = {
13     inherit (pkgs) redis keydb;
14   };
15   makeRedisTest =
16     {
17       package,
18       name ? mkTestName package,
19     }:
20     makeTest {
21       inherit name;
22       meta.maintainers = [
23         lib.maintainers.flokli
24         lib.teams.helsinki-systems.members
25       ];
27       nodes = {
28         machine =
29           { lib, ... }:
31           {
32             services = {
33               redis = {
34                 inherit package;
35                 servers."".enable = true;
36                 servers."test".enable = true;
37               };
38             };
40             users.users = lib.listToAttrs (
41               map
42                 (
43                   suffix:
44                   lib.nameValuePair "member${suffix}" {
45                     createHome = false;
46                     description = "A member of the redis${suffix} group";
47                     isNormalUser = true;
48                     extraGroups = [ "redis${suffix}" ];
49                   }
50                 )
51                 [
52                   ""
53                   "-test"
54                 ]
55             );
56           };
57       };
59       testScript =
60         { nodes, ... }:
61         let
62           inherit (nodes.machine.services) redis;
63         in
64         ''
65           start_all()
66           machine.wait_for_unit("redis")
67           machine.wait_for_unit("redis-test")
69           # The unnamed Redis server still opens a port for backward-compatibility
70           machine.wait_for_open_port(6379)
72           machine.wait_for_file("${redis.servers."".unixSocket}")
73           machine.wait_for_file("${redis.servers."test".unixSocket}")
75           # The unix socket is accessible to the redis group
76           machine.succeed('su member -c "${pkgs.redis}/bin/redis-cli ping | grep PONG"')
77           machine.succeed('su member-test -c "${pkgs.redis}/bin/redis-cli ping | grep PONG"')
79           machine.succeed("${pkgs.redis}/bin/redis-cli ping | grep PONG")
80           machine.succeed("${pkgs.redis}/bin/redis-cli -s ${redis.servers."".unixSocket} ping | grep PONG")
81           machine.succeed("${pkgs.redis}/bin/redis-cli -s ${
82             redis.servers."test".unixSocket
83           } ping | grep PONG")
84         '';
85     };
87 lib.mapAttrs (_: package: makeRedisTest { inherit package; }) redisPackages