fix and test for stats purge

fixes #384
This commit is contained in:
Radu Ioan Fericean
2016-04-04 21:14:44 +03:00
parent bfcf26b09f
commit 6d8dff4243
2 changed files with 30 additions and 5 deletions

View File

@@ -184,16 +184,19 @@ func (sq *StatsQueue) purgeObsoleteCdrs() {
}
}
if sq.conf.TimeWindow > 0 {
var index int
for i, cdr := range sq.Cdrs {
if time.Now().Sub(cdr.SetupTime) > sq.conf.TimeWindow {
sq.removeFromMetrics(cdr)
continue
} else {
if i > 0 {
sq.Cdrs = sq.Cdrs[i:]
}
break
}
index = i
break
}
if index > 0 {
sq.Cdrs = sq.Cdrs[index:]
} else {
sq.Cdrs = make([]*QCdr, 0)
}
}
}

View File

@@ -458,3 +458,25 @@ func TestStatsSaveRestoreQeue(t *testing.T) {
t.Errorf("Expecting %+v got: %+v", sq.Cdrs[0], recovered.Cdrs[0])
}
}
func TestStatsPurge(t *testing.T) {
sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACD, TCD, ACC, TCC}, TimeWindow: 30 * time.Minute})
cdr := &CDR{
AnswerTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
Usage: 10 * time.Second,
Cost: 1,
}
sq.AppendCDR(cdr)
cdr.Cost = 2
sq.AppendCDR(cdr)
cdr.Cost = 3
sq.AppendCDR(cdr)
s := sq.GetStats()
if s[ASR] != -1 ||
s[ACD] != -1 ||
s[TCD] != -1 ||
s[ACC] != -1 ||
s[TCC] != -1 {
t.Errorf("Error getting stats: %+v", s)
}
}