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 }