Skip to content

Commit 6fdbf7d

Browse files
authored
Ensure test container termination (#1274)
* Ensure test container termination * make #1229 more resilient * make #1229 more resilent
1 parent aa43b3f commit 6fdbf7d

File tree

6 files changed

+57
-107
lines changed

6 files changed

+57
-107
lines changed

tests/issues/1127_test.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ import (
1313

1414
func Test1127(t *testing.T) {
1515
var (
16-
conn, err = clickhouse_tests.GetConnection("issues", clickhouse.Settings{
17-
"max_execution_time": 60,
18-
"allow_experimental_object_type": true,
19-
}, nil, &clickhouse.Compression{
20-
Method: clickhouse.CompressionLZ4,
21-
})
16+
conn, err = clickhouse_tests.GetConnection("issues", nil, nil, nil)
2217
)
2318
require.NoError(t, err)
2419

@@ -30,11 +25,14 @@ func Test1127(t *testing.T) {
3025
fmt.Println("log info: ", log)
3126
}))
3227

33-
rows, err := conn.Query(ctx, "select throwIf(number = 1e6) from system.numbers settings max_block_size = 100")
28+
rows, err := conn.Query(ctx, "select number, throwIf(number = 1e6) from system.numbers settings max_block_size = 100")
3429
require.NoError(t, err)
35-
3630
defer rows.Close()
31+
32+
var number uint64
33+
var throwIf uint8
3734
for rows.Next() {
35+
require.NoError(t, rows.Scan(&number, &throwIf))
3836
}
3937

4038
assert.Error(t, rows.Err())

tests/issues/1229_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ func Test1229(t *testing.T) {
4848
defer wg.Done()
4949
withTimeoutCtx, cancel := context.WithTimeout(ctx, queryTimeout)
5050
defer cancel()
51-
_, _ = conn.Query(withTimeoutCtx, selectQuery)
51+
rows, err := conn.Query(withTimeoutCtx, selectQuery)
52+
require.NoError(t, err)
53+
require.NoError(t, rows.Close())
5254
}()
5355
}
5456

tests/issues/main_test.go

+3-32
Original file line numberDiff line numberDiff line change
@@ -18,45 +18,16 @@
1818
package issues
1919

2020
import (
21-
"context"
22-
"fmt"
23-
clickhouse_tests "github.com/ClickHouse/clickhouse-go/v2/tests"
24-
"math/rand"
2521
"os"
26-
"strconv"
2722
"testing"
28-
"time"
23+
24+
clickhouse_tests "github.com/ClickHouse/clickhouse-go/v2/tests"
2925
)
3026

3127
const testSet string = "issues"
3228

3329
func TestMain(m *testing.M) {
34-
seed := time.Now().UnixNano()
35-
fmt.Printf("using random seed %d for %s\n", seed, testSet)
36-
rand.Seed(seed)
37-
useDocker, err := strconv.ParseBool(clickhouse_tests.GetEnv("CLICKHOUSE_USE_DOCKER", "true"))
38-
if err != nil {
39-
panic(err)
40-
}
41-
var env clickhouse_tests.ClickHouseTestEnvironment
42-
switch useDocker {
43-
case true:
44-
env, err = clickhouse_tests.CreateClickHouseTestEnvironment(testSet)
45-
if err != nil {
46-
panic(err)
47-
}
48-
defer env.Container.Terminate(context.Background()) //nolint
49-
case false:
50-
env, err = clickhouse_tests.GetExternalTestEnvironment(testSet)
51-
if err != nil {
52-
panic(err)
53-
}
54-
}
55-
clickhouse_tests.SetTestEnvironment(testSet, env)
56-
if err := clickhouse_tests.CreateDatabase(testSet); err != nil {
57-
panic(err)
58-
}
59-
os.Exit(m.Run())
30+
os.Exit(clickhouse_tests.Runtime(m, testSet))
6031
}
6132

