-
Notifications
You must be signed in to change notification settings - Fork 0
/
database_config_loader_test.go
126 lines (114 loc) · 3.7 KB
/
database_config_loader_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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package config_loader
import "testing"
func TestDatasourceConfigGroup_LoadByBytes(t *testing.T) {
config := DatasourceConfigGroup{}
yamlstr := `
test:
dbtype: mongo
server: dev.db.cc
port: 27017
username: "akimimi"
password: "123456"
query: connectTimeoutMS=10000
database: dev
prefix: test
`
config.LoadByBytes([]byte(yamlstr))
c, ok := config["test"]
if !ok || c.Server != "dev.db.cc" {
t.Error("datasource config YAML unmarshal failed!")
}
if c.Prefix != "test" {
t.Errorf("datasource prefix expected to be %s, actual %s", "test", c.Prefix)
}
expected := "mongodb://akimimi:123456@dev.db.cc:27017/?connectTimeoutMS=10000"
actual := config.ConnectString("test")
if actual != expected {
t.Errorf("connect string expected %s, actual %s", expected, actual)
}
if config.DatabaseName("test") != "dev" {
t.Errorf("connect database expected %s, actual %s", "dev", c.Database)
}
}
func TestDatasourceConfigGroup_LoadByBytesForReplicaSet(t *testing.T) {
config := DatasourceConfigGroup{}
yamlstr := `
test:
dbtype: mongo
server: dev.db.cc
port: 27017
username: "akimimi"
password: "123456"
query: connectTimeoutMS=10000&authSource=dev&authMechanism=SCRAM-SHA-1
replica_set: replica
replica_servers: db0.dev.cc:27017,db1.dev.cc:27017
replica_read_preference: secondary
database: dev
`
config.LoadByBytes([]byte(yamlstr))
c, ok := config["test"]
if !ok || c.ReplicaSet != "replica" {
t.Error("datasource config YAML unmarshal failed!")
}
expected := "mongodb://akimimi:123456@db0.dev.cc:27017,db1.dev.cc:27017/?replicaSet=replica&readPreference=secondary&connectTimeoutMS=10000&authSource=dev&authMechanism=SCRAM-SHA-1"
actual := config.ConnectString("test")
if actual != expected {
t.Errorf("connect string expected %s, actual %s", expected, actual)
}
if config.DatabaseName("test") != "dev" {
t.Errorf("connect database expected %s, actual %s", "dev", c.Database)
}
}
func BenchmarkDatasourceConfigGroup_LoadByBytes(b *testing.B) {
yamlstr := `
test:
dbtype: mongo
server: dev.db.cc
port: 27017
username: "akimimi"
password: "123456"
query: connectTimeoutMS=10000
database: dev
`
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
config := DatasourceConfigGroup{}
config.LoadByBytes([]byte(yamlstr))
}
}
func TestDatasourceConfig_String(t *testing.T) {
config := DatasourceConfig{
Server: "dev.db.cc",
Port: 27017,
Username: "akimimi",
Password: "123456",
Query: "connectTimeoutMS=10000",
Database: "dev",
Dbtype: DataTypeMongo,
ReplicaSet: "",
ReplicaServers: "",
ReadPreference: "",
Prefix: "",
}
expected := "mongodb://akimimi:123456@dev.db.cc:27017/?connectTimeoutMS=10000"
actual := config.String()
if actual != expected {
t.Errorf("connect string expected %s, actual %s", expected, actual)
}
config.Dbtype = DataTypeMysql
expected = "akimimi:123456@tcp(dev.db.cc:27017)/dev?connectTimeoutMS=10000"
actual = config.String()
if actual != expected {
t.Errorf("connect string expected %s, actual %s", expected, actual)
}
config.Dbtype = DataTypeMongo
config.ReplicaSet = "replica"
config.ReplicaServers = "db0.dev.cc:27017,db1.dev.cc:27017,db2.dev.cc:27017"
config.ReadPreference = "secondaryPreferred"
expected = "mongodb://akimimi:123456@db0.dev.cc:27017,db1.dev.cc:27017,db2.dev.cc:27017/?replicaSet=replica&readPreference=secondaryPreferred&connectTimeoutMS=10000"
actual = config.String()
if actual != expected {
t.Errorf("connect string expected %s, actual %s", expected, actual)
}
}