Makefile 4.3 KB

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