1import ./make-test-python.nix ({ pkgs, lib, ... }:
2{
3 name = "redis";
4 meta.maintainers = with lib.maintainers; [ flokli ];
5
6 nodes = {
7 machine =
8 { pkgs, lib, ... }:
9
10 {
11 services.redis.servers."".enable = true;
12 services.redis.servers."test".enable = true;
13
14 users.users = lib.listToAttrs (map (suffix: lib.nameValuePair "member${suffix}" {
15 createHome = false;
16 description = "A member of the redis${suffix} group";
17 isNormalUser = true;
18 extraGroups = [ "redis${suffix}" ];
19 }) ["" "-test"]);
20 };
21 };
22
23 testScript = { nodes, ... }: let
24 inherit (nodes.machine.config.services) redis;
25 in ''
26 start_all()
27 machine.wait_for_unit("redis")
28 machine.wait_for_unit("redis-test")
29
30 # The unnamed Redis server still opens a port for backward-compatibility
31 machine.wait_for_open_port(6379)
32
33 machine.wait_for_file("${redis.servers."".unixSocket}")
34 machine.wait_for_file("${redis.servers."test".unixSocket}")
35
36 # The unix socket is accessible to the redis group
37 machine.succeed('su member -c "redis-cli ping | grep PONG"')
38 machine.succeed('su member-test -c "redis-cli ping | grep PONG"')
39
40 machine.succeed("redis-cli ping | grep PONG")
41 machine.succeed("redis-cli -s ${redis.servers."".unixSocket} ping | grep PONG")
42 machine.succeed("redis-cli -s ${redis.servers."test".unixSocket} ping | grep PONG")
43 '';
44})