Updated AnalyzerS to register API after obtaining the filterS

This commit is contained in:
Trial97
2020-11-18 16:05:58 +02:00
committed by Dan Christian Bogos
parent 6fd40f7296
commit 27fce31f8b
6 changed files with 36 additions and 63 deletions

View File

@@ -35,10 +35,9 @@ import (
)
// NewAnalyzerService initializes a AnalyzerService
func NewAnalyzerService(cfg *config.CGRConfig, filterS chan *engine.FilterS) (aS *AnalyzerService, err error) {
func NewAnalyzerService(cfg *config.CGRConfig) (aS *AnalyzerService, err error) {
aS = &AnalyzerService{
cfg: cfg,
filterSChan: filterS,
cfg: cfg,
}
err = aS.initDB()
return
@@ -49,11 +48,13 @@ type AnalyzerService struct {
db bleve.Index
cfg *config.CGRConfig
// because we do not use the filters only for API
// start the service without them
// and populate them on the first API call
filterSChan chan *engine.FilterS
filterS *engine.FilterS
filterS *engine.FilterS
}
// SetFilterS will set the filterS used in APIs
// this function is called before the API is registerd
func (aS *AnalyzerService) SetFilterS(fS *engine.FilterS) {
aS.filterS = fS
}
func (aS *AnalyzerService) initDB() (err error) {
@@ -146,12 +147,7 @@ func (aS *AnalyzerService) V1StringQuery(args *QueryArgs, reply *[]map[string]in
return err
}
rply := make([]map[string]interface{}, 0, searchResults.Hits.Len())
lCntFltrs := len(args.ContentFilters)
if lCntFltrs != 0 &&
aS.filterS == nil { // populate the filter on the first API that requeres them
aS.filterS = <-aS.filterSChan
aS.filterSChan <- aS.filterS
}
lenContentFltrs := len(args.ContentFilters)
for _, obj := range searchResults.Hits {
// make sure that the result is corectly marshaled
rep := json.RawMessage(utils.IfaceAsString(obj.Fields[utils.Reply]))
@@ -165,7 +161,7 @@ func (aS *AnalyzerService) V1StringQuery(args *QueryArgs, reply *[]map[string]in
if val, has := obj.Fields[utils.ReplyError]; !has || len(utils.IfaceAsString(val)) == 0 {
obj.Fields[utils.ReplyError] = nil
}
if lCntFltrs != 0 {
if lenContentFltrs != 0 {
dp, err := getDPFromSearchresult(req, rep, obj.Fields)
if err != nil {
return err

View File

@@ -46,7 +46,7 @@ func TestNewAnalyzerService(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
@@ -81,7 +81,7 @@ func TestAnalyzerSLogTraffic(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
@@ -137,7 +137,7 @@ func TestAnalyzersDeleteHits(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
@@ -162,7 +162,7 @@ func TestAnalyzersListenAndServe(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
@@ -172,7 +172,7 @@ func TestAnalyzersListenAndServe(t *testing.T) {
anz.ListenAndServe(make(chan struct{}))
cfg.AnalyzerSCfg().CleanupInterval = 1
anz, err = NewAnalyzerService(cfg, nil)
anz, err = NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
@@ -201,13 +201,12 @@ func TestAnalyzersV1Search(t *testing.T) {
t.Fatal(err)
}
dm := engine.NewDataManager(engine.NewInternalDB(nil, nil, true), cfg.CacheCfg(), nil)
fs := engine.NewFilterS(cfg, nil, dm)
fsChan := make(chan *engine.FilterS, 1)
fsChan <- fs
anz, err := NewAnalyzerService(cfg, fsChan)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}
anz.SetFilterS(engine.NewFilterS(cfg, nil, dm))
// generate trafic
t1 := time.Now()
if err = anz.logTrafic(0, utils.CoreSv1Ping,

View File

@@ -59,7 +59,7 @@ func TestNewServerCodec(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}

View File

@@ -46,7 +46,7 @@ func TestNewAnalyzeConnector(t *testing.T) {
if err = os.MkdirAll(cfg.AnalyzerSCfg().DBPath, 0700); err != nil {
t.Fatal(err)
}
anz, err := NewAnalyzerService(cfg, nil)
anz, err := NewAnalyzerService(cfg)
if err != nil {
t.Fatal(err)
}