1BSON_PKGS = $(shell etc/list_pkgs.sh ./bson) 2BSON_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./bson) 3MONGO_PKGS = $(shell etc/list_pkgs.sh ./mongo) 4MONGO_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./mongo) 5UNSTABLE_PKGS = $(shell etc/list_pkgs.sh ./x) 6UNSTABLE_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./x) 7TAG_PKG = $(shell etc/list_pkgs.sh ./tag) 8TAG_TEST_PKG = $(shell etc/list_test_pkgs.sh ./tag) 9EXAMPLES_PKGS = $(shell etc/list_pkgs.sh ./examples) 10EXAMPLES_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./examples) 11PKGS = $(BSON_PKGS) $(MONGO_PKGS) $(UNSTABLE_PKGS) $(TAG_PKG) $(EXAMPLES_PKGS) 12TEST_PKGS = $(BSON_TEST_PKGS) $(MONGO_TEST_PKGS) $(UNSTABLE_TEST_PKGS) $(TAG_PKG) $(EXAMPLES_TEST_PKGS) 13ATLAS_URIS = "$(ATLAS_FREE)" "$(ATLAS_REPLSET)" "$(ATLAS_SHARD)" "$(ATLAS_TLS11)" "$(ATLAS_TLS12)" "$(ATLAS_FREE_SRV)" "$(ATLAS_REPLSET_SRV)" "$(ATLAS_SHARD_SRV)" "$(ATLAS_TLS11_SRV)" "$(ATLAS_TLS12_SRV)" 14 15TEST_TIMEOUT = 600 16 17.PHONY: default 18default: check-env check-fmt vet build-examples lint errcheck test-cover test-race 19 20.PHONY: check-env 21check-env: 22 etc/check_env.sh 23 24.PHONY: doc 25doc: 26 godoc -http=:6060 -index 27 28.PHONY: build-examples 29build-examples: 30 go build $(BUILD_TAGS) ./examples/... ./x/mongo/driver/examples/... 31 32.PHONY: build 33build: 34 go build $(filter-out ./core/auth/internal/gssapi,$(PKGS)) 35 36.PHONY: build-cse 37build-cse: 38 go build -tags cse $(filter-out ./core/auth/internal/gssapi,$(PKGS)) 39 40.PHONY: check-fmt 41check-fmt: 42 etc/check_fmt.sh $(PKGS) 43 44.PHONY: fmt 45fmt: 46 gofmt -l -s -w $(PKGS) 47 48.PHONY: lint 49lint: 50 golint $(PKGS) | ./etc/lintscreen.pl .lint-whitelist 51 52.PHONY: lint-add-whitelist 53lint-add-whitelist: 54 golint $(PKGS) | ./etc/lintscreen.pl -u .lint-whitelist 55 sort .lint-whitelist -o .lint-whitelist 56 57.PHONY: errcheck 58errcheck: 59 errcheck -exclude .errcheck-excludes ./bson/... ./mongo/... ./x/... 60 61.PHONY: test 62test: 63 for TEST in $(TEST_PKGS) ; do \ 64 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s $$TEST ; \ 65 done 66 67.PHONY: test-cover 68test-cover: 69 for TEST in $(TEST_PKGS) ; do \ 70 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -cover $(COVER_ARGS) $$TEST ; \ 71 done 72 73.PHONY: test-race 74test-race: 75 for TEST in $(TEST_PKGS) ; do \ 76 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -race $(COVER_ARGS) $$TEST ; \ 77 done 78 79.PHONY: test-short 80test-short: 81 for TEST in $(TEST_PKGS) ; do \ 82 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -short $(COVER_ARGS) $$TEST ; \ 83 done 84 85.PHONY: update-bson-corpus-tests 86update-bson-corpus-tests: 87 etc/update-spec-tests.sh bson-corpus 88 89.PHONY: update-connection-string-tests 90update-connection-string-tests: 91 etc/update-spec-tests.sh connection-string 92 93.PHONY: update-crud-tests 94update-crud-tests: 95 etc/update-spec-tests.sh crud 96 97.PHONY: update-initial-dns-seedlist-discovery-tests 98update-initial-dns-seedlist-discovery-tests: 99 etc/update-spec-tests.sh initial-dns-seedlist-discovery 100 101.PHONY: update-max-staleness-tests 102update-max-staleness-tests: 103 etc/update-spec-tests.sh max-staleness 104 105.PHONY: update-server-discovery-and-monitoring-tests 106update-server-discovery-and-monitoring-tests: 107 etc/update-spec-tests.sh server-discovery-and-monitoring 108 109.PHONY: update-server-selection-tests 110update-server-selection-tests: 111 etc/update-spec-tests.sh server-selection 112 113.PHONY: update-notices 114update-notices: 115 etc/generate-notices.pl > THIRD-PARTY-NOTICES 116 117.PHONY: vet 118vet: 119 go vet -cgocall=false -composites=false -unusedstringmethods="Error" $(PKGS) 120 121 122# Evergreen specific targets 123.PHONY: evg-test 124evg-test: 125 for TEST in $(TEST_PKGS) ; do \ 126 LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) go test $(BUILD_TAGS) -v -timeout $(TEST_TIMEOUT)s $$TEST >> test.suite ; \ 127 done 128 129.PHONY: evg-test-auth 130evg-test-auth: 131 go run -tags gssapi ./x/mongo/driver/examples/count/main.go -uri $(MONGODB_URI) 132 133.PHONY: evg-test-atlas 134evg-test-atlas: 135 go run ./mongo/testatlas/main.go $(ATLAS_URIS) 136 137# benchmark specific targets and support 138perf:driver-test-data.tar.gz 139 tar -zxf $< $(if $(eq $(UNAME_S),Darwin),-s , --transform=s)/data/perf/ 140 @touch $@ 141driver-test-data.tar.gz: 142 curl --retry 5 "https://s3.amazonaws.com/boxes.10gen.com/build/driver-test-data.tar.gz" -o driver-test-data.tar.gz --silent --max-time 120 143benchmark:perf 144 go test $(BUILD_TAGS) -benchmem -bench=. ./benchmark 145driver-benchmark:perf 146 @go run cmd/godriver-benchmark/main.go | tee perf.suite 147.PHONY:benchmark driver-benchmark 148