From daac24626e01996e925c3f55d371d460b25e4c6d Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Tue, 20 Sep 2016 01:16:08 -0500 Subject: [PATCH] build: execute tests across all packages serially This modifies the goclean.sh to execute all the tests amongst the packages serially. The default behavior of the `go test` command is to execute all tests in parallel amongst the listed packages. This behavior can at times cause tests which use the `rpctest` package to fail due to multiple `btcd` nodes attempting to bind to the same port simultaneously. As only one node can successfully bind to the port, the btcd processes for the other concurrent harness instances exit silently causing the RPC clients to fail with connection timeouts as their target process no longer exists. Executing all tests serially eliminates such a race condition which can cause non-deterministic test failures. --- goclean.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/goclean.sh b/goclean.sh index 8a4e8379..1c77bceb 100755 --- a/goclean.sh +++ b/goclean.sh @@ -12,7 +12,7 @@ set -ex test -z "$(go fmt $(glide novendor) | tee /dev/stderr)" test -z "$(for package in $(glide novendor); do golint $package; done | grep -v 'ALL_CAPS\|OP_\|NewFieldVal' | tee /dev/stderr)" test -z "$(go vet $(glide novendor) 2>&1 | tee /dev/stderr)" -env GORACE="halt_on_error=1" go test -v -race $(glide novendor) +env GORACE="halt_on_error=1" go test -p 1 -v -race $(glide novendor) # Run test coverage on each subdirectories and merge the coverage profile.