-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsnap_test.go
More file actions
97 lines (73 loc) · 1.75 KB
/
Copy pathsnap_test.go
File metadata and controls
97 lines (73 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package pgsnap
import (
"context"
"database/sql"
"os"
"sync"
"testing"
"github.com/jackc/pgx/v4"
_ "github.com/lib/pq"
"github.com/stretchr/testify/require"
)
const addr = "postgres://postgres@127.0.0.1:15432/?sslmode=disable"
func TestSnap_runScript_pq(t *testing.T) {
db, s := NewDB(t, addr)
defer s.Finish()
runPQ(t, db)
}
func TestSnap_runScript_pgx(t *testing.T) {
s := NewSnap(t, addr)
defer s.Finish()
runPGX(t, s.Addr())
}
func TestSnap_runProxy_pq(t *testing.T) {
t.Skip("Still figure out how to design two connection")
var s *Snap
wg2 := sync.WaitGroup{}
wg := sync.WaitGroup{}
wg.Add(1)
wg2.Add(1)
go t.Run("inception", func(t *testing.T) {
s = NewSnap(t, addr)
wg.Done()
wg2.Wait()
defer s.Finish()
})
wg.Wait()
db, s := NewDBWithConfig(t, s.Addr(), Config{ForceWrite: true})
defer s.Finish()
runPQ(t, db)
wg2.Done()
}
func TestSnap_runProxy_pgx(t *testing.T) {
t.Skip("try to use dockertest")
s := NewSnapWithForceWrite(t, addr, true)
defer s.Finish()
runPGX(t, s.Addr())
}
func TestSnap_runEmptyScript(t *testing.T) {
t.Skip("try to use dockertest")
db, s := NewDB(t, addr)
defer s.Finish()
runPQ(t, db)
// revert to empty file again
script := newScript(t)
_ = os.WriteFile(script.getFilename(), []byte(""), os.ModePerm)
}
func runPQ(t *testing.T, db *sql.DB) {
t.Helper()
err := db.Ping()
require.NoError(t, err)
rows, err := db.Query("select id from mytable limit $1", 7)
require.NoError(t, err)
_ = rows.Close()
}
func runPGX(t *testing.T, addr string) {
t.Helper()
db, err := pgx.Connect(context.TODO(), addr)
require.NoError(t, err)
err = db.Ping(context.TODO())
require.NoError(t, err)
_, err = db.Query(context.TODO(), "select id from mytable limit $1", 7)
require.NoError(t, err)
}