summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-07-29 11:07:00 +0200
committerLudovic Courtès <ludo@gnu.org>2016-07-29 11:39:30 +0200
commit57c7e46d391bea11cacf44f9743c721c070bd3a8 (patch)
treec0bc5f95f55a7b30f59660de943c406b16512910
parent61201e46a72b715e1a38ce56932c3f4f2d3885b4 (diff)
downloadpatches-57c7e46d391bea11cacf44f9743c721c070bd3a8.tar
patches-57c7e46d391bea11cacf44f9743c721c070bd3a8.tar.gz
tests: Improve synchronization in 'tests/guix-register.sh'.
* tests/guix-register.sh: When launching guix-daemon, add retry loop around 'open-connection'. This fixes test failures that could occur under heavy load where the daemon's socket file wouldn't be ready yet when the client connects.
-rw-r--r--tests/guix-register.sh18
1 files changed, 15 insertions, 3 deletions
diff --git a/tests/guix-register.sh b/tests/guix-register.sh
index 360cf55979..521735b8a4 100644
--- a/tests/guix-register.sh
+++ b/tests/guix-register.sh
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -157,8 +157,20 @@ do
# that name in a 'valid-path?' query because 'assertStorePath' would kill
# us because of the wrong prefix. So we just list dead paths instead.
guile -c "
- (use-modules (guix store) (srfi srfi-1))
- (define s (open-connection \"$GUIX_DAEMON_SOCKET\"))
+ (use-modules (guix store) (srfi srfi-1) (srfi srfi-34))
+
+ (define s
+ (let loop ((i 5))
+ (guard (c ((nix-connection-error? c)
+ (if (<= i 0)
+ (raise c)
+ (begin
+ (display \"waiting for daemon socket...\")
+ (newline)
+ (sleep 1)
+ (loop (- i 1))))))
+ (open-connection \"$GUIX_DAEMON_SOCKET\"))))
+
(exit (lset= string=?
(pk 1 (list \"$copied\" \"$copied_duplicate1\"
\"$copied_duplicate2\"))