Thread (12 messages) flat view 12 messages, 2 authors, 2016-06-15

Re: [PATCH v4 3/4] git-p4: retry kill/cleanup operations in tests with timeout

From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:12

On Fri, Nov 6, 2015 at 3:58 AM,  [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In rare cases kill/cleanup operations in tests fail. Retry these
operations with a timeout to make the test less flaky.

Signed-off-by: Lars Schneider <redacted>
---
diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
+retry_until_success() {
+    timeout=$(($(date +%s) + $RETRY_TIMEOUT))
+    until "$@" 2>/dev/null || test $(date +%s) -gt $timeout
+    do :
+    done
+}
+
+retry_until_fail() {
+    timeout=$(($(date +%s) + $RETRY_TIMEOUT))
+    until ! "$@" 2>/dev/null || test $(date +%s) -gt $timeout
+    do :
+    done
+}
I'm confused by this. Patch 2/4 was already calling
retry_until_fail(), but it's introduction seems to be here in patch
3/4. Am I missing something obvious?
quoted hunk ↗ jump to hunk
 kill_p4d() {
        pid=$(cat "$pidfile")
-       # it had better exist for the first kill
-       kill $pid &&
-       for i in 1 2 3 4 5 ; do
-               kill $pid >/dev/null 2>&1 || break
-               sleep 1
-       done &&
+       retry_until_fail kill $pid
+       retry_until_fail kill -9 $pid
        # complain if it would not die
        test_must_fail kill $pid >/dev/null 2>&1 &&
        rm -rf "$db" "$cli" "$pidfile" &&
@@ -153,8 +167,9 @@ kill_p4d() {
 }

 cleanup_git() {
-       rm -rf "$git" &&
-       mkdir "$git"
+       retry_until_success rm -r "$git"
+       test_must_fail test -d "$git" &&
+       retry_until_success mkdir "$git"
 }

 marshal_dump() {
--
2.5.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help