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  }