forked from ethereum/go-ethereum
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
travis.yml: add race detector job for Swarm (ethereum#19148)
- Loading branch information
Showing
2 changed files
with
61 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -53,7 +53,7 @@ matrix: | |
- go run build/ci.go lint | ||
|
||
# This builder does the Ubuntu PPA upload | ||
- if: type = push | ||
- if: repo = ethereum/go-ethereum AND type = push | ||
os: linux | ||
dist: trusty | ||
go: 1.11.x | ||
|
@@ -75,7 +75,7 @@ matrix: | |
- go run build/ci.go debsrc -upload ethereum/ethereum -sftp-user geth-ci -signer "Go Ethereum Linux Builder <[email protected]>" | ||
|
||
# This builder does the Linux Azure uploads | ||
- if: type = push | ||
- if: repo = ethereum/go-ethereum AND type = push | ||
os: linux | ||
dist: trusty | ||
sudo: required | ||
|
@@ -109,7 +109,7 @@ matrix: | |
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds | ||
|
||
# This builder does the Linux Azure MIPS xgo uploads | ||
- if: type = push | ||
- if: repo = ethereum/go-ethereum AND type = push | ||
os: linux | ||
dist: trusty | ||
services: | ||
|
@@ -137,7 +137,7 @@ matrix: | |
- go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds | ||
|
||
# This builder does the Android Maven and Azure uploads | ||
- if: type = push | ||
- if: repo = ethereum/go-ethereum AND type = push | ||
os: linux | ||
dist: trusty | ||
addons: | ||
|
@@ -175,7 +175,7 @@ matrix: | |
- go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds | ||
|
||
# This builder does the OSX Azure, iOS CocoaPods and iOS Azure uploads | ||
- if: type = push | ||
- if: repo = ethereum/go-ethereum AND type = push | ||
os: osx | ||
go: 1.11.x | ||
env: | ||
|
@@ -204,7 +204,7 @@ matrix: | |
- go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload gethstore/builds | ||
|
||
# This builder does the Azure archive purges to avoid accumulating junk | ||
- if: type = cron | ||
- if: repo = ethereum/go-ethereum AND type = cron | ||
os: linux | ||
dist: trusty | ||
go: 1.11.x | ||
|
@@ -214,3 +214,12 @@ matrix: | |
submodules: false # avoid cloning ethereum/tests | ||
script: | ||
- go run build/ci.go purge -store gethstore/builds -days 14 | ||
|
||
- name: Race Detector for Swarm | ||
if: repo = ethersphere/go-ethereum | ||
os: linux | ||
dist: trusty | ||
go: 1.11.x | ||
git: | ||
submodules: false # avoid cloning ethereum/tests | ||
script: ./build/travis_keepalive.sh go test -v -timeout 20m -race ./swarm... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 "$@" |