mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
close db connections in test flush helpers
Previously, database connections would stay alive until "go test" would finish, sometimes leading to max conn errors.
This commit is contained in:
committed by
Dan Christian Bogos
parent
43cdd396ba
commit
5f47df6927
@@ -45,7 +45,7 @@ import (
|
||||
)
|
||||
|
||||
func InitDataDb(cfg *config.CGRConfig) error {
|
||||
d, err := NewDataDBConn(cfg.DataDbCfg().Type,
|
||||
dataDB, err := NewDataDBConn(cfg.DataDbCfg().Type,
|
||||
cfg.DataDbCfg().Host, cfg.DataDbCfg().Port,
|
||||
cfg.DataDbCfg().Name, cfg.DataDbCfg().User,
|
||||
cfg.DataDbCfg().Password, cfg.GeneralCfg().DBDataEncoding,
|
||||
@@ -53,7 +53,8 @@ func InitDataDb(cfg *config.CGRConfig) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dm := NewDataManager(d, cfg.CacheCfg(), connMgr)
|
||||
defer dataDB.Close()
|
||||
dm := NewDataManager(dataDB, cfg.CacheCfg(), connMgr)
|
||||
|
||||
if err := dm.DataDB().Flush(""); err != nil {
|
||||
return err
|
||||
@@ -65,31 +66,8 @@ func InitDataDb(cfg *config.CGRConfig) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Initiates DataDB, flushes it, and closes the connection after
|
||||
func PreInitDataDb(cfg *config.CGRConfig) error {
|
||||
d, err := NewDataDBConn(cfg.DataDbCfg().Type,
|
||||
cfg.DataDbCfg().Host, cfg.DataDbCfg().Port,
|
||||
cfg.DataDbCfg().Name, cfg.DataDbCfg().User,
|
||||
cfg.DataDbCfg().Password, cfg.GeneralCfg().DBDataEncoding,
|
||||
cfg.DataDbCfg().Opts, cfg.DataDbCfg().Items)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dm := NewDataManager(d, cfg.CacheCfg(), connMgr)
|
||||
|
||||
if err := dm.DataDB().Flush(""); err != nil {
|
||||
return err
|
||||
}
|
||||
// Write version before starting
|
||||
if err := OverwriteDBVersions(dm.dataDB); err != nil {
|
||||
return err
|
||||
}
|
||||
d.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
func InitStorDb(cfg *config.CGRConfig) error {
|
||||
storDb, err := NewStorDBConn(cfg.StorDbCfg().Type,
|
||||
storDB, err := NewStorDBConn(cfg.StorDbCfg().Type,
|
||||
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
|
||||
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
|
||||
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding,
|
||||
@@ -98,46 +76,21 @@ func InitStorDb(cfg *config.CGRConfig) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer storDB.Close()
|
||||
dbPath := strings.Trim(cfg.StorDbCfg().Type, "*")
|
||||
if err := storDb.Flush(path.Join(cfg.DataFolderPath, "storage",
|
||||
if err := storDB.Flush(path.Join(cfg.DataFolderPath, "storage",
|
||||
dbPath)); err != nil {
|
||||
return err
|
||||
}
|
||||
if slices.Contains([]string{utils.MetaMongo, utils.MetaMySQL, utils.MetaPostgres},
|
||||
cfg.StorDbCfg().Type) {
|
||||
if err := SetDBVersions(storDb); err != nil {
|
||||
if err := SetDBVersions(storDB); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Initiates StorDB, flushes it, and closed the connection after
|
||||
func PreInitStorDb(cfg *config.CGRConfig) error {
|
||||
storDb, err := NewStorDBConn(cfg.StorDbCfg().Type,
|
||||
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
|
||||
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
|
||||
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding,
|
||||
cfg.StorDbCfg().StringIndexedFields, cfg.StorDbCfg().PrefixIndexedFields,
|
||||
cfg.StorDbCfg().Opts, cfg.StorDbCfg().Items)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dbPath := strings.Trim(cfg.StorDbCfg().Type, "*")
|
||||
if err := storDb.Flush(path.Join(cfg.DataFolderPath, "storage",
|
||||
dbPath)); err != nil {
|
||||
return err
|
||||
}
|
||||
if slices.Contains([]string{utils.MetaMongo, utils.MetaMySQL, utils.MetaPostgres},
|
||||
cfg.StorDbCfg().Type) {
|
||||
if err := SetDBVersions(storDb); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
storDb.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Return reference towards the command started so we can stop it if necessary
|
||||
func StartEngine(cfgPath string, waitEngine int) (*exec.Cmd, error) {
|
||||
enginePath, err := exec.LookPath("cgr-engine")
|
||||
@@ -395,7 +348,6 @@ type TestEngine struct {
|
||||
TpPath string // path to the tariff plans
|
||||
TpFiles map[string]string // CSV data for tariff plans: filename -> content
|
||||
GracefulShutdown bool // shutdown the engine gracefuly, otherwise use process.Kill
|
||||
PreInitDB bool // close db connections after initiating and flushing db
|
||||
|
||||
// PreStartHook executes custom logic relying on CGRConfig
|
||||
// before starting cgr-engine.
|
||||
@@ -408,7 +360,7 @@ type TestEngine struct {
|
||||
func (ng TestEngine) Run(t testing.TB, extraFlags ...string) (*birpc.Client, *config.CGRConfig) {
|
||||
t.Helper()
|
||||
cfg := parseCfg(t, ng.ConfigPath, ng.ConfigJSON, ng.DBCfg)
|
||||
FlushDBs(t, cfg, !ng.PreserveDataDB, !ng.PreserveStorDB, ng.PreInitDB)
|
||||
FlushDBs(t, cfg, !ng.PreserveDataDB, !ng.PreserveStorDB)
|
||||
if ng.PreStartHook != nil {
|
||||
ng.PreStartHook(t, cfg)
|
||||
}
|
||||
@@ -582,28 +534,16 @@ func LoadCSVs(t testing.TB, client *birpc.Client, tpPath string, csvFiles map[st
|
||||
}
|
||||
|
||||
// flushDBs resets the databases specified in the configuration if the corresponding flags are true.
|
||||
func FlushDBs(t testing.TB, cfg *config.CGRConfig, flushDataDB, flushStorDB bool, preInitDB bool) {
|
||||
func FlushDBs(t testing.TB, cfg *config.CGRConfig, flushDataDB, flushStorDB bool) {
|
||||
t.Helper()
|
||||
if flushDataDB {
|
||||
if preInitDB {
|
||||
if err := PreInitDataDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s dataDB: %v", cfg.DataDbCfg().Type, err)
|
||||
}
|
||||
} else {
|
||||
if err := InitDataDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s dataDB: %v", cfg.DataDbCfg().Type, err)
|
||||
}
|
||||
if err := InitDataDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s dataDB: %v", cfg.DataDbCfg().Type, err)
|
||||
}
|
||||
}
|
||||
if flushStorDB {
|
||||
if preInitDB {
|
||||
if err := PreInitStorDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s storDB: %v", cfg.StorDbCfg().Type, err)
|
||||
}
|
||||
} else {
|
||||
if err := InitStorDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s storDB: %v", cfg.StorDbCfg().Type, err)
|
||||
}
|
||||
if err := InitStorDb(cfg); err != nil {
|
||||
t.Fatalf("failed to flush %s storDB: %v", cfg.StorDbCfg().Type, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user