github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/kv/postgres/store_test.go (about)

     1  package postgres_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"net/url"
     7  	"testing"
     8  
     9  	"github.com/jackc/pgx/v5"
    10  	"github.com/treeverse/lakefs/pkg/kv"
    11  	"github.com/treeverse/lakefs/pkg/kv/kvparams"
    12  	"github.com/treeverse/lakefs/pkg/kv/kvtest"
    13  	"github.com/treeverse/lakefs/pkg/kv/postgres"
    14  	"github.com/treeverse/lakefs/pkg/testutil"
    15  )
    16  
    17  func TestPostgresKV(t *testing.T) {
    18  	databaseURI, cleanup := runDBInstance(pool, testutil.UniqueKVTableName())
    19  	t.Cleanup(cleanup)
    20  
    21  	kvtest.DriverTest(t, func(t testing.TB, ctx context.Context) kv.Store {
    22  		t.Helper()
    23  
    24  		conn, err := pgx.Connect(ctx, databaseURI)
    25  		if err != nil {
    26  			t.Fatalf("Unable to connect to database: %v", err)
    27  		}
    28  		defer func() { _ = conn.Close(ctx) }()
    29  
    30  		// create a new schema per test
    31  		schemaName := "test_schema" + testutil.UniqueName()
    32  		_, err = conn.Exec(ctx, "CREATE SCHEMA IF NOT EXISTS "+url.PathEscape(schemaName))
    33  		if err != nil {
    34  			t.Fatalf("Error creating schema '%s': %s", schemaName, err)
    35  		}
    36  
    37  		store, err := kv.Open(ctx, kvparams.Config{
    38  			Type:     postgres.DriverName,
    39  			Postgres: &kvparams.Postgres{ConnectionString: fmt.Sprintf("%s&search_path=%s", databaseURI, url.PathEscape(schemaName)), ScanPageSize: kvtest.MaxPageSize},
    40  		})
    41  		if err != nil {
    42  			t.Fatalf("failed to open kv '%s' store: %s", postgres.DriverName, err)
    43  		}
    44  		t.Cleanup(store.Close)
    45  		return store
    46  	})
    47  }