nixos/etcd: fix postStart check and make tests deterministic

This commit is contained in:
Jaka Hudoklin 2014-11-23 12:16:50 +01:00
parent d1493bc1ee
commit 4f592d4f29
2 changed files with 8 additions and 5 deletions

View File

@ -46,7 +46,7 @@ in {
initialCluster = mkOption {
description = "Etcd initial cluster configuration for bootstrapping.";
default = ["${cfg.name}=http://localhost:2380" "${cfg.name}=http://localhost:7001"];
default = ["${cfg.name}=http://localhost:7001"];
type = types.listOf types.str;
};
@ -123,7 +123,10 @@ in {
if [ "$(id -u)" = 0 ]; then chown etcd ${cfg.dataDir}; fi
'';
postStart = ''
until ${pkgs.curl}/bin/curl -s -o /dev/null '${head cfg.listenClientUrls}/version'; do
until ${pkgs.etcdctl}/bin/etcdctl set /nixos/state 'up'; do
sleep 1;
done
until ${pkgs.etcdctl}/bin/etcdctl get /nixos/state | grep up; do
sleep 1;
done
'';

View File

@ -80,7 +80,7 @@ import ./make-test.nix {
$simple->start();
$simple->waitForUnit("etcd.service");
$simple->succeed("etcdctl set /foo/bar 'Hello world'");
$simple->succeed("etcdctl get /foo/bar | grep 'Hello world'");
$simple->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
};
subtest "multy node", sub {
@ -89,7 +89,7 @@ import ./make-test.nix {
$node1->waitForUnit("etcd.service");
$node2->waitForUnit("etcd.service");
$node1->succeed("etcdctl set /foo/bar 'Hello world'");
$node2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
$node2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
$node1->shutdown();
$node2->shutdown();
};
@ -102,7 +102,7 @@ import ./make-test.nix {
$discovery1->waitForUnit("etcd.service");
$discovery2->waitForUnit("etcd.service");
$discovery1->succeed("etcdctl set /foo/bar 'Hello world'");
$discovery2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
$discovery2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
};
'';
}