From b42c5e5fad7567fc8c9862b5598c91a73438a7a8 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Thu, 3 Dec 2020 11:30:27 +0100 Subject: [PATCH] make+scripts: use pre-compiled btcd in itest To make sure we build the exact version of btcd that is referenced in the project's go.mod file and to not overwrite any binary the user might already have installed on the system, we compile btcd into an explicit file in the itest directory. This should also speed up invocations of "make itest-only" because the test harness doesn't always compile btcd on its own. We also fix a bug with the version parsing where adding a "replace" directive in the go.mod would result in the awk commands to extract the wrong version. Because we no longer use the DEPGET goal to build and install btcd, using a replace directive now actually works for itests. --- .gitignore | 1 + Makefile | 25 +++++++++++-------------- scripts/itest_part.sh | 5 +++-- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index daa3e220..59422627 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ lntest/itest/*.log lntest/itest/.backendlogs lntest/itest/.minerlogs lntest/itest/lnd-itest +lntest/itest/btcd-itest lntest/itest/.logs-* cmd/cmd diff --git a/Makefile b/Makefile index b27a4dac..4b10a2ff 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,6 @@ GOACC_BIN := $(GO_BIN)/go-acc GOFUZZ_BUILD_BIN := $(GO_BIN)/go-fuzz-build GOFUZZ_BIN := $(GO_BIN)/go-fuzz -BTCD_DIR :=${GOPATH}/src/$(BTCD_PKG) MOBILE_BUILD_DIR :=${GOPATH}/src/$(MOBILE_PKG)/build IOS_BUILD_DIR := $(MOBILE_BUILD_DIR)/ios IOS_BUILD := $(IOS_BUILD_DIR)/Lndmobile.framework @@ -32,7 +31,7 @@ COMMIT_HASH := $(shell git rev-parse HEAD) BTCD_COMMIT := $(shell cat go.mod | \ grep $(BTCD_PKG) | \ - tail -n1 | \ + head -n1 | \ awk -F " " '{ print $$2 }' | \ awk -F "/" '{ print $$1 }') @@ -140,9 +139,12 @@ build: $(GOBUILD) -tags="$(DEV_TAGS)" -o lncli-debug $(DEV_LDFLAGS) $(PKG)/cmd/lncli build-itest: - @$(call print, "Building itest lnd and lncli.") - $(GOBUILD) -tags="$(ITEST_TAGS)" -o lnd-itest$(EXEC_SUFFIX) $(ITEST_LDFLAGS) $(PKG)/cmd/lnd - $(GOBUILD) -tags="$(ITEST_TAGS)" -o lncli-itest$(EXEC_SUFFIX) $(ITEST_LDFLAGS) $(PKG)/cmd/lncli + @$(call print, "Building itest btcd and lnd.") + CGO_ENABLED=0 $(GOBUILD) -tags="rpctest" -o lntest/itest/btcd-itest$(EXEC_SUFFIX) $(ITEST_LDFLAGS) $(BTCD_PKG) + CGO_ENABLED=0 $(GOBUILD) -tags="$(ITEST_TAGS)" -o lntest/itest/lnd-itest$(EXEC_SUFFIX) $(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)" -c -o lntest/itest/itest.test$(EXEC_SUFFIX) install: @$(call print, "Installing lnd and lncli.") @@ -169,18 +171,13 @@ itest-only: EXEC_SUFFIX=$(EXEC_SUFFIX) scripts/itest_part.sh 0 1 $(TEST_FLAGS) $(ITEST_FLAGS) lntest/itest/log_check_errors.sh -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$(EXEC_SUFFIX) $(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$(EXEC_SUFFIX) +itest: build-itest itest-only +itest-parallel: build-itest @$(call print, "Running tests") - rm -rf lntest/itest/*.log lntest/itest/.logs-* + rm -rf lntest/itest/*.log lntest/itest/.logs-*; date EXEC_SUFFIX=$(EXEC_SUFFIX) echo "$$(seq 0 $$(expr $(ITEST_PARALLELISM) - 1))" | xargs -P $(ITEST_PARALLELISM) -n 1 -I {} scripts/itest_part.sh {} $(NUM_ITEST_TRANCHES) $(TEST_FLAGS) + lntest/itest/log_check_errors.sh unit: btcd @$(call print, "Running unit tests.") diff --git a/scripts/itest_part.sh b/scripts/itest_part.sh index 52c3481c..c086c9af 100755 --- a/scripts/itest_part.sh +++ b/scripts/itest_part.sh @@ -15,9 +15,10 @@ shift # 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 +BTCD_EXEC="$WORKDIR"/btcd-itest"$EXEC_SUFFIX" +echo $EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs-tranche$TRANCHE -lndexec=$LND_EXEC -btcdexec=$BTCD_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 +$EXEC -test.v "$@" -logoutput -goroutinedump -logdir=.logs-tranche$TRANCHE -lndexec=$LND_EXEC -btcdexec=$BTCD_EXEC -splittranches=$NUM_TRANCHES -runtranche=$TRANCHE || exit 255