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 { initialCluster = mkOption {
description = "Etcd initial cluster configuration for bootstrapping."; 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; type = types.listOf types.str;
}; };
@ -123,7 +123,10 @@ in {
if [ "$(id -u)" = 0 ]; then chown etcd ${cfg.dataDir}; fi if [ "$(id -u)" = 0 ]; then chown etcd ${cfg.dataDir}; fi
''; '';
postStart = '' 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; sleep 1;
done done
''; '';

View File

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