travis+make: execute test groups in parallel
This commit is contained in:
parent
ca7564e4b4
commit
d4068e9892
2
.gitignore
vendored
2
.gitignore
vendored
@ -36,6 +36,8 @@ lntest/itest/output*.log
|
|||||||
lntest/itest/pprof*.log
|
lntest/itest/pprof*.log
|
||||||
lntest/itest/.backendlogs
|
lntest/itest/.backendlogs
|
||||||
lntest/itest/.minerlogs
|
lntest/itest/.minerlogs
|
||||||
|
lntest/itest/lnd-itest
|
||||||
|
lntest/itest/.logs-*
|
||||||
|
|
||||||
cmd/cmd
|
cmd/cmd
|
||||||
*.key
|
*.key
|
||||||
|
21
.travis.yml
21
.travis.yml
@ -50,32 +50,30 @@ jobs:
|
|||||||
- stage: Integration Test
|
- stage: Integration Test
|
||||||
name: Btcd Integration
|
name: Btcd Integration
|
||||||
script:
|
script:
|
||||||
- make itest
|
- make itest-parallel
|
||||||
|
|
||||||
- name: Bitcoind Integration (txindex enabled)
|
- name: Bitcoind Integration (txindex enabled)
|
||||||
script:
|
script:
|
||||||
- bash ./scripts/install_bitcoind.sh
|
- bash ./scripts/install_bitcoind.sh
|
||||||
- make itest backend=bitcoind
|
- make itest-parallel backend=bitcoind
|
||||||
|
|
||||||
- name: Bitcoind Integration (txindex disabled)
|
- name: Bitcoind Integration (txindex disabled)
|
||||||
script:
|
script:
|
||||||
- bash ./scripts/install_bitcoind.sh
|
- bash ./scripts/install_bitcoind.sh
|
||||||
- make itest backend="bitcoind notxindex"
|
- make itest-parallel backend="bitcoind notxindex"
|
||||||
|
|
||||||
- name: Neutrino Integration
|
- name: Neutrino Integration
|
||||||
script:
|
script:
|
||||||
- make itest backend=neutrino
|
- make itest-parallel backend=neutrino
|
||||||
|
|
||||||
- name: Btcd Integration ARM
|
- name: Btcd Integration ARM
|
||||||
script:
|
script:
|
||||||
- GOARM=7 GOARCH=arm GOOS=linux CGO_ENABLED=0 make btcd build-itest
|
- GOARM=7 GOARCH=arm GOOS=linux make itest-parallel
|
||||||
- file lnd-itest
|
|
||||||
- GOARM=7 GOARCH=arm GOOS=linux CGO_ENABLED=0 make itest-only
|
|
||||||
arch: arm64
|
arch: arm64
|
||||||
|
|
||||||
- name: Btcd Integration Windows
|
- name: Btcd Integration Windows
|
||||||
script:
|
script:
|
||||||
- make itest-windows
|
- make itest-parallel-windows
|
||||||
os: windows
|
os: windows
|
||||||
before_install:
|
before_install:
|
||||||
- choco upgrade --no-progress -y make netcat curl findutils
|
- choco upgrade --no-progress -y make netcat curl findutils
|
||||||
@ -85,7 +83,8 @@ jobs:
|
|||||||
case $TRAVIS_OS_NAME in
|
case $TRAVIS_OS_NAME in
|
||||||
windows)
|
windows)
|
||||||
echo "Uploading to termbin.com..."
|
echo "Uploading to termbin.com..."
|
||||||
for f in ./lntest/itest/*.log; do cat $f | nc termbin.com 9999 | xargs -r0 printf "$f"' uploaded to %s'; done
|
LOG_FILES=$(find ./lntest/itest -name '*.log')
|
||||||
|
for f in $LOG_FILES; do echo -n $f; cat $f | nc termbin.com 9999 | xargs -r0 printf ' uploaded to %s'; done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -97,8 +96,8 @@ after_failure:
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
LOG_FILES=./lntest/itest/*.log
|
LOG_FILES=$(find ./lntest/itest -name '*.log')
|
||||||
echo "Uploading to termbin.com..." && find $LOG_FILES | xargs -I{} sh -c "cat {} | nc termbin.com 9999 | xargs -r0 printf '{} uploaded to %s'"
|
echo "Uploading to termbin.com..." && for f in $LOG_FILES; do echo -n $f; cat $f | nc termbin.com 9999 | xargs -r0 printf ' uploaded to %s'; done
|
||||||
echo "Uploading to file.io..." && tar -zcvO $LOG_FILES | curl -s -F 'file=@-;filename=logs.tar.gz' https://file.io | xargs -r0 printf 'logs.tar.gz uploaded to %s\n'
|
echo "Uploading to file.io..." && tar -zcvO $LOG_FILES | curl -s -F 'file=@-;filename=logs.tar.gz' https://file.io | xargs -r0 printf 'logs.tar.gz uploaded to %s\n'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
21
Makefile
21
Makefile
@ -175,6 +175,27 @@ itest-only:
|
|||||||
|
|
||||||
itest: btcd build-itest itest-only
|
itest: btcd build-itest itest-only
|
||||||
|
|
||||||
|
itest-parallel: btcd
|
||||||
|
@$(call print, "Building lnd binary")
|
||||||
|
CGO_ENABLED=0 $(GOBUILD) -tags="$(ITEST_TAGS)" -o lntest/itest/lnd-itest $(ITEST_LDFLAGS) $(PKG)/cmd/lnd
|
||||||
|
|
||||||
|
@$(call print, "Building itest binary for $(backend) backend")
|
||||||
|
CGO_ENABLED=0 $(GOTEST) -v ./lntest/itest -tags="$(DEV_TAGS) $(RPC_TAGS) rpctest $(backend)" -logoutput -goroutinedump -c -o lntest/itest/itest.test
|
||||||
|
|
||||||
|
@$(call print, "Running tests")
|
||||||
|
rm -rf lntest/itest/*.log lntest/itest/.logs-*
|
||||||
|
echo -n "$$(seq 0 $$(expr $(NUM_ITEST_TRANCHES) - 1))" | xargs -P $(NUM_ITEST_TRANCHES) -n 1 -I {} scripts/itest_part.sh {} $(NUM_ITEST_TRANCHES) $(TEST_FLAGS)
|
||||||
|
|
||||||
|
itest-parallel-windows: btcd
|
||||||
|
@$(call print, "Building lnd binary")
|
||||||
|
CGO_ENABLED=0 $(GOBUILD) -tags="$(ITEST_TAGS)" -o lntest/itest/lnd-itest.exe $(ITEST_LDFLAGS) $(PKG)/cmd/lnd
|
||||||
|
|
||||||
|
@$(call print, "Building itest binary for $(backend) backend")
|
||||||
|
CGO_ENABLED=0 $(GOTEST) -v ./lntest/itest -tags="$(DEV_TAGS) $(RPC_TAGS) rpctest $(backend)" -logoutput -goroutinedump -c -o lntest/itest/itest.test.exe
|
||||||
|
|
||||||
|
@$(call print, "Running tests")
|
||||||
|
EXEC_SUFFIX=".exe" echo -n "$$(seq 0 $$(expr $(NUM_ITEST_TRANCHES) - 1))" | xargs -P $(NUM_ITEST_TRANCHES) -n 1 -I {} scripts/itest_part.sh {} $(NUM_ITEST_TRANCHES) $(TEST_FLAGS)
|
||||||
|
|
||||||
itest-windows: btcd build-itest-windows itest-only
|
itest-windows: btcd build-itest-windows itest-only
|
||||||
|
|
||||||
unit: btcd
|
unit: btcd
|
||||||
|
@ -3,12 +3,18 @@ RPC_TAGS = autopilotrpc chainrpc invoicesrpc routerrpc signrpc verrpc walletrpc
|
|||||||
LOG_TAGS =
|
LOG_TAGS =
|
||||||
TEST_FLAGS =
|
TEST_FLAGS =
|
||||||
COVER_PKG = $$(go list -deps ./... | grep '$(PKG)' | grep -v lnrpc)
|
COVER_PKG = $$(go list -deps ./... | grep '$(PKG)' | grep -v lnrpc)
|
||||||
|
NUM_ITEST_TRANCHES = 6
|
||||||
|
|
||||||
# If rpc option is set also add all extra RPC tags to DEV_TAGS
|
# If rpc option is set also add all extra RPC tags to DEV_TAGS
|
||||||
ifneq ($(with-rpc),)
|
ifneq ($(with-rpc),)
|
||||||
DEV_TAGS += $(RPC_TAGS)
|
DEV_TAGS += $(RPC_TAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Scale the number of parallel running itest tranches.
|
||||||
|
ifneq ($(tranches),)
|
||||||
|
NUM_ITEST_TRANCHES = $(tranches)
|
||||||
|
endif
|
||||||
|
|
||||||
# If specific package is being unit tested, construct the full name of the
|
# If specific package is being unit tested, construct the full name of the
|
||||||
# subpackage.
|
# subpackage.
|
||||||
ifneq ($(pkg),)
|
ifneq ($(pkg),)
|
||||||
@ -25,7 +31,7 @@ endif
|
|||||||
|
|
||||||
# Define the integration test.run filter if the icase argument was provided.
|
# Define the integration test.run filter if the icase argument was provided.
|
||||||
ifneq ($(icase),)
|
ifneq ($(icase),)
|
||||||
TEST_FLAGS += -test.run=TestLightningNetworkDaemon/$(icase)
|
TEST_FLAGS += -test.run="TestLightningNetworkDaemon/.*-of-.*/.*/$(icase)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(tags),)
|
ifneq ($(tags),)
|
||||||
|
23
scripts/itest_part.sh
Executable file
23
scripts/itest_part.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Let's work with absolute paths only, we run in the itest directory itself.
|
||||||
|
WORKDIR=$(pwd)/lntest/itest
|
||||||
|
|
||||||
|
TRANCHE=$1
|
||||||
|
NUM_TRANCHES=$2
|
||||||
|
|
||||||
|
# Shift the passed parameters by two, giving us all remaining testing flags in
|
||||||
|
# the $@ special variable.
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
|
||||||
|
# Windows insists on having the .exe suffix for an executable, we need to add
|
||||||
|
# that here if necessary.
|
||||||
|
EXEC="$WORKDIR"/itest.test"$EXEC_SUFFIX"
|
||||||
|
LND_EXEC="$WORKDIR"/lnd-itest"$EXEC_SUFFIX"
|
||||||
|
echo $EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs-tranche$TRANCHE -lndexec=$LND_EXEC -splittranches=$NUM_TRANCHES -runtranche=$TRANCHE
|
||||||
|
|
||||||
|
# Exit code 255 causes the parallel jobs to abort, so if one part fails the
|
||||||
|
# other is aborted too.
|
||||||
|
cd "$WORKDIR" || exit 255
|
||||||
|
$EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs-tranche$TRANCHE -lndexec=$LND_EXEC -splittranches=$NUM_TRANCHES -runtranche=$TRANCHE || exit 255
|
Loading…
Reference in New Issue
Block a user