From 4f34b9871b756ceeba01335c13f043fa73e18148 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 8 Oct 2019 11:56:02 +0300 Subject: [PATCH] Added DB reload for ChargerS --- cmd/cgr-engine/cgr-engine.go | 2 +- config/config.go | 1 + services/cdrs_it_test.go | 5 +++-- services/chargers.go | 6 +++--- services/chargers_it_test.go | 8 +++++++- services/sessions_it_test.go | 5 +++-- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 14eb89df1..71b6d53fd 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -521,7 +521,7 @@ func main() { attrS := services.NewAttributeService(cfg, dmService, cacheS, filterSChan, server) dspS := services.NewDispatcherService(cfg, dmService, cacheS, filterSChan, server, attrS.GetIntenternalChan()) - chrS := services.NewChargerService(cfg, dmService.GetDM(), cacheS, filterSChan, server, + chrS := services.NewChargerService(cfg, dmService, cacheS, filterSChan, server, attrS.GetIntenternalChan(), dspS.GetIntenternalChan()) tS := services.NewThresholdService(cfg, dmService.GetDM(), cacheS, filterSChan, server) stS := services.NewStatService(cfg, dmService.GetDM(), cacheS, filterSChan, server, diff --git a/config/config.go b/config/config.go index 9a04566e0..78b28d998 100755 --- a/config/config.go +++ b/config/config.go @@ -1626,6 +1626,7 @@ func (cfg *CGRConfig) reloadSection(section string) (err error) { } fallthrough case ChargerSCfgJson: + cfg.rldChans[DATADB_JSN] <- struct{}{} // reload datadb before cfg.rldChans[ChargerSCfgJson] <- struct{}{} if !fall { break diff --git a/services/cdrs_it_test.go b/services/cdrs_it_test.go index 8b4803962..409744d49 100644 --- a/services/cdrs_it_test.go +++ b/services/cdrs_it_test.go @@ -65,7 +65,8 @@ func TestCdrsReload(t *testing.T) { cacheSChan <- chS server := utils.NewServer() srvMngr := servmanager.NewServiceManager(cfg, engineShutdown) - chrS := NewChargerService(cfg, nil, chS, filterSChan, server, nil, nil) + db := NewDataDBService(cfg) + chrS := NewChargerService(cfg, db, chS, filterSChan, server, nil, nil) schS := NewSchedulerService(cfg, nil, chS, server, make(chan rpcclient.RpcClientConnection, 1), nil) tS := NewThresholdService(cfg, nil, chS, filterSChan, server) ralS := NewRalService(cfg, nil, nil, nil, chS, filterSChan, server, @@ -75,7 +76,7 @@ func TestCdrsReload(t *testing.T) { make(chan rpcclient.RpcClientConnection, 1), chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(), nil, nil, nil, nil) - srvMngr.AddServices(cdrS, ralS, schS, chrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown)) + srvMngr.AddServices(cdrS, ralS, schS, chrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) } diff --git a/services/chargers.go b/services/chargers.go index d4a918fbf..362a3141e 100644 --- a/services/chargers.go +++ b/services/chargers.go @@ -31,7 +31,7 @@ import ( ) // NewChargerService returns the Charger Service -func NewChargerService(cfg *config.CGRConfig, dm *engine.DataManager, +func NewChargerService(cfg *config.CGRConfig, dm *DataDBService, cacheS *engine.CacheS, filterSChan chan *engine.FilterS, server *utils.Server, attrsChan, dispatcherChan chan rpcclient.RpcClientConnection) servmanager.Service { return &ChargerService{ @@ -50,7 +50,7 @@ func NewChargerService(cfg *config.CGRConfig, dm *engine.DataManager, type ChargerService struct { sync.RWMutex cfg *config.CGRConfig - dm *engine.DataManager + dm *DataDBService cacheS *engine.CacheS filterSChan chan *engine.FilterS server *utils.Server @@ -82,7 +82,7 @@ func (chrS *ChargerService) Start() (err error) { } chrS.Lock() defer chrS.Unlock() - if chrS.chrS, err = engine.NewChargerService(chrS.dm, filterS, attrSConn, chrS.cfg); err != nil { + if chrS.chrS, err = engine.NewChargerService(chrS.dm.GetDM(), filterS, attrSConn, chrS.cfg); err != nil { utils.Logger.Crit( fmt.Sprintf("<%s> Could not init, error: %s", utils.ChargerS, err.Error())) diff --git a/services/chargers_it_test.go b/services/chargers_it_test.go index 405d1096a..405697f38 100644 --- a/services/chargers_it_test.go +++ b/services/chargers_it_test.go @@ -50,7 +50,7 @@ func TestChargerSReload(t *testing.T) { srvMngr := servmanager.NewServiceManager(cfg, engineShutdown) db := NewDataDBService(cfg) attrS := NewAttributeService(cfg, db, chS, filterSChan, server) - chrS := NewChargerService(cfg, nil, chS, filterSChan, server, attrS.GetIntenternalChan(), nil) + chrS := NewChargerService(cfg, db, chS, filterSChan, server, attrS.GetIntenternalChan(), nil) srvMngr.AddServices(attrS, chrS, NewLoaderService(cfg, nil, filterSChan, server, nil, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) @@ -58,6 +58,9 @@ func TestChargerSReload(t *testing.T) { if chrS.IsRunning() { t.Errorf("Expected service to be down") } + if db.IsRunning() { + t.Errorf("Expected service to be down") + } var reply string if err = cfg.V1ReloadConfig(&config.ConfigReloadWithArgDispatcher{ Path: path.Join("/usr", "share", "cgrates", "conf", "samples", "tutmongo"), @@ -71,6 +74,9 @@ func TestChargerSReload(t *testing.T) { if !chrS.IsRunning() { t.Errorf("Expected service to be running") } + if !db.IsRunning() { + t.Errorf("Expected service to be running") + } cfg.ChargerSCfg().Enabled = false cfg.GetReloadChan(config.ChargerSCfgJson) <- struct{}{} time.Sleep(10 * time.Millisecond) diff --git a/services/sessions_it_test.go b/services/sessions_it_test.go index 4365bf321..f4f164b64 100644 --- a/services/sessions_it_test.go +++ b/services/sessions_it_test.go @@ -67,7 +67,8 @@ func TestSessionSReload(t *testing.T) { server := utils.NewServer() srvMngr := servmanager.NewServiceManager(cfg, engineShutdown) - chrS := NewChargerService(cfg, nil, chS, filterSChan, server, nil, nil) + db := NewDataDBService(cfg) + chrS := NewChargerService(cfg, db, chS, filterSChan, server, nil, nil) schS := NewSchedulerService(cfg, nil, chS, server, make(chan rpcclient.RpcClientConnection, 1), nil) ralS := NewRalService(cfg, nil, nil, nil, chS, filterSChan, server, /*tS*/ internalChan, internalChan, cacheSChan, internalChan, internalChan, @@ -78,7 +79,7 @@ func TestSessionSReload(t *testing.T) { nil, nil, nil, nil) attrS := NewSessionService(cfg, nil, server, chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(), nil, nil, nil, nil, nil, cdrS.GetIntenternalChan(), nil, engineShutdown) - srvMngr.AddServices(attrS, chrS, schS, ralS, cdrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown)) + srvMngr.AddServices(attrS, chrS, schS, ralS, cdrS, NewLoaderService(cfg, nil, filterSChan, server, cacheSChan, nil, engineShutdown), db) if err = srvMngr.StartServices(); err != nil { t.Error(err) }