at master 1.3 kB view raw
1{ pkgs, ... }: 2let 3 4 perlEnv = pkgs.perl.withPackages (p: [ p.NetZooKeeper ]); 5 6in 7{ 8 name = "zookeeper"; 9 meta = with pkgs.lib.maintainers; { 10 maintainers = [ 11 nequissimus 12 ztzg 13 ]; 14 }; 15 16 nodes = { 17 server = 18 { ... }: 19 { 20 services.zookeeper = { 21 enable = true; 22 }; 23 24 networking.firewall.allowedTCPPorts = [ 2181 ]; 25 }; 26 }; 27 28 testScript = '' 29 start_all() 30 31 server.wait_for_unit("zookeeper") 32 server.wait_for_unit("network.target") 33 server.wait_for_open_port(2181) 34 35 server.wait_until_succeeds( 36 "${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 create /foo bar" 37 ) 38 server.wait_until_succeeds( 39 "${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 set /foo hello" 40 ) 41 server.wait_until_succeeds( 42 "${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 get /foo | grep hello" 43 ) 44 45 server.wait_until_succeeds( 46 "${perlEnv}/bin/perl -E 'use Net::ZooKeeper qw(:acls); $z=Net::ZooKeeper->new(q(localhost:2181)); $z->create(qw(/perl foo acl), ZOO_OPEN_ACL_UNSAFE) || die $z->get_error()'" 47 ) 48 server.wait_until_succeeds( 49 "${perlEnv}/bin/perl -E 'use Net::ZooKeeper qw(:acls); $z=Net::ZooKeeper->new(q(localhost:2181)); $z->get(qw(/perl)) eq qw(foo) || die $z->get_error()'" 50 ) 51 ''; 52}