mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-03 03:10:26 -05:00
integration-tests/go-sql-server-driver: Make a new connection pool per connection assertion, instead of trying to reuse them.
Simpler. Much better structure for lots of tests which test things like connection strings, users and passwords provided at connection time, etc.
This commit is contained in:
@@ -21,7 +21,6 @@ import (
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
"database/sql/driver"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gopkg.in/yaml.v2"
|
||||
@@ -232,7 +231,6 @@ func (test Test) Run(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
servers := make(map[string]*SqlServer)
|
||||
dbs := make(map[string]*sql.DB)
|
||||
|
||||
for _, r := range test.Repos {
|
||||
repo := MakeRepo(t, rs, r)
|
||||
@@ -241,10 +239,6 @@ func (test Test) Run(t *testing.T) {
|
||||
if server != nil {
|
||||
server.DBName = r.Name
|
||||
servers[r.Name] = server
|
||||
|
||||
db, err := server.DB()
|
||||
require.NoError(t, err)
|
||||
dbs[r.Name] = db
|
||||
}
|
||||
}
|
||||
for _, mr := range test.MultiRepos {
|
||||
@@ -263,41 +257,27 @@ func (test Test) Run(t *testing.T) {
|
||||
server := MakeServer(t, rs, mr.Server)
|
||||
if server != nil {
|
||||
servers[mr.Name] = server
|
||||
|
||||
db, err := server.DB()
|
||||
require.NoError(t, err)
|
||||
dbs[mr.Name] = db
|
||||
}
|
||||
}
|
||||
|
||||
t.Cleanup(func() {
|
||||
for _, db := range dbs {
|
||||
db.Close()
|
||||
}
|
||||
})
|
||||
|
||||
for i, c := range test.Conns {
|
||||
db := dbs[c.On]
|
||||
require.NotNilf(t, db, "error in test spec: could not find database %s for connection %d", c.On, i)
|
||||
conn, err := db.Conn(context.Background())
|
||||
require.NoError(t, err)
|
||||
server := servers[c.On]
|
||||
require.NotNilf(t, server, "error in test spec: could not find server %s for connection %d", c.On, i)
|
||||
func() {
|
||||
// Do not return this connection to the connection pool.
|
||||
defer conn.Raw(func(any) error {
|
||||
return driver.ErrBadConn
|
||||
})
|
||||
db, err := server.DB()
|
||||
require.NoError(t, err)
|
||||
defer db.Close()
|
||||
|
||||
conn, err := db.Conn(context.Background())
|
||||
require.NoError(t, err)
|
||||
defer conn.Close()
|
||||
|
||||
for _, q := range c.Queries {
|
||||
RunQuery(t, conn, q)
|
||||
}
|
||||
}()
|
||||
if c.RestartServer != nil {
|
||||
s := servers[c.On]
|
||||
require.NotNilf(t, s, "error in test spec: could not find server %s for connection %d", c.On, i)
|
||||
// Close the old map entry.
|
||||
db.Close()
|
||||
err := s.Restart(c.RestartServer.Args)
|
||||
require.NoError(t, err)
|
||||
dbs[c.On], err = s.DB()
|
||||
err := server.Restart(c.RestartServer.Args)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ tests:
|
||||
args: ["-l", "trace"]
|
||||
log_matches:
|
||||
- "warning: persisted system variable unknown was not loaded since its definition does not exist."
|
||||
connections:
|
||||
- on: repo1
|
||||
- name: invalid persisted global variable value throws warning on server startup, but does not crash
|
||||
repos:
|
||||
- name: repo1
|
||||
@@ -36,6 +38,8 @@ tests:
|
||||
server:
|
||||
log_matches:
|
||||
- "error: failed to load persisted global variables: key: 'max_connections'; strconv.ParseInt: parsing \"string\": invalid syntax"
|
||||
connections:
|
||||
- on: repo1
|
||||
- name: persisted global variable in server
|
||||
repos:
|
||||
- name: repo1
|
||||
|
||||
Reference in New Issue
Block a user