-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit_sqlagent_test.go
More file actions
126 lines (110 loc) · 2.75 KB
/
init_sqlagent_test.go
File metadata and controls
126 lines (110 loc) · 2.75 KB
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 sqlagent
import (
"testing"
"os"
"path/filepath"
"io/ioutil"
)
const (
jsonConfigStr = `{
"host": "localhost",
"port": 3306,
"name": "dbName",
"type": "mysql",
"user": "user",
"password": "passwd"
}`
)
func createTestConfig(dir, fname string, t *testing.T) string {
_, err := os.Stat(dir)
if err != nil {
if !os.IsNotExist(err) {
t.Fatalf("Stat error: %v", err)
}
err = os.MkdirAll(dir, os.ModePerm)
if err != nil {
t.Fatalf("MkdirAll error: %v", err)
}
}
fpath := filepath.Join(dir, fname+".json")
if _, err = os.Stat(fpath); err != nil {
if !os.IsNotExist(err) {
t.Fatalf("Stat error: %v", err)
}
err = ioutil.WriteFile(fpath, []byte(jsonConfigStr), os.ModePerm)
if err != nil {
t.Fatalf("Create file error: %v", err)
}
}
return fpath
}
func rmTestconfig(fpath string) {
os.RemoveAll(fpath)
}
func TestReadConfig(t *testing.T) {
pwd, err := os.Getwd()
if err != nil {
t.Fatalf("Getwd error: %v", err)
}
fpath := createTestConfig(pwd, defaultDBConfigFileName, t)
defer rmTestconfig(fpath)
cfg, err := readDBConfig(fpath)
if err != nil {
t.Fatalf("readDBConfig error: %v", err)
}
t.Logf("db config: %v", cfg)
if cfg.Host == "" || cfg.Type == "" {
t.Fatalf("decode config file fail")
}
}
func TestFindInDir(t *testing.T) {
pwd, err := os.Getwd()
if err != nil {
t.Fatalf("Getwd error: %v", err)
}
found, err := findInDir(pwd, defaultDBConfigFileName)
if err != errorNotFoundDBConfig {
t.Fatalf("findInDir return error: %v", err)
}
fpath := createTestConfig(pwd, defaultDBConfigFileName, t)
defer rmTestconfig(fpath)
found, err = findInDir(pwd, defaultDBConfigFileName)
if err != nil {
t.Fatalf("findInDir error: %v", err)
}
t.Logf("found %s", found)
}
func TestFindDBConfig(t *testing.T) {
if fpath := findDBConfig(1, "config"); fpath != "" {
t.Fatalf("findDBConfig found %s", fpath)
}
pwd, err := os.Getwd()
if err != nil {
t.Fatalf("Getwd error: %v", err)
}
label := "prod"
os.Setenv(envDBLabel, label)
fpath := createTestConfig(filepath.Join(pwd, "config"), defaultDBConfigFileName+"-"+label, t)
defer rmTestconfig(fpath)
if fpath := findDBConfig(1, "config"); fpath == "" {
t.Fatalf("findDBConfig file not found")
}
}
func TestDetectDBConfig(t *testing.T) {
if fpath := detectDBConfig(); fpath != "" {
t.Fatalf("detectDBConfig found %s", fpath)
}
pwd, err := os.Getwd()
if err != nil {
t.Fatalf("Getwd error: %v", err)
}
label := "prod"
os.Setenv(envDBLabel, label)
fpath := createTestConfig(filepath.Join(pwd, "config"), defaultDBConfigFileName+"-"+label, t)
defer rmTestconfig(fpath)
envConfigPath := fpath
os.Setenv(envDBConfig, envConfigPath)
if fpath := detectDBConfig(); fpath != envConfigPath {
t.Fatalf("detectDBConfig found %s", fpath)
}
}