From 9442c3e5a1dfed298fe71b611e3c64c39bf7afc3 Mon Sep 17 00:00:00 2001 From: Jiahao Huang Date: Tue, 20 Aug 2019 14:42:28 +0800 Subject: [PATCH] Initial commit --- .gitignore | 35 ++++ Makefile | 99 +++++++++++ cdc/buffer.go | 47 +++++ cdc/capture.go | 132 ++++++++++++++ cdc/cdctest/mock_tidb.go | 139 +++++++++++++++ cdc/cdctest/mock_tidb_test.go | 33 ++++ cdc/changefeed.go | 111 ++++++++++++ cdc/doc.go | 1 + cdc/encoder.go | 72 ++++++++ cdc/puller.go | 34 ++++ cdc/rowfetcher.go | 24 +++ cdc/sink.go | 62 +++++++ cdc/util.go | 6 + cmd/cdc/main.go | 21 +++ go.mod | 16 ++ go.sum | 316 ++++++++++++++++++++++++++++++++++ tools/check/check-tidy.sh | 5 + tools/check/go.mod | 19 ++ tools/check/go.sum | 212 +++++++++++++++++++++++ tools/check/revive.toml | 51 ++++++ 20 files changed, 1435 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 cdc/buffer.go create mode 100644 cdc/capture.go create mode 100644 cdc/cdctest/mock_tidb.go create mode 100644 cdc/cdctest/mock_tidb_test.go create mode 100644 cdc/changefeed.go create mode 100644 cdc/doc.go create mode 100644 cdc/encoder.go create mode 100644 cdc/puller.go create mode 100644 cdc/rowfetcher.go create mode 100644 cdc/sink.go create mode 100644 cdc/util.go create mode 100644 cmd/cdc/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100755 tools/check/check-tidy.sh create mode 100644 tools/check/go.mod create mode 100644 tools/check/go.sum create mode 100644 tools/check/revive.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..aa8423c6812 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +bin +*.iml +.idea +.DS_Store + +cscope.* +**/*.swp + +# Files generated when testing +vendor/ diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..c2cce942d65 --- /dev/null +++ b/Makefile @@ -0,0 +1,99 @@ +### Makefile for tidb-cdc +.PHONY: build test check clean fmt cdc + +PROJECT=tidb-cdc + +# Ensure GOPATH is set before running build process. +ifeq "$(GOPATH)" "" + $(error Please set the environment variable GOPATH before running `make`) +endif +FAIL_ON_STDOUT := awk '{ print } END { if (NR > 0) { exit 1 } }' + +CURDIR := $(shell pwd) +path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(GOPATH))) +export PATH := $(path_to_add):$(PATH) + +TEST_DIR := /tmp/tidb_cdc_test + +GO := GO111MODULE=on go +GOBUILD := CGO_ENABLED=0 $(GO) build $(BUILD_FLAG) +GOTEST := CGO_ENABLED=1 $(GO) test -p 3 + +ARCH := "`uname -s`" +LINUX := "Linux" +MAC := "Darwin" +PACKAGE_LIST := go list ./...| grep -vE 'vendor|proto' +PACKAGES := $$($(PACKAGE_LIST)) +PACKAGE_DIRECTORIES := $(PACKAGE_LIST) | sed 's|github.com/pingcap/$(PROJECT)/||' +FILES := $$(find . -name '*.go' -type f | grep -vE 'vendor') + +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.BuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')" +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.GitHash=$(shell git rev-parse HEAD)" +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.ReleaseVersion=$(shell git describe --tags --dirty)" + +default: build buildsucc + +buildsucc: + @echo Build TiDB CDC successfully! + +all: dev install + +dev: check test + +build: cdc + +cdc: + $(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/cdc cmd/cdc/main.go + +install: + go install ./... + +test: + mkdir -p "$(TEST_DIR)" + @export log_level=error;\ + $(GOTEST) -cover -covermode=count -coverprofile="$(TEST_DIR)/cov.unit.out" $(PACKAGES) + +fmt: + @echo "gofmt (simplify)" + @gofmt -s -l -w $(FILES) 2>&1 | $(FAIL_ON_STDOUT) + +lint:tools/bin/revive + @echo "linting" + @tools/bin/revive -formatter friendly -config tools/check/revive.toml $(FILES) + +vet: + @echo "vet" + $(GO) vet $(PACKAGES) 2>&1 | $(FAIL_ON_STDOUT) + +tidy: + @echo "go mod tidy" + ./tools/check/check-tidy.sh + +check: fmt lint check-static tidy + +coverage: + GO111MODULE=off go get github.com/wadey/gocovmerge + gocovmerge "$(TEST_DIR)"/cov.* | grep -vE ".*.pb.go" > "$(TEST_DIR)/all_cov.out" +ifeq ("$(JenkinsCI)", "1") + GO111MODULE=off go get github.com/mattn/goveralls + @goveralls -coverprofile=$(TEST_DIR)/all_cov.out -service=jenkins-ci -repotoken $(COVERALLS_TOKEN) +else + go tool cover -html "$(TEST_DIR)/all_cov.out" -o "$(TEST_DIR)/all_cov.html" + grep -F '