6233
func GetIssuesTestEnvironment() (clickhouse_tests.ClickHouseTestEnvironment, error) {

tests/main_test.go

+4-33
Original file line numberDiff line numberDiff line change
@@ -18,47 +18,18 @@
1818
package tests
1919

2020
import (
21-
"context"
2221
"crypto/tls"
23-
"fmt"
24-
"github.com/ClickHouse/clickhouse-go/v2"
25-
"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
26-
"math/rand"
2722
"os"
28-
"strconv"
2923
"testing"
30-
"time"
24+
25+
"github.com/ClickHouse/clickhouse-go/v2"
26+
"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
3127
)
3228

3329
const testSet string = "native"
3430

3531
func TestMain(m *testing.M) {
36-
seed := time.Now().UnixNano()
37-
fmt.Printf("using random seed %d for %s tests\n", seed, testSet)
38-
rand.Seed(seed)
39-
useDocker, err := strconv.ParseBool(GetEnv("CLICKHOUSE_USE_DOCKER", "true"))
40-
if err != nil {
41-
panic(err)
42-
}
43-
var env ClickHouseTestEnvironment
44-
switch useDocker {
45-
case true:
46-
env, err = CreateClickHouseTestEnvironment(testSet)
47-
if err != nil {
48-
panic(err)
49-
}
50-
defer env.Container.Terminate(context.Background()) //nolint
51-
case false:
52-
env, err = GetExternalTestEnvironment(testSet)
53-
if err != nil {
54-
panic(err)
55-
}
56-
}
57-
SetTestEnvironment(testSet, env)
58-
if err := CreateDatabase(testSet); err != nil {
59-
panic(err)
60-
}
61-
os.Exit(m.Run())
32+
os.Exit(Runtime(m, testSet))
6233
}
6334

6435
func GetNativeTestEnvironment() (ClickHouseTestEnvironment, error) {

tests/std/main_test.go

+4-33
Original file line numberDiff line numberDiff line change
@@ -18,49 +18,20 @@
1818
package std
1919

2020
import (
21-
"context"
2221
"crypto/tls"
2322
"database/sql"
24-
"fmt"
25-
"github.com/ClickHouse/clickhouse-go/v2"
26-
clickhouse_tests "github.com/ClickHouse/clickhouse-go/v2/tests"
27-
"math/rand"
2823
"net/url"
2924
"os"
30-
"strconv"
3125
"testing"
32-
"time"
26+
27+
"github.com/ClickHouse/clickhouse-go/v2"
28+
clickhouse_tests "github.com/ClickHouse/clickhouse-go/v2/tests"
3329
)
3430

3531
const testSet string = "std"
3632

3733
func TestMain(m *testing.M) {
38-
seed := time.Now().UnixNano()
39-
fmt.Printf("using random seed %d for %s tests\n", seed, testSet)
40-
rand.Seed(seed)
41-
useDocker, err := strconv.ParseBool(clickhouse_tests.GetEnv("CLICKHOUSE_USE_DOCKER", "true"))
42-
if err != nil {
43-
panic(err)
44-
}
45-
var env clickhouse_tests.ClickHouseTestEnvironment
46-
switch useDocker {
47-
case true:
48-
env, err = clickhouse_tests.CreateClickHouseTestEnvironment(testSet)
49-
if err != nil {
50-
panic(err)
51-
}
52-
defer env.Container.Terminate(context.Background()) //nolint
53-
case false:
54-
env, err = clickhouse_tests.GetExternalTestEnvironment(testSet)
55-
if err != nil {
56-
panic(err)
57-
}
58-
}
59-
clickhouse_tests.SetTestEnvironment(testSet, env)
60-
if err := clickhouse_tests.CreateDatabase(testSet); err != nil {
61-
panic(err)
62-
}
63-
os.Exit(m.Run())
34+
os.Exit(clickhouse_tests.Runtime(m, testSet))
6435
}
6536

6637
func GetStdDSNConnection(protocol clickhouse.Protocol, secure bool, opts url.Values) (*sql.DB, error) {

tests/utils.go

+37
Original file line numberDiff line numberDiff line change
@@ -759,3 +759,40 @@ func optionsToDSN(o *clickhouse.Options) string {
759759

760760
return u.String()
761761
}
762+
763+
func Runtime(m *testing.M, ts string) (exitCode int) {
764+
seed := time.Now().UnixNano()
765+
rand.Seed(seed)
766+
fmt.Printf("using random seed %d for %s tests\n", seed, ts)
767+
768+
useDocker, err := strconv.ParseBool(GetEnv("CLICKHOUSE_USE_DOCKER", "true"))
769+
if err != nil {
770+
panic(err)
771+
}
772+
773+
var env ClickHouseTestEnvironment
774+
switch useDocker {
775+
case true:
776+
env, err = CreateClickHouseTestEnvironment(ts)
777+
if err != nil {
778+
panic(err)
779+
}
780+
defer func() {
781+
if err := env.Container.Terminate(context.Background()); err != nil {
782+
panic(err)
783+
}
784+
}() //nolint
785+
case false:
786+
env, err = GetExternalTestEnvironment(ts)
787+
if err != nil {
788+
panic(err)
789+
}
790+
}
791+
792+
SetTestEnvironment(ts, env)
793+
if err := CreateDatabase(ts); err != nil {
794+
panic(err)
795+
}
796+
797+
return m.Run()
798+
}

0 commit comments

Comments
 (0)