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:
Aaron Son
2022-10-03 15:26:46 -07:00
parent b3dc25fc57
commit 364024f7a2
2 changed files with 15 additions and 31 deletions
@@ -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