From 7b1e8d7a16d8b8d36044124cac2edb52e2f78b7c Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 5 Jul 2017 17:05:18 +0200 Subject: [PATCH] Renaming StatsQueue into CDRStatsQueue --- apier/v1/cdrstatsv1.go | 2 +- console/cdrstats_queue.go | 2 +- engine/action.go | 62 ++++++------ engine/action_trigger.go | 2 +- engine/actions_test.go | 2 +- engine/calldesc.go | 12 +-- engine/{stats.go => cdrstatsiface.go} | 28 +++--- engine/lcr.go | 4 +- engine/lcr_test.go | 130 +++++++++++++------------- engine/onstor_it_test.go | 2 +- engine/stats_queue.go | 42 ++++----- engine/stats_test.go | 22 ++--- engine/storage_interface.go | 4 +- engine/storage_map.go | 6 +- engine/storage_mongo_datadb.go | 8 +- engine/storage_redis.go | 6 +- general_tests/tp_it_test.go | 2 +- 17 files changed, 168 insertions(+), 168 deletions(-) rename engine/{stats.go => cdrstatsiface.go} (91%) diff --git a/apier/v1/cdrstatsv1.go b/apier/v1/cdrstatsv1.go index 8c8a0bcae..9fb7040e7 100644 --- a/apier/v1/cdrstatsv1.go +++ b/apier/v1/cdrstatsv1.go @@ -45,7 +45,7 @@ func (sts *CDRStatsV1) GetQueueIds(empty string, reply *[]string) error { return sts.CdrStats.Call("CDRStatsV1.GetQueueIds", 0, reply) } -func (sts *CDRStatsV1) GetQueue(id string, sq *engine.StatsQueue) error { +func (sts *CDRStatsV1) GetQueue(id string, sq *engine.CDRStatsQueue) error { return sts.CdrStats.Call("CDRStatsV1.GetQueue", id, sq) } diff --git a/console/cdrstats_queue.go b/console/cdrstats_queue.go index 6b0709f9e..a05b87627 100644 --- a/console/cdrstats_queue.go +++ b/console/cdrstats_queue.go @@ -55,5 +55,5 @@ func (self *CmdCdrStatsQueue) PostprocessRpcParams() error { } func (self *CmdCdrStatsQueue) RpcResult() interface{} { - return &engine.StatsQueue{} + return &engine.CDRStatsQueue{} } diff --git a/engine/action.go b/engine/action.go index 3d2629377..0cb80cdcc 100644 --- a/engine/action.go +++ b/engine/action.go @@ -86,7 +86,7 @@ func (a *Action) Clone() *Action { return &clonedAction } -type actionTypeFunc func(*Account, *StatsQueueTriggered, *Action, Actions) error +type actionTypeFunc func(*Account, *CDRStatsQueueTriggered, *Action, Actions) error func getActionFunc(typ string) (actionTypeFunc, bool) { actionFuncMap := map[string]actionTypeFunc{ @@ -119,14 +119,14 @@ func getActionFunc(typ string) (actionTypeFunc, bool) { return f, exists } -func logAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func logAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub != nil { body, _ := json.Marshal(ub) utils.Logger.Info(fmt.Sprintf("Threshold hit, Balance: %s", body)) } if sq != nil { body, _ := json.Marshal(sq) - utils.Logger.Info(fmt.Sprintf("Threshold hit, StatsQueue: %s", body)) + utils.Logger.Info(fmt.Sprintf("Threshold hit, CDRStatsQueue: %s", body)) } return } @@ -184,7 +184,7 @@ func parseTemplateValue(rsrFlds utils.RSRFields, acnt *Account, action *Action) return parsedValue } -func cdrLogAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func cdrLogAction(acc *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { defaultTemplate := map[string]utils.RSRFields{ utils.TOR: utils.ParseRSRFieldsMustCompile("BalanceType", utils.INFIELD_SEP), utils.CDRHOST: utils.ParseRSRFieldsMustCompile("^127.0.0.1", utils.INFIELD_SEP), @@ -251,7 +251,7 @@ func cdrLogAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) return } -func resetTriggersAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func resetTriggersAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -259,7 +259,7 @@ func resetTriggersAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Ac return } -func setRecurrentAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func setRecurrentAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -267,7 +267,7 @@ func setRecurrentAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Act return } -func unsetRecurrentAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func unsetRecurrentAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -275,7 +275,7 @@ func unsetRecurrentAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs A return } -func allowNegativeAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func allowNegativeAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -283,7 +283,7 @@ func allowNegativeAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Ac return } -func denyNegativeAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func denyNegativeAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -291,14 +291,14 @@ func denyNegativeAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Act return } -func resetAccountAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func resetAccountAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } return genericReset(ub) } -func topupResetAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func topupResetAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -312,7 +312,7 @@ func topupResetAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actio return } -func topupAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func topupAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -323,7 +323,7 @@ func topupAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) ( return } -func debitResetAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func debitResetAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -333,7 +333,7 @@ func debitResetAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actio return genericDebit(ub, a, true) } -func debitAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func debitAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -341,7 +341,7 @@ func debitAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) ( return } -func resetCountersAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func resetCountersAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -367,7 +367,7 @@ func genericDebit(ub *Account, a *Action, reset bool) (err error) { return ub.debitBalanceAction(a, reset) } -func enableAccountAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func enableAccountAction(acc *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if acc == nil { return errors.New("nil account") } @@ -375,7 +375,7 @@ func enableAccountAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs A return } -func disableAccountAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func disableAccountAction(acc *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if acc == nil { return errors.New("nil account") } @@ -383,7 +383,7 @@ func disableAccountAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs return } -/*func enableDisableBalanceAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +/*func enableDisableBalanceAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { if ub == nil { return errors.New("nil account") } @@ -400,7 +400,7 @@ func genericReset(ub *Account) error { return nil } -func callUrl(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func callUrl(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { var o interface{} if ub != nil { o = ub @@ -423,7 +423,7 @@ func callUrl(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error } // Does not block for posts, no error reports -func callUrlAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func callUrlAsync(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { var o interface{} if ub != nil { o = ub @@ -446,7 +446,7 @@ func callUrlAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) } // Mails the balance hitting the threshold towards predefined list of addresses -func mailAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func mailAsync(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { cgrCfg := config.CgrConfig() params := strings.Split(a.ExtraParameters, string(utils.CSV_SEP)) if len(params) == 0 { @@ -468,7 +468,7 @@ func mailAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) err } message = []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification] Threshold hit on Balance: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nBalance:\r\n\t%s\r\n\r\nYours faithfully,\r\nCGR Balance Monitor\r\n", toAddrStr, ub.ID, time.Now(), balJsn)) } else if sq != nil { - message = []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification] Threshold hit on StatsQueueId: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nStatsQueueId:\r\n\t%s\r\n\r\nMetrics:\r\n\t%+v\r\n\r\nTrigger:\r\n\t%+v\r\n\r\nYours faithfully,\r\nCGR CDR Stats Monitor\r\n", + message = []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification] Threshold hit on CDRStatsQueueId: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nCDRStatsQueueId:\r\n\t%s\r\n\r\nMetrics:\r\n\t%+v\r\n\r\nTrigger:\r\n\t%+v\r\n\r\nYours faithfully,\r\nCGR CDR Stats Monitor\r\n", toAddrStr, sq.Id, time.Now(), sq.Id, sq.Metrics, sq.Trigger)) } auth := smtp.PlainAuth("", cgrCfg.MailerAuthUser, cgrCfg.MailerAuthPass, strings.Split(cgrCfg.MailerServer, ":")[0]) // We only need host part, so ignore port @@ -480,7 +480,7 @@ func mailAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) err if ub != nil { utils.Logger.Warning(fmt.Sprintf(" WARNING: Failed emailing, params: [%s], error: [%s], BalanceId: %s", a.ExtraParameters, err.Error(), ub.ID)) } else if sq != nil { - utils.Logger.Warning(fmt.Sprintf(" WARNING: Failed emailing, params: [%s], error: [%s], StatsQueueTriggeredId: %s", a.ExtraParameters, err.Error(), sq.Id)) + utils.Logger.Warning(fmt.Sprintf(" WARNING: Failed emailing, params: [%s], error: [%s], CDRStatsQueueTriggeredId: %s", a.ExtraParameters, err.Error(), sq.Id)) } break } @@ -490,7 +490,7 @@ func mailAsync(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) err return nil } -func setddestinations(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) (err error) { +func setddestinations(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) (err error) { var ddcDestId string for _, bchain := range ub.BalanceMap { for _, b := range bchain { @@ -540,7 +540,7 @@ func setddestinations(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actio return nil } -func removeAccountAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func removeAccountAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { var accID string if ub != nil { @@ -602,7 +602,7 @@ func removeAccountAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Ac return nil } -func removeBalanceAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func removeBalanceAction(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { if ub == nil { return fmt.Errorf("nil account for %s action", utils.ToJSON(a)) } @@ -627,14 +627,14 @@ func removeBalanceAction(ub *Account, sq *StatsQueueTriggered, a *Action, acs Ac return nil } -func setBalanceAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func setBalanceAction(acc *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { if acc == nil { return fmt.Errorf("nil account for %s action", utils.ToJSON(a)) } return acc.setBalanceAction(a) } -func transferMonetaryDefaultAction(acc *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func transferMonetaryDefaultAction(acc *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { if acc == nil { utils.Logger.Err("*transfer_monetary_default called without account") return utils.ErrAccountNotFound @@ -677,11 +677,11 @@ Currently there are following objects that can be used: Account - the account that this action is called on Action - the action with all it's attributs Actions - the list of actions in the current action set -Sq - StatsQueueTriggered object +Sq - CDRStatsQueueTriggered object We can actually use everythiong that go templates offer. You can read more here: https://golang.org/pkg/text/template/ */ -func cgrRPCAction(account *Account, sq *StatsQueueTriggered, a *Action, acs Actions) error { +func cgrRPCAction(account *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) error { // parse template tmpl := template.New("extra_params") tmpl.Delims("<<", ">>") @@ -693,7 +693,7 @@ func cgrRPCAction(account *Account, sq *StatsQueueTriggered, a *Action, acs Acti var buf bytes.Buffer if err = t.Execute(&buf, struct { Account *Account - Sq *StatsQueueTriggered + Sq *CDRStatsQueueTriggered Action *Action Actions Actions }{account, sq, a, acs}); err != nil { diff --git a/engine/action_trigger.go b/engine/action_trigger.go index c76fc3f99..a3fc4d7e6 100644 --- a/engine/action_trigger.go +++ b/engine/action_trigger.go @@ -45,7 +45,7 @@ type ActionTrigger struct { LastExecutionTime time.Time } -func (at *ActionTrigger) Execute(ub *Account, sq *StatsQueueTriggered) (err error) { +func (at *ActionTrigger) Execute(ub *Account, sq *CDRStatsQueueTriggered) (err error) { // check for min sleep time if at.Recurrent && !at.LastExecutionTime.IsZero() && time.Since(at.LastExecutionTime) < at.MinSleep { return diff --git a/engine/actions_test.go b/engine/actions_test.go index 635ec574f..071c21070 100644 --- a/engine/actions_test.go +++ b/engine/actions_test.go @@ -1376,7 +1376,7 @@ func TestActionSetDDestination(t *testing.T) { if !found || len(x1.([]string)) != 1 { t.Error("Error cacheing destination: ", x1) } - setddestinations(acc, &StatsQueueTriggered{Metrics: map[string]float64{"333": 1, "666": 1}}, nil, nil) + setddestinations(acc, &CDRStatsQueueTriggered{Metrics: map[string]float64{"333": 1, "666": 1}}, nil, nil) d, err := dataStorage.GetDestination("*ddc_test", false, utils.NonTransactional) if err != nil || d.Id != origD.Id || diff --git a/engine/calldesc.go b/engine/calldesc.go index d8e738b73..003b2d590 100644 --- a/engine/calldesc.go +++ b/engine/calldesc.go @@ -1090,21 +1090,21 @@ func (cd *CallDescriptor) GetLCR(stats rpcclient.RpcClientConnection, lcrFltr *L } else if rpf != nil { rpf.RatingPlanActivations.Sort() activeRas := rpf.RatingPlanActivations.GetActiveForCall(cd) - var cdrStatsQueueIds []string + var cdrCDRStatsQueueIds []string for _, ra := range activeRas { for _, qId := range ra.CdrStatQueueIds { if qId != "" { - cdrStatsQueueIds = append(cdrStatsQueueIds, qId) + cdrCDRStatsQueueIds = append(cdrCDRStatsQueueIds, qId) } } } statsErr := false - var supplierQueues []*StatsQueue - for _, qId := range cdrStatsQueueIds { + var supplierQueues []*CDRStatsQueue + for _, qId := range cdrCDRStatsQueueIds { if lcrCost.Entry.Strategy == LCR_STRATEGY_LOAD { - for _, qId := range cdrStatsQueueIds { - sq := &StatsQueue{} + for _, qId := range cdrCDRStatsQueueIds { + sq := &CDRStatsQueue{} if err := stats.Call("CDRStatsV1.GetQueue", qId, sq); err == nil { if sq.conf.QueueLength == 0 { //only add qeues that don't have fixed length supplierQueues = append(supplierQueues, sq) diff --git a/engine/stats.go b/engine/cdrstatsiface.go similarity index 91% rename from engine/stats.go rename to engine/cdrstatsiface.go index f730cf48f..065a91030 100644 --- a/engine/stats.go +++ b/engine/cdrstatsiface.go @@ -30,7 +30,7 @@ import ( type StatsInterface interface { GetValues(string, *map[string]float64) error GetQueueIds(int, *[]string) error - GetQueue(string, *StatsQueue) error + GetQueue(string, *CDRStatsQueue) error GetQueueTriggers(string, *ActionTriggers) error AppendCDR(*CDR, *int) error AddQueue(*CdrStats, *int) error @@ -41,7 +41,7 @@ type StatsInterface interface { } type Stats struct { - queues map[string]*StatsQueue + queues map[string]*CDRStatsQueue queueSavers map[string]*queueSaver mux sync.RWMutex dataDB DataDB @@ -52,18 +52,18 @@ type queueSaver struct { ticker *time.Ticker stopper chan bool save func(*queueSaver) - sq *StatsQueue + sq *CDRStatsQueue dataDB DataDB } -func newQueueSaver(saveInterval time.Duration, sq *StatsQueue, db DataDB) *queueSaver { +func newQueueSaver(saveInterval time.Duration, sq *CDRStatsQueue, db DataDB) *queueSaver { svr := &queueSaver{ ticker: time.NewTicker(saveInterval), stopper: make(chan bool), sq: sq, dataDB: db, } - go func(saveInterval time.Duration, sq *StatsQueue, db DataDB) { + go func(saveInterval time.Duration, sq *CDRStatsQueue, db DataDB) { for { select { case <-svr.ticker.C: @@ -103,7 +103,7 @@ func (s *Stats) GetQueueIds(in int, ids *[]string) error { return nil } -func (s *Stats) GetQueue(id string, sq *StatsQueue) error { +func (s *Stats) GetQueue(id string, sq *CDRStatsQueue) error { s.mux.Lock() defer s.mux.Unlock() q, found := s.queues[id] @@ -143,17 +143,17 @@ func (s *Stats) AddQueue(cs *CdrStats, out *int) error { s.mux.Lock() defer s.mux.Unlock() if s.queues == nil { - s.queues = make(map[string]*StatsQueue) + s.queues = make(map[string]*CDRStatsQueue) } if s.queueSavers == nil { s.queueSavers = make(map[string]*queueSaver) } - var sq *StatsQueue + var sq *CDRStatsQueue var exists bool if sq, exists = s.queues[cs.Id]; exists { sq.UpdateConf(cs) } else { - sq = NewStatsQueue(cs) + sq = NewCDRStatsQueue(cs) s.queues[cs.Id] = sq } // save the conf @@ -170,7 +170,7 @@ func (s *Stats) RemoveQueue(qID string, out *int) error { s.mux.Lock() defer s.mux.Unlock() if s.queues == nil { - s.queues = make(map[string]*StatsQueue) + s.queues = make(map[string]*CDRStatsQueue) } if s.queueSavers == nil { s.queueSavers = make(map[string]*queueSaver) @@ -238,10 +238,10 @@ func (s *Stats) UpdateQueues(css []*CdrStats, out *int) error { defer s.mux.Unlock() oldQueues := s.queues oldSavers := s.queueSavers - s.queues = make(map[string]*StatsQueue, len(css)) + s.queues = make(map[string]*CDRStatsQueue, len(css)) s.queueSavers = make(map[string]*queueSaver, len(css)) for _, cs := range css { - var sq *StatsQueue + var sq *CDRStatsQueue var existing bool if oldQueues != nil { if sq, existing = oldQueues[cs.Id]; existing { @@ -251,7 +251,7 @@ func (s *Stats) UpdateQueues(css []*CdrStats, out *int) error { } } if sq == nil { - sq = NewStatsQueue(cs) + sq = NewCDRStatsQueue(cs) // load queue from storage if exists if saved, err := s.dataDB.GetCdrStatsQueue(sq.GetId()); err == nil { sq.Load(saved) @@ -267,7 +267,7 @@ func (s *Stats) UpdateQueues(css []*CdrStats, out *int) error { return nil } -func (s *Stats) setupQueueSaver(sq *StatsQueue) { +func (s *Stats) setupQueueSaver(sq *CDRStatsQueue) { if sq == nil { return } diff --git a/engine/lcr.go b/engine/lcr.go index 029c7c311..375b87d13 100644 --- a/engine/lcr.go +++ b/engine/lcr.go @@ -162,7 +162,7 @@ type LCRSupplierCost struct { Error string // Not error due to JSON automatic serialization into struct QOS map[string]float64 qosSortParams []string - supplierQueues []*StatsQueue // used for load distribution + supplierQueues []*CDRStatsQueue // used for load distribution } func (lcr *LCR) GetId() string { @@ -336,7 +336,7 @@ func (lc *LCRCost) SortLoadDistribution() { } } } - supplierQueues := make(map[*LCRSupplierCost]*StatsQueue) + supplierQueues := make(map[*LCRSupplierCost]*CDRStatsQueue) for _, supCost := range lc.SupplierCosts { for _, sq := range supCost.supplierQueues { if sq.conf.TimeWindow == winnerTimeWindow { diff --git a/engine/lcr_test.go b/engine/lcr_test.go index 1fb2c620c..607af57c1 100644 --- a/engine/lcr_test.go +++ b/engine/lcr_test.go @@ -301,22 +301,22 @@ func TestLCRCostSuppliersLoad(t *testing.T) { SupplierCosts: []*LCRSupplierCost{ &LCRSupplierCost{ Supplier: "*out:tenant12:call:ivo12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 3 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 1 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -327,22 +327,22 @@ func TestLCRCostSuppliersLoad(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:dan12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -353,29 +353,29 @@ func TestLCRCostSuppliersLoad(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:rif12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -399,22 +399,22 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) { SupplierCosts: []*LCRSupplierCost{ &LCRSupplierCost{ Supplier: "*out:tenant12:call:ivo12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 3 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 1 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -425,22 +425,22 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:dan12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -451,29 +451,29 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:rif12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -499,22 +499,22 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) { SupplierCosts: []*LCRSupplierCost{ &LCRSupplierCost{ Supplier: "*out:tenant12:call:ivo12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 3 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 1 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -525,22 +525,22 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:dan12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -551,29 +551,29 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:rif12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -599,22 +599,22 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) { SupplierCosts: []*LCRSupplierCost{ &LCRSupplierCost{ Supplier: "*out:tenant12:call:ivo12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 3 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 1 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -625,22 +625,22 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:dan12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -651,29 +651,29 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:rif12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -699,22 +699,22 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) { SupplierCosts: []*LCRSupplierCost{ &LCRSupplierCost{ Supplier: "*out:tenant12:call:ivo12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 3 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 1 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -725,22 +725,22 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:dan12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(60 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, @@ -751,29 +751,29 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) { }, &LCRSupplierCost{ Supplier: "*out:tenant12:call:rif12", - supplierQueues: []*StatsQueue{ - &StatsQueue{ + supplierQueues: []*CDRStatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 7 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}}, conf: &CdrStats{ QueueLength: 0, TimeWindow: 10 * time.Minute, }, }, - &StatsQueue{ + &CDRStatsQueue{ Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}}, conf: &CdrStats{ QueueLength: 0, diff --git a/engine/onstor_it_test.go b/engine/onstor_it_test.go index 542888497..ee1bcb181 100644 --- a/engine/onstor_it_test.go +++ b/engine/onstor_it_test.go @@ -1461,7 +1461,7 @@ func testOnStorITCRUDAccount(t *testing.T) { } func testOnStorITCRUDCdrStatsQueue(t *testing.T) { - sq := &StatsQueue{ + sq := &CDRStatsQueue{ conf: &CdrStats{Id: "TTT"}, Cdrs: []*QCdr{ &QCdr{Cost: 9.0, diff --git a/engine/stats_queue.go b/engine/stats_queue.go index 935793437..a2f059a5b 100644 --- a/engine/stats_queue.go +++ b/engine/stats_queue.go @@ -26,7 +26,7 @@ import ( "github.com/cgrates/cgrates/utils" ) -type StatsQueue struct { +type CDRStatsQueue struct { Cdrs []*QCdr conf *CdrStats metrics map[string]Metric @@ -62,16 +62,16 @@ type QCdr struct { Dest string } -func NewStatsQueue(conf *CdrStats) *StatsQueue { +func NewCDRStatsQueue(conf *CdrStats) *CDRStatsQueue { if conf == nil { - return &StatsQueue{metrics: make(map[string]Metric)} + return &CDRStatsQueue{metrics: make(map[string]Metric)} } - sq := &StatsQueue{} + sq := &CDRStatsQueue{} sq.UpdateConf(conf) return sq } -func (sq *StatsQueue) UpdateConf(conf *CdrStats) { +func (sq *CDRStatsQueue) UpdateConf(conf *CdrStats) { sq.mux.Lock() defer sq.mux.Unlock() // check if new conf asks for action trigger reset only @@ -93,7 +93,7 @@ func (sq *StatsQueue) UpdateConf(conf *CdrStats) { } } -func (sq *StatsQueue) Save(db DataDB) { +func (sq *CDRStatsQueue) Save(db DataDB) { sq.mux.Lock() defer sq.mux.Unlock() if sq.dirty { @@ -111,7 +111,7 @@ func (sq *StatsQueue) Save(db DataDB) { } } -func (sq *StatsQueue) Load(saved *StatsQueue) { +func (sq *CDRStatsQueue) Load(saved *CDRStatsQueue) { sq.mux.Lock() defer sq.mux.Unlock() sq.Cdrs = saved.Cdrs @@ -120,7 +120,7 @@ func (sq *StatsQueue) Load(saved *StatsQueue) { } } -func (sq *StatsQueue) AppendCDR(cdr *CDR) *QCdr { +func (sq *CDRStatsQueue) AppendCDR(cdr *CDR) *QCdr { sq.mux.Lock() defer sq.mux.Unlock() var qcdr *QCdr @@ -131,7 +131,7 @@ func (sq *StatsQueue) AppendCDR(cdr *CDR) *QCdr { return qcdr } -func (sq *StatsQueue) appendQcdr(qcdr *QCdr, runTrigger bool) { +func (sq *CDRStatsQueue) appendQcdr(qcdr *QCdr, runTrigger bool) { qcdr.EventTime = time.Now() //used for TimeWindow sq.Cdrs = append(sq.Cdrs, qcdr) sq.addToMetrics(qcdr) @@ -174,7 +174,7 @@ func (sq *StatsQueue) appendQcdr(qcdr *QCdr, runTrigger bool) { } } -func (sq *StatsQueue) GetTriggerLastExecution(trigger_id *string) time.Time { +func (sq *CDRStatsQueue) GetTriggerLastExecution(trigger_id *string) time.Time { for _, trigger := range sq.conf.Triggers { if trigger.ID == *trigger_id { return trigger.LastExecutionTime @@ -183,20 +183,20 @@ func (sq *StatsQueue) GetTriggerLastExecution(trigger_id *string) time.Time { return time.Time{} } -func (sq *StatsQueue) addToMetrics(cdr *QCdr) { +func (sq *CDRStatsQueue) addToMetrics(cdr *QCdr) { //log.Print("AddToMetrics: " + utils.ToIJSON(cdr)) for _, metric := range sq.metrics { metric.AddCdr(cdr) } } -func (sq *StatsQueue) removeFromMetrics(cdr *QCdr) { +func (sq *CDRStatsQueue) removeFromMetrics(cdr *QCdr) { for _, metric := range sq.metrics { metric.RemoveCdr(cdr) } } -func (sq *StatsQueue) simplifyCdr(cdr *CDR) *QCdr { +func (sq *CDRStatsQueue) simplifyCdr(cdr *CDR) *QCdr { return &QCdr{ SetupTime: cdr.SetupTime, AnswerTime: cdr.AnswerTime, @@ -207,7 +207,7 @@ func (sq *StatsQueue) simplifyCdr(cdr *CDR) *QCdr { } } -func (sq *StatsQueue) purgeObsoleteCdrs() { +func (sq *CDRStatsQueue) purgeObsoleteCdrs() { if sq.conf.QueueLength > 0 { currentLength := len(sq.Cdrs) if currentLength > sq.conf.QueueLength { @@ -237,14 +237,14 @@ func (sq *StatsQueue) purgeObsoleteCdrs() { } } -func (sq *StatsQueue) GetStats() map[string]float64 { +func (sq *CDRStatsQueue) GetStats() map[string]float64 { sq.mux.Lock() defer sq.mux.Unlock() sq.purgeObsoleteCdrs() return sq.getStats() } -func (sq *StatsQueue) getStats() map[string]float64 { +func (sq *CDRStatsQueue) getStats() map[string]float64 { stat := make(map[string]float64, len(sq.metrics)) for key, metric := range sq.metrics { stat[key] = metric.GetValue() @@ -252,18 +252,18 @@ func (sq *StatsQueue) getStats() map[string]float64 { return stat } -func (sq *StatsQueue) GetId() string { +func (sq *CDRStatsQueue) GetId() string { return sq.conf.Id } // Convert data into a struct which can be used in actions based on triggers hit -func (sq *StatsQueue) Triggered(at *ActionTrigger) *StatsQueueTriggered { - return &StatsQueueTriggered{Id: sq.conf.Id, Metrics: sq.getStats(), Trigger: at} +func (sq *CDRStatsQueue) Triggered(at *ActionTrigger) *CDRStatsQueueTriggered { + return &CDRStatsQueueTriggered{Id: sq.conf.Id, Metrics: sq.getStats(), Trigger: at} } // Struct to be passed to triggered actions -type StatsQueueTriggered struct { - Id string // StatsQueueId +type CDRStatsQueueTriggered struct { + Id string // CDRStatsQueueId Metrics map[string]float64 Trigger *ActionTrigger } diff --git a/engine/stats_test.go b/engine/stats_test.go index 41e073d61..7680edcea 100644 --- a/engine/stats_test.go +++ b/engine/stats_test.go @@ -24,15 +24,15 @@ import ( "github.com/cgrates/cgrates/utils" ) -func TestStatsQueueInit(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACC}}) +func TestCDRStatsQueueInit(t *testing.T) { + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACC}}) if len(sq.metrics) != 2 { t.Error("Expected 2 metrics got ", len(sq.metrics)) } } func TestStatsValue(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}}) + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}}) cdr := &CDR{ SetupTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -72,7 +72,7 @@ func TestStatsSimplifyCDR(t *testing.T) { RunID: "mri", Cost: 10, } - sq := &StatsQueue{} + sq := &CDRStatsQueue{} qcdr := sq.simplifyCdr(cdr) if cdr.SetupTime != qcdr.SetupTime || cdr.AnswerTime != qcdr.AnswerTime || @@ -83,7 +83,7 @@ func TestStatsSimplifyCDR(t *testing.T) { } func TestAcceptCdr(t *testing.T) { - sq := NewStatsQueue(nil) + sq := NewCDRStatsQueue(nil) cdr := &CDR{ ToR: "tor", OriginID: "accid", @@ -194,7 +194,7 @@ func TestAcceptCdr(t *testing.T) { } } -func TestStatsQueueIds(t *testing.T) { +func TestCDRStatsQueueIds(t *testing.T) { cdrStats := NewStats(dataStorage, 0) ids := []string{} if err := cdrStats.GetQueueIds(0, &ids); err != nil { @@ -443,7 +443,7 @@ func TestStatsResetQueuesWithIds(t *testing.T) { } func TestStatsSaveRestoreQeue(t *testing.T) { - sq := &StatsQueue{ + sq := &CDRStatsQueue{ conf: &CdrStats{Id: "TTT"}, Cdrs: []*QCdr{&QCdr{Cost: 9.0}}, } @@ -460,7 +460,7 @@ func TestStatsSaveRestoreQeue(t *testing.T) { } func TestStatsPurgeTimeOne(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) cdr := &CDR{ SetupTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -480,7 +480,7 @@ func TestStatsPurgeTimeOne(t *testing.T) { } func TestStatsPurgeTime(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) cdr := &CDR{ SetupTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -506,7 +506,7 @@ func TestStatsPurgeTime(t *testing.T) { } func TestStatsPurgeTimeFirst(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute}) cdr := &CDR{ SetupTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -532,7 +532,7 @@ func TestStatsPurgeTimeFirst(t *testing.T) { } func TestStatsPurgeLength(t *testing.T) { - sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, QueueLength: 1}) + sq := NewCDRStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, QueueLength: 1}) cdr := &CDR{ SetupTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), diff --git a/engine/storage_interface.go b/engine/storage_interface.go index fc906a3b7..fe3f68bc4 100644 --- a/engine/storage_interface.go +++ b/engine/storage_interface.go @@ -83,8 +83,8 @@ type DataDB interface { GetAccount(string) (*Account, error) SetAccount(*Account) error RemoveAccount(string) error - GetCdrStatsQueue(string) (*StatsQueue, error) - SetCdrStatsQueue(*StatsQueue) error + GetCdrStatsQueue(string) (*CDRStatsQueue, error) + SetCdrStatsQueue(*CDRStatsQueue) error GetSubscribers() (map[string]*SubscriberData, error) SetSubscriber(string, *SubscriberData) error RemoveSubscriber(string) error diff --git a/engine/storage_map.go b/engine/storage_map.go index c506ea51e..221247d3b 100644 --- a/engine/storage_map.go +++ b/engine/storage_map.go @@ -828,11 +828,11 @@ func (ms *MapStorage) RemoveAccount(key string) (err error) { return } -func (ms *MapStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) { +func (ms *MapStorage) GetCdrStatsQueue(key string) (sq *CDRStatsQueue, err error) { ms.mu.RLock() defer ms.mu.RUnlock() if values, ok := ms.dict[utils.CDR_STATS_QUEUE_PREFIX+key]; ok { - sq = &StatsQueue{} + sq = &CDRStatsQueue{} err = ms.ms.Unmarshal(values, sq) } else { return nil, utils.ErrNotFound @@ -840,7 +840,7 @@ func (ms *MapStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) { return } -func (ms *MapStorage) SetCdrStatsQueue(sq *StatsQueue) (err error) { +func (ms *MapStorage) SetCdrStatsQueue(sq *CDRStatsQueue) (err error) { ms.mu.Lock() defer ms.mu.Unlock() result, err := ms.ms.Marshal(sq) diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 0ab10a370..6aebbbbaa 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -1171,10 +1171,10 @@ func (ms *MongoStorage) RemoveAccount(key string) error { } -func (ms *MongoStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) { +func (ms *MongoStorage) GetCdrStatsQueue(key string) (sq *CDRStatsQueue, err error) { var result struct { Key string - Value *StatsQueue + Value *CDRStatsQueue } session, col := ms.conn(colStq) defer session.Close() @@ -1188,12 +1188,12 @@ func (ms *MongoStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) return } -func (ms *MongoStorage) SetCdrStatsQueue(sq *StatsQueue) (err error) { +func (ms *MongoStorage) SetCdrStatsQueue(sq *CDRStatsQueue) (err error) { session, col := ms.conn(colStq) defer session.Close() _, err = col.Upsert(bson.M{"key": sq.GetId()}, &struct { Key string - Value *StatsQueue + Value *CDRStatsQueue }{Key: sq.GetId(), Value: sq}) return } diff --git a/engine/storage_redis.go b/engine/storage_redis.go index f9da8c933..edc0cf0a8 100644 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -785,7 +785,7 @@ func (rs *RedisStorage) RemoveAccount(key string) (err error) { } -func (rs *RedisStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) { +func (rs *RedisStorage) GetCdrStatsQueue(key string) (sq *CDRStatsQueue, err error) { var values []byte if values, err = rs.Cmd("GET", utils.CDR_STATS_QUEUE_PREFIX+key).Bytes(); err != nil { if err == redis.ErrRespNil { // did not find the destination @@ -793,14 +793,14 @@ func (rs *RedisStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) } return } - sq = new(StatsQueue) + sq = new(CDRStatsQueue) if err = rs.ms.Unmarshal(values, &sq); err != nil { return nil, err } return } -func (rs *RedisStorage) SetCdrStatsQueue(sq *StatsQueue) (err error) { +func (rs *RedisStorage) SetCdrStatsQueue(sq *CDRStatsQueue) (err error) { var result []byte if result, err = rs.ms.Marshal(sq); err != nil { return diff --git a/general_tests/tp_it_test.go b/general_tests/tp_it_test.go index f6a1ac226..559a2ecba 100644 --- a/general_tests/tp_it_test.go +++ b/general_tests/tp_it_test.go @@ -252,7 +252,7 @@ func TestTpExecuteActionCgrRpcCdrStats(t *testing.T) { } else if reply != utils.OK { t.Errorf("Calling ExecuteAction got reply: %s", reply) } - var queue engine.StatsQueue + var queue engine.CDRStatsQueue time.Sleep(20 * time.Millisecond) if err := tpRPC.Call("CDRStatsV1.GetQueue", "qtest", &queue); err != nil { t.Error("Got error on CDRStatsV1.GetQueue: ", err.Error())