github.com/cayleygraph/cayley@v0.7.7/graph/sql/cockroach/cockroach_test.go (about) 1 // +build docker 2 3 package cockroach 4 5 import ( 6 "database/sql" 7 "net" 8 "strconv" 9 "testing" 10 11 "github.com/cayleygraph/cayley/graph" 12 "github.com/cayleygraph/cayley/graph/sql/sqltest" 13 "github.com/cayleygraph/cayley/internal/dock" 14 "github.com/jackc/pgx" 15 _ "github.com/jackc/pgx/stdlib" 16 ) 17 18 func makeCockroach(t testing.TB) (string, graph.Options, func()) { 19 var conf dock.Config 20 21 conf.Image = "cockroachdb/cockroach:v1.1.5" 22 conf.Cmd = []string{"start", "--insecure"} 23 24 addr, closer := dock.RunAndWait(t, conf, "26257", func(addr string) bool { 25 host, portStr, err := net.SplitHostPort(addr) 26 if err != nil { 27 return false 28 } 29 port, err := strconv.Atoi(portStr) 30 if err != nil { 31 return false 32 } 33 conn, err := pgx.Connect(pgx.ConnConfig{ 34 Host: host, 35 Port: uint16(port), 36 User: "root", 37 }) 38 if err != nil { 39 return false 40 } 41 conn.Close() 42 return true 43 }) 44 addr = `postgresql://root@` + addr 45 db, err := sql.Open("pgx", addr+`?sslmode=disable`) 46 if err != nil { 47 closer() 48 t.Fatal(err) 49 } 50 defer db.Close() 51 const dbName = "cayley" 52 if _, err = db.Exec("CREATE DATABASE " + dbName); err != nil { 53 closer() 54 t.Fatal(err) 55 } 56 addr = addr + `/` + dbName + `?sslmode=disable` 57 return addr, nil, func() { 58 closer() 59 } 60 } 61 62 var conf = &sqltest.Config{ 63 TimeRound: true, 64 TimeInMcs: true, 65 } 66 67 func TestCockroach(t *testing.T) { 68 sqltest.TestAll(t, Type, makeCockroach, conf) 69 } 70 71 func BenchmarkCockroach(t *testing.B) { 72 sqltest.BenchmarkAll(t, Type, makeCockroach, conf) 73 }