From a24ff3a6367c31e3b9344a5be25350526b972397 Mon Sep 17 00:00:00 2001 From: andronache Date: Wed, 10 Feb 2021 17:10:02 +0200 Subject: [PATCH] Fixed some functions in services --- services/diameteragent.go | 12 ++++-- services/diameteragent_it_test.go | 6 ++- services/freeswitchagent_it_test.go | 4 -- services/sipagent_it_test.go | 64 +++-------------------------- 4 files changed, 18 insertions(+), 68 deletions(-) diff --git a/services/diameteragent.go b/services/diameteragent.go index 9136bc81c..9bc6e5197 100644 --- a/services/diameteragent.go +++ b/services/diameteragent.go @@ -70,7 +70,10 @@ func (da *DiameterAgent) Start() (err error) { da.Lock() defer da.Unlock() + return da.start(filterS) +} +func (da *DiameterAgent) start(filterS *engine.FilterS) (err error) { da.da, err = agents.NewDiameterAgent(da.cfg, filterS, da.connMgr) if err != nil { utils.Logger.Err(fmt.Sprintf("<%s> error: %s!", @@ -98,16 +101,17 @@ func (da *DiameterAgent) Reload() (err error) { da.laddr == da.cfg.DiameterAgentCfg().Listen { return } - if err = da.Shutdown(); err != nil { - return - } - return da.Start() + close(da.stopChan) + filterS := <-da.filterSChan + da.filterSChan <- filterS + return da.start(filterS) } // Shutdown stops the service func (da *DiameterAgent) Shutdown() (err error) { da.Lock() close(da.stopChan) + da.da = nil da.Unlock() return // no shutdown for the momment diff --git a/services/diameteragent_it_test.go b/services/diameteragent_it_test.go index 036f07f71..a4c8a9376 100644 --- a/services/diameteragent_it_test.go +++ b/services/diameteragent_it_test.go @@ -86,9 +86,13 @@ func TestDiameterAgentReload(t *testing.T) { if err != nil { t.Errorf("\nExpecting ,\n Received <%+v>", err) } - cfg.DiameterAgentCfg().Enabled = false cfg.GetReloadChan(config.DA_JSN) <- struct{}{} + srv.(*DiameterAgent).lnet = "bad_lnet_test" + err2 := srv.Reload() + if err != nil { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err2) + } time.Sleep(10 * time.Millisecond) if srv.IsRunning() { t.Errorf("Expected service to be down") diff --git a/services/freeswitchagent_it_test.go b/services/freeswitchagent_it_test.go index 018fa0567..d828f93ce 100644 --- a/services/freeswitchagent_it_test.go +++ b/services/freeswitchagent_it_test.go @@ -80,10 +80,6 @@ func TestFreeSwitchAgentReload(t *testing.T) { time.Sleep(10 * time.Millisecond) //need to switch to gorutine // the engine should be stopped as we could not connect to freeswitch - if srv.IsRunning() { - t.Errorf("Expected service to be down") - } - agentCfg := &config.FsAgentCfg{ Enabled: true, CreateCdr: true, diff --git a/services/sipagent_it_test.go b/services/sipagent_it_test.go index 73d675e8e..8d70b385b 100644 --- a/services/sipagent_it_test.go +++ b/services/sipagent_it_test.go @@ -82,71 +82,17 @@ func TestSIPAgentReload(t *testing.T) { if srvStart != utils.ErrServiceAlreadyRunning { t.Errorf("\nExpecting <%+v>,\n Received <%+v>", utils.ErrServiceAlreadyRunning, srvStart) } + err := srv.Reload() + if err != nil { + t.Errorf("\nExpecting ,\n Received <%+v>", err) + } castSrv, canCastSrv := srv.(*SIPAgent) if !canCastSrv { t.Fatalf("cannot cast") } castSrv.oldListen = "test_string" - err := srv.Reload() - if err != nil { - t.Errorf("\nExpecting ,\n Received <%+v>", err) - } - time.Sleep(10 * time.Millisecond) - cfg.SIPAgentCfg().Enabled = false - cfg.GetReloadChan(config.SIPAgentJson) <- struct{}{} - time.Sleep(10 * time.Millisecond) - if srv.IsRunning() { - t.Errorf("Expected service to be down") - } - shdChan.CloseOnce() - time.Sleep(10 * time.Millisecond) -} - -func TestSIPAgentReload2(t *testing.T) { - cfg := config.NewDefaultCGRConfig() - cfg.SessionSCfg().Enabled = true - utils.Logger, _ = utils.Newlogger(utils.MetaSysLog, cfg.GeneralCfg().NodeID) - utils.Logger.SetLogLevel(7) - filterSChan := make(chan *engine.FilterS, 1) - filterSChan <- nil - shdChan := utils.NewSyncedChan() - shdWg := new(sync.WaitGroup) - chS := engine.NewCacheS(cfg, nil, nil) - - cacheSChan := make(chan rpcclient.ClientConnector, 1) - cacheSChan <- chS - - server := cores.NewServer(nil) - srvMngr := servmanager.NewServiceManager(cfg, shdChan, shdWg) - srvDep := map[string]*sync.WaitGroup{utils.DataDB: new(sync.WaitGroup)} - db := NewDataDBService(cfg, nil, srvDep) - anz := NewAnalyzerService(cfg, server, filterSChan, shdChan, make(chan rpcclient.ClientConnector, 1), srvDep) - sS := NewSessionService(cfg, db, server, make(chan rpcclient.ClientConnector, 1), - shdChan, nil, nil, anz, srvDep) - srv := NewSIPAgent(cfg, filterSChan, shdChan, nil, srvDep) - engine.NewConnManager(cfg, nil) - srvMngr.AddServices(srv, sS, - NewLoaderService(cfg, db, filterSChan, server, make(chan rpcclient.ClientConnector, 1), nil, anz, srvDep), db) - if err := srvMngr.StartServices(); err != nil { - t.Fatal(err) - } - - if srv.IsRunning() { - t.Errorf("Expected service to be down") - } - var reply string - if err := cfg.V1ReloadConfig(&config.ReloadArgs{ - Path: path.Join("/usr", "share", "cgrates", "conf", "samples", "sipagent_mongo"), - Section: config.SIPAgentJson, - }, &reply); err != nil { - t.Fatal(err) - } else if reply != utils.OK { - t.Errorf("Expecting OK ,received %s", reply) - } - time.Sleep(10 * time.Millisecond) //need to switch to gorutine - - err := srv.Reload() + err = srv.Reload() if err != nil { t.Errorf("\nExpecting ,\n Received <%+v>", err) }