|
|
- #!/usr/bin/make -f
-
- ########################################
- ### Testing
-
- BINDIR ?= $(GOPATH)/bin
-
- ## required to be run first by most tests
- build_docker_test_image:
- docker build -t tester -f ./test/docker/Dockerfile .
-
- ### coverage, app, persistence, and libs tests
- test_cover:
- # run the go unit tests with coverage
- bash test/test_cover.sh
-
- test_apps:
- # run the app tests using bash
- # requires `abci-cli` and `tendermint` binaries installed
- bash test/app/test.sh
-
- test_abci_apps:
- bash abci/tests/test_app/test.sh
-
- test_abci_cli:
- # test the cli against the examples in the tutorial at:
- # ./docs/abci-cli.md
- # if test fails, update the docs ^
- @ bash abci/tests/test_cli/test.sh
-
- test_persistence:
- # run the persistence tests using bash
- # requires `abci-cli` installed
- docker run --name run_persistence -t tester bash test/persist/test_failure_indices.sh
-
- # TODO undockerize
- # bash test/persist/test_failure_indices.sh
-
- test_p2p:
- docker rm -f rsyslog || true
- rm -rf test/logs && mkdir -p test/logs
- docker run -d -v "$(CURDIR)/test/logs:/var/log/" -p 127.0.0.1:5514:514/udp --name rsyslog voxxit/rsyslog
- # requires 'tester' the image from above
- bash test/p2p/test.sh tester
- # the `docker cp` takes a really long time; uncomment for debugging
- #
- # mkdir -p test/p2p/logs && docker cp rsyslog:/var/log test/p2p/logs
-
- test_p2p_ipv6:
- # IPv6 tests require Docker daemon with IPv6 enabled, e.g. in daemon.json:
- #
- # {
- # "ipv6": true,
- # "fixed-cidr-v6": "2001:db8:1::/64"
- # }
- #
- # Docker for Mac can set this via Preferences -> Docker Engine.
- docker rm -f rsyslog || true
- rm -rf test/logs && mkdir -p test/logs
- docker run -d -v "$(CURDIR)/test/logs:/var/log/" -p 127.0.0.1:5514:514/udp --name rsyslog voxxit/rsyslog
- # requires 'tester' the image from above
- bash test/p2p/test.sh tester 6
- # the `docker cp` takes a really long time; uncomment for debugging
- #
- # mkdir -p test/p2p/logs && docker cp rsyslog:/var/log test/p2p/logs
-
- test_integrations:
- make build_docker_test_image
- make tools
- make install
- make test_cover
- make test_apps
- make test_abci_apps
- make test_abci_cli
- make test_libs
- make test_persistence
- make test_p2p
- # Disabled by default since it requires Docker daemon with IPv6 enabled
- #make test_p2p_ipv6
-
- test_release:
- @go test -tags release $(PACKAGES)
-
- test100:
- @for i in {1..100}; do make test; done
-
- vagrant_test:
- vagrant up
- vagrant ssh -c 'make test_integrations'
-
- ### go tests
- test:
- @echo "--> Running go test"
- @go test -p 1 $(PACKAGES)
-
- test_race:
- @echo "--> Running go test --race"
- @go test -p 1 -v -race $(PACKAGES)
-
- # uses https://github.com/sasha-s/go-deadlock/ to detect potential deadlocks
- test_with_deadlock:
- make set_with_deadlock
- make test
- make cleanup_after_test_with_deadlock
-
- set_with_deadlock:
- @echo "Get Goid"
- @go get github.com/petermattis/goid@b0b1615b78e5ee59739545bb38426383b2cda4c9
- @echo "Get Go-Deadlock"
- @go get github.com/sasha-s/go-deadlock@d68e2bc52ae3291765881b9056f2c1527f245f1e
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/sync.RWMutex/deadlock.RWMutex/'
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/sync.Mutex/deadlock.Mutex/'
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 goimports -w
-
- # cleanes up after you ran test_with_deadlock
- cleanup_after_test_with_deadlock:
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/deadlock.RWMutex/sync.RWMutex/'
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/deadlock.Mutex/sync.Mutex/'
- find . -name "*.go" | grep -v "vendor/" | xargs -n 1 goimports -w
- # cleans up the deps to not include the need libs
- go mod tidy
-
- .PHONY: test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test
|