diff options
author | Ferenc Szabo <frncmx@gmail.com> | 2019-02-22 21:20:21 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2019-02-22 21:20:21 +0800 |
commit | d9adcd3a27cb14042bdb230f073487192683390c (patch) | |
tree | 19293e4e39e67659693340d77099caf730dda9bb /build | |
parent | 1993227311f2e67398a5796f3d5a0dbe48c4409f (diff) | |
download | go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar.gz go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar.bz2 go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar.lz go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar.xz go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.tar.zst go-tangerine-d9adcd3a27cb14042bdb230f073487192683390c.zip |
travis.yml: add race detector job for Swarm (#19148)
Diffstat (limited to 'build')
-rwxr-xr-x | build/travis_keepalive.sh | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/build/travis_keepalive.sh b/build/travis_keepalive.sh new file mode 100755 index 000000000..77cc623ea --- /dev/null +++ b/build/travis_keepalive.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# travis_keepalive runs the given command and preserves its return value, +# while it forks a child process what periodically produces a log line, +# so that Travis won't abort the build after 10 minutes. + +# Why? +# `t.Log()` in Go holds the buffer until the test does not pass or fail, +# and `-race` can increase the execution time by 2-20x. + +set -euo pipefail + +readonly KEEPALIVE_INTERVAL=300 # seconds => 5m + +main() { + keepalive + $@ +} + +# Keepalive produces a log line in each KEEPALIVE_INTERVAL. +keepalive() { + local child_pid + # Note: We fork here! + repeat "keepalive" & + child_pid=$! + ensureChildOnEXIT "${child_pid}" +} + +repeat() { + local this="$1" + while true; do + echo "${this}" + sleep "${KEEPALIVE_INTERVAL}" + done +} + +# Ensures that the child gets killed on normal program exit. +ensureChildOnEXIT() { + # Note: SIGINT and SIGTERM are forwarded to the child process by Bash + # automatically, so we don't have to deal with signals. + + local child_pid="$1" + trap "kill ${child_pid}" EXIT +} + +main "$@" |