63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
|
// Copyright (C) 2018 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
package satellitedbtest
|
||
|
|
||
|
// This package should be referenced only in test files!
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"os"
|
||
|
"testing"
|
||
|
|
||
|
"storj.io/storj/satellite/satellitedb"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// postgres connstring that works with docker-compose
|
||
|
defaultPostgresConn = "postgres://storj:storj-pass@test-postgres/teststorj?sslmode=disable"
|
||
|
defaultSqliteConn = "sqlite3://file::memory:?mode=memory&cache=shared"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
testPostgres = flag.String("postgres-test-db", os.Getenv("STORJ_POSTGRES_TEST"), "PostgreSQL test database connection string")
|
||
|
)
|
||
|
|
||
|
// Run method will iterate over all supported databases. Will establish
|
||
|
// connection and will create tables for each DB.
|
||
|
func Run(t *testing.T, test func(db *satellitedb.DB)) {
|
||
|
for _, dbInfo := range []struct {
|
||
|
dbName string
|
||
|
dbURL string
|
||
|
dbMessage string
|
||
|
}{
|
||
|
{"Sqlite", defaultSqliteConn, ""},
|
||
|
{"Postgres", *testPostgres, "Postgres flag missing, example: -postgres-test-db=" + defaultPostgresConn},
|
||
|
} {
|
||
|
t.Run(dbInfo.dbName, func(t *testing.T) {
|
||
|
if dbInfo.dbURL == "" {
|
||
|
t.Skipf("Database %s connection string not provided. %s", dbInfo.dbName, dbInfo.dbMessage)
|
||
|
}
|
||
|
|
||
|
db, err := satellitedb.NewDB(dbInfo.dbURL)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
defer func() {
|
||
|
err := db.Close()
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
err = db.CreateTables()
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
test(db)
|
||
|
})
|
||
|
}
|
||
|
}
|