Skip to content

Commit

Permalink
1. Fixed goroutine leak after finish tests
Browse files Browse the repository at this point in the history
  • Loading branch information
maranqz committed Feb 4, 2024
1 parent 0b5e447 commit 8e08417
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 12 deletions.
1 change: 1 addition & 0 deletions mongo/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ func Example() {
ctx := context.Background()

checkErr(client.Connect(ctx))
defer client.Disconnect(ctx)

collection := client.Database("test").Collection("users")

Expand Down
11 changes: 1 addition & 10 deletions pgxv4/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,10 @@ import (
func Example() {
ctx := context.Background()

uri := fmt.Sprintf("postgres://%s:%s@%s:%d/%s",
"user", "pass", "localhost", 5432, "db",
)

pool, err := pgxpool.Connect(ctx, uri)
pool, err := db(ctx)
checkErr(err)

defer pool.Close()

sqlStmt := `CREATE TABLE IF NOT EXISTS users_v4 (user_id serial, username TEXT)`
_, err = pool.Exec(ctx, sqlStmt)
checkErr(err, sqlStmt)

r := newRepo(pool, trmpgx.DefaultCtxGetter)
trManager := manager.Must(trmpgx.NewDefaultFactory(pool))

Expand Down
53 changes: 53 additions & 0 deletions pgxv4/transaction_integration_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//go:build go1.16 && with_real_db
// +build go1.16,with_real_db

package pgxv4_test

import (
"context"
"fmt"
"testing"

"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
"github.com/stretchr/testify/require"

"github.com/avito-tech/go-transaction-manager/pgxv4"
"github.com/avito-tech/go-transaction-manager/trm/settings"
)

func db(ctx context.Context) (*pgxpool.Pool, error) {
uri := fmt.Sprintf("postgres://%s:%s@%s:%d/%s",
"user", "pass", "localhost", 5432, "db",
)

pool, err := pgxpool.Connect(ctx, uri)
if err != nil {
return nil, err
}

sqlStmt := `CREATE TABLE IF NOT EXISTS users_v4 (user_id SERIAL, username TEXT)`
_, err = pool.Exec(ctx, sqlStmt)

return pool, err
}

func TestTransaction_WithRealDB(t *testing.T) {
t.Parallel()

ctx := context.Background()

pool, err := db(ctx)
require.NoError(t, err)

f := pgxv4.NewDefaultFactory(pool)

_, tr, err := f(ctx, settings.Must())
require.NoError(t, err)

require.NoError(t, tr.Rollback(ctx))
require.False(t, tr.IsActive())

require.ErrorIs(t, tr.Commit(ctx), pgx.ErrTxClosed)
require.ErrorIs(t, tr.Rollback(ctx), pgx.ErrTxClosed)
}
1 change: 1 addition & 0 deletions pgxv5/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ func Example() {

pool, err := db(ctx)
checkErr(err)
defer pool.Close()

r := newRepo(pool, trmpgx.DefaultCtxGetter)
trManager := manager.Must(trmpgx.NewDefaultFactory(pool))
Expand Down
3 changes: 1 addition & 2 deletions pgxv5/transaction_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ func db(ctx context.Context) (*pgxpool.Pool, error) {
return nil, err
}

defer pool.Close()

sqlStmt := `CREATE TABLE IF NOT EXISTS users_v5 (user_id SERIAL, username TEXT)`
_, err = pool.Exec(ctx, sqlStmt)

Expand All @@ -41,6 +39,7 @@ func TestTransaction_WithRealDB(t *testing.T) {

pool, err := db(ctx)
require.NoError(t, err)
defer pool.Close()

f := pgxv5.NewDefaultFactory(pool)

Expand Down

0 comments on commit 8e08417

Please sign in to comment.