MCPcopy
hub / github.com/apache/answer / initDatabaseImage

Function initDatabaseImage

plugin/plugin_test/plugin_main_test.go:138–179  ·  view source on GitHub ↗
(dbSetting TestDBSetting)

Source from the content-addressed store, hash-verified

136}
137
138func initDatabaseImage(dbSetting TestDBSetting) (connection string, cleanup func(), err error) {
139 // sqlite3 don't need to set up image
140 if dbSetting.Driver == string(schemas.SQLITE) {
141 return dbSetting.Connection, func() {
142 log.Info("remove database", dbSetting.Connection)
143 err = os.Remove(dbSetting.Connection)
144 if err != nil {
145 log.Error(err)
146 }
147 }, nil
148 }
149 pool, err := dockertest.NewPool("")
150 pool.MaxWait = time.Minute * 5
151 if err != nil {
152 return "", nil, fmt.Errorf("could not connect to docker: %s", err)
153 }
154
155 // resource, err := pool.Run(dbSetting.ImageName, dbSetting.ImageVersion, dbSetting.ENV)
156 resource, err := pool.RunWithOptions(&dockertest.RunOptions{
157 Repository: dbSetting.ImageName,
158 Tag: dbSetting.ImageVersion,
159 Env: dbSetting.ENV,
160 }, func(config *docker.HostConfig) {
161 config.AutoRemove = true
162 config.RestartPolicy = docker.RestartPolicy{Name: "no"}
163 })
164 if err != nil {
165 return "", nil, fmt.Errorf("could not pull resource: %s", err)
166 }
167
168 connection = fmt.Sprintf(dbSetting.Connection, resource.GetPort(dbSetting.PortID))
169 if err := pool.Retry(func() error {
170 db, err := sql.Open(dbSetting.Driver, connection)
171 if err != nil {
172 return err
173 }
174 return db.Ping()
175 }); err != nil {
176 return "", nil, fmt.Errorf("could not connect to database: %s", err)
177 }
178 return connection, func() { _ = pool.Purge(resource) }, nil
179}
180
181func initDatabase(dbSetting TestDBSetting) (dbEngine *xorm.Engine, err error) {
182 dataConf := &data.Database{Driver: dbSetting.Driver, Connection: dbSetting.Connection}

Callers 1

initTestDataSourceFunction · 0.70

Calls 2

InfoMethod · 0.65
OpenMethod · 0.45

Tested by

no test coverage detected