at 18.03-beta 2.2 kB view raw
1import ./make-test.nix ({ pkgs, ...}: 2let 3 user = "cassandra"; 4 nodeCfg = nodes: selfIP: cassandraOpts: 5 { 6 services.cassandra = { 7 enable = true; 8 listenAddress = selfIP; 9 rpcAddress = "0.0.0.0"; 10 seeds = [ "192.168.1.1" ]; 11 package = pkgs.cassandra_2_0; 12 jre = pkgs.openjdk; 13 clusterName = "ci ahoy"; 14 authenticator = "PasswordAuthenticator"; 15 authorizer = "CassandraAuthorizer"; 16 user = user; 17 } // cassandraOpts; 18 nixpkgs.config.allowUnfree = true; 19 virtualisation.memorySize = 1024; 20 }; 21 22in 23{ 24 name = "cassandra-ci"; 25 26 nodes = { 27 cass0 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.1" {}; 28 cass1 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.2" {}; 29 cass2 = {pkgs, config, nodes, ...}: nodeCfg nodes "192.168.1.3" { 30 extraParams = [ 31 ''JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=192.168.1.2"'' 32 ]; 33 listenAddress = "192.168.1.3"; 34 }; 35 }; 36 37 testScript = '' 38 subtest "start seed", sub { 39 $cass0->waitForUnit("cassandra.service"); 40 $cass0->waitForOpenPort(9160); 41 $cass0->execute("echo show version | cqlsh localhost -u cassandra -p cassandra"); 42 sleep 2; 43 $cass0->succeed("echo show version | cqlsh localhost -u cassandra -p cassandra"); 44 $cass1->start; 45 }; 46 subtest "cassandra user/group", sub { 47 $cass0->succeed("id \"${user}\" >/dev/null"); 48 $cass1->succeed("id \"${user}\" >/dev/null"); 49 }; 50 subtest "bring up cassandra cluster", sub { 51 $cass1->waitForUnit("cassandra.service"); 52 $cass0->waitUntilSucceeds("nodetool status | grep -c UN | grep 2"); 53 }; 54 subtest "break and fix node", sub { 55 $cass0->block; 56 $cass0->waitUntilSucceeds("nodetool status | grep -c DN | grep 1"); 57 $cass0->unblock; 58 $cass0->waitUntilSucceeds("nodetool status | grep -c UN | grep 2"); 59 }; 60 subtest "replace crashed node", sub { 61 $cass1->crash; 62 $cass2->start; 63 $cass2->waitForUnit("cassandra.service"); 64 $cass0->waitUntilFails("nodetool status | grep UN | grep 192.168.1.2"); 65 $cass0->waitUntilSucceeds("nodetool status | grep UN | grep 192.168.1.3"); 66 }; 67 ''; 68})