at master 2.6 kB view raw
1{ 2 system ? builtins.currentSystem, 3 config ? { }, 4 pkgs ? import ../../.. { inherit system config; }, 5 6 lib ? pkgs.lib, 7}: 8let 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 valkey; 14 }; 15 makeRedisTest = 16 { 17 package, 18 name ? mkTestName package, 19 }: 20 makeTest { 21 inherit name; 22 meta.maintainers = [ 23 lib.maintainers.flokli 24 ] 25 ++ lib.teams.helsinki-systems.members; 26 27 nodes = { 28 machine = 29 { lib, ... }: 30 31 { 32 services = { 33 redis = { 34 inherit package; 35 servers."".enable = true; 36 servers."test".enable = true; 37 }; 38 }; 39 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 }; 58 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") 68 69 # The unnamed Redis server still opens a port for backward-compatibility 70 machine.wait_for_open_port(6379) 71 72 machine.wait_for_file("${redis.servers."".unixSocket}") 73 machine.wait_for_file("${redis.servers."test".unixSocket}") 74 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"') 78 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 }; 86in 87lib.mapAttrs (_: package: makeRedisTest { inherit package; }) redisPackages