mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated AnalyzerS to register API after obtaining the filterS
This commit is contained in:
committed by
Dan Christian Bogos
parent
6fd40f7296
commit
27fce31f8b
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user