GO := CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go

.PHONY: build run fmt clean

default: build buildSuccess

build:
	$(GO) build --trimpath -o bin/case main.go

buildSuccess:
	@echo Build TiCDC testcase successfully!

clean:
	go clean -i ./...
	rm -rf .env
	rm -rf output
	rm -rf kubeconfig.yml
	rm -rf bin

testbed: install-tcctl
	TOKEN=$(TOKEN) tcctl testbed create -r http://rms-staging.pingcap.net:30007 -f testbed/mysql-sysbench.yaml

destroy-testbed:
	TOKEN=$(TOKEN) tcctl testbed delete -r http://rms-staging.pingcap.net:30007

run:
	KUBECONFIG=$(KUBECONFIG) MYSQL_PROXY=socks5h://rms-staging.pingcap.net:30081 go run main.go --spec manifests/kafka/kafka_random_broker_fail.yaml

debug-run:
	KUBECONFIG=kubeconfig.yml MYSQL_PROXY=socks5h://rms-staging.pingcap.net:30081 go run main.go --spec manifests/$(CASE).yaml

kafka-run:
	KUBECONFIG=kubeconfig.yml MYSQL_PROXY=socks5h://rms-staging.pingcap.net:30081 go run main.go --spec manifests/kafka/$(CASE).yaml

image:
	GOOS=linux GOARCH=amd64 make build
	docker build --platform=linux/amd64 -t hub.pingcap.net/ticdc/ticdc-testcases .
	docker image push hub.pingcap.net/ticdc/ticdc-testcases

fmt: groupimports
	go fmt ./...

case:
	TOKEN=$(TOKEN) tcctl apply -f case.yaml

groupimports: install-goimports
	goimports -w -l -local github.com/pingcap/test-infra .

install-goimports:
ifeq (, $(shell which goimports))
	@{ \
	set -e ;\
	TMP_DIR=$$(mktemp -d) ;\
	cd $$TMP_DIR ;\
	GO111MODULE=on go get golang.org/x/tools/cmd/goimports ;\
	rm -rf $$TMP_DIR ;\
	}
endif

install-tcctl:
ifeq (, $(shell which tcctl))
	curl http://fileserver.pingcap.net/download/pingcap/qa/test-infra/tcctl-install.sh | bash
endif