GO := CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go
SHELL=/bin/bash
.PHONY: run fmt

testbed: #install-tcctl
	tcctl testbed create -f testbed.yaml
	make write-env

write-env:
	echo -E 'TI_PARAM_STR_import_basic_opts:{"data-dir":"s3://nfs/tools_test_data/max_error/all_type_error?access-key=minioadmin&secret-access-key=minioadmin&endpoint=http%3a%2f%2fminio.pingcap.net%3a9000&force-path-style=true","backend":"local","sorted-kv-dir":"/tmp/sorted-kv-dir", "timeout":"20m","crc32-checksum":680474446, "config": "[tikv-importer]\nduplicate-resolution = \"remove\"\nincremental-import = true\n[lightning]\nmax-error = 10\n[tidb]\nsql-mode = \"STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE\"", "transfer-to-config": true }' >> .env
	echo -E 'TI_PARAM_STR_import_basic_opts2:{"data-dir":"s3://nfs/tools_test_data/max_error/all_type_error_2?access-key=minioadmin&secret-access-key=minioadmin&endpoint=http%3a%2f%2fminio.pingcap.net%3a9000&force-path-style=true","backend":"local","sorted-kv-dir":"/tmp/sorted-kv-dir", "timeout":"20m","crc32-checksum":0, "config": "[tikv-importer]\nduplicate-resolution = \"remove\"\nincremental-import = true\n[lightning]\nmax-error = 10\n[tidb]\nsql-mode = \"STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE\"", "transfer-to-config": true }' >> .env
	echo 'TI_PARAM_STR_max_error_rows: 5' >> .env
	echo 'TI_PARAM_STR_max_error_schema: lightning_task_info.type_error_v1' >> .env
	echo 'TI_PARAM_STR_expect_error: false' >> .env
	echo 'TI_PARAM_STR_global_variable: []' >> .env
	echo 'TI_PARAM_STR_admin_check: [{"table": "max_error.t2", "indexes": ["uk_b"] }]' >> .env
	echo 'TI_PARAM_STR_drop_databases: max_error' >> .env

destroy-testbed:
	tcctl testbed delete

run:
	KUBECONFIG=kubeconfig.yml MYSQL_PROXY=socks5://rms-staging.pingcap.net:30081 go run main.go

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

image:
	GOOS=linux GOARCH=amd64 make build
	docker build --platform linux/amd64 -t hub.pingcap.net/xiedong/lightning-parallel-import-max-error .
	docker image push hub.pingcap.net/xiedong/lightning-parallel-import-max-error

apply:
	tcctl apply -f cases.yaml

oneshot:
	tcctl run -f oneshot.yaml
fmt: groupimports
	go fmt ./...

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-testbed-cli:
	go install github.com/pingcap/test-infra/services/rms/cmd/testbed@latest

