travis.yml: add race detector job for Swarm (#19148)
This commit is contained in:
parent
1993227311
commit
d9adcd3a27
21
.travis.yml
21
.travis.yml
|
@ -53,7 +53,7 @@ matrix:
|
||||||
- go run build/ci.go lint
|
- go run build/ci.go lint
|
||||||
|
|
||||||
# This builder does the Ubuntu PPA upload
|
# This builder does the Ubuntu PPA upload
|
||||||
- if: type = push
|
- if: repo = ethereum/go-ethereum AND type = push
|
||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
go: 1.11.x
|
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 <geth-ci@ethereum.org>"
|
- go run build/ci.go debsrc -upload ethereum/ethereum -sftp-user geth-ci -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>"
|
||||||
|
|
||||||
# This builder does the Linux Azure uploads
|
# This builder does the Linux Azure uploads
|
||||||
- if: type = push
|
- if: repo = ethereum/go-ethereum AND type = push
|
||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
sudo: required
|
sudo: required
|
||||||
|
@ -109,7 +109,7 @@ matrix:
|
||||||
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
|
- 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
|
# This builder does the Linux Azure MIPS xgo uploads
|
||||||
- if: type = push
|
- if: repo = ethereum/go-ethereum AND type = push
|
||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
services:
|
services:
|
||||||
|
@ -137,7 +137,7 @@ matrix:
|
||||||
- go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
|
- 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
|
# This builder does the Android Maven and Azure uploads
|
||||||
- if: type = push
|
- if: repo = ethereum/go-ethereum AND type = push
|
||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
addons:
|
addons:
|
||||||
|
@ -175,7 +175,7 @@ matrix:
|
||||||
- go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds
|
- 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
|
# 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
|
os: osx
|
||||||
go: 1.11.x
|
go: 1.11.x
|
||||||
env:
|
env:
|
||||||
|
@ -204,7 +204,7 @@ matrix:
|
||||||
- go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload gethstore/builds
|
- 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
|
# This builder does the Azure archive purges to avoid accumulating junk
|
||||||
- if: type = cron
|
- if: repo = ethereum/go-ethereum AND type = cron
|
||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
go: 1.11.x
|
go: 1.11.x
|
||||||
|
@ -214,3 +214,12 @@ matrix:
|
||||||
submodules: false # avoid cloning ethereum/tests
|
submodules: false # avoid cloning ethereum/tests
|
||||||
script:
|
script:
|
||||||
- go run build/ci.go purge -store gethstore/builds -days 14
|
- 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...
|
||||||
|
|
|
@ -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 "$@"
|
Loading…
Reference in New Issue