Added DB reload for ChargerS

This commit is contained in:
Trial97
2019-10-08 11:56:02 +03:00
committed by Dan Christian Bogos
parent 0189ad71da
commit 4f34b9871b
6 changed files with 18 additions and 9 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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)
}

View File

@@ -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()))

View File

@@ -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)

View File

@@ -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)
}