mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 06:17:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			132 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
GO := go
 | 
						|
PKG := ./...
 | 
						|
GOFLAGS :=
 | 
						|
STRESSFLAGS :=
 | 
						|
TAGS := invariants
 | 
						|
TESTS := .
 | 
						|
COVER_PROFILE := coverprofile.out
 | 
						|
 | 
						|
.PHONY: all
 | 
						|
all:
 | 
						|
	@echo usage:
 | 
						|
	@echo "  make test"
 | 
						|
	@echo "  make testrace"
 | 
						|
	@echo "  make stress"
 | 
						|
	@echo "  make stressrace"
 | 
						|
	@echo "  make stressmeta"
 | 
						|
	@echo "  make crossversion-meta"
 | 
						|
	@echo "  make testcoverage"
 | 
						|
	@echo "  make mod-update"
 | 
						|
	@echo "  make generate"
 | 
						|
	@echo "  make generate-test-data"
 | 
						|
	@echo "  make clean"
 | 
						|
 | 
						|
override testflags :=
 | 
						|
.PHONY: test
 | 
						|
test:
 | 
						|
	${GO} test -tags '$(TAGS)' ${testflags} -run ${TESTS} ${PKG}
 | 
						|
 | 
						|
.PHONY: testcoverage
 | 
						|
testcoverage:
 | 
						|
	${GO} test -tags '$(TAGS)' ${testflags} -run ${TESTS} ${PKG} -coverprofile ${COVER_PROFILE}
 | 
						|
 | 
						|
.PHONY: testrace
 | 
						|
testrace: testflags += -race -timeout 20m
 | 
						|
testrace: test
 | 
						|
 | 
						|
testasan: testflags += -asan -timeout 20m
 | 
						|
testasan: test
 | 
						|
 | 
						|
testmsan: export CC=clang
 | 
						|
testmsan: testflags += -msan -timeout 20m
 | 
						|
testmsan: test
 | 
						|
 | 
						|
.PHONY: testobjiotracing
 | 
						|
testobjiotracing:
 | 
						|
	${GO} test -tags '$(TAGS) pebble_obj_io_tracing' ${testflags} -run ${TESTS} ./objstorage/objstorageprovider/objiotracing
 | 
						|
 | 
						|
.PHONY: lint
 | 
						|
lint:
 | 
						|
	${GO} test -tags '$(TAGS)' ${testflags} -run ${TESTS} ./internal/lint
 | 
						|
 | 
						|
.PHONY: stress stressrace
 | 
						|
stressrace: testflags += -race
 | 
						|
stress stressrace: testflags += -exec 'stress ${STRESSFLAGS}' -timeout 0 -test.v
 | 
						|
stress stressrace: test
 | 
						|
 | 
						|
.PHONY: stressmeta
 | 
						|
stressmeta: override PKG = ./internal/metamorphic
 | 
						|
stressmeta: override STRESSFLAGS += -p 1
 | 
						|
stressmeta: override TESTS = TestMeta$$
 | 
						|
stressmeta: stress
 | 
						|
 | 
						|
.PHONY: crossversion-meta
 | 
						|
crossversion-meta:
 | 
						|
	$(eval LATEST_RELEASE := $(shell git fetch origin && git branch -r --list '*/crl-release-*' | grep -o 'crl-release-.*$$' | sort | tail -1))
 | 
						|
	git checkout ${LATEST_RELEASE}; \
 | 
						|
		${GO} test -c ./internal/metamorphic -o './internal/metamorphic/crossversion/${LATEST_RELEASE}.test'; \
 | 
						|
		git checkout -; \
 | 
						|
		${GO} test -c ./internal/metamorphic -o './internal/metamorphic/crossversion/head.test'; \
 | 
						|
		${GO} test -tags '$(TAGS)' ${testflags} -v -run 'TestMetaCrossVersion' ./internal/metamorphic/crossversion --version '${LATEST_RELEASE},${LATEST_RELEASE},${LATEST_RELEASE}.test' --version 'HEAD,HEAD,./head.test'
 | 
						|
 | 
						|
.PHONY: stress-crossversion
 | 
						|
stress-crossversion:
 | 
						|
	STRESS=1 ./scripts/run-crossversion-meta.sh crl-release-21.2 crl-release-22.1 crl-release-22.2 crl-release-23.1 master
 | 
						|
 | 
						|
.PHONY: generate
 | 
						|
generate:
 | 
						|
	${GO} generate ${PKG}
 | 
						|
 | 
						|
generate:
 | 
						|
 | 
						|
# Note that the output of generate-test-data is not deterministic. This should
 | 
						|
# only be run manually as needed.
 | 
						|
.PHONY: generate-test-data
 | 
						|
generate-test-data:
 | 
						|
	${GO} run -tags make_incorrect_manifests ./tool/make_incorrect_manifests.go
 | 
						|
	${GO} run -tags make_test_find_db ./tool/make_test_find_db.go
 | 
						|
	${GO} run -tags make_test_sstables ./tool/make_test_sstables.go
 | 
						|
	${GO} run -tags make_test_remotecat ./tool/make_test_remotecat.go
 | 
						|
 | 
						|
mod-update:
 | 
						|
	${GO} get -u
 | 
						|
	${GO} mod tidy
 | 
						|
 | 
						|
.PHONY: clean
 | 
						|
clean:
 | 
						|
	rm -f $(patsubst %,%.test,$(notdir $(shell go list ${PKG})))
 | 
						|
 | 
						|
git_dirty := $(shell git status -s)
 | 
						|
 | 
						|
.PHONY: git-clean-check
 | 
						|
git-clean-check:
 | 
						|
ifneq ($(git_dirty),)
 | 
						|
	@echo "Git repository is dirty!"
 | 
						|
	@false
 | 
						|
else
 | 
						|
	@echo "Git repository is clean."
 | 
						|
endif
 | 
						|
 | 
						|
.PHONY: mod-tidy-check
 | 
						|
mod-tidy-check:
 | 
						|
ifneq ($(git_dirty),)
 | 
						|
	$(error mod-tidy-check must be invoked on a clean repository)
 | 
						|
endif
 | 
						|
	@${GO} mod tidy
 | 
						|
	$(MAKE) git-clean-check
 | 
						|
 | 
						|
# TODO(radu): switch back to @latest once bogus doc changes are
 | 
						|
# addressed; see https://github.com/cockroachdb/crlfmt/pull/44
 | 
						|
.PHONY: format
 | 
						|
format:
 | 
						|
	go install github.com/cockroachdb/crlfmt@44a36ec7 && crlfmt -w -tab 2 .
 | 
						|
 | 
						|
.PHONY: format-check
 | 
						|
format-check:
 | 
						|
ifneq ($(git_dirty),)
 | 
						|
	$(error format-check must be invoked on a clean repository)
 | 
						|
endif
 | 
						|
	$(MAKE) format
 | 
						|
	git diff
 | 
						|
	$(MAKE) git-clean-check
 |