From 4f592d4f29a06a553858bf50d64deda6752168e5 Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Sun, 23 Nov 2014 12:16:50 +0100 Subject: nixos/etcd: fix postStart check and make tests deterministic --- nixos/modules/services/misc/etcd.nix | 7 +++++-- nixos/tests/etcd.nix | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/nixos/modules/services/misc/etcd.nix b/nixos/modules/services/misc/etcd.nix index 550d351ccfbe..284361a04d9e 100644 --- a/nixos/modules/services/misc/etcd.nix +++ b/nixos/modules/services/misc/etcd.nix @@ -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 ''; diff --git a/nixos/tests/etcd.nix b/nixos/tests/etcd.nix index 6c6dd84f558d..ace5e05b170a 100644 --- a/nixos/tests/etcd.nix +++ b/nixos/tests/etcd.nix @@ -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'"); }; ''; } -- cgit 1.4.1