Skip to content

Commit

Permalink
insert quorum configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
gingerwizard committed Sep 5, 2022
1 parent 6d9ef06 commit 61ed74f
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ jobs:
CLICKHOUSE_USE_DOCKER: false
CLICKHOUSE_USE_SSL: true
run: |
CLICKHOUSE_TEST_TIMEOUT=360s make test
CLICKHOUSE_TEST_TIMEOUT=600s CLICKHOUSE_QUORUM_INSERT=2 make test
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
CLICKHOUSE_VERSION ?= latest
CLICKHOUSE_TEST_TIMEOUT ?= 60s
CLICKHOUSE_QUORUM_INSERT ?= 1

up:
@docker compose up -d
Expand All @@ -11,7 +12,7 @@ cli:

test:
@go install -race -v
@CLICKHOUSE_VERSION=$(CLICKHOUSE_VERSION) go test -race -timeout $(CLICKHOUSE_TEST_TIMEOUT) -count=1 -v ./...
@CLICKHOUSE_VERSION=$(CLICKHOUSE_VERSION) @CLICKHOUSE_QUORUM_INSERT=$(CLICKHOUSE_QUORUM_INSERT) go test -race -timeout $(CLICKHOUSE_TEST_TIMEOUT) -count=1 -v ./...

lint:
golangci-lint run || :
Expand Down
13 changes: 9 additions & 4 deletions tests/std/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,21 @@ func GetDSNConnection(environment string, protocol clickhouse.Protocol, secure b
if err != nil {
return nil, err
}
insertQuorum := clickhouse_tests.GetEnv("CLICKHOUSE_QUORUM_INSERT", "1")
switch protocol {
case clickhouse.HTTP:
switch secure {
case true:
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("https://%s:%s@%s:%d/%s?secure=true&compress=%s&wait_end_of_query=1", env.Username, env.Password, env.Host, env.HttpsPort, env.Database, compress)))
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("https://%s:%s@%s:%d/%s?secure=true&compress=%s&wait_end_of_query=1&insert_quorum=%s", env.Username, env.Password, env.Host, env.HttpsPort, env.Database, compress, insertQuorum)))
case false:
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("http://%s:%s@%s:%d/%s?compress=%s&wait_end_of_query=1", env.Username, env.Password, env.Host, env.HttpPort, env.Database, compress)))
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("http://%s:%s@%s:%d/%s?compress=%s&wait_end_of_query=1&insert_quorum=%s", env.Username, env.Password, env.Host, env.HttpPort, env.Database, compress, insertQuorum)))
}
case clickhouse.Native:
switch secure {
case true:
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("clickhouse://%s:%s@%s:%d/%s?secure=true&compress=%s", env.Username, env.Password, env.Host, env.SslPort, env.Database, compress)))
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("clickhouse://%s:%s@%s:%d/%s?secure=true&compress=%s&insert_quorum=%s", env.Username, env.Password, env.Host, env.SslPort, env.Database, compress, insertQuorum)))
case false:
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("clickhouse://%s:%s@%s:%d/%s?compress=%s", env.Username, env.Password, env.Host, env.Port, env.Database, compress)))
return sql.Open("clickhouse", fmt.Sprintf(fmt.Sprintf("clickhouse://%s:%s@%s:%d/%s?compress=%s&insert_quorum=%s", env.Username, env.Password, env.Host, env.Port, env.Database, compress, insertQuorum)))
}
}
return nil, fmt.Errorf("unsupport protocol - %s", protocol.String())
Expand Down Expand Up @@ -106,6 +107,10 @@ func GetOpenDBConnection(environment string, protocol clickhouse.Protocol, setti
if protocol == clickhouse.HTTP {
settings["wait_end_of_query"] = 1
}
settings["insert_quorum"], err = strconv.Atoi(clickhouse_tests.GetEnv("CLICKHOUSE_QUORUM_INSERT", "1"))
if err != nil {
return nil, err
}
return clickhouse.OpenDB(&clickhouse.Options{
Addr: []string{fmt.Sprintf("%s:%d", env.Host, port)},
Auth: clickhouse.Auth{
Expand Down
7 changes: 7 additions & 0 deletions tests/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,13 @@ func getConnection(env ClickHouseTestEnvironment, database string, settings clic
tlsConfig = &tls.Config{}
port = env.SslPort
}
if settings == nil {
settings = clickhouse.Settings{}
}
settings["insert_quorum"], err = strconv.Atoi(GetEnv("CLICKHOUSE_QUORUM_INSERT", "1"))
if err != nil {
return nil, err
}
conn, err := clickhouse.Open(&clickhouse.Options{
Addr: []string{fmt.Sprintf("%s:%d", env.Host, port)},
Settings: settings,
Expand Down

0 comments on commit 61ed74f

Please sign in to comment.