test(seahorse): use shared in-memory SQLite DB in tests to fix async compaction failures
This commit is contained in:
parent
8dee0a38cd
commit
01a2846532
1 changed files with 13 additions and 1 deletions
|
|
@ -2,14 +2,26 @@ package seahorse
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
_ "modernc.org/sqlite"
|
_ "modernc.org/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var testDBCounter uint64
|
||||||
|
|
||||||
func openTestDB(t *testing.T) *sql.DB {
|
func openTestDB(t *testing.T) *sql.DB {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
db, err := sql.Open("sqlite", ":memory:")
|
|
||||||
|
n := atomic.AddUint64(&testDBCounter, 1)
|
||||||
|
testName := strings.NewReplacer("/", "_", " ", "_").Replace(t.Name())
|
||||||
|
// Use a shared in-memory database so concurrent goroutines/connections in tests
|
||||||
|
// observe the same schema/data.
|
||||||
|
dsn := fmt.Sprintf("file:seahorse_test_%s_%d?mode=memory&cache=shared", testName, n)
|
||||||
|
|
||||||
|
db, err := sql.Open("sqlite", dsn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("open test db: %v", err)
|
t.Fatalf("open test db: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue