From 7760a269ad7defebe30d644b4df2ab313716f1c4 Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 3 Aug 2017 15:43:03 +0200 Subject: [PATCH] StatS - fix metrics initialization --- apier/v1/stats_it_test.go | 10 ++++++++-- data/tariffplans/tutorial/Stats.csv | 2 +- stats/sinstance.go | 13 ++++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/apier/v1/stats_it_test.go b/apier/v1/stats_it_test.go index 89c579563..19e5a13b5 100644 --- a/apier/v1/stats_it_test.go +++ b/apier/v1/stats_it_test.go @@ -98,7 +98,10 @@ func TestStatSV1GetStats(t *testing.T) { } else if !reflect.DeepEqual(expectedIDs, reply) { t.Errorf("expecting: %+v, received reply: %s", expectedIDs, reply) } - expectedMetrics := map[string]string{} + expectedMetrics := map[string]string{ + utils.MetaASR: utils.NOT_AVAILABLE, + utils.MetaACD: "", + } if err := stsV1Rpc.Call("StatSV1.GetStatMetrics", "Stats1", &metrics); err != nil { t.Error(err) } else if !reflect.DeepEqual(expectedMetrics, metrics) { @@ -135,7 +138,10 @@ func TestStatSV1ProcessEvent(t *testing.T) { } else if reply != utils.OK { t.Errorf("received reply: %s", reply) } - expectedMetrics := map[string]string{} + expectedMetrics := map[string]string{ + utils.MetaASR: "66.66667%", + utils.MetaACD: "", + } var metrics map[string]string if err := stsV1Rpc.Call("StatSV1.GetStatMetrics", "Stats1", &metrics); err != nil { t.Error(err) diff --git a/data/tariffplans/tutorial/Stats.csv b/data/tariffplans/tutorial/Stats.csv index 2013a7bc6..8fc5e3b17 100755 --- a/data/tariffplans/tutorial/Stats.csv +++ b/data/tariffplans/tutorial/Stats.csv @@ -1,2 +1,2 @@ #Id,FilterType,FilterFieldName,FilterFieldValues,ActivationInterval,QueueLength,TTL,Metrics,Blocker,Stored,Weight,Thresholds -Stats1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acd;*acc,true,true,20,THRESH1;THRESH2 +Stats1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acd,true,true,20,THRESH1;THRESH2 diff --git a/stats/sinstance.go b/stats/sinstance.go index 31cb5104e..1ee38597c 100644 --- a/stats/sinstance.go +++ b/stats/sinstance.go @@ -50,15 +50,22 @@ func (sis StatsInstances) remWithID(qID string) { // NewStatsInstance instantiates a StatsInstance func NewStatsInstance(sec *StatsEventCache, ms engine.Marshaler, sqCfg *engine.StatsQueue, sqSM *engine.SQStoredMetrics) (si *StatsInstance, err error) { - si = &StatsInstance{sec: sec, ms: ms, cfg: sqCfg} + si = &StatsInstance{sec: sec, ms: ms, cfg: sqCfg, sqMetrics: make(map[string]StatsMetric)} + for _, metricID := range sqCfg.Metrics { + if si.sqMetrics[metricID], err = NewStatsMetric(metricID); err != nil { + return + } + } if sqSM != nil { for evID, ev := range sqSM.SEvents { si.sec.Cache(evID, ev, si.cfg.ID) } si.sqItems = sqSM.SQItems for metricID := range si.sqMetrics { - if si.sqMetrics[metricID], err = NewStatsMetric(metricID); err != nil { - return + if _, has := si.sqMetrics[metricID]; !has { + if si.sqMetrics[metricID], err = NewStatsMetric(metricID); err != nil { + return + } } if stored, has := sqSM.SQMetrics[metricID]; !has { continue