-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathcheck_test.go
104 lines (80 loc) · 1.86 KB
/
check_test.go
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
98
99
100
101
102
103
104
package sqlserver
import (
"context"
"database/sql"
"os"
"sync"
"testing"
"time"
"github.com/microsoft/go-mssqldb/azuread"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
const sqlServerDSNEnv = "HEALTH_GO_SS_DSN"
func TestNew(t *testing.T) {
initDB(t)
check := New(Config{
DSN: getDSN(t),
})
err := check(context.Background())
require.NoError(t, err)
}
func TestEnsureConnectionIsClosed(t *testing.T) {
initDB(t)
sqlDSN := getDSN(t)
db, err := sql.Open(azuread.DriverName, sqlDSN)
require.NoError(t, err)
defer func() {
err := db.Close()
assert.NoError(t, err)
}()
var initialConnections int
row := db.QueryRow(`SELECT COUNT(session_id) FROM sys.dm_exec_sessions`)
err = row.Scan(&initialConnections)
require.NoError(t, err)
check := New(Config{
DSN: sqlDSN,
})
ctx := context.Background()
for i := 0; i < 10; i++ {
err := check(ctx)
assert.NoError(t, err)
time.Sleep(100 * time.Millisecond)
}
var currentConnections int
row = db.QueryRow(`SELECT COUNT(session_id) FROM sys.dm_exec_sessions`)
err = row.Scan(¤tConnections)
require.NoError(t, err)
assert.Equal(t, initialConnections, currentConnections)
}
func getDSN(t *testing.T) string {
t.Helper()
//get env
sqlServerDSN := os.Getenv(sqlServerDSNEnv)
require.NotEmpty(t, sqlServerDSN)
return sqlServerDSN
}
var dbInit sync.Once
func initDB(t *testing.T) {
t.Helper()
dbInit.Do(func() {
db, err := sql.Open(azuread.DriverName, getDSN(t))
require.NoError(t, err)
defer func() {
err := db.Close()
assert.NoError(t, err)
}()
_, err = db.Exec(`
IF OBJECT_ID('dbo.test_mssql', 'U') IS NULL
BEGIN
CREATE TABLE test_mssql (
id NVARCHAR(255) NOT NULL PRIMARY KEY,
secret NVARCHAR(255) NOT NULL,
extra NVARCHAR(255) NOT NULL,
redirect_uri NVARCHAR(255) NOT NULL
);
END
`)
require.NoError(t, err)
})
